yumgroups generated from bootstrapfs.pkgs
authorThierry Parmentelat <thierry.parmentelat@sophia.inria.fr>
Thu, 13 Dec 2007 14:28:01 +0000 (14:28 +0000)
committerThierry Parmentelat <thierry.parmentelat@sophia.inria.fr>
Thu, 13 Dec 2007 14:28:01 +0000 (14:28 +0000)
Makefile
README-pldistros.txt
build.common
config.planetlab/bootstrapfs.pkgs
config.planetlab/devel.pkgs
groups/planetlab.xml [deleted file]
yumgroups.sh [new file with mode: 0755]

index cd9911f..58d0fc6 100644 (file)
--- a/Makefile
+++ b/Makefile
 #     
 #################### (planetlab) distributions
 #
-# (*) the default distribution is called 'planetlab'
-# (*) you may define an alternative distribution, e.g. onelab
-# in this case you need to
-# (*) create onelab.mk that defines your *packages* (see below)
-# (*) create onelab-tags.mk that defines where to fetch your *modules*
-# (*) create your main yumgroups.xml as groups/<distro>.xml
-# (*) there are also various places where a set of modules are defined.
-#     check for .lst files in the various modules that build root images
-#     and mimic what's done for planetlab 
+# (*) see README-pldistros.txt
 # (*) then you need to run 
 #     make stage1=true PLDISTRO=onelab
 #
@@ -188,15 +180,10 @@ all: repo
 endif
 endif
 
-### yumgroups.xml
-# the source
-ifndef YUMGROUPS
-YUMGROUPS := groups/$(PLDISTRO).xml
-endif
-
-RPMS/yumgroups.xml: $(YUMGROUPS)
+### yumgroups.xml : compute from bootstrapfs.pkgs
+RPMS/yumgroups.xml: 
        mkdir -p RPMS
-       install -D -m 644 $(YUMGROUPS) $@
+       yumgroups.sh $(PLDISTRO) bootstrapfs.pkgs > $@
 
 createrepo = createrepo --quiet -g yumgroups.xml RPMS/ 
 
index b47f160..e68c449 100644 (file)
@@ -1,25 +1,35 @@
-we've tried to isolate the distro-dependent configurations from the code
-the places where these distro-dependent config files lie are
+We've tried to isolate the distro-dependent configurations from the code
 
-./build/groups/<pldistro>.xml 
-       that is used as the yumgroups.xml 
+Most of the .pgks files are optional to define a new distro:
+missing files are searched in the planetlab distro
+
+========== build environment
 ./build/<pldistro>.mk
-       that defines the contents of the build
+       that defines the contents of the build -- see Makefile
 ./build/<pldistro>-tags.mk
        that defines the svn locations of the various modules
 ./build/<pldistro>-install.mk
        optional make file to define the install target
-./build/<pldistro>-devel.lst
-       set of packages required for building
 
+========== kernel config
 ./Linux-2.6/configs/kernel-2.6.<n>-<arch>-<pldistro>.config
        (subject to change location in the future)
 
-./bootcd/<pldistro>-bootcd.lst
-./bootstrapfs/<pldistro>-base.lst
-./bootstrapfs/<pldistro>-filesystems
-       all *.lst files here - produce tar.bz2 images
-./myplc/<pldistro>-plc.lst
-./vserver/<pldistro>-vserver.lst
-./vserver/<pldistro>-vservers
-       all *.lst files here - produce vserver images
+========== various system images
+./build/config.<pldistro>/devel.pkgs
+       set of packages required for building
+./build/config.<pldistro>/bootcd.pkgs
+       contents of the bootcd image
+./build/config.<pldistro>/bootstrapfs.pkgs
+       the standard contents of the node root 
+       used to generate yumgroups.xml
+./build/config.<pldistro>/bootstrapfs-*.pkgs
+       all *.pkgs files here - produce additional node root images (tar.bz2)
+./build/config.<pldistro>/myplc.pkgs
+       contents of the myplc image
+./build/config.<pldistro>/vserver.pkgs
+       the contents of the standard vserver reference image
+./build/config.<pldistro>/vserver-*.pkgs
+       all *.pkgs files here - produce additional vserver images
+./build/config.<pldistro>/native-shell.pkgs
+       used to create test vservers for myplc-native
index fd05d78..ae938c3 100644 (file)
@@ -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
+}
+
index 73d42d3..351648c 100644 (file)
@@ -1,7 +1,108 @@
-package: bash
-package: filesystem
+package: kernel
+package: kernel-smp
 package: udev
+package: basesystem
+package: filesystem
+package: bash
+package: coreutils
+package: python
 package: coreutils
