From a106ca30f740023ca4ce72f9f66826bafe092b1b Mon Sep 17 00:00:00 2001 From: Thierry Parmentelat Date: Fri, 29 Aug 2008 15:28:43 +0000 Subject: [PATCH] fix builds for x86_64 pass the target arch to the pkgs-parsing functions for correct expansion of @arch@ this was needed because php-devel behaves oddly, and we need to specify the correct arch in devel.pkgs --- build.common | 18 +++++++++++++----- vbuild-init-vserver.sh | 9 ++++++--- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/build.common b/build.common index 1d149273..153a010d 100644 --- a/build.common +++ b/build.common @@ -519,9 +519,16 @@ function pl_getPkgsAttribute () { # # values can contain @arch@, @fcdistro@ or @pldistro@ that are replaced with the current values # +# Usage: pl_parsePkgs keyword [-a arch] fcdistro pldistro pkgs-file[..s] +# the reason for the -a option is for when we build the build vserver itself; in this case +# pl_DISTRO_ARCH is the one we obtain from the root context, and that's wrong +# specify -sa arch AFTER keyword, so as to keep pl_getPackages and pl_getGroups simple +# function pl_parsePkgs () { + target_arch=$pl_DISTRO_ARCH keyword=$1;shift + [ "$1" == "-a" ] && { shift; target_arch="$1"; shift; } fcdistro=$1; shift pldistro=$1; shift # remaining arguments are paths to the pkgs files @@ -533,17 +540,18 @@ function pl_parsePkgs () { # grab exclusions sub=$(grep -v '^#' "$@" | grep --regexp="^${keyword}-${fcdistro}:" | sed -e "s,${keyword}-${fcdistro}:,,") - for i in $all $add; do + for rpm in $all $add; do for exclude in $sub; do - [ "$i" = "$exclude" ] && continue 2 + [ "$rpm" = "$exclude" ] && continue 2 done - echo "$i " | sed -e "s,@arch@,$pl_DISTRO_ARCH,g" -e "s,@fcdistro@,$fcdistro,g" -e "s,@pldistro@,$pldistro,g" + echo "${rpm} " | sed -e "s,@arch@,${target_arch},g" -e "s,@fcdistro@,$fcdistro,g" -e "s,@pldistro@,$pldistro,g" done return 0 } -function pl_getPackages() { fcdistro=$1; shift ; pldistro=$1; shift ; pl_parsePkgs package $fcdistro $pldistro "$@" ; } -function pl_getGroups() { fcdistro=$1; shift ; pldistro=$1; shift ; pl_parsePkgs group $fcdistro $pldistro "$@" ; } +# usage: pl_getPackages [-a arch] fcdistro pldistro pkg-file[..s] +function pl_getPackages() { pl_parsePkgs package "$@" ; } +function pl_getGroups() { pl_parsePkgs group "$@" ; } # locates a pldistro-dependant file # tries first in build//, then in build/planetlab/ diff --git a/vbuild-init-vserver.sh b/vbuild-init-vserver.sh index 7fe90fd1..31514cb7 100755 --- a/vbuild-init-vserver.sh +++ b/vbuild-init-vserver.sh @@ -202,9 +202,12 @@ function devel_or_vtest_tools () { fi pkgsfile=$(pl_locateDistroFile $DIRNAME $pldistro $pkgsname) - # install individual packages, then groups - packages=$(pl_getPackages $fcdistro $pldistro $pkgsfile) - groups=$(pl_getGroups $fcdistro $pldistro $pkgsfile) + ### install individual packages, then groups + # get target arch - use uname -i here (we want either x86_64 or i386) + vserver_arch=$($personality vserver $vserver exec uname -i) + + packages=$(pl_getPackages -a $vserver_arch $fcdistro $pldistro $pkgsfile) + groups=$(pl_getGroups -a $vserver_arch $fcdistro $pldistro $pkgsfile) [ -n "$packages" ] && $personality vserver $vserver exec yum -y install $packages [ -n "$groups" ] && $personality vserver $vserver exec yum -y groupinstall $groups -- 2.43.0