fix builds for x86_64
authorThierry Parmentelat <thierry.parmentelat@sophia.inria.fr>
Fri, 29 Aug 2008 15:28:43 +0000 (15:28 +0000)
committerThierry Parmentelat <thierry.parmentelat@sophia.inria.fr>
Fri, 29 Aug 2008 15:28:43 +0000 (15:28 +0000)
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
vbuild-init-vserver.sh

index 1d14927..153a010 100644 (file)
@@ -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/<pldistro>/, then in build/planetlab/
index 7fe90fd..31514cb 100755 (executable)
@@ -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