summaryrefslogtreecommitdiffstats
path: root/installer/OpenSLX/OSSetup/Engine.pm
diff options
context:
space:
mode:
authorOliver Tappe2009-03-06 17:31:58 +0100
committerOliver Tappe2009-03-06 17:31:58 +0100
commit096efb38194c5b662a9466a09a4be4b1fb28a117 (patch)
tree68d295321f7646af73f07ef57d0c35942558efc7 /installer/OpenSLX/OSSetup/Engine.pm
parentAddons to desktop plugin. (diff)
downloadcore-096efb38194c5b662a9466a09a4be4b1fb28a117.tar.gz
core-096efb38194c5b662a9466a09a4be4b1fb28a117.tar.xz
core-096efb38194c5b662a9466a09a4be4b1fb28a117.zip
working at #393:
* moved copying of uclibc-rootfs from stage2 (export) to stage1 (vendor-OS) git-svn-id: http://svn.openslx.org/svn/openslx/openslx/trunk@2692 95ad53e4-c205-0410-b2fa-d234c58c8868
Diffstat (limited to 'installer/OpenSLX/OSSetup/Engine.pm')
-rw-r--r--installer/OpenSLX/OSSetup/Engine.pm52
1 files changed, 52 insertions, 0 deletions
diff --git a/installer/OpenSLX/OSSetup/Engine.pm b/installer/OpenSLX/OSSetup/Engine.pm
index 0feb1ba6..14843f0b 100644
--- a/installer/OpenSLX/OSSetup/Engine.pm
+++ b/installer/OpenSLX/OSSetup/Engine.pm
@@ -270,6 +270,7 @@ sub installVendorOS
)
);
+ $self->_copyUclibcRootfs();
$self->_touchVendorOS();
$self->addInstalledVendorOSToConfigDB();
return;
@@ -353,6 +354,7 @@ sub cloneVendorOS
);
}
+ $self->_copyUclibcRootfs();
$self->_touchVendorOS();
$self->addInstalledVendorOSToConfigDB();
return;
@@ -380,6 +382,7 @@ sub updateVendorOS
}
);
+ $self->_copyUclibcRootfs();
$self->_touchVendorOS();
vlog(
0,
@@ -1041,6 +1044,55 @@ sub _touchVendorOS
return;
}
+sub _copyUclibcRootfs
+{
+ my $self = shift;
+
+ vlog(0, _tr("copying uclibc-rootfs into vendor-OS ...\n"));
+
+ my $targetRoot = $self->{'vendor-os-path'};
+ my $target = "$targetRoot/opt/openslx/uclib-rootfs";
+
+ if (system("mkdir -p $target")) {
+ die _tr("unable to create directory '%s', giving up! (%s)\n",
+ $target, $!);
+ }
+
+ my $uclibcRootfs = "$openslxConfig{'base-path'}/share/uclib-rootfs";
+ my @excludes = qw(
+ dialog
+ kexec
+ libcurses.so*
+ libncurses.so*
+ mconf
+ strace
+ );
+ my $exclOpts = join ' ', map { "--exclude $_" } @excludes;
+ vlog(3, _tr("using exclude-filter:\n%s\n", $exclOpts));
+ my $rsyncFH;
+ my $rsyncCmd
+ = "rsync -aq --delete-excluded --exclude-from=- $uclibcRootfs/ $target";
+ vlog(2, "executing: $rsyncCmd\n");
+ # link uClibc from the uclib-rootfs to /lib to make LD_PRELOAD=... working
+ my $uClibCmd = "ln -sf /opt/openslx/uclib-rootfs/lib/ld-uClibc.so.0";
+ $uClibCmd .= " $targetRoot/lib/ld-uClibc.so.0";
+ system($uClibCmd);
+
+ open($rsyncFH, '|-', $rsyncCmd)
+ or die _tr("unable to start rsync for source '%s', giving up! (%s)",
+ $uclibcRootfs, $!);
+ print $rsyncFH $exclOpts;
+ close($rsyncFH)
+ or die _tr("unable to copy to target '%s', giving up! (%s)",
+ $target, $!);
+
+ # write version of uclibc-rootfs original into a file in order to be
+ # able to check the up-to-date state later (in the config-demuxer)
+ slxsystem("slxversion >${target}.version");
+
+ return;
+}
+
sub _createPackager
{
my $self = shift;