From 8404a0f3da559c3f32b8078fbf5ea317d40785f8 Mon Sep 17 00:00:00 2001 From: Thierry Parmentelat Date: Sun, 9 Mar 2008 17:18:53 +0000 Subject: [PATCH] cross-module change for multi-arch myplc * name of the bootstrap tarball changed into bootstrapfs--.tar.bz2 with id= for the main tarball and id= 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/ == 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 | 16 +++++++++------- build.sh | 36 +++++++++++++++++------------------- noderepo.spec | 4 +++- 3 files changed, 29 insertions(+), 27 deletions(-) diff --git a/bootstrapfs.spec b/bootstrapfs.spec index a43e01e..06ebe12 100644 --- a/bootstrapfs.spec +++ b/bootstrapfs.spec @@ -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 - bootstrapfs-0.1-1 bootstrapfs-0.1-2 diff --git a/build.sh b/build.sh index 00cda86..068e381 100755 --- 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 # Marc E. Fiuczynski @@ -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. @@ -20,14 +19,13 @@ 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 diff --git a/noderepo.spec b/noderepo.spec index 8e5ae3d..3fca34e 100644 --- a/noderepo.spec +++ b/noderepo.spec @@ -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 -- 2.43.0