X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=build.common;h=d566e09daf6f7f54f1c9ee99665899869ec3742b;hb=af1010c8f8f2fa738340da096a67ec629e369bc2;hp=2c4ccb1873bb360850196a1594d22fd3de3e1d42;hpb=6b63eb793c2275be559a7e6f8c1a100a422b020d;p=build.git diff --git a/build.common b/build.common index 2c4ccb18..d566e09d 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_kexcludes" + # 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 @@ -362,7 +395,9 @@ EOF corename="" fi - cat >$vroot/etc/yum.conf < $yum_conf <>$vroot/etc/yum.conf <> $yum_conf <>$vroot/etc/yum.conf <> $yum_conf < /dev/null && yum_options="$yum_options --verbose" + yum_options="$yum_options -y" + yum_options="$yum_options -c $yum_conf" + yum_options="$yum_options --installroot=$vroot" + exclude_arg="" for exclude in $pkgs_excludes; do exclude_arg="$exclude_arg --exclude $exclude" @@ -429,13 +474,12 @@ fi # glibc must be specified explicitly for the correct arch to be # chosen. echo "* Installing glibc" - yum -c $vroot/etc/yum.conf --installroot=$vroot -y $exclude_arg install glibc + yum $yum_options $exclude_arg install glibc # Go, baby, go if [ -n "$pkgs_packages" ] ; then echo "* Installing optional packages" $pkgs_packages - yum -c $vroot/etc/yum.conf --installroot=$vroot -y $exclude_arg \ - install $pkgs_packages + yum $yum_options $exclude_arg install $pkgs_packages if ! rpm --root $vroot -q $pkgs_packages >/dev/null ; then echo "* Warning: Missing packages" rpm --root $vroot -q $pkgs_packages | grep "not installed" @@ -446,8 +490,7 @@ fi ## call yum sequentially to get finer-grained info on dependencies for grp in $pkgs_groups ; do echo "* Installing optional group $grp" - yum -c $vroot/etc/yum.conf --installroot=$vroot -y $exclude_arg \ - groupinstall "$grp" + yum $yum_options $exclude_arg groupinstall "$grp" done fi @@ -466,7 +509,7 @@ fi # Clean yum cache echo "* Cleaning up" - yum -c $vroot/etc/yum.conf --installroot=$vroot -y clean all + yum $yum_options clean all # Clean RPM state rm -f $vroot/var/lib/rpm/__db* @@ -477,6 +520,9 @@ fi ln -s /usr/share/zoneinfo/UTC $vroot/etc/localtime fi + echo "Dumping current list of rpms in /etc/mkfedora-rpms.txt" + chroot $vroot rpm -aq | sort > $vroot/etc/mkfedora-rpms.txt + # remove trap handler, as we are about to call it directly. trap - ERR INT @@ -574,7 +620,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 +687,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 +717,8 @@ __header $(echo $groupname|tr A-Z a-z) $groupname - true $groupdesc - false + true __group_header for package in $packages; do