# Mark Huang <mlhuang@cs.princeton.edu>
# Copyright (C) 2003-2006 The Trustees of Princeton University
#
-# $Id: planetlab.mk,v 1.45 2007/01/20 04:09:20 mlhuang Exp $
+# $Id$
#
#
# Add to ALL if you want the package built as part of the default set.
#
+####
+# we do not use TAG directly anymore, and let it to HEAD
+# this because we want the rpm's releases to reflect the date even when a tag is used
+# our build script defines COMMON_TAG that the various components are free to use or not
+
+# COMMON_TAG set from the build script
+
+TAGSFILE = onelab-tags.mk
+
+include $(TAGSFILE)
+
#
# Default values
#
-CVSROOT := :pserver:anon@cvs.planet-lab.org:/cvs
+# it's useless to set this here because it's overriden on the command line by nightly-build.sh
TAG := HEAD
# Check if a tag has been checked out
#
madwifi-ng-MODULE := madwifi-ng
-madwifi-ng-SPEC := madwifi-ng/madwifi.spec
+madwifi-ng-SPEC := madwifi.spec
ALL += madwifi-ng
# Build kernel first so we can bootstrap off of its build
madwifi-ng: kernel
+#
+# wireless-tools
+#
+
+wireless-tools-MODULE = wireless-tools
+wireless-tools-SPEC := wireless-tools.spec
+ALL += wireless-tools
+
#
# ivtv
#
util-vserver-RPMFLAGS:= --without dietlibc
ALL += util-vserver
-#
-# yum
-#
-
-yum-MODULE := yum
-yum-SPEC := yum/yum.spec
-ALL += yum
-
#
# PlanetLabAccounts
#
kexec-tools-SPEC := kexec-tools/kexec-tools.spec
ALL += kexec-tools
-#
-# dhcp
-#
-
-dhcp-MODULE := dhcp
-dhcp-SPEC := dhcp/dhcp.spec
-ALL += dhcp
-
#
# util-python
#
util-vserver: util-python
PlanetLabAuth: util-python
-#
-# PlanetLabAuth
-#
-
-PlanetLabAuth-MODULE := pl_auth
-PlanetLabAuth-SPEC := pl_auth/pl_auth.spec
-ALL += PlanetLabAuth
-
-#
-# plcapilib
-#
-
-plcapilib-MODULE := plcmdline
-plcapilib-SPEC := plcmdline/plcapilib.spec
-ALL += plcapilib
-
#
# PLCAPI
#
PLCAPI-MODULE := new_plc_api
-PLCAPI-SPEC := new_plc_api/PLCAPI.spec
+PLCAPI-SPEC := PLCAPI.spec
ALL += PLCAPI
#
#
bootmanager-MODULE := bootmanager build
-bootmanager-SPEC := bootmanager/bootmanager.spec
+bootmanager-SPEC := bootmanager.spec
bootmanager-RPMBUILD := sudo rpmbuild
ALL += bootmanager
#
bootcd-MODULE := bootcd build bootmanager
-bootcd-SPEC := bootcd/bootcd.spec
+bootcd-SPEC := bootcd.spec
bootcd-RPMBUILD := sudo rpmbuild
ALL += bootcd
# bootcd requires current packages
bootcd: $(filter-out bootcd,$(ALL))
+#
+# plcwww
+#
+
+plcwww-MODULE := new_plc_www
+plcwww-SPEC := plcwww.spec
+ALL += plcwww
+
#
# MyPLC
#
-myplc-MODULE := $(sort $(foreach module,$(ALL),$($(module)-MODULE)) myplc new_plc_www plc/scripts)
-myplc-SPEC := myplc/myplc.spec
+myplc-MODULE := build myplc plc/scripts
+myplc-SPEC := myplc.spec
# Package must be built as root
myplc-RPMBUILD := sudo rpmbuild
ALL += myplc
# ...and the yum manifest
myplc: RPMS/yumgroups.xml
+# we also ship various information on the build in /etc/myplc-release
+# we cannot store this under SOURCES/myplc
+# otherwise the code extraction phase does not take place
+# because it depends on $SOURCES/$(package) as per Rules.mk
+myplc: SOURCES/myplc-release
+
+SOURCES/myplc-release:
+ @echo 'Creating myplc-release'
+ rm -f $@
+ (echo -n 'Build date: ' ; date '+%Y.%m.%d') >> $@
+ (echo -n 'Build hostname: ' ; hostname) >> $@
+ (echo -n 'Build location: ' ; pwd) >> $@
+ echo "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx tags file contents" >> $@
+ cat $(TAGSFILE) >> $@
+
#
# MyPLC development environment
#
# Upload packages to boot server
SERVER := root@onelab-plc.inria.fr
-ARCHIVE := /plc/var/www/html/install-rpms/
-BOOT_AREA := /plc/data/var/www/html/boot/
+RPMSAREA := /var/www/html/install-rpms/
+BOOTAREA := /var/www/html/boot/
+
+ifeq ($(PLDISTRO),planetlab)
+YUMGROUPS := groups/v3_yumgroups.xml
+else
+YUMGROUPS := groups/v4_onelab.xml
+endif
-YUMGROUPS := $(PLDISTRO).xml
#BASE := onelab
-BASETMP := planetlab-upgrading
+BASENEW := build-$(notdir $(shell pwd))
BASEBAK := planetlab-bak
BASE := planetlab
RPMS/yumgroups.xml:
install -D -m 644 $(YUMGROUPS) RPMS/yumgroups.xml
-install: install-rpms install-index install-bootstrap
+INSTALL-TARGETS := install-rpms install-index install-adopt install-bootstrap
+install: $(INSTALL-TARGETS)
+
+install-help:
+ @echo install: $(INSTALL-TARGETS)
install-rpms:RPMS/yumgroups.xml
# create repository
- ssh $(SERVER) mkdir -p $(ARCHIVE)/$(BASETMP)
+ ssh $(SERVER) mkdir -p /plc/data/$(RPMSAREA)/$(BASENEW)
# populate
rsync -v --perms --times --group --compress --rsh=ssh \
- RPMS/yumgroups.xml $(wildcard RPMS/*/*.rpm) $(SERVER):$(ARCHIVE)/$(BASETMP)/
+ RPMS/yumgroups.xml $(wildcard RPMS/*/*.rpm) $(SERVER):/plc/data/$(RPMSAREA)/$(BASENEW)/
-# would be better if we could run plc.d/packages on a temporary dir
-# currently while we run packages clients wont be able to use the repo (nor signed nor indexed)
install-index:
+ # sign and index new repository
+ ssh $(SERVER) chroot /plc/root /etc/plc.d/packages start $(RPMSAREA)/$(BASENEW)/ 2>> install-index.log
+
+install-clean-index:
+ # sign and index new repository
+ ssh $(SERVER) chroot /plc/root /etc/plc.d/packages clean $(RPMSAREA)/$(BASENEW)/ 2>> install-index.log
+
+install-adopt:
# cleanup former bak
- ssh $(SERVER) rm -rf $(ARCHIVE)/$(BASEBAK)
+ ssh $(SERVER) rm -rf /plc/data/$(RPMSAREA)/$(BASEBAK)
# bak previous repo
- ssh $(SERVER) mv $(ARCHIVE)/$(BASE) $(ARCHIVE)/$(BASEBAK)
+ ssh $(SERVER) mv /plc/data/$(RPMSAREA)/$(BASE) /plc/data/$(RPMSAREA)/$(BASEBAK)
# install new repo
- ssh $(SERVER) mv $(ARCHIVE)/$(BASETMP) $(ARCHIVE)/$(BASE)
- # sign and re-index
- ssh $(SERVER) chroot /plc/root service plc start packages
+ ssh $(SERVER) mv /plc/data/$(RPMSAREA)/$(BASENEW) /plc/data/$(RPMSAREA)/$(BASE)
install-bootstrap:
# install node image
install_bz2=$(wildcard BUILD/bootmanager-*/bootmanager/support-files/PlanetLab-Bootstrap.tar.bz2) ; \
- if [ -n "$$install_bz2" ] ; then rsync $$install_bz2 $(SERVER):$(BOOT_AREA) ; fi
+ if [ -n "$$install_bz2" ] ; then rsync $$install_bz2 $(SERVER):/plc/data/$(BOOTAREA) ; fi
#endif
.PHONY: install