From 7a8bc999fb3642460c47027f822d8004b6ff589f Mon Sep 17 00:00:00 2001 From: Thierry Parmentelat Date: Mon, 10 Mar 2008 11:45:24 +0000 Subject: [PATCH] Second step towards multiarch myplc https://svn.planet-lab.org/ticket/214 -- design * new notion of a 'nodefamily' - that for now is - * standard rpm repository is now named /var/www/html/install-rpms/ a legacy symlink install-rpms/planetlab is created my myplc packaging * bootstrafs rpm name is now bootstrapfs- so that several instances from various builds can be installed in the same myplc * noderepo rpm (named noderepo-) built as part of the planetlab distro this is for installing /var/www/html/intall-rpms/ from another build -- other changes * extensive cleanup of mkfedora: ** obsolete options -p -g -x removed ** option -p removed, pkgsfile is a mandatory argument ** option -k removed, use kexclude: in the pkgs file instead * also cleaned up pl_root_* functions - no wrapper to pl_root_mkfedora anymore -- status * not tested at all - likely to break * next step planned for storing nodefamily and pass it to yum.php.conf (impacted would be bootmanager, nodemanager and nodeconfig) * a final cleanup in mkfedora would be to define mirrors in a separate .pkgs-like file * kupdate.sh, as well as possibly other convenience scripts, might be impacted --- build-native.sh | 9 ++++++--- build.sh | 23 ++++++++++++++--------- myplc-native.spec | 5 +++-- 3 files changed, 23 insertions(+), 14 deletions(-) diff --git a/build-native.sh b/build-native.sh index d1888bb..4c73823 100755 --- a/build-native.sh +++ b/build-native.sh @@ -18,8 +18,8 @@ # Install configuration scripts echo "* myplc-native: Installing configuration scripts" -tmpdir=$1 -mkdir -p ${tmpdir} +pldistro=$1; shift +tmpdir=$1 ; shift rm -rf ${tmpdir} mkdir -p ${tmpdir} echo "* myplc-native: installing plc_config.py in /usr/share/myplc" @@ -53,7 +53,10 @@ install -D -m 444 plc_config.dtd ${tmpdir}/etc/planetlab/plc_config.dtd # Initialize node RPMs directory. The PlanetLab-Bootstrap.tar.bz2 # tarball already contains all of the node RPMs pre-installed. Only # updates or optional packages should be placed in this directory. +nodefamily=${pldistro}-${pl_DISTRO_ARCH} install -D -m 644 $pl_DISTRO_YUMGROUPS \ - ${tmpdir}/var/www/html/install-rpms/planetlab/yumgroups.xml + data/var/www/html/install-rpms/$nodefamily/yumgroups.xml +# temporary - so that node update still work until yum.conf.php gets fixed +( cd data/var/www/html/install-rpms ; ln -s $nodefamily planetlab) exit 0 diff --git a/build.sh b/build.sh index 2e03f6b..4cb08f4 100755 --- a/build.sh +++ b/build.sh @@ -1,10 +1,11 @@ #!/bin/bash # -# Builds MyPLC, either inside the MyPLC development environment in -# devel/root (if PLC_DEVEL_BOOTSTRAP is true), or in the current host -# environment (may be itself a MyPLC development environment or a -# Fedora Core 4 environment with the appropriate development packages -# installed). +# Builds MyPLC in the current host environment +# This is for the so-called chroot installation mode, meaning that +# the resulting rpm will install a full chroot image in /plc/root +# that can be run through chroot /plc/root +# This chroot mode is to be opposed to the native mode (see build-native.sh) +# that can be used in the host's root context or within a vserver # # root.img (loopback image) # root/ (mount point) @@ -21,8 +22,7 @@ . build.functions # pldistro expected as $1 - defaults to planetlab -pldistro=planetlab -[ -n "$@" ] && pldistro=$1 +pldistro=$1 ; shift # These directories are allowed to grow to unspecified size, so they # are stored as symlinks to the /data partition. mkfedora and yum @@ -50,8 +50,10 @@ pl_fixdirs root "${datadirs[@]}" echo "* myplc: Installing base filesystem" mkdir -p root data +pl_root_makedevs root pkgsfile=$(pl_locateDistroFile ../build/ ${pldistro} myplc.pkgs) -pl_root_setup_chroot root -f $pkgsfile +pl_root_mkfedora root $pldistro $pkgsfile +pl_root_tune_image root # Install configuration scripts echo "* myplc: Installing configuration scripts" @@ -151,8 +153,11 @@ rm -f data/var/www/html/boot/bootmanager.sh # Initialize node RPMs directory. The PlanetLab-Bootstrap.tar.bz2 # tarball already contains all of the node RPMs pre-installed. Only # updates or optional packages should be placed in this directory. +nodefamily=${pldistro}-${pl_DISTRO_ARCH} install -D -m 644 $pl_DISTRO_YUMGROUPS \ - data/var/www/html/install-rpms/planetlab/yumgroups.xml + data/var/www/html/install-rpms/$nodefamily/yumgroups.xml +# temporary - so that node update still work until yum.conf.php gets fixed +( cd data/var/www/html/install-rpms ; ln -s $nodefamily planetlab) # Make image out of directory echo "* myplc: Building loopback image" diff --git a/myplc-native.spec b/myplc-native.spec index c7062f8..e8f7131 100644 --- a/myplc-native.spec +++ b/myplc-native.spec @@ -69,7 +69,7 @@ Requires: findutils Requires: PLCWWW Requires: nodeconfig Requires: PLCAPI -Requires: bootstrapfs +Requires: bootstrapfs-%{pldistro}-%{_arch} Provides: myplc @@ -90,7 +90,7 @@ system. %build pushd MyPLC rm -rf $RPM_BUILD_ROOT -./build-native.sh $RPM_BUILD_ROOT +./build-native.sh %{pldistro} $RPM_BUILD_ROOT popd %install @@ -188,6 +188,7 @@ fi /etc/plc_sliceinitscripts/sirius /etc/support-scripts/gen_aliases.py* /etc/support-scripts/renew_reminder.py* +/var/www/html/install-rpms/%{pldistro}-%{_arch} /var/www/html/install-rpms/planetlab /usr/bin/plc-config /usr/bin/plc-config-tty -- 2.43.0