yumgroups generated from bootstrapfs.pkgs
[build.git] / build.common
index 97193b2..ae938c3 100644 (file)
@@ -184,8 +184,8 @@ mirrors=(
     )
 
 function mkfedora_usage() {
-    echo "Usage: mkfedora [OPTION]... [basedir]"
-    echo "     -l url          Fedora mirror location. Defaults to try:"
+    echo "Usage: pl_root_mkfedora [OPTION]... basedir"
+    echo "     -l url          Fedora mirror location. Default is to try:"
     for mirror in "${mirrors[@]}" ; do
        echo "                  $mirror"
     done
@@ -208,7 +208,12 @@ function mkfedora_usage() {
 
 function pl_root_mkfedora () {
 
-    echo "* Entering pl_root_mkfedora " "$@"
+    echo "* Entering pl_root_mkfedora" "$@"
+
+    if [ $UID -ne 0 ] ; then
+       echo "Error: You must run this script as root."
+       exit 1
+    fi
 
 # Verbosity
     verbose=0
@@ -275,16 +280,11 @@ function pl_root_mkfedora () {
     done
 
     shift $(($OPTIND - 1))
-    if [ ! -d "$1" ] ; then
-       mkfedora_usage
-    fi
-
-    vroot=$(cd $1 && pwd -P)
-
-    if [ $UID -ne 0 ] ; then
-       echo "Error: You must run this script as root."
-       exit 1
-    fi
+    [[ -n "$@" ]] || mkfedora_usage
+    vroot=$1 ; shift
+    vroot=$(cd $vroot && pwd -P)
+    [[ -z "$@" ]] || mkfedora_usage
+    [ -d $vroot ] || mkfedora_usage
 
     function mkfedora_fetch ()
     {
@@ -575,7 +575,7 @@ function pl_root_setup_chroot() {
     options="$@"
 
     pl_root_makedevs $root
-    pl_root_mkfedora $root $options
+    pl_root_mkfedora $options $root 
 
     # Disable all services in reference image
     chroot $root sh -c "/sbin/chkconfig --list | awk '{ print \$1 }' | xargs -i /sbin/chkconfig {} off"
@@ -717,3 +717,50 @@ function pl_locateDistroFile () {
        return 0
     fi
 }
+
+# experimental
+function yumgroups_from_pkgs () {
+   groupname=$1; shift
+   groupdesc=$1; shift
+   pkgsfile=$1; shift
+   fcdistro=$pl_DISTRO_NAME
+   [[ -n "$@" ]] && fcdistro=$1; shift
+   if [[ -n "$@" ]] ; then 
+       echo "yumgroups_from_pkgs : wrong signature"
+       return 1
+   fi
+
+   packages=$(pl_getPackages $fcdistro $pkgsfile)
+
+   cat <<__header
+<?xml version="1.0"?>
+<!DOCTYPE comps PUBLIC "-//Red Hat, Inc.//DTD Comps info//EN" "comps.dtd">
+<comps>
+  <group>
+    <id>$(echo $groupname|tr A-Z a-z)</id>
+    <name>$groupname</name>
+    <default>true</default>
+    <description>$groupdesc</description>
+    <uservisible>false</uservisible>
+    <packagelist>
+__header
+
+    for package in $packages; do 
+       echo "<packagereq type=\"mandatory\">$package</packagereq>"
+    done
+
+cat <<__footer
+    </packagelist>
+  </group>
+</comps>
+__footer
+}
+
+function toplevel_yumgroups () {
+    pldistro=$1; shift
+    pkgsname=$1; shift
+    builddir=$(dirname $0)
+    pkgsfile=$(pl_locateDistroFile $builddir $pldistro $pkgsname)
+    yumgroups_from_pkgs 'PlanetLab' 'PlanetLab Node Root' $pkgsfile
+}
+