trying
[build.git] / build.common
index 9deebc1..153a010 100644 (file)
@@ -9,50 +9,31 @@
 # $Id$
 #
 
-### xxx thierry : looks like we should bump this to fedora 8
-### however, rather than the actual default,
-### this looks more like the bottom of what we're able to build
-### so I leave it with fc4
-function pl_getDefaultDistro() {
-    # FC4 is currently the default release
-    echo "Fedora"
-    return 0
-}
-
-function pl_getDefaultRelease() {
-    # FC4 is currently the default release
-    echo "4"
-    return 0
-}
+# support for fedora and centos only for now
 
 function pl_getDistro() {
-    defaultDistro=$(pl_getDefaultDistro)
     if [ -f "/etc/redhat-release" ] ; then
        distro=$(awk ' { print $1 } ' /etc/redhat-release)
     else
-       distro=$defaultDistro
+       echo "build.common.pl_getDistro-unknown"
+       exit 1
     fi
     echo "$distro"
     return 0
 }
 
-### xxx thierry : when running in a centOS box, this issues a warning message
-### because 5.2 is not an integer and bash cannot compare that
-### seems harmless though
 function pl_getRelease() {
-    defaultRelease=$(pl_getDefaultRelease)
     if [ -f "/etc/redhat-release" ] ; then
        release=$(awk ' { if ($1=="Fedora" && $2=="Core") print $4 ; if (($1=="Fedora" && $2!="Core")||$1=="CentOS") print $3 } ' /etc/redhat-release)
-       [ $release -lt $defaultRelease ] && release=$defaultRelease
     else
-       release=$defaultRelease
+       echo "build.common.pl_getRelease-unknown"
+       exit 1
     fi
     echo "$release"
     return 0
 }
 
 # vserver expects something like fc4 or f7
-# for fedora and centos only for now
 function pl_getReleaseName () {
     distro=$1; shift
     release=$1; shift
@@ -355,8 +336,8 @@ EOF
        fi
        cat >> $yum_conf <<EOF
 
-[bootstrap]
-name=Bootstrap - $basearch - $RPM_RPMS_DIR/
+[building]
+name=Building - $basearch - $RPM_RPMS_DIR/
 baseurl=file://$RPM_RPMS_DIR/
 EOF
 fi
@@ -538,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
@@ -552,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/