-#
-# $Id$
-#
-%define url $URL$
-
%define name myplc
-%define version 4.3
-%define taglevel 19
+%define version 5.0
+%define taglevel 15
%define release %{taglevel}%{?pldistro:.%{pldistro}}%{?date:.%{date}}
+%global python_sitearch %( python -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)" )
-Summary: PlanetLab Central (PLC) Portable Installation
Name: %{name}
Version: %{version}
Release: %{release}
License: PlanetLab
-Group: Applications/Systems
Source0: %{name}-%{version}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
BuildArch: noarch
Vendor: PlanetLab
Packager: PlanetLab Central <support@planet-lab.org>
Distribution: PlanetLab %{plrelease}
-URL: %(echo %{url} | cut -d ' ' -f 2)
+URL: %{SCMURL}
+
+%define nodefamily %{pldistro}-%{distroname}-%{_arch}
+
+####################### myplc
+Summary: PlanetLab Central (PLC) Portable Installation
+Group: Applications/Systems
# as much as possible, requires should go in the subpackages specfile
Requires: bzip2
Requires: curl
Requires: rsync
Requires: python-devel
-Requires: vixie-cron
Requires: yum
Requires: PyXML
Requires: createrepo
Requires: findutils
Requires: xmlsec1
Requires: xmlsec1-openssl
+Requires: ed
+%if "%{distro}" == "Fedora" && %{distrorelease} >= 10
+Requires: cronie
+%else
+Requires: vixie-cron
+%endif
# planetlab stuff
Requires: bootmanager
-Requires: bootcd-%{pldistro}-%{_arch}
+Requires: bootcd-%{nodefamily}
+Requires: bootcd-initscripts
Requires: PLCWWW
Requires: www-register-wizard
Requires: nodeconfig
+Requires: nodeyum
Requires: PLCAPI
-Requires: monitor-pcucontrol
-Requires: bootstrapfs-%{pldistro}-%{_arch}
+Requires: bootstrapfs-%{nodefamily}
Requires: myplc-docs
Requires: myplc-release
-
-# argh - ugly - we might wish to use something from build/config.%{pldistro} instead
-%if "%{pldistro}" == "onelab"
-Requires: dummynet_image
-%endif
+Requires: myplc-config
%define debug_package %{nil}
shut down through a single System V init script installed in the host
system.
+####################### myplc-config
+
+%package config
+
+Summary: PlanetLab Central (PLC) configuration python module
+Group: Applications/Systems
+Requires: python
+
+%description config
+This package provides the Python module to configure MyPLC.
+
+
%prep
%setup -q
%build
%install
-pushd MyPLC
rm -rf $RPM_BUILD_ROOT
-./build.sh %{pldistro} $RPM_BUILD_ROOT
-popd
+
+# Install configuration scripts
+echo "* Installing plc_config.py in " ${PYTHON_SITEARCH}
+PYTHON_SITEARCH=`python -c 'from distutils.sysconfig import get_python_lib; print get_python_lib(1)'`
+install -D -m 755 plc_config.py ${RPM_BUILD_ROOT}/${PYTHON_SITEARCH}/plc_config.py
+
+echo "* Installing scripts in /usr/bin"
+mkdir -p ${RPM_BUILD_ROOT}/usr/bin
+rsync -av --exclude .svn bin/ ${RPM_BUILD_ROOT}/usr/bin/
+chmod 755 ${RPM_BUILD_ROOT}/usr/bin/*
+
+# Install initscript
+echo "* Installing plc initscript"
+install -D -m 755 plc.init ${RPM_BUILD_ROOT}/etc/init.d/plc
+
+# Install initscripts
+echo "* Installing plc.d initscripts"
+find plc.d | cpio -p -d -u ${RPM_BUILD_ROOT}/etc/
+chmod 755 ${RPM_BUILD_ROOT}/etc/plc.d/*
+
+# Install db-config.d files
+echo "* 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/*
+
+# Extra scripts (mostly for mail and dns) not installed by myplc by default. Used in production
+echo "* 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 configuration file
+echo "* myplc: Installing configuration file"
+install -D -m 444 plc_config.dtd ${RPM_BUILD_ROOT}/etc/planetlab/plc_config.dtd
+sed -e "s,@PLDISTRO@,%{pldistro},g" -e "s,@FCDISTRO@,%{distroname},g" -e "s,@ARCH@,%{_arch},g" \
+ default_config.xml > ${RPM_BUILD_ROOT}/etc/planetlab/default_config.xml
+chmod 444 ${RPM_BUILD_ROOT}/etc/planetlab/default_config.xml
+
+echo "* Installing bashrc convenience"
+install -D -m 644 bashrc ${RPM_BUILD_ROOT}/usr/share/myplc/bashrc
+
+# yumgroups.xml and yum repo : let noderepo handle that
%clean
rm -rf $RPM_BUILD_ROOT
-# If run under sudo
-if [ -n "$SUDO_USER" ] ; then
- # Allow user to delete the build directory
- chown -h -R $SUDO_USER .
- # Some temporary cdroot files like /var/empty/sshd and
- # /usr/bin/sudo get created with non-readable permissions.
- find . -not -perm +0600 -exec chmod u+rw {} \;
- # Allow user to delete the built RPM(s)
- [ -d %{_rpmdir}/noarch ] && chown -h -R $SUDO_USER %{_rpmdir}/noarch
-fi
-
%pre
if [ -x %{_sysconfdir}/init.d/plc ] ; then
%{_sysconfdir}/init.d/plc stop
/sbin/chkconfig --add plc
/sbin/chkconfig plc on
fi
-pushd /usr/share/myplc &> /dev/null
-python plc_config.py build
-python plc_config.py install
-popd &> /dev/null
%triggerpostun -- %{name}
# 0 = erase, 1 = upgrade
/etc/init.d/plc
/etc/plc.d
/etc/planetlab
-/etc/plc_sliceinitscripts/sirius
-/etc/support-scripts/gen_aliases.py*
-/etc/support-scripts/renew_reminder.py*
-/etc/support-scripts/renew_reminder_logrotate
-/usr/bin/plc-config
+/etc/plc_sliceinitscripts
+/etc/support-scripts
+/usr/share/myplc/bashrc
+# keep a detailed list, to avoid duplicate of plc-config,
+# that belongs to the myplc-config rpm
/usr/bin/plc-config-tty
/usr/bin/db-config
/usr/bin/dns-config
+/usr/bin/refresh-peer.py*
+/usr/bin/partial-repo.sh
+/usr/bin/mtail.py*
/usr/bin/plc-map.py*
/usr/bin/plc-kml.py*
-/usr/bin/refresh-peer.py*
/usr/bin/clean-empty-dirs.py*
-/usr/bin/mtail.py*
/usr/bin/plc-check-ssl-peering.py*
/usr/bin/plc-orphan-accounts.py*
-/usr/share/myplc
+/usr/bin/spot-aliens.py*
+/usr/bin/spot-dup-accounts.sh
+
+%files config
+%defattr(-,root,root,-)
+/usr/bin/plc-config
+%{python_sitearch}/plc_config.py*
+
%changelog
+* Fri Feb 04 2011 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - myplc-5.0-15
+- ignore steps in db-config.d if they have a '.' or '~' in their name
+
+* Wed Jan 26 2011 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - myplc-5.0-14
+- can redo myplc-docs without the doc for monitor
+
+* Mon Jan 24 2011 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - myplc-5.0-13
+- no semantic change - just fixed specfile for git URL
+
+* Wed Dec 01 2010 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - myplc-5.0-12
+- needed for plcapi-5.0-19, i.e. tag permissions based on roles
+
+* Mon Oct 04 2010 Baris Metin <Talip-Baris.Metin@sophia.inria.fr> - myplc-5.0-11
+- add missing files to rpm package
+
+* Mon Oct 04 2010 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - myplc-5.0-10
+- mtail.py -s for SFA
+- spot-aliesm.py is a utility script for sanity checks of the PLC db when running refreshpeer+sfa
+
+* Thu Jul 15 2010 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - myplc-5.0-9
+- avoid duplication of the plc-config binary in both myplc and myplc-config rpms
+
+* Mon Jul 12 2010 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - myplc-5.0-8
+- plc-config-tty now has a validator on booleans
+- e.g. entering 'True' now is rejected rather than silently recording 'false'
+
+* Tue Jul 06 2010 Baris Metin <Talip-Baris.Metin@sophia.inria.fr> - MyPLC-5.0-7
+- disable mod_wsgi
+
+* Mon Jul 05 2010 Baris Metin <Talip-Baris.Metin@sophia.inria.fr> - MyPLC-5.0-6
+- module name changes
+- start wsgi support
+
+* Tue Jun 22 2010 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - MyPLC-5.0-5
+- new setting PLC_RESERVATION_GRANULARITY
+
+* Wed May 12 2010 Talip Baris Metin <Talip-Baris.Metin@sophia.inria.fr> - MyPLC-5.0-4
+- * partial-repo.sh script
+- * preserve key along with certificates
+
+* Fri Apr 02 2010 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - MyPLC-5.0-3
+- set date.timezone to GMT if not set in php.ini for php-5.3 / fedora12
+
+* Fri Mar 12 2010 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - MyPLC-5.0-2
+- legacy scripts gen-sites-xml & gen-static-content back in (sigh)
+- new OMF category in the config
+- create the drl system slice
+
+* Fri Jan 29 2010 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - MyPLC-5.0-1
+- first working version of 5.0:
+- pld.c/, db-config.d/ and nodeconfig/ scripts should now sit in the module they belong to
+- nodefamily is 3-fold with pldistro-fcdistro-arch
+- new PLC_FLAVOUR config category
+- reviewed module layout
+- cleaned up old chroot-related build stuff (does not need the build module when building anymore)
+
+* Sat Jan 09 2010 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - MyPLC-4.3-37
+- support for fedora 12
+- new package myplc-config for use by sfa
+- drupal user registration turned off
+
+* Thu Dec 31 2009 Marc Fiuczynski <mef@cs.princeton.edu> - MyPLC-4.3-36
+- - fix to make sure when API, BOOT, MONITOR are on the same
+- machine as WWW that the SSL key,cert for WWW takes precedence.
+- - Do proper setup for SSL CA certficate to be used as the server
+- chain.
+
+* Wed Dec 23 2009 Marc Fiuczynski <mef@cs.princeton.edu> - MyPLC-4.3-35
+- - Change sysctl.conf source to be PlanetLabConfsysctl.con rather than the php script.
+
+* Tue Dec 22 2009 Baris Metin <Talip-Baris.Metin@sophia.inria.fr> - MyPLC-4.3-34
+- depend on pcucontrol
+
+* Fri Dec 18 2009 Baris Metin <Talip-Baris.Metin@sophia.inria.fr> - MyPLC-4.3-33
+- * validate input according to type in plc_config
+- * added the _genicw system slice
+- * add tag types for sites and persons
+- * add new tags for nodes and slices for exemption from myops
+
+* Thu Nov 26 2009 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - MyPLC-4.3-32
+- turn off drupal on a box that acts as BOOT server but not as WWW server
+- cleanup some obsolete code for old chroot-jail packaging in the process
+- new bootcd-kernel script for keeping bootcd variants up2date
+
+* Mon Nov 09 2009 Daniel Hokka Zakrisson <daniel@hozac.com> - MyPLC-4.3-31
+- Make the /etc/hosts manipulation optional.
+
+* Thu Nov 05 2009 Daniel Hokka Zakrisson <daniel@hozac.com> - MyPLC-4.3-30
+- Fix SetRole.
+
+* Tue Nov 03 2009 Marc Fiuczynski <mef@cs.princeton.edu> - MyPLC-4.3-29
+- - Added "SetRole()" so that db-config.d/ scriplets can insert roles
+- into the DB.
+- - Added the root ssh key handling support back into plc.d/ssh and the
+- default xml file. This should be identical to the way it was in
+- rc12.
+- - Added support in the db-config.d/01-init script to register the root
+- ssh public key with the default administrator. In this way the root
+- ssh key will make it into the root account on the nodes by means of
+- NodeManager's specialaccounts plugin.
+
+* Tue Oct 20 2009 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - MyPLC-4.3-28
+- db-config ignores sliver tags
+- sirius's db-config script renamed (was sirious)
+
+* Tue Oct 13 2009 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - MyPLC-4.3-27
+- fix for silverauth - missing tag types now created at plc startup time
+
+* Fri Oct 09 2009 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - MyPLC-4.3-26
+- plc.d/ssl preserves SSL certificates when it thinkfs they're obsolete
+
+* Wed Oct 07 2009 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - MyPLC-4.3-25
+- companion to NM's specialaccounts plugin
+- do not generate /etc/planetlab/root_ssh_key* anymore
+- remove related config. variables and conf_files
+
+* Sun Sep 20 2009 Stephen Soltesz <soltesz@cs.princeton.edu> - MyPLC-4.3-24
+- clarified description text to refer only to plcrt and not other optional
+- packages.
+
+* Sat Sep 19 2009 Stephen Soltesz <soltesz@cs.princeton.edu> - MyPLC-4.3-23
+- fixed a bug setting slice multiple attributes with the same tag name
+
+* Mon Sep 07 2009 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - MyPLC-4.3-22
+- SSL setup for monitor box, and related new config variables
+- new conf_file for /etc/planetlab/extensions
+- various tweaks in db-config internals, about initscripts among others
+- also more messages defined in the db
+
+* Tue Jul 07 2009 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - MyPLC-4.3-21
+- create node tags, like e.g. 'arch', that were not handled with 4.3-20
+
+* Tue Jul 07 2009 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - MyPLC-4.3-20
+- bugfix in db-config, tag 4.3-19 would not fly
+
* Mon Jul 06 2009 Marc Fiuczynski <mef@cs.princeton.edu> - MyPLC-4.3-19
- Refactored db-config into snippets in db-config.d/.
- - Fix /etc/init.d/plc to have command usage show up on the tty rather
- than the log file
- - Fix db-config to be a bit more cautious when
-- /etc/planetlab/db-config.d doesn't exist
+- /etc/planetlab/db-config.d doesn''t exist
- - Clean up db-config approach to ignore .bak, *~, .rpm{save,new}, and
- .orig files.
- - Refactor generic plc-config-tty code into plc_config.py.
* Wed Apr 29 2009 Marc Fiuczynski <mef@cs.princeton.edu> - MyPLC-4.3-6
- plc_config.py and plc-config-tty: generalized to work for more diverse
- MyPLC configurations.
-- plc.d/httpd: only update httpd_conf with /data for chroot'ed MyPLC
+- plc.d/httpd: only update httpd_conf with /data for chroot-ed MyPLC
- deployments and increase the memory limits in php.ini
- plc.d/crond: add --full option to vacuumdb
* Fri Aug 31 2007 Marc E. Fiuczynski <mef@CS.Princeton.EDU>
- initial build.
-%define module_current_branch 4.2
+%define module_current_branch 4.3