X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;ds=sidebyside;f=build.common;h=9cd25f2a8096e39d39d7d7875c78b37c557bc1e5;hb=65c472ab4de7c80c4d48863999f919c09361093a;hp=d45df3c7255ecaf43c47594ae57013e64a2736c9;hpb=695c71891b9a7f840697aea43bcf9473c86a5e36;p=build.git diff --git a/build.common b/build.common index d45df3c7..9cd25f2a 100644 --- a/build.common +++ b/build.common @@ -57,12 +57,12 @@ function pl_getReleaseName () { releasename=f$release fi ;; [Cc]entOS*) - if [ "$release" = "4.5" ] ; then - # centos 4.5 is just centos4 + enhancements - releasename=centos4 - else - releasename=centos$release - fi ;; + old_IFS="$IFS" + IFS="." + set -- $release + IFS="$old_IFS" + releasename=centos$1 + ;; *) releasename="unknown-name-for-${pl_DISTRO}-please-edit-build.common" echo 1>&2 "build.common: WARNING - releasename not set for distro=$distro" @@ -246,28 +246,61 @@ function pl_root_mkfedora () { fi exclude_kernel="" - [ -n "$pkgs_kexcludes" ] && exclude_kernel="exclude=$pkgs_excludes" + # add them manually as the output of pl_parsePkgs is line-separated + if [ -n "$pkgs_kexcludes" ] ; then + exclude_kernel="exclude=" + for kexclude in $pkgs_kexcludes ; do + exclude_kernel="$exclude_kernel $kexclude" + done + fi function mkfedora_fetch () { curl --fail --silent --max-time 60 "$1" } - # set list of attempted locations according to releasever - if [ $releasever -ge 7 ] ; then - attempts=" + # set list of attempted locations according to target distro + # xxx all this should go into mirroring/ somehow + case $pl_DISTRO in + Fedora) + if [ $releasever -ge 7 ] ; then + # Plain Fedora comes with a new layout + attempts=" +fedora/releases/$releasever/Everything/$basearch/os linux/releases/$releasever/Everything/$basearch/os $releasever/Everything/$basearch/os core/$releasever/Everything/$basearch/os linux/core/$releasever/$basearch/os " - else - attempts=" - linux/core/$releasever/$basearch/os - core/$releasever/$basearch/os - $releasever/$basearch/os - " - fi + else + # Fedora Core + attempts=" +fedora/core/$releasever/$basearch/os +linux/core/$releasever/$basearch/os +core/$releasever/$basearch/os +$releasever/$basearch/os +" + fi + public_gpg_key=RPM-GPG-KEY-fedora + ;; + CentOS) + # xxx hacky for now + # you can use vbuild-fedora-mirror with -f centos5.1 + # which is hard-coded in mirroring/centos as well + # for now I do the mapping here, mmhh + case $releasever in + 4) actual=4.6 ;; + 5) actual=5.1 ;; + *) actual=$releasever ;; + esac + attempts=" +centos/$actual/os/$basearch +" + public_gpg_key=RPM-GPG-KEY-CentOS-$releasever + ;; + *) + echo "distro $pl_DISTRO not supported in build.common / mkfedora" ; exit 1 + esac echo "$0: candidate mirrors" for mirror in $mirrors ; do @@ -352,7 +385,7 @@ EOF # Initialize RPM database in reference image mkdir -p $vroot/var/lib/rpm rpm --root $vroot --initdb - rpm --root $vroot --import $baseurl/RPM-GPG-KEY-fedora + rpm --root $vroot --import $baseurl/$public_gpg_key # Initialize yum in reference image mkdir -p $vroot/var/cache/yum $vroot/var/log @@ -574,7 +607,8 @@ function pl_fixdirs() { function pl_getPkgsAttribute () { keyword=$1; shift file=$1; shift - grep -v '^#' $file | grep --regexp="^${keyword}:" | sed -e "s,${keyword}:,," + # remove any initial white spaces from the result + grep -v '^#' $file | grep --regexp="^${keyword}:" | sed -e "s,${keyword}:,," -e "s,^[[:space:]][[:space:]]*,," } # for a given keyword like 'package' : @@ -640,14 +674,13 @@ function pl_locateDistroFile () { fi } -# experimental function yumgroups_from_pkgs () { builddir=$1; shift pldistro=$1; shift fcdistro=$1; shift pkgsnames=$@ -sedargs="-e s,@FCDISTRO@,$fcdistro,g" + sedargs="-e s,@FCDISTRO@,$fcdistro,g" cat <<__header @@ -671,9 +704,8 @@ __header $(echo $groupname|tr A-Z a-z) $groupname - true $groupdesc - false + true __group_header for package in $packages; do