This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
add PMf_IS_QR flag
[perl5.git] / os2 / perl2cmd.pl
CommitLineData
82835e01 1# This will put installed perl files into some other location
2# Note that we cannot put hashbang to be extproc to make Configure work.
3
4use Config;
1933e12c 5use File::Compare;
82835e01 6
7$dir = shift;
8$dir =~ s|/|\\|g ;
9$nowarn = 1, $dir = shift if $dir eq '-n';
10
11die <<EOU unless defined $dir and -d $dir;
12usage: $^X $0 [-n] directory-to-install
13 -n do not check whether the directory is not on path
14EOU
15
16@path = split /;/, $ENV{PATH};
17$idir = $Config{installbin};
18$indir =~ s|\\|/|g ;
19
59ad941d
IZ
20my %seen;
21
760ac839 22foreach $file (<$idir/*>) {
59ad941d 23 next if $file =~ /\.(exe|bak)/i;
82835e01 24 $base = $file;
25 $base =~ s/\.$//; # just in case...
26 $base =~ s|.*/||;
59ad941d
IZ
27 $base =~ s|\.pl$||;
28 #$file =~ s|/|\\|g ;
29 warn "Clashing output name for $file, skipping" if $seen{$base}++;
1933e12c
IZ
30 my $new = (-f "$dir/$base.cmd" ? '' : ' (new file)');
31 print "Processing $file => $dir/$base.cmd$new\n";
32 my $ext = ($new ? '.cmd' : '.tcm');
59ad941d 33 open IN, '<', $file or warn, next;
1933e12c 34 open OUT, '>', "$dir/$base$ext" or warn, next;
59ad941d
IZ
35 my $firstline = <IN>;
36 my $flags = '';
37 $flags = $2 if $firstline =~ /^#!\s*(\S+)\s+-([^#]+?)\s*(#|$)/;
38 print OUT "extproc perl -S$flags\n$firstline";
39 print OUT $_ while <IN>;
40 close IN or warn, next;
41 close OUT or warn, next;
1933e12c
IZ
42 chmod 0444, "$dir/$base$ext";
43 next if $new;
44 if (compare "$dir/$base$ext", "$dir/$base.cmd") { # different
45 chmod 0666, "$dir/$base.cmd";
46 unlink "$dir/$base.cmd";
47 rename "$dir/$base$ext", "$dir/$base.cmd";
48 } else {
49 chmod 0666, "$dir/$base$ext";
50 unlink "$dir/$base$ext";
51 print "...unchanged...\n";
52 }
82835e01 53}
54