aboutsummaryrefslogtreecommitdiff
path: root/tools/build/bin-install.pl
diff options
context:
space:
mode:
Diffstat (limited to 'tools/build/bin-install.pl')
-rw-r--r--tools/build/bin-install.pl28
1 files changed, 28 insertions, 0 deletions
diff --git a/tools/build/bin-install.pl b/tools/build/bin-install.pl
new file mode 100644
index 0000000..1c71cea
--- /dev/null
+++ b/tools/build/bin-install.pl
@@ -0,0 +1,28 @@
+#! perl
+
+use strict;
+use warnings;
+use File::Spec;
+
+my ($p6bin, $dest, @files) = @ARGV;
+die "Usage: $0 <perl6_binary> <destination_path> <source_files>"
+ unless $p6bin && $dest;
+
+for my $filename (@files) {
+ open my $IN, '<', $filename
+ or die "Cannot read file '$filename' for installing it: $!";
+ my $basename = (File::Spec->splitpath($filename))[2];
+ open my $OUT, '>', "$dest/$basename"
+ or die "Cannot write file '$dest/$basename' for installing it: $!";
+ while (<$IN>) {
+ if ($. == 1 && /^#!/) {
+ print { $OUT } "#!$p6bin\n";
+ }
+ else {
+ print { $OUT } $_;
+ }
+ }
+ close $OUT or die "Error while closing file '$dest/$basename': $!";
+ close $IN;
+ chmod 0755, "$dest/$basename";
+}