cross-module change for multi-arch myplc
Thierry Parmentelat [Sun, 9 Mar 2008 17:18:53 +0000 (17:18 +0000)]
* name of the bootstrap tarball changed into
  bootstrapfs-<id>-<arch>.tar.bz2
    with id=<planetlab-distro> for the main tarball
    and  id=<extension> for the extensions tarballs

* bootmanager to use node's nodegroups to figure the tarball to use

* the noderepo rpm allows to install /var/www/html/install-rpms/<repo>
==
status
* checkpoint version to verify that mono-arch mono-distro still works
* build phase tested
* but some parts are still missing for complete multi-arch behaviour:
* bootstrapfs's rpm name should sontain pldistro and arch (as it is a noarch rpm)
* yum.php.conf also needs tunings

bootstrapfs.spec
build.sh
noderepo.spec

index a43e01e..06ebe12 100644 (file)
@@ -22,6 +22,8 @@ License: BSD
 Group: System Environment/Base
 Source0: %{name}-%{version}.tar.gz
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
+# other archs must be able to install this
+BuildArch: noarch
 
 Requires: tar, gnupg, sharutils, bzip2
 
@@ -38,21 +40,22 @@ BootManager to instantiate a node with a new filesystem.
 
 %build
 pushd BootstrapFS
-./build.sh %{pldistro}
+./build.sh %{distroname} %{pldistro} 
 popd BootstrapFS
 
 %install
 rm -rf $RPM_BUILD_ROOT
 
 pushd BootstrapFS
+arch=$(uname -i)
 
-install -D -m 644 PlanetLab-Bootstrap.tar.bz2 \
-       $RPM_BUILD_ROOT/var/www/html/boot/PlanetLab-Bootstrap.tar.bz2
+install -D -m 644 bootstrapfs-%{pldistro}-${arch}.tar.bz2 \
+       $RPM_BUILD_ROOT/var/www/html/boot/bootstrapfs-%{pldistro}-${arch}.tar.bz2
 
 for pkgs in $(ls ../build/config.%{pldistro}/bootstrapfs-*.pkgs) ; do 
     NAME=$(basename $pkgs .pkgs | sed -e s,bootstrapfs-,,)
-    install -D -m 644 %{pldistro}-filesystems/PlanetLab-Bootstrap-${NAME}.tar.bz2 \
-               $RPM_BUILD_ROOT/var/www/html/boot/PlanetLab-Bootstrap-${NAME}.tar.bz2
+    install -D -m 644 %{pldistro}-filesystems/bootstrapfs-${NAME}-${arch}.tar.bz2 \
+               $RPM_BUILD_ROOT/var/www/html/boot/bootstrapfs-${NAME}-${arch}.tar.bz2 
 done
 
 popd
@@ -73,10 +76,9 @@ fi
 
 %post
 
-
 %files
 %defattr(-,root,root,-)
-/var/www/html/boot/PlanetLab-Bootstrap*.tar.bz2
+/var/www/html/boot/bootstrapfs*.tar.bz2
 
 %changelog
 * Fri Jan 18 2008 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - bootstrapfs-0.1-1 bootstrapfs-0.1-2
index 00cda86..068e381 100755 (executable)
--- a/build.sh
+++ b/build.sh
@@ -1,7 +1,6 @@
 #!/bin/bash
 #
-# Build PlanetLab-Bootstrap.tar.bz2, the reference image for PlanetLab
-# nodes.
+# Build bootstrapfs-*.tar.bz2, the reference image(s) for PlanetLab nodes.
 #
 # Mark Huang <mlhuang@cs.princeton.edu>
 # Marc E. Fiuczynski <mef@cs.princeton.edu>
@@ -12,7 +11,7 @@
 
 
 #
-# This will build the Planetlab-Bootstrap.tar.bz2, which comprises
+# This will build the bootstrafs-*.tar.bz2 images, which comprises
 # the base root image on the node, then create the ${NAME} bootstrap image
 # which is made up of just the additional files needed for a ${NAME} nodegroup 
 # node.
 
 PATH=/sbin:/bin:/usr/sbin:/usr/bin
 
-# In both a normal CVS environment and a PlanetLab RPM
-# build environment, all of our dependencies are checked out into
-# directories at the same level as us.
+# in the PlanetLab build environment, our dependencies are checked out 
+# into directories at the same level as us.
 if [ -d ../build ] ; then
     PATH=$PATH:../build
     srcdir=../
 else
-    echo "Error: Could not find $(cd ../.. && pwd -P)/build/"
+    echo "Error: Could not find ../build in $(pwd)"
     exit 1
 fi
 
