From 96b9ed0c5d887d35748dfff345ae64fd3e4d6265 Mon Sep 17 00:00:00 2001 From: Oliver Tappe Date: Sun, 13 May 2007 20:21:28 +0000 Subject: * fixed incorrect execution of chroot with respect to setting up the meta-packager repositories: that needs to be done inside the chroot, too * adjusted yum to setup its repository while chrooted git-svn-id: http://svn.openslx.org/svn/openslx/trunk@1075 95ad53e4-c205-0410-b2fa-d234c58c8868 --- installer/OpenSLX/OSSetup/Engine.pm | 57 ++++++++++++--------------- installer/OpenSLX/OSSetup/MetaPackager/yum.pm | 7 ++-- 2 files changed, 28 insertions(+), 36 deletions(-) (limited to 'installer') diff --git a/installer/OpenSLX/OSSetup/Engine.pm b/installer/OpenSLX/OSSetup/Engine.pm index d3b4f318..bc5856d2 100644 --- a/installer/OpenSLX/OSSetup/Engine.pm +++ b/installer/OpenSLX/OSSetup/Engine.pm @@ -142,7 +142,7 @@ sub initialize $self->{'vendor-os-path'} = "$openslxConfig{'stage1-path'}/$self->{'vendor-os-name'}"; - vlog 1, "vendor-OS will be installed to '$self-vendor-os-path'}'"; + vlog 1, "vendor-OS path is '$self->{'vendor-os-path'}'"; if ($actionType ne 'clone') { $self->createPackager(); @@ -374,7 +374,7 @@ sub readDistroInfo # merge user-provided configuration distro defaults... my %repository = %{$self->{distro}->{config}->{repository}}; my %selection = %{$self->{distro}->{config}->{selection}}; - my %excludes = + my %excludes = defined $self->{distro}->{config}->{excludes} ? %{$self->{distro}->{config}->{excludes}} : (); @@ -725,15 +725,7 @@ sub stage1B_chrootAndBootstrap { my $self = shift; - vlog 2, "chrooting into $self->{stage1aDir}..."; - # chdir into stage1aDir... - chdir $self->{stage1aDir} - or die _tr("unable to chdir into '%s' (%s)\n", $self->{stage1aDir}, $!); - # ...do chroot - chroot "." - or die _tr("unable to chroot into '%s' (%s)\n", $self->{stage1aDir}, $!); - - $ENV{PATH} = "/bin:/sbin:/usr/bin:/usr/sbin"; + chrootInto($self->{stage1aDir}); # chdir into slxbootstrap, as we want to drop packages into there: chdir "/$self->{stage1bSubdir}" @@ -770,17 +762,9 @@ sub stage1C_chrootAndInstallBasicVendorOS my $self = shift; my $stage1bDir = "/$self->{stage1bSubdir}"; - vlog 2, "chrooting into $stage1bDir..."; - # chdir into stage1bDir... - chdir $stage1bDir - or die _tr("unable to chdir into '%s' (%s)\n", $stage1bDir, $!); - # ...do chroot - chroot "." - or die _tr("unable to chroot into '%s' (%s)\n", $stage1bDir, $!); + chrootInto($stage1bDir); - $ENV{PATH} = "/bin:/sbin:/usr/bin:/usr/sbin"; my $stage1cDir = "/$self->{stage1cSubdir}"; - # install all prerequired bootstrap packages $self->{packager}->installPrerequiredPackages( $self->{'local-bootstrap-prereq-packages'}, $stage1cDir @@ -824,6 +808,9 @@ sub setupStage1D my $self = shift; vlog 1, "setting up stage1d for $self->{'vendor-os-name'}..."; + + chrootInto($self->{'vendor-os-path'}); + $self->stage1D_setupPackageSources(); $self->stage1D_updateBasicVendorOS(); $self->stage1D_installPackageSelection(); @@ -834,6 +821,9 @@ sub updateStage1D my $self = shift; vlog 1, "updating $self->{'vendor-os-name'}..."; + + chrootInto($self->{'vendor-os-path'}); + $self->stage1D_updateBasicVendorOS(); } @@ -857,17 +847,6 @@ sub stage1D_updateBasicVendorOS() { my $self = shift; - # chdir into vendor-os folder... - my $osDir = $self->{'vendor-os-path'}; - vlog 2, "chrooting into $osDir..."; - chdir $osDir - or die _tr("unable to chdir into '%s' (%s)\n", $osDir, $!); - # ...do chroot - chroot "." - or die _tr("unable to chroot into '%s' (%s)\n", $osDir, $!); - - $ENV{PATH} = "/bin:/sbin:/usr/bin:/usr/sbin"; - vlog 1, "updating basic vendor-os..."; $self->{'meta-packager'}->startSession(); $self->{'meta-packager'}->updateBasicVendorOS(); @@ -905,7 +884,7 @@ sub clone_fetchSource $self->{'vendor-os-path'}); my $excludeIncludeList = $self->clone_determineIncludeExcludeList(); vlog 1, "using exclude-include-filter:\n$excludeIncludeList\n"; - my $rsyncCmd + my $rsyncCmd = "rsync -av --delete --exclude-from=- $source $self->{'vendor-os-path'}"; vlog 2, "executing: $rsyncCmd\n"; open(RSYNC, "| $rsyncCmd") @@ -971,6 +950,20 @@ sub string2Array split "\n", $str; } +sub chrootInto +{ + my $osDir = shift; + + vlog 2, "chrooting into $osDir..."; + chdir $osDir + or die _tr("unable to chdir into '%s' (%s)\n", $osDir, $!); + # ...do chroot + chroot "." + or die _tr("unable to chroot into '%s' (%s)\n", $osDir, $!); + + $ENV{PATH} = "/bin:/sbin:/usr/bin:/usr/sbin"; +} + 1; ################################################################################ diff --git a/installer/OpenSLX/OSSetup/MetaPackager/yum.pm b/installer/OpenSLX/OSSetup/MetaPackager/yum.pm index cf68122a..acdb470d 100644 --- a/installer/OpenSLX/OSSetup/MetaPackager/yum.pm +++ b/installer/OpenSLX/OSSetup/MetaPackager/yum.pm @@ -47,8 +47,8 @@ sub initPackageSources { my $self = shift; - slxsystem("rm -f $self->{engine}->{'vendor-os-path'}/etc/yum.repos.d/*"); - slxsystem("mkdir -p $self->{engine}->{'vendor-os-path'}/etc/yum.repos.d"); + slxsystem("rm -f /etc/yum.repos.d/*"); + slxsystem("mkdir -p /etc/yum.repos.d"); } sub setupPackageSource @@ -63,8 +63,7 @@ sub setupPackageSource $repoURL .= "/$repoInfo->{'repo-subdir'}"; } my $repoDescr = "[$repoName]\nname=$repoInfo->{name}\nbaseurl=$repoURL\n"; - my $repoFile - = "$self->{engine}->{'vendor-os-path'}/etc/yum.repos.d/$repoName.repo"; + my $repoFile = "/etc/yum.repos.d/$repoName.repo"; open(REPO, "> $repoFile") or die _tr("unable to create repo-file <%s> (%s)\n", $repoFile, $1); print REPO $repoDescr; -- cgit v1.2.3-55-g7522