X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=build.common;h=6bffc4c61f34863d170b2cd72ceefa5ceddca418;hb=6f4cec53a7c08a360cce7c21ad8a3bc898f6ef68;hp=919106b6402e5edcccdd768ae090adfa494a99f7;hpb=279874104dbe01e2ce86617a39e0e33bfdc261e0;p=build.git diff --git a/build.common b/build.common index 919106b6..6bffc4c6 100644 --- a/build.common +++ b/build.common @@ -18,6 +18,7 @@ export PATH=.:$PATH function pl_getDistro() { if [ -f "/etc/redhat-release" ] ; then distro=$(awk ' { print $1 } ' /etc/redhat-release) + case $distro in Red*) distro="Redhat" ; esac else echo "build.common.pl_getDistro-unknown" exit 1 @@ -29,12 +30,13 @@ function pl_getDistro() { # returns something like 8, 10, or 5.3 function pl_getRelease() { 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=$(awk ' { if ($1=="Fedora" && $2=="Core") print $4 ; if (($1=="Fedora" && $2!="Core")||$1=="CentOS") print $3 ; if ($1=="Red") print $6 } ' /etc/redhat-release) else echo "build.common.pl_getRelease-unknown" exit 1 fi - echo "$release" + # keep only the major number + echo "$release" | cut -d. -f1 return 0 } @@ -46,6 +48,9 @@ function pl_getReleaseName () { [Ff]edora*) releasename=f$release ;; + [Re]edhat*) + releasename=rhel6 + ;; [Cc]entOS*) old_IFS="$IFS" IFS="." @@ -68,8 +73,13 @@ function pl_getReleaseName () { function pl_getKexcludes () { distroname=$1; shift case $distroname in + ### there is an ugly hack going on around here + # with f12, the dependencies somehow require kernel 2.6.29 but our own kernel is 2.6.27 + # so the ugly workaround here is to let 'kernel-debug' get installed from the stock repos + # we then remove it manually after the image is done, look for kernel-debug below + # relyong on kernel-PAE for this trick won't work, as 64 bits distros don't have PAE of course f*) - echo 'kernel kernel-vserver kernel-devel kernel-headers kernel-debuginfo util-vserver* iptables iptables-ipv6 iproute drupal' ;; + echo 'kernel kernel-PAE kernel-PAEdebug kernel-vserver kernel-devel kernel-headers kernel-debuginfo util-vserver* iptables iptables-ipv6 iproute drupal' ;; centos5) echo 'kernel kernel-vserver kernel-devel kernel-headers kernel-debuginfo util-vserver* iptables iproute drupal inotify-tools* libnl' ;; *) @@ -170,7 +180,7 @@ function pl_root_makedevs() { mknod -m 600 $vroot/dev/net/tun c 10 200 # For mkinitrd (in case a kernel is being installed) - # As well for loop back mounting within a vserver. + # As well as for loop back mounting within a vserver. for i in $(seq 0 255) ; do mknod -m 640 $vroot/dev/loop$i b 7 $i done @@ -403,6 +413,23 @@ fi # Clean yum cache echo "* Cleaning up" + + # NOTE: this hack is for Fedora >= 12. + # if kernel-debug is installed, clean it up + # we link to our version of kernel/initrd and clean up + # kernel-debug manually + if rpm --root $vroot --quiet -q kernel-debug ; then + echo "* Cleaning up kernel-debug - (workaround for f12)" + pushd $vroot/boot/ + rm -rf kernel-boot kernel-bootsmp initrd-boot initrd-bootsmp + ln -s vmlinuz-*${pldistro}* kernel-boot + ln -s vmlinuz-*${pldistro}* kernel-bootsmp + ln -s initrd-*${pldistro}* initrd-boot + ln -s initrd-*${pldistro}* initrd-bootsmp + rpm --root $vroot --nodeps -e kernel-debug || : + popd + fi + # ignore yum's return code that is basically undefined yum $yum_options clean all || : @@ -574,10 +601,13 @@ function pl_locateDistroFile () { pkgsfile=$1; shift pkgspath="" - # if config dir is missing but a .svnpath exists - if [[ -f "$builddir/config.${pldistro}.svnpath" && ! -d "$builddir/config.${pldistro}" ]] ; then - echo 1>&2 "Invoking make to extract remote config.${pldistro}" - make 1>&2 --silent --no-print-directory -C $builddir stage1=true config.${pldistro} + # if config dir is missing but a .svnpath or a .gitpath exists, use it to extract the config dir + configdir="$builddir/config.${pldistro}" + if [ ! -d $configdir ] ; then + if [ -f "${configdir}.svnpath" -o -f "${configdir}.gitpath" ] ; then + echo 1>&2 "Invoking make to extract remote config.${pldistro}" + make 1>&2 --silent --no-print-directory -C $builddir stage1=true config.${pldistro} + fi fi # locate it paths="$builddir/config.$pldistro/$pkgsfile $builddir/config.planetlab/$pkgsfile" @@ -730,6 +760,6 @@ function yumconf_exclude () { repo=$1; shift kexclude_line="$1" ; shift - sed -i -e "/baseurl=.*$/i\\ + sed -i -e "/#baseurl=.*$/i\\ $kexclude_line" $repo }