X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=build.sh;h=63755032d8eceac6746e09671f92473d0fe35bc9;hb=refs%2Fheads%2F4.3;hp=7ce888d91f0562eed43926f317d5b945cffb6837;hpb=c7e9ad5a295d1778355717f407b20d51cdf8ec47;p=myplc.git diff --git a/build.sh b/build.sh index 7ce888d..6375503 100755 --- a/build.sh +++ b/build.sh @@ -3,158 +3,70 @@ # 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 +# 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=planetlab -[ -n "$@" ] && pldistro=$1 - -# 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 - -pkgsfile=$(pl_locateDistroFile ../build/ ${pldistro} myplc.pkgs) -pl_setup_chroot root -f $pkgsfile +# 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 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 +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 -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 "No build release information found" > 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 > root/etc/yum.conf - -### Thierry Parmentelat - may 16 2007 -# the node-dependent image generation script requires root privilege -# to perform various mount operations -sudoers_bootcustom_apache > root/etc/sudoers -chown root:root root/etc/sudoers -chmod 400 root/etc/sudoers - -### Thierry Parmentelat - july 20 2007 -# we now build the myplc doc -# beware that making the pdf file somehow overwrites the html -make -C doc myplc.pdf -rm -f doc/myplc.html -make -C doc myplc.html - -# install at the same place as plcapi - better ideas ? -for doc in myplc.html myplc.pdf ; do - install -m 644 doc/$doc root/usr/share/plc_api/doc/$doc -done - -# we now build the plcapi doc -# this generates a drupal php file from a docbook-generated html -# quick & dirty -docbook_html_to_drupal "OneLab PLCAPI Documentation" \ - root/usr/share/plc_api/doc/PLCAPI.html \ - root/var/www/html/planetlab/doc/plcapi.php -# pdf just get copied -install -m 644 root/usr/share/plc_api/doc/PLCAPI.pdf root/var/www/html/planetlab/doc/plcapi.pdf - -docbook_html_to_drupal "Myplc User Guide" \ - root/usr/share/plc_api/doc/myplc.html \ - root/var/www/html/planetlab/doc/myplc.php -# pdf just get copied -install -m 644 root/usr/share/plc_api/doc/myplc.pdf root/var/www/html/planetlab/doc/myplc.pdf +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. -install -D -m 644 $pl_DISTRO_YUMGROUPS \ - data/var/www/html/install-rpms/planetlab/yumgroups.xml +# 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