X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=build.sh;h=914101e14e7d6b0bf89acb3c314755b04eeacbc9;hb=c789793e142f9a5bc181c36e0b9241b5e219e74c;hp=8a2ae6a14fefff8aa3191b71b9c92b6813459328;hpb=60fe435eb4e2be0cd3eb854d47b2fad1de569f5e;p=myplc.git diff --git a/build.sh b/build.sh index 8a2ae6a..914101e 100755 --- a/build.sh +++ b/build.sh @@ -10,6 +10,7 @@ # root/ (mount point) # data/ (various data files) # data/etc/planetlab/ (configuration files) +# data/root (root's homedir) # # Mark Huang # Copyright (C) 2006 The Trustees of Princeton University @@ -34,14 +35,14 @@ if [ "$PLC_DEVEL_BOOTSTRAP" = "true" ] ; then # If we used a local mirror, bind mount it into the chroot so that # we can use it again. if [ "${PLC_DEVEL_FEDORA_URL:0:7}" = "file://" ] ; then - mkdir -p devel/root/usr/share/mirrors/fedora - mount -o bind,ro ${PLC_DEVEL_FEDORA_URL#file://} devel/root/usr/share/mirrors/fedora + mkdir -p devel/root/data/fedora + mount -o bind,ro ${PLC_DEVEL_FEDORA_URL#file://} devel/root/data/fedora fi # Clean up before exiting if anything goes wrong - trap "umount $PWD/devel/root/data; - umount $PWD/devel/root/proc; - umount $PWD/devel/root/usr/share/mirrors/fedora" ERR INT + trap "umount $PWD/devel/root/data/fedora; + umount $PWD/devel/root/data; + umount $PWD/devel/root/proc" ERR INT # Build myplc inside myplc-devel. Make sure PLC_DEVEL_BOOTSTRAP is # false to avoid infinite recursion. @@ -51,17 +52,17 @@ service plc start plc-config --category=plc_devel --variable=bootstrap --value="false" --save service plc reload cd / -cvs -d /cvs checkout build -make -C /build myplc +cvs -d /cvs checkout -r $BUILD_TAG build +make TAG=$BUILD_TAG -C /build myplc EOF # Yoink the image that was just built mv devel/data/build/BUILD/myplc-*/myplc/root{,.img} devel/data/build/BUILD/myplc-*/myplc/data . # Clean up + umount devel/root/data/fedora || : umount devel/root/data umount devel/root/proc - umount devel/root/usr/share/mirrors/fedora || : rm -rf devel/data/build mkdir -p devel/data/build @@ -74,19 +75,43 @@ fi # PLC_DEVEL_BOOTSTRAP is false. # +# These directories are allowed to grow to unspecified size, so they +# are stored as symlinks to the /data partition. mkfedora and yum +# expect some of them to be real directories, however. +datadirs=( +/etc/planetlab +/root +/var/lib/pgsql +/var/www/html/alpina-logs +/var/www/html/boot +/var/www/html/download +/var/www/html/files +/var/www/html/generated +/var/www/html/install-rpms +/var/www/html/xml +/tmp +/usr/tmp +/var/tmp +/var/log +) +for datadir in "${datadirs[@]}" ; do + # If we are being re-run, it may be a symlink + if [ -h root/$datadir ] ; then + rm -f root/$datadir + mkdir -p root/$datadir + fi +done + echo "* myplc: Installing base filesystem" mkdir -p root data make_chroot root plc_config.xml -# Build schema -echo "* myplc: Building database schema" -make -C $srcdir/pl_db - # Install configuration scripts echo "* myplc: Installing configuration scripts" install -D -m 755 plc_config.py root/tmp/plc_config.py chroot root sh -c 'cd /tmp; python plc_config.py build; python plc_config.py install' install -D -m 755 plc-config root/usr/bin/plc-config +install -D -m 755 plc-config-tty root/usr/bin/plc-config-tty install -D -m 755 api-config root/usr/bin/api-config install -D -m 755 db-config root/usr/bin/db-config install -D -m 755 dns-config root/usr/bin/dns-config @@ -97,11 +122,6 @@ find plc.d | cpio -p -d -u root/etc/ install -D -m 755 guest.init root/etc/init.d/plc chroot root sh -c 'chkconfig --add plc; chkconfig plc on' -# Install DB schema and API code -echo "* myplc: Installing DB schema and API code" -mkdir -p root/usr/share -rsync -a $srcdir/pl_db $srcdir/plc_api root/usr/share/ - # Install web scripts echo "* myplc: Installing web scripts" mkdir -p root/usr/bin @@ -114,54 +134,40 @@ install -m 755 \ # Install web pages echo "* myplc: Installing web pages" mkdir -p root/var/www/html -# Exclude old cruft, unrelated GENI pages, and official documents -rsync -a \ - --exclude='*2002' --exclude='*2003' \ - --exclude=geni --exclude=PDN --exclude=Talks \ - $srcdir/plc_www/ root/var/www/html/ +rsync -a $srcdir/new_plc_www/ root/var/www/html/ + +# Install Drupal rewrite rules +install -D -m 644 $srcdir/new_plc_www/drupal.conf root/etc/httpd/conf.d/drupal.conf # Install configuration file echo "* myplc: Installing configuration file" install -D -m 444 $config data/etc/planetlab/default_config.xml install -D -m 444 plc_config.dtd data/etc/planetlab/plc_config.dtd -# Move "data" directories out of the installation -datadirs=( -/etc/planetlab -/var/lib/pgsql -/var/www/html/alpina-logs -/var/www/html/boot -/var/www/html/download -/var/www/html/generated -/var/www/html/install-rpms -/var/www/html/xml -) +# handle root's homedir and tweak root prompt +echo "* myplc: root's homedir and prompt" +roothome=data/root +mkdir -p $roothome +cat << EOF > $roothome/.profile +export PS1=" \$PS1" +EOF +chmod 644 $roothome/.profile +# Move "data" directories out of the installation +echo "* myplc: Moving data directories out of the installation" move_datadirs root data "${datadirs[@]}" +# Fix permissions on tmp directories +chmod 1777 data/tmp data/usr/tmp data/var/tmp + +# Remove generated bootmanager script +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. -if [ -n "$RPM_BUILD_DIR" ] ; then - echo "* myplc: Initializing node RPMs directory" - RPM_RPMS_DIR=$(cd $(dirname $RPM_BUILD_DIR)/RPMS && pwd -P) - mkdir -p data/var/www/html/install-rpms/planetlab - if [ -f $RPM_RPMS_DIR/yumgroups.xml ] ; then - install -D -m 644 $RPM_RPMS_DIR/yumgroups.xml \ - data/var/www/html/install-rpms/planetlab/yumgroups.xml - fi - # yum-2.0.x - if [ -x /usr/bin/yum-arch ] ; then - yum-arch data/var/www/html/install-rpms/planetlab - fi - # yum-2.4.x - if [ -x /usr/bin/createrepo ] ; then - if [ -f data/var/www/html/install-rpms/planetlab/yumgroups.xml ] ; then - groupfile="-g yumgroups.xml" - fi - createrepo $groupfile data/var/www/html/install-rpms/planetlab - fi -fi +install -D -m 644 ../build/groups/v3_yumgroups.xml \ + data/var/www/html/install-rpms/planetlab/yumgroups.xml # Make image out of directory echo "* myplc: Building loopback image"