cleaning up ulogd, proper, and libhttpd++
[build.git] / build.common
index d45df3c..9cd25f2 100644 (file)
@@ -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
 <?xml version="1.0"?>
@@ -671,9 +704,8 @@ __header
   <group>
     <id>$(echo $groupname|tr A-Z a-z)</id>
     <name>$groupname</name>
-    <default>true</default>
     <description>$groupdesc</description>
-    <uservisible>false</uservisible>
+    <uservisible>true</uservisible>
     <packagelist>
 __group_header
         for package in $packages; do