-# see former bootmanager/support-files/buildnode.sh
+package: cpio
+package: e2fsprogs
+package: ed
+package: file     
+package: glibc
+package: hdparm
+package: initscripts
+package: iproute
+package: iputils
+package: kbd
+package: libtermcap
+package: passwd
+package: procps
+package: readline
+package: fedora-release
+package: rootfiles
+package: rpm
+package: setserial
+package: setup
+package: sysklogd
+package: SysVinit
+package: termcap
+package: util-linux
+package: vim-minimal
+package: authconfig
+package: shadow-utils
+package: anacron
+package: at
+package: authconfig
+package: autofs
+package: bc
+package: bind-utils
+package: bzip2
+package: crontabs
+package: dhclient
+package: diffutils
+package: ethtool
+package: logrotate
+package: lsof
+package: logwatch
+package: mailcap
+package: nano
+package: nc
+package: netdump
+package: openssh-clients
+package: parted
+package: pciutils
+package: psacct
+package: quota
+package: rsh
+package: rsync
+package: sendmail
+package: sudo
+package: telnet
+package: traceroute
+package: time
+package: tmpwatch
+package: tcpdump
+package: openssh-server
+package: vixie-cron
+package: wget
+package: yum
+package: curl
+package: gzip
+package: iptables
+package: mkinitrd
+package: ntp
+package: perl
 package: python
-group: PlanetLab
+package: tar
+package: expect
+package: portmap
+package: nfs-utils
+package: schedutils
+package: openvpn
+package: vconfig
+package: madwifi
+package: wireless-tools
+package: util-vserver
+package: util-vserver-build
+package: util-vserver-lib
+package: util-vserver-core
+package: util-vserver-sysv
+package: util-vserver-legacy
+package: util-vserver-pl
+#package: util-python
+package: NodeManager
+package: NodeUpdate
+package: codemux
+package: autofs
+package: pl_sshd
+package: ipod
+package: vserver-reference
+package: vserver-system-packages
+package: pl_mom
+package: netflow-utils
+package: PyXML
+package: proper
+package: vsys
index b836e0c..d1a616e 100644 (file)
@@ -78,5 +78,3 @@ package: pciutils-devel
 # for vsys
 package: ocaml ocaml-docs
 package: inotify-tools-devel 
-# for bootstrapfs & useradd
-package: shadow-utils
diff --git a/groups/planetlab.xml b/groups/planetlab.xml
deleted file mode 100644 (file)
index 77993d2..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE comps PUBLIC "-//Red Hat, Inc.//DTD Comps info//EN" "comps.dtd">
-<comps>
-
-  <group>
-    <id>planetlab</id>
-    <name>PlanetLab</name>
-    <default>true</default>
-    <description>PlanetLab Node Packages</description>
-    <uservisible>false</uservisible>
-    <packagelist>
-      <packagereq type="mandatory">basesystem</packagereq>
-      <packagereq type="mandatory">bash</packagereq>
-      <packagereq type="mandatory">coreutils</packagereq>
-      <packagereq type="mandatory">cpio</packagereq>
-      <packagereq type="mandatory">e2fsprogs</packagereq>
-      <packagereq type="mandatory">ed</packagereq>
-      <packagereq type="mandatory">file</packagereq>     
-      <packagereq type="mandatory">filesystem</packagereq>
-      <packagereq type="mandatory">glibc</packagereq>
-      <packagereq type="mandatory">hdparm</packagereq>
-      <packagereq type="mandatory">initscripts</packagereq>
-      <packagereq type="mandatory">iproute</packagereq>
-      <packagereq type="mandatory">iputils</packagereq>
-      <packagereq type="mandatory">kbd</packagereq>
-      <packagereq type="mandatory">kernel</packagereq>
-      <packagereq type="mandatory">kernel-smp</packagereq>
-      <packagereq type="mandatory">libtermcap</packagereq>
-      <packagereq type="mandatory">passwd</packagereq>
-      <packagereq type="mandatory">procps</packagereq>
-      <packagereq type="mandatory">readline</packagereq>
-      <packagereq type="mandatory">fedora-release</packagereq>
-      <packagereq type="mandatory">rootfiles</packagereq>
-      <packagereq type="mandatory">rpm</packagereq>
-      <packagereq type="mandatory">setserial</packagereq>
-      <packagereq type="mandatory">setup</packagereq>
-      <packagereq type="mandatory">sysklogd</packagereq>
-      <packagereq type="mandatory">SysVinit</packagereq>
-      <packagereq type="mandatory">termcap</packagereq>
-      <packagereq type="mandatory">util-linux</packagereq>
-      <packagereq type="mandatory">vim-minimal</packagereq>
-
-      <packagereq type="default">authconfig</packagereq>
-      <packagereq type="default">shadow-utils</packagereq>
-
-      <packagereq type="default">anacron</packagereq>
-      <packagereq type="mandatory">at</packagereq>
-      <packagereq type="default">authconfig</packagereq>
-      <packagereq type="default">autofs</packagereq>
-      <packagereq type="mandatory">bc</packagereq>
-      <packagereq type="mandatory">bind-utils</packagereq>
-      <packagereq type="mandatory">bzip2</packagereq>
-      <packagereq type="mandatory">crontabs</packagereq>
-      <packagereq type="default">dhclient</packagereq>
-      <packagereq type="default">diffutils</packagereq>
-      <packagereq type="default">ethtool</packagereq>
-      <packagereq type="mandatory">logrotate</packagereq>
-      <packagereq type="mandatory">lsof</packagereq>
-      <packagereq type="default">logwatch</packagereq>
-      <packagereq type="mandatory">mailcap</packagereq>
-      <packagereq type="default">nano</packagereq>
-      <packagereq type="default">nc</packagereq>
-      <packagereq type="mandatory">netdump</packagereq>
-      <packagereq type="default">openssh-clients</packagereq>
-      <packagereq type="mandatory">parted</packagereq>
-      <packagereq type="mandatory">pciutils</packagereq>
-      <packagereq type="mandatory">psacct</packagereq>
-      <packagereq type="mandatory">quota</packagereq>
-      <packagereq type="default">rsh</packagereq>
-      <packagereq type="default">rsync</packagereq>
-      <packagereq type="default">sendmail</packagereq>
-      <packagereq type="default">sudo</packagereq>
-      <packagereq type="mandatory">telnet</packagereq>
-      <packagereq type="mandatory">traceroute</packagereq>
-      <packagereq type="mandatory">time</packagereq>
-      <packagereq type="mandatory">tmpwatch</packagereq>
-      <packagereq type="default">tcpdump</packagereq>
-      <packagereq type="default">openssh-server</packagereq>
-      <packagereq type="default">vixie-cron</packagereq>
-      <packagereq type="default">wget</packagereq>
-      <packagereq type="default">yum</packagereq>
-
-      <packagereq type="mandatory">curl</packagereq>
-      <packagereq type="mandatory">gzip</packagereq>
-      <packagereq type="mandatory">iptables</packagereq>
-      <packagereq type="mandatory">mkinitrd</packagereq>
-      <packagereq type="mandatory">ntp</packagereq>
-      <packagereq type="mandatory">perl</packagereq>
-      <packagereq type="mandatory">python</packagereq>
-      <packagereq type="mandatory">tar</packagereq>
-      <packagereq type="mandatory">expect</packagereq>
-
-      <packagereq type="mandatory">portmap</packagereq>
-      <packagereq type="mandatory">nfs-utils</packagereq>
-
-      <packagereq type="mandatory">schedutils</packagereq>
-
-      <packagereq type="mandatory">openvpn</packagereq>
-
-      <packagereq type="default">vconfig</packagereq>
-
-      <packagereq type="mandatory">madwifi</packagereq>
-      <packagereq type="mandatory">wireless-tools</packagereq>
-      <packagereq type="mandatory">util-vserver</packagereq>
-      <packagereq type="mandatory">util-vserver-build</packagereq>
-      <packagereq type="mandatory">util-vserver-lib</packagereq>
-      <packagereq type="mandatory">util-vserver-core</packagereq>
-      <packagereq type="mandatory">util-vserver-sysv</packagereq>
-      <packagereq type="mandatory">util-vserver-legacy</packagereq>
-      <packagereq type="mandatory">util-vserver-pl</packagereq>
-      <packagereq type="mandatory">util-python</packagereq>
-      <packagereq type="mandatory">NodeManager</packagereq>
-      <packagereq type="mandatory">NodeUpdate</packagereq>
-      <packagereq type="mandatory">codemux</packagereq>
-      <packagereq type="mandatory">autofs</packagereq>
-      <packagereq type="mandatory">pl_sshd</packagereq>
-      <packagereq type="mandatory">ipod</packagereq>
-      <packagereq type="mandatory">vserver-reference</packagereq>
-      <packagereq type="mandatory">vserver-system-packages</packagereq>
-      <packagereq type="mandatory">pl_mom</packagereq>
-      <packagereq type="mandatory">netflow-utils</packagereq>
-      <packagereq type="mandatory">PyXML</packagereq>
-      <packagereq type="mandatory">proper</packagereq>
-    </packagelist>
-  </group>
-
-  <group>
-    <id>planetlabalpha</id>
-    <name>PlanetLab Alpha</name>    
-    <uservisible>true</uservisible>
-    <description></description>
-    <grouplist/>
-    <packagelist>
-    </packagelist>
-  </group>
-
-  <group>
-    <id>planetlabbeta</id>
-    <name>PlanetLab Beta</name>    
-    <uservisible>true</uservisible>
-    <description></description>
-    <grouplist/>
-    <packagelist>
-    </packagelist>
-  </group>
-
-</comps>
diff --git a/yumgroups.sh b/yumgroups.sh
new file mode 100755 (executable)
index 0000000..28f9c49
--- /dev/null
@@ -0,0 +1,14 @@
+#!/bin/bash
+
+. build.common
+
+function usage () {
+    echo "Usage: $0 pldistro"
+    exit 1
+}
+
+[ "$#" = 2 ] || usage
+pldistro=$1; shift
+pkgsname=$1; shift
+
+toplevel_yumgroups $pldistro $pkgsname