summary refs log tree commit diff
path: root/pkgs/system/populate-linkdirs.pl
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/system/populate-linkdirs.pl')
-rwxr-xr-xpkgs/system/populate-linkdirs.pl30
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);
 }