summaryrefslogtreecommitdiffstats
path: root/tools/install-xml-file-list
diff options
context:
space:
mode:
Diffstat (limited to 'tools/install-xml-file-list')
-rwxr-xr-xtools/install-xml-file-list31
1 files changed, 22 insertions, 9 deletions
diff --git a/tools/install-xml-file-list b/tools/install-xml-file-list
index f5b809a9d..64c70b9c6 100755
--- a/tools/install-xml-file-list
+++ b/tools/install-xml-file-list
@@ -19,10 +19,12 @@ if ($>) {
$ENV{PATH} = "/sbin:/usr/sbin:$ENV{PATH}";
}
+my $verbose;
#$verbose = 1;
my $initial_dir = cwd();
my $ARCH = arch() =~ /i.86/ ? 'i386' : arch();
+$ARCH =~ s/^(arm).*/$1/;
my $LIB = arch() =~ /x86_64/ ? "lib64" : "lib";
my $base_cpio_options = '-pumd --quiet';
@@ -91,7 +93,7 @@ sub valid_cond {
sub add_to_env {
my ($env, $tag, $attr) = @_;
- my %env = map_each { $::a => +{%$::b} } %$env;
+ my %env = map_each { $::a => +{ %$::b } } %$env;
foreach (keys %$attr) {
!$env{$tag}{$_} or die qq(overriding attribute <$tag $_="$env{$tag}{$_}"> with $_="$attr->{$_}"\n);
$env{$tag}{$_} = $attr->{$_};
@@ -148,17 +150,17 @@ sub collect_needed_libraries {
@to_check = ();
}
}
-sub install_needed_libraries {
+sub install_needed_libraries() {
copy_files('', $DEST, [ keys %needed_libraries ], '', '--dereference');
}
sub collect_needed_perl_files {
- my ($local_rep, $dest, @scripts) = @_;
+ my ($local_rep, @scripts) = @_;
my (%local, %global);
foreach my $script (@scripts) {
foreach (`strace -efile perl -cw -I$local_rep $script 2>&1`) {
- my ($f) = /^open\("(.*?)",.*\)\s*=\s*\d+$/ or next;
+ my ($f) = /^open(?:at\([^,]*, |)"(.*?)",.*\)\s*=\s*\d+$/ or next;
if ($f =~ m!^\Q$local_rep\E/(.*)!) {
$local{$1} = 1;
} elsif (begins_with($f, '/dev/')) {
@@ -230,11 +232,11 @@ sub install {
@l = all_files_rec_($l[0]);
}
@l = grep { !m!/(\.svn|CVS)($|/)! } @l;
- if (my $re = $env->{from}{matching}) {
+ if (my $re = expand_macros($env->{from}{matching})) {
@l = grep { eval $re } @l;
}
- collect_needed_libraries(grep { -x $_ } @l);
+ collect_needed_libraries(grep { -f $_ && -x $_ } @l);
chdir $initial_dir;
@l;
@@ -258,7 +260,9 @@ sub install {
} elsif ($expand eq 'binary') {
$disallow_from_dir->();
- my @PATH = qw(/sbin /bin /usr/bin /usr/sbin /usr/X11R6/bin);
+ my @PATH = qw(/usr/sbin /usr/bin /usr/X11R6/bin);
+ unshift(@PATH, "/bin") unless -l "/bin";
+ unshift(@PATH, "/sbin") unless -l "/sbin";
foreach my $name (map { expand_macros($_) } @text_l) {
my @l = grep { -x $_ } map { "$_/$name" } @PATH;
@l or error("can't find binary $name"), next;
@@ -295,20 +299,28 @@ sub install {
push @files, @l;
}
+ } elsif ($expand eq 'perl-bin') {
+ $disallow_from_dir->();
+ $from_dir = '/usr/LIB/perl5/vendor_perl/';
+ @files = @text_l;
} elsif ($expand eq 'perl') {
$disallow_from_dir->();
- $from_dir = '/usr/lib/perl5/vendor_perl/*';
+ $from_dir = '/usr/share/perl5/vendor_perl/';
@files = @text_l;
} elsif ($expand eq 'main-perl') {
$disallow_from_dir->();
$from_dir = $Config{privlib};
@files = @text_l;
+ } elsif ($expand eq 'main-perl-bin') {
+ $disallow_from_dir->();
+ $from_dir = $Config{archlib};
+ @files = @text_l;
} elsif ($expand =~ /collect-perl-files/) {
my (undef, $local, $to) = split(' ', $expand);
@files = @text_l;
warn "collect-perl-files $local $to @files ($env->{filter}{command})\n";
- my ($local_perl_files, $global_perl_files) = collect_needed_perl_files($local, $to, @files);
+ my ($local_perl_files, $global_perl_files) = collect_needed_perl_files($local, @files);
warn "collect-perl-files gave: ", join(' ', @$local_perl_files), "\n";
# warn " and: ", join(' ', @$global_perl_files), "\n";
copy_and_filter($local =~ m!/! ? $local : "$working_dir/$local", "$DEST$to", $local_perl_files, $env->{filter}, '', '--dereference');
@@ -353,6 +365,7 @@ sub apply_filter {
@l = grep { ! -d $_ } @l or next;
if (my $subst = $filter->{subst}) {
+ warn "running substition $subst \n" if $verbose;
system('perl', '-pi', '-e', $subst, @l);
}
if (my $command = $filter->{command}) {