X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=build.sh;h=63755032d8eceac6746e09671f92473d0fe35bc9;hb=baa72c765305529043ecc1ca76035ed1f40f37bf;hp=7fa29c395c4a742f4900374df67e31b10b628d44;hpb=976cd858354b462904aeae1b56bdd12fa16fb022;p=myplc.git diff --git a/build.sh b/build.sh index 7fa29c3..6375503 100755 --- a/build.sh +++ b/build.sh @@ -1,144 +1,72 @@ #!/bin/bash # -# 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 +# 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 environment with the appropriate development packages +# installed). # -# root.img (loopback image) -# 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 +# Marc E. Fiuczynski +# Copyright (C) 2007 The Trustees of Princeton University # # $Id$ # . build.functions -# pldistro expected as $1 - defaults to planetlab -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 -# 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/sites -/var/www/html/generated -/var/www/html/install-rpms -/var/www/html/xml -/tmp -/usr/tmp -/var/tmp -/var/log -) - -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_mkfedora root $pldistro $pkgsfile -pl_root_tune_image root +# XXX .spec file needs to have the appropriate set of requires statements # 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 db-config root/usr/bin/db-config -install -D -m 755 dns-config root/usr/bin/dns-config -install -D -m 755 plc-map.py root/usr/bin/plc-map.py -install -D -m 755 refresh-peer.py root/usr/bin/refresh-peer.py -install -D -m 755 clean-empty-dirs.py root/usr/bin/clean-empty-dirs.py -install -D -m 755 mtail.py root/usr/bin/mtail.py -install -D -m 755 check-ssl-peering.py root/usr/bin/check-ssl-peering.py +echo "* myplc-native: Installing configuration scripts" +pldistro=$1; shift +RPM_BUILD_ROOT=$1 ; shift +PYTHON_SITEARCH=`python -c 'from distutils.sysconfig import get_python_lib; print get_python_lib(1)'` +rm -rf ${RPM_BUILD_ROOT} +mkdir -p ${RPM_BUILD_ROOT} +echo "* myplc-native: installing plc_config.py in " ${PYTHON_SITEARCH} +install -D -m 755 plc_config.py ${RPM_BUILD_ROOT}/${PYTHON_SITEARCH}/plc_config.py +install -D -m 644 bashrc ${RPM_BUILD_ROOT}/usr/share/myplc/bashrc +echo "* myplc-native: installing scripts in /usr/bin" +install -D -m 755 plc-config ${RPM_BUILD_ROOT}/usr/bin/plc-config +install -D -m 755 plc-config-tty ${RPM_BUILD_ROOT}/usr/bin/plc-config-tty +install -D -m 755 db-config ${RPM_BUILD_ROOT}/usr/bin/db-config +install -D -m 755 dns-config ${RPM_BUILD_ROOT}/usr/bin/dns-config +install -D -m 755 plc-map.py ${RPM_BUILD_ROOT}/usr/bin/plc-map.py +install -D -m 755 plc-kml.py ${RPM_BUILD_ROOT}/usr/bin/plc-kml.py +install -D -m 755 refresh-peer.py ${RPM_BUILD_ROOT}/usr/bin/refresh-peer.py +install -D -m 755 clean-empty-dirs.py ${RPM_BUILD_ROOT}/usr/bin/clean-empty-dirs.py +install -D -m 755 mtail.py ${RPM_BUILD_ROOT}/usr/bin/mtail.py +install -D -m 755 plc-check-ssl-peering.py ${RPM_BUILD_ROOT}/usr/bin/plc-check-ssl-peering.py +install -D -m 755 plc-orphan-accounts.py ${RPM_BUILD_ROOT}/usr/bin/plc-orphan-accounts.py + # Extra scripts (mostly for mail and dns) not installed by myplc by default. Used in production -mkdir root/etc/support-scripts -cp support-scripts/* root/etc/support-scripts +echo "* myplc-native: installing scripts in /etc/support-scripts" +mkdir -p ${RPM_BUILD_ROOT}/etc/support-scripts +cp support-scripts/* ${RPM_BUILD_ROOT}/etc/support-scripts +chmod 444 ${RPM_BUILD_ROOT}/etc/support-scripts/* + # copy initscripts to etc/plc_sliceinitscripts -mkdir root/etc/plc_sliceinitscripts -cp plc_sliceinitscripts/* root/etc/plc_sliceinitscripts +mkdir -p ${RPM_BUILD_ROOT}/etc/plc_sliceinitscripts +cp plc_sliceinitscripts/* ${RPM_BUILD_ROOT}/etc/plc_sliceinitscripts +chmod 444 ${RPM_BUILD_ROOT}/etc/plc_sliceinitscripts/* # Install initscripts -echo "* myplc: Installing initscripts" -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' - -# fetch the release stamp from the build if any -# I could not come up with any more sensitive scheme -if [ -f ../../../myplc-release ] ; then - cp ../../../myplc-release myplc-release -else - echo "Cannot find release information." > myplc-release - date >> myplc-release - echo "$HeadURL$" >> myplc-release -fi -# install it in /etc/myplc-release -install -m 444 myplc-release root/etc/myplc-release - -### Thierry Parmentelat - april 16 2007 -# fix the yum.conf as produced by mkfedora -# so we can use the build's fc4 mirror for various installs/upgrades -# within the chroot jail -# yum_conf_to_build_host is defined in build.functions -yum_conf_to_build_host ../build > root/etc/yum.conf - -### Thierry Parmentelat - may 8 2008 -# no doc built in this old-fashioned packaging anymore -# use myplc-docs instead +echo "* myplc-native: Installing initscripts" +install -D -m 755 plc.init ${RPM_BUILD_ROOT}/etc/init.d/plc +find plc.d | cpio -p -d -u ${RPM_BUILD_ROOT}/etc/ +chmod 755 ${RPM_BUILD_ROOT}/etc/plc.d/* # Install configuration file echo "* myplc: Installing configuration file" -install -D -m 444 default_config.xml data/etc/planetlab/default_config.xml -install -D -m 444 plc_config.dtd data/etc/planetlab/plc_config.dtd - -# 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" -pl_move_dirs root data /data "${datadirs[@]}" - -# Fix permissions on tmp directories -pl_fixtmp_permissions data - -# Remove generated bootmanager script -rm -f data/var/www/html/boot/bootmanager.sh +install -D -m 444 default_config.xml ${RPM_BUILD_ROOT}/etc/planetlab/default_config.xml +install -D -m 444 plc_config.dtd ${RPM_BUILD_ROOT}/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 \ - 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) +# Install db-config.d files +echo "* myplc: Installing db-config.d files" +mkdir -p ${RPM_BUILD_ROOT}/etc/planetlab/db-config.d +cp db-config.d/* ${RPM_BUILD_ROOT}/etc/planetlab/db-config.d +chmod 444 ${RPM_BUILD_ROOT}/etc/planetlab/db-config.d/* -# Make image out of directory -echo "* myplc: Building loopback image" -pl_make_image root root.img 100000000 +# yumgroups.xml and yum repo : let noderepo handle that exit 0