@@ -39,9 +37,9 @@ pl_process_fedora_options $@
 shiftcount=$?
 shift $shiftcount
 
-# pldistro expected as $1 - defaults to planetlab
-pldistro=planetlab
-[ -n "$@" ] && pldistro=$1
+# expecting fcdistro and pldistro on the command line
+fcdistro=$1; shift
+pldistro=$1; shift
 
 # Do not tolerate errors
 set -e
@@ -53,7 +51,7 @@ export PL_BOOTCD=1
 
 echo "+++++++++++++pkgsfile=$pkgsfile (and -k)"
 
-# Populate a minimal /dev and then the files for the base PlanetLab-Bootstrap content
+# Populate a minimal /dev and then the files for the base bootstrapfs content
 vref=${PWD}/base
 install -d -m 755 ${vref}
 pl_root_makedevs $vref
@@ -74,7 +72,7 @@ pkgs_count=$(ls ../build/config.${pldistro}/bootstrapfs-*.pkgs 2> /dev/null | wc
 [ $pkgs_count -gt 0 ] && for pkgs in $(ls ../build/config.${pldistro}/bootstrapfs-*.pkgs); do
     NAME=$(basename $pkgs .pkgs | sed -e s,bootstrapfs-,,)
 
-    echo "--------START BUILDING PlanetLab-Bootstrap-${NAME}: $(date)"
+    echo "--------START BUILDING bootstrapfs-${NAME}: $(date)"
 
     # "Parse" out the packages and groups for yum
     packages=$(pl_getPackages ${pl_DISTRO_NAME} $pkgs)
@@ -135,18 +133,18 @@ pkgs_count=$(ls ../build/config.${pldistro}/bootstrapfs-*.pkgs 2> /dev/null | wc
     rm -f  ${vdir}.changes
     mv ${vdir}-tmp ${vdir}
     
-    echo "--------STARTING tar'ing PlanetLab-Bootstrap-${NAME}.tar.bz2: $(date)"
-    tar -cpjf ${pldistro}-filesystems/PlanetLab-Bootstrap-${NAME}.tar.bz2 -C ${vdir} .
-    echo "--------FINISHED tar'ing PlanetLab-Bootstrap-${NAME}.tar.bz2: $(date)"
-    echo "--------DONE BUILDING PlanetLab-Bootstrap-${NAME}: $(date)"
+    echo "--------STARTING tar'ing bootstrapfs-${NAME}-${pl_DISTRO_ARCH}.tar.bz2: $(date)"
+    tar -cpjf ${pldistro}-filesystems/bootstrapfs-${NAME}-${pl_DISTRO_ARCH}.tar.bz2 -C ${vdir} .
+    echo "--------FINISHED tar'ing bootstrapfs-${NAME}-${pl_DISTRO_ARCH}.tar.bz2: $(date)"
+    echo "--------DONE BUILDING bootstrapfs-${NAME}-${pl_DISTRO_ARCH}: $(date)"
 done
 
 # Build the base Bootstrap filesystem
 # clean out yum cache to reduce space requirements
 yum -c ${vref}/etc/yum.conf --installroot=${vref} -y clean all
 
-echo "--------STARTING tar'ing PlanetLab-Bootstrap.tar.bz2: $(date)"
-tar -cpjf PlanetLab-Bootstrap.tar.bz2 -C ${vref} .
-echo "--------FINISHED tar'ing PlanetLab-Bootstrap.tar.bz2: $(date)"
+echo "--------STARTING tar'ing bootstrapfs-${pldistro}-${pl_DISTRO_ARCH}.tar.bz2: $(date)"
+tar -cpjf bootstrapfs-${pldistro}-${pl_DISTRO_ARCH}.tar.bz2 -C ${vref} .
+echo "--------FINISHED tar'ing bootstrapfs-${pldistro}-${pl_DISTRO_ARCH}.tar.bz2: $(date)"
 
 exit 0
index 8e5ae3d..3fca34e 100644 (file)
@@ -8,7 +8,7 @@
 # %{distrorelease}  : e.g. 8
 # %{node_rpms_plus} : as a +++ separated list of rpms from the build dir
 
-%define nodetype %{pldistro}%{distroname}%{_arch}
+%define nodetype %{pldistro}-%{_arch}
 
 %define name noderepo-%{nodetype}
 %define version 0.1
@@ -29,6 +29,8 @@ License: BSD
 Group: System Environment/Base
 Source0: %{name}-%{version}.tar.gz
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
+# other archs must be able to install this
+BuildArch: noarch
 
 BuildRequires: rsync 
 Requires: myplc