- fix version number, bump release number, added changelog
[myplc.git] / myplc.spec
index 80e2640..536e3fb 100644 (file)
@@ -1,17 +1,22 @@
 Vendor: PlanetLab
 Packager: PlanetLab Central <support@planet-lab.org>
-Distribution: PlanetLab 3.0
+Distribution: PlanetLab 4.0
 URL: http://cvs.planet-lab.org/cvs/myplc
 
 Summary: PlanetLab Central (PLC) Portable Installation
 Name: myplc
-Version: 0.1
-Release: 1%{?pldistro:.%{pldistro}}%{?date:.%{date}}
-License: BSD
+Version: 0.4
+Release: 3%{?pldistro:.%{pldistro}}%{?date:.%{date}}
+License: PlanetLab
 Group: Applications/Systems
 Source0: %{name}-%{version}.tar.gz
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
 
+# for preventing myplc-devel from being built
+# *should* support invokation like rpmbuild --define "build_level 0" 
+# *but* this does not seem to work : so just set to 0 here
+%{!?build_level: %define build_devel 1}
+
 %define debug_package %{nil}
 
 %description
@@ -23,77 +28,278 @@ through a graphical interface. All PLC services are started up and
 shut down through a single System V init script installed in the host
 system.
 
-%package fc2
-Summary: MyPLC installation based on Fedora Core 2
-Group: Applications/Systems
+%if %{build_devel}
+%package devel
+Summary: PlanetLab Central (PLC) Development Environment
+Group: Development/Tools
+AutoReqProv: no
+%endif
 
-%description fc2
-This package installs a MyPLC installation based on Fedora Core 2.
+%if %{build_devel}
+%description devel
+This package install a complete PlanetLab development environment
+contained within a chroot jail. The default installation consists of a
+local CVS repository bootstrapped with a snapshot of all PlanetLab
+source code, and all the tools necessary to compile it.
+%endif
 
 %prep
 %setup -q
 
 %build
 pushd myplc
-./build.sh -r 2 -d %{_datadir}
-# Not until we can get the build server to run Fedora Core 4 or an
-# updated version of yum.
-#./build.sh -r 4 -d %{_datadir}
+%if %{build_devel}
+echo -n "XXXXXXXXXXXXXXX myplc::build_devel " ; date
+./build_devel.sh %{?cvstag:-t %{cvstag}}
+%endif
+echo -n "XXXXXXXXXXXXXXX myplc::build " ; date
+./build.sh %{?cvstag:-t %{cvstag}}
+echo -n "XXXXXXXXXXXXXXX myplc::endbuild " ; date
 popd
 
-# If run under sudo, allow user to delete the build directory
-if [ -n "$SUDO_USER" ] ; then
-    chown -R $SUDO_USER .
-    # Some temporary chroot files like /var/empty/sshd and
-    # /usr/bin/sudo get created with non-readable permissions.
-    find . -not -perm +0600 -exec chmod u+rw {} \;
-fi
-
 %install
 rm -rf $RPM_BUILD_ROOT
 
 pushd myplc
+
+#
+# myplc
+#
+
+# Install host startup script and configuration file
 install -D -m 755 host.init $RPM_BUILD_ROOT/%{_sysconfdir}/init.d/plc
 install -D -m 644 plc.sysconfig $RPM_BUILD_ROOT/%{_sysconfdir}/sysconfig/plc
-#for releasever in 2 4 ; do
-for releasever in 2 ; do
-    install -d -m 755 $RPM_BUILD_ROOT/%{_datadir}/plc/fc$releasever
-    install -D -m 644 fc$releasever.img $RPM_BUILD_ROOT/%{_datadir}/plc/fc$releasever.img
-    find data$releasever | cpio -p -d -u $RPM_BUILD_ROOT/%{_datadir}/plc/
-done
+
+# Create convenient symlink
+install -d -m 755 $RPM_BUILD_ROOT/%{_sysconfdir}
+ln -sf /plc/data/etc/planetlab $RPM_BUILD_ROOT/%{_sysconfdir}/planetlab
+
+# Install root filesystem
+install -d -m 755 $RPM_BUILD_ROOT/plc/root
+install -D -m 644 root.img $RPM_BUILD_ROOT/plc/root.img
+
+# Install data directory
+find data | cpio -p -d -u $RPM_BUILD_ROOT/plc/
+
+#
+# myplc-devel
+#
+
+%if %{build_devel}
+
+# Install host startup script and configuration file
+install -D -m 755 host.init $RPM_BUILD_ROOT/%{_sysconfdir}/init.d/plc-devel
+install -D -m 644 plc-devel.sysconfig $RPM_BUILD_ROOT/%{_sysconfdir}/sysconfig/plc-devel
+
+# Install root filesystem
+install -d -m 755 $RPM_BUILD_ROOT/plc/devel/root
+install -D -m 644 devel/root.img $RPM_BUILD_ROOT/plc/devel/root.img
+
+# Install data directory
+find devel/data | cpio -p -d -u $RPM_BUILD_ROOT/plc/
+
+# Make sure /cvs is never upgraded once installed by giving it a
+# unique name. A hard-linked copy is made in %post.
+mv $RPM_BUILD_ROOT/plc/devel/data/{cvs,cvs-%{version}-%{release}}
+
+%endif
+
 popd
 
 %clean
 rm -rf $RPM_BUILD_ROOT
 
-# If run under sudo, allow user to delete the built RPM
+# If run under sudo
 if [ -n "$SUDO_USER" ] ; then
-    chown $SUDO_USER %{_rpmdir}/%{_arch}/%{name}-%{version}-%{release}.%{_arch}.rpm
+    # Allow user to delete the build directory
+    chown -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)
+    chown -R $SUDO_USER %{_rpmdir}/%{_arch}
+fi
+
+%pre
+if [ -x %{_sysconfdir}/init.d/plc ] ; then
+    %{_sysconfdir}/init.d/plc stop
+fi
+
+# Old versions of myplc used to ship with a bootstrapped database and
+# /etc/planetlab directory. Including generated files in the manifest
+# was dangerous; if /plc/data/var/lib/pgsql/data/base/1/16676 changed
+# names from one RPM build to another, it would be rpmsaved and thus
+# effectively deleted. Now we do not include these files in the
+# manifest. However, to avoid deleting these files in the process of
+# upgrading from one of these old versions of myplc, we must back up
+# the database and /etc/planetlab and restore them after the old
+# version has been uninstalled in %triggerpostun (also in %post, in
+# case we are force upgrading to the same version).
+#
+# This code can be removed once all myplc-0.4-1 installations have
+# been upgraded to at least myplc-0.4-2.
+
+# 0 = install, 1 = upgrade
+if [ $1 -gt 0 ] ; then
+    for dir in /var/lib/pgsql/data /etc/planetlab ; do
+       if [ -d /plc/data/$dir ] ; then
+           echo "Preserving /plc/data/$dir"
+           mkdir -p /plc/data/$dir.rpmsave
+           tar -C /plc/data/$dir -cpf - . | \
+              tar -C /plc/data/$dir.rpmsave -xpf -
+
+           # Except for the default configuration file and DTD, which
+           # really should be considered for upgrade.
+           rm -f /plc/data/$dir.rpmsave/{default_config.xml,plc_config.dtd}
+       fi
+    done
 fi
 
 %post
-chkconfig --add plc
-chkconfig plc on
+if [ -x /sbin/chkconfig ] ; then
+    /sbin/chkconfig --add plc
+    /sbin/chkconfig plc on
+fi
+
+%triggerpostun -- %{name}
+# 0 = erase, 1 = upgrade
+if [ $1 -gt 0 ] ; then
+    for dir in /var/lib/pgsql/data /etc/planetlab ; do
+       if [ -d /plc/data/$dir.rpmsave -a -d /plc/data/$dir ] ; then
+           echo "Merging /plc/data/$dir"
+           if tar -C /plc/data/$dir.rpmsave -cpf - . | \
+              tar -C /plc/data/$dir -xpf - ; then
+               rm -rf /plc/data/$dir.rpmsave
+           fi
+       fi
+    done
+fi    
 
 %preun
 # 0 = erase, 1 = upgrade
 if [ $1 -eq 0 ] ; then
-    chkconfig plc off
-    chkconfig --del plc
+    %{_sysconfdir}/init.d/plc stop
+    if [ -x /sbin/chkconfig ] ; then
+        /sbin/chkconfig plc off
+       /sbin/chkconfig --del plc
+    fi
 fi
 
+%if %{build_devel}
+%pre devel
+if [ -x %{_sysconfdir}/init.d/plc-devel ] ; then
+    %{_sysconfdir}/init.d/plc-devel stop
+fi
+%endif
+
+%if %{build_devel}
+%post devel
+if [ -x /sbin/chkconfig ] ; then
+    /sbin/chkconfig --add plc-devel
+    /sbin/chkconfig plc-devel on
+fi
+
+# If /cvs does not already exist, make a hard-linked copy of this
+# version's /cvs repository.
+if [ ! -d /plc/devel/data/cvs ] ; then
+    cp -rl /plc/devel/data/{cvs-%{version}-%{release},cvs}
+fi
+%endif
+
+%if %{build_devel}
+%preun devel
+# 0 = erase, 1 = upgrade
+if [ $1 -eq 0 ] ; then
+    %{_sysconfdir}/init.d/plc-devel stop
+    if [ -x /sbin/chkconfig ] ; then
+        /sbin/chkconfig plc-devel off
+       /sbin/chkconfig --del plc-devel
+    fi
+fi
+%endif
+
 %files
 %defattr(-,root,root,-)
+# Host startup script and configuration file
 %{_sysconfdir}/init.d/plc
-%config(noreplace) %{_sysconfdir}/sysconfig/plc
+%{_sysconfdir}/sysconfig/plc
+
+# Symlink to /etc/planetlab within data directory
+%{_sysconfdir}/planetlab
 
-%files fc2
+# Root filesystem
+/plc/root.img
+/plc/root
+
+# Data directory
+%dir /plc/data
+%config(noreplace) /plc/data/*
+
+%if %{build_devel}
+%files devel
 %defattr(-,root,root,-)
-%dir %{_datadir}/plc/fc2
-%{_datadir}/plc/fc2.img
-%config(noreplace) %{_datadir}/plc/data2
+# Host startup script and configuration file
+%{_sysconfdir}/init.d/plc-devel
+%{_sysconfdir}/sysconfig/plc-devel
+
+# Root filesystem
+/plc/devel/root.img
+/plc/devel/root
+
+# Data directory
+%dir /plc/devel/data
+%config(noreplace) /plc/devel/data/*
+%endif
 
 %changelog
+* Tue Aug 22 2006 Mark Huang <mlhuang@CS.Princeton.EDU> - 0.4-3, 0.5-3
+- MyPLC 0.4 RC3.
+- Fix upgrade path from RC1.
+- Always regenerate plc_config.xml at first startup
+- Upgrade kernel, iptables, vnet to 2.6.17-1.2142_FC4-3.planetlab
+- Minor PlanetFlow fixes
+- pl_mom/swapmon: Minor fixes
+- bootcd: Added Supermicro IPMI support
+- bootmanager: Cleanup, fixed check for new disks
+
+* Wed Aug 09 2006 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr>
+- introduces variable %{build_devel} to allow custom sites to skip building
+  the myplc-devel package.
+
+* Thu Jul 13 2006 Mark Huang <mlhuang@CS.Princeton.EDU> - 0.4-2, 0.5-2
+- MyPLC 0.4 RC2.
+- Fix many spec files (License replaces Copyright).
+- Fix kernel build under gcc32 (module verification bug).
+- Fix vnet build under gcc32
+- Fix PlanetFlow. MySQL RPM postinstall script no longer starts the
+  server. Also, get hostnames list from PLC_WWW_HOST, not
+  www.planet-lab.org.
+- Fix pl_mom/bwmon to use cached values if NM is unresponsive
+- Fix pl_mom/swapmon reset logic to avoid endless loops
+- Remove ksymoops, add kernel-smp to standard PlanetLab package group
+- Add kernel-smp boot support to bootmanager
+- Add badblock search support to bootmanager
+- Build development environment (myplc-devel). Add support for
+  building myplc itself inside myplc-devel.
+- Move step-specific initialization to appropriate plc.d scripts
+- Fix postgresql startup failure when bootstrapping
+- Allow CA to be configured for each SSL certificate set. Stop doing
+  root CA stuff, this is outside the scope of MyPLC. MyPLC now only
+  generates self-signed certificates, but supports replacement of the
+  self-signed certificates with real certifcates signed by another CA,
+  as long as the CA is specified.
+- Self-sign the MA/SA SSL certificate (and by extension, the MA/SA API
+  certificate).
+- pl_mom: Workarounds for when NM queries time out.
+- plc_api: Honor PLC_MAIL_ENABLED.
+
+* Wed Jul  6 2006 Mark Huang <mlhuang@CS.Princeton.EDU> - 0.4-1, 0.5-1
+- First stable release of MyPLC 0.4 RC1.
+
+* Wed Apr  5 2006 Mark Huang <mlhuang@CS.Princeton.EDU> - 0.2-1
+- Basic functionality complete. Consolidate into a single package
+  installed in /plc.
+
 * Fri Mar 17 2006 Mark Huang <mlhuang@CS.Princeton.EDU> - 0.1-1
 - Initial build.