diff options
Diffstat (limited to 'pkgs/system/populate-linkdirs.pl')
-rwxr-xr-x | pkgs/system/populate-linkdirs.pl | 30 |
1 files changed, 26 insertions, 4 deletions
diff --git a/pkgs/system/populate-linkdirs.pl b/pkgs/system/populate-linkdirs.pl index 4bff975f9cc00..c551e9836cb11 100755 --- a/pkgs/system/populate-linkdirs.pl +++ b/pkgs/system/populate-linkdirs.pl @@ -18,7 +18,8 @@ sub createLinks { my $basename = $srcfile; $basename =~ s/^.*\///g; # strip directory my $dstfile = "$dstdir/$basename"; - if (-d $srcfile) { + if ($srcfile =~ /\/envpkgs$/) { + } elsif (-d $srcfile) { # !!! hack for resolving name clashes if (!-e $dstfile) { mkdir $dstfile, 0755 || @@ -37,13 +38,34 @@ sub createLinks { } } -foreach my $name (keys %ENV) { +my %done; - next unless ($name =~ /^act.*$/); +sub addPkg { + my $pkgdir = shift; - my $pkgdir = $ENV{$name}; + return if (defined $done{$pkgdir}); + $done{$pkgdir} = 1; print "merging $pkgdir\n"; createLinks("$pkgdir", "$selfdir"); + + if (-f "$pkgdir/envpkgs") { + my $envpkgs = `cat $pkgdir/envpkgs`; + chomp $envpkgs; + my @envpkgs = split / +/, $envpkgs; + foreach my $envpkg (@envpkgs) { + addPkg($envpkg); + } + } +} + + +foreach my $name (keys %ENV) { + + next unless ($name =~ /^act.*$/); + + my $pkgdir = $ENV{$name}; + + addPkg($pkgdir); } |