X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=planetlab.mk;h=1137701d0a1c20e8e5bdd07defbddefd2527e3cc;hb=a19f1d65b9fcd1df4b0df10665b3d4c11ab6292c;hp=2559825d01eb2d8af376d4774864cfcf93288e87;hpb=67c85adb2a681f605e46ad4877ac86be7f49ff6d;p=build.git diff --git a/planetlab.mk b/planetlab.mk index 2559825d..1137701d 100644 --- a/planetlab.mk +++ b/planetlab.mk @@ -4,22 +4,26 @@ # Mark Huang # Copyright (C) 2003-2006 The Trustees of Princeton University # -# $Id$ +# $Id: planetlab.mk,v 1.71 2007/09/25 18:38:47 faiyaza Exp $ # # # Required: # # CVSROOT or package-CVSROOT: CVSROOT to use -# TAG or package-TAG: CVS tag to use -# package-MODULE: CVS module name to use +# or +# SVNPATH or package-SVNPATH: SVNPATH to use +# Note: do not define both CVSROOT and SVNPATH +# +# TAG or package-TAG: CVS/SVN tag to use +# package-MODULE: CVS/SVN module name to use # package-SPEC: RPM spec file template # # Optional: # # package-RPMFLAGS: Miscellaneous RPM flags # package-RPMBUILD: If not rpmbuild -# package-CVS_RSH: If not ssh +# package-CVS_RSH: If not ssh for cvs # # Add to ALL if you want the package built as part of the default set. # @@ -28,8 +32,11 @@ # Default values # -CVSROOT := :pserver:anon@cvs.planet-lab.org:/cvs -TAG := HEAD +#CVSROOT := :pserver:anon@cvs.planet-lab.org:/cvs +#TAG := HEAD + +SVNPATH := https://svn.planet-lab.org/svn +TAG := trunk # Check if a tag has been checked out ifneq ($(wildcard CVS/Root),) @@ -49,107 +56,123 @@ endif # kernel # -kernel-MODULE := linux-2.6 -kernel-SPEC := linux-2.6/scripts/kernel-2.6-planetlab.spec -ALL += kernel +# Figure out whether we are building on i386 or x86_64 host +HOSTARCH := $(shell uname -i) -# -# vnet -# +kernel-$(HOSTARCH)-CVSROOT := :pserver:anon@cvs.planet-lab.org:/cvs +kernel-$(HOSTARCH)-TAG := HEAD +kernel-$(HOSTARCH)-MODULE := linux-2.6 +kernel-$(HOSTARCH)-SPEC := scripts/kernel-2.6-planetlab.spec +ifeq ($(HOSTARCH),i386) +kernel-$(HOSTARCH)-RPMFLAGS:= --target i686 +else +kernel-$(HOSTARCH)-RPMFLAGS:= --target $(HOSTARCH) +endif + +ALL += kernel-$(HOSTARCH) + +kernel-clean: kernel-$(HOSTARCH)-clean +kernel: kernel-$(HOSTARCH) -vnet-MODULE := vnet -vnet-SPEC := vnet/vnet.spec -ALL += vnet -# Build kernel first so we can bootstrap off of its build -vnet: kernel +### Why are we building these?? -F +### madwifi +### +## +###madwifi-ng-MODULE := madwifi-ng +###madwifi-ng-SPEC := madwifi-ng/madwifi.spec +###ALL += madwifi-ng +## +### Build kernel first so we can bootstrap off of its build +###madwifi-ng: kernel +## +### +### ivtv +### +## +###ivtv-MODULE := ivtv +###ivtv-SPEC := ivtv/ivtv.spec +###ALL += ivtv # # util-vserver # util-vserver-MODULE := util-vserver -util-vserver-SPEC := util-vserver/util-vserver.spec +util-vserver-SPEC := util-vserver.spec +util-vserver-RPMFLAGS:= --without dietlibc ALL += util-vserver -# -# yum -# - -yum-MODULE := yum -yum-SPEC := yum/yum.spec -ALL += yum - -# -# PlanetLabAccounts -# - -PlanetLabAccounts-MODULE := PlanetLabAccounts -PlanetLabAccounts-SPEC := PlanetLabAccounts/PlanetLabAccounts.spec -ALL += PlanetLabAccounts - # # NodeUpdate # NodeUpdate-MODULE := NodeUpdate -NodeUpdate-SPEC := NodeUpdate/NodeUpdate.spec +NodeUpdate-SPEC := NodeUpdate.spec ALL += NodeUpdate # -# PlanetLabConf +# PlanetLabConf: DEPRECATED. +# +# conf_files does the same thing in NM # -PlanetLabConf-MODULE := PlanetLabConf -PlanetLabConf-SPEC := PlanetLabConf/PlanetLabConf.spec -ALL += PlanetLabConf +#PlanetLabConf-MODULE := PlanetLabConf +#PlanetLabConf-SPEC := PlanetLabConf/PlanetLabConf.spec +#ALL += PlanetLabConf # # ipod # -ipod-MODULE := ipod -ipod-SPEC := ipod/ipod.spec -ALL += ipod +PingOfDeath-MODULE := PingOfDeath +PingOfDeath-SPEC := ipod.spec +ALL += PingOfDeath # -# sudo +# sudo: DEPRECATED +# +# Added functionality provided by this package to www/PlanetLabConf/sudoers. # -sudo-MODULE := sudo -sudo-SPEC := sudo/planetlab_sudo.spec -ALL += sudo +#sudo-MODULE := sudo +#sudo-SPEC := sudo/planetlab_sudo.spec +#ALL += sudo # -# pycurl +# pycurl: DEPRECATE +# +# [tony] use FC6+ release # -pycurl-MODULE := pycurl -pycurl-SPEC := pycurl/pycurl.spec -ALL += pycurl +#curl_vernum := $(shell printf %d 0x$(shell curl-config --vernum)) +#pycurl_vernum := $(shell printf %d 0x070d01) # 7.13.1 +#pycurl_incompatnum := $(shell printf %d 0x071000) # 7.16.0 +#ifeq ($(shell test $(curl_vernum) -ge $(pycurl_vernum) && echo 1),1) +#ifeq ($(shell test $(curl_vernum) -ge $(pycurl_incompatnum) && echo 0),1) +#pycurl-MODULE := pycurl +#pycurl-SPEC := pycurl/pycurl.spec +#ALL += pycurl +#endif +#endif # -# BootServerRequest +# BootServerRequest: DEPRECATE +# +# Not used by anything. # -BootServerRequest-MODULE := BootServerRequest -BootServerRequest-SPEC := BootServerRequest/PLBootServerRequest.spec -ALL += BootServerRequest - +#BootServerRequest-MODULE := BootServerRequest +#BootServerRequest-SPEC := BootServerRequest/PLBootServerRequest.spec +#ALL += BootServerRequest # -# PlanetLabID # - -PlanetLabID-MODULE := PlanetLabID -PlanetLabID-SPEC := PlanetLabID/PlanetLabID.spec -ALL += PlanetLabID - # # Node Manager # NodeManager-MODULE := NodeManager -NodeManager-SPEC := NodeManager/NodeManager.spec +NodeManager-SPEC := NodeManager.spec ALL += NodeManager # @@ -157,15 +180,18 @@ ALL += NodeManager # pl_sshd-MODULE := pl_sshd -pl_sshd-SPEC := pl_sshd/pl_sshd.spec +pl_sshd-SPEC := pl_sshd.spec ALL += pl_sshd # # libhttpd++: # +# Deprecate when vsys takes over [sapan]. +# keep in build for proper. +# libhttpd++-MODULE := libhttpd++ -libhttpd++-SPEC := libhttpd++/libhttpd++.spec +libhttpd++-SPEC := libhttpd++.spec ALL += libhttpd++ # @@ -173,53 +199,63 @@ ALL += libhttpd++ # proper-MODULE := proper -proper-SPEC := proper/proper.spec +proper-SPEC := proper.spec +proper-RPMBUILD := sudo bash ./rpmbuild.sh ALL += proper proper: libhttpd++ +# +# CoDemux: Port 80 demux +# + +CoDemux-MODULE := CoDemux +CoDemux-SPEC := codemux.spec +CoDemux-RPMBUILD := sudo bash ./rpmbuild.sh +ALL += CoDemux + # # MySQL # mysql-MODULE := mysql -mysql-SPEC := mysql/mysql.spec -ALL += mysql +mysql-SPEC := mysql.spec +#ALL += mysql # # ulogd # ulogd-MODULE := ulogd -ulogd-SPEC := ulogd/ulogd.spec +ulogd-SPEC := ulogd.spec ALL += ulogd -ulogd: kernel proper mysql +ulogd: kernel proper #mysql # # netflow # -netflow-MODULE := netflow -netflow-SPEC := netflow/netflow.spec -ALL += netflow +NetFlow-MODULE := NetFlow +NetFlow-SPEC := netflow.spec +ALL += NetFlow -netflow: mysql +netflow: #mysql # # PlanetLab Mom: Cleans up your mess # -pl_mom-MODULE := pl_mom -pl_mom-SPEC := pl_mom/pl_mom.spec -ALL += pl_mom +Mom-MODULE := Mom +Mom-SPEC := pl_mom.spec +ALL += Mom # # iptables # iptables-MODULE := iptables -iptables-SPEC := iptables/iptables.spec +iptables-SPEC := iptables.spec ALL += iptables iptables: kernel @@ -229,134 +265,188 @@ iptables: kernel # iproute-MODULE := iproute2 -iproute-SPEC := iproute2/iproute.spec +iproute-SPEC := iproute.spec ALL += iproute # -# kexec-tools -# - -kexec-tools-MODULE := kexec-tools -kexec-tools-SPEC := kexec-tools/kexec-tools.spec -ALL += kexec-tools - +# kexec-tools: DEPRECATE # -# dhcp +# [marc] use FC6+ release # -dhcp-MODULE := dhcp -dhcp-SPEC := dhcp/dhcp.spec -ALL += dhcp +#kexec-tools-MODULE := kexec-tools +#kexec-tools-SPEC := kexec-tools/kexec-tools.spec +#ALL += kexec-tools # # util-python # +# [marc] deprecate server.py +# +# I dont know what the above means... Daniel says we need to seperate util-vserver from +# pl specific utilities (vuseradd, etc) which may or may not include vserver.py. Until then, +# I'm keeping this in the build. -F +# util-python-MODULE := util-python -util-python-SPEC := util-python/util-python.spec +util-python-SPEC := util-python.spec ALL += util-python # proper and util-vserver both use scripts in util-python for building +# [dhozac] Not anymore. util-vserver uses automake and no longer needs util-python proper: util-python -util-vserver: util-python -PlanetLabAuth: util-python -# -# PlanetLabAuth -# +#util-vserver: util-python +#PlanetLabAuth: util-python -PlanetLabAuth-MODULE := pl_auth -PlanetLabAuth-SPEC := pl_auth/pl_auth.spec -ALL += PlanetLabAuth +# vsys does not compile when ocaml rpm is installed. Need to fix include path +# so that it compiles. Sapan will need to fix this. # -# plcapilib +# vsys # - -plcapilib-MODULE := plcmdline -plcapilib-SPEC := plcmdline/plcapilib.spec -ALL += plcapilib +vsys-MODULE := vsys +vsys-SPEC := vsys.spec +# ALL += vsys # # PLCAPI # -PLCAPI-MODULE := new_plc_api -PLCAPI-SPEC := new_plc_api/PLCAPI.spec +PLCAPI-MODULE := PLCAPI +PLCAPI-SPEC := PLCAPI.spec ALL += PLCAPI +# +# PLCWWW +# + +PLCWWW-MODULE := WWW +PLCWWW-SPEC := PLCWWW.spec +ALL += PLCWWW + # # vserver-reference # -vserver-reference-MODULE := vserver-reference build -vserver-reference-SPEC := vserver-reference/vserver-reference.spec +VserverReference-MODULE := VserverReference build +VserverReference-SPEC := vserver-reference.spec # Package must be built as root -vserver-reference-RPMBUILD := sudo rpmbuild -ALL += vserver-reference +VserverReference-RPMBUILD := sudo bash ./rpmbuild.sh +ALL += VserverReference # vserver-reference may require current packages vserver-reference: $(filter-out vserver-reference,$(ALL)) # -# bootmanager +# BootManager # -bootmanager-MODULE := bootmanager build -bootmanager-SPEC := bootmanager/bootmanager.spec -bootmanager-RPMBUILD := sudo rpmbuild -ALL += bootmanager +BootManager-MODULE := BootManager build +BootManager-SPEC := BootManager.spec +BootManager-RPMBUILD := sudo bash ./rpmbuild.sh +ALL += BootManager -# bootmanager requires current packages -bootmanager: $(filter-out bootmanager,$(ALL)) +# BootManager requires current packages +BootManager: $(filter-out BootManager,$(ALL)) # ...and the yum manifest -bootmanager: RPMS/yumgroups.xml +BootManager: RPMS/yumgroups.xml # -# bootcd +# BootCD # -bootcd-MODULE := bootcd build bootmanager -bootcd-SPEC := bootcd/bootcd.spec -bootcd-RPMBUILD := sudo rpmbuild -ALL += bootcd +BootCD-MODULE := BootCD build BootManager +BootCD-SPEC := bootcd.spec +BootCD-RPMBUILD := sudo bash ./rpmbuild.sh +ALL += BootCD -# bootcd requires current packages -bootcd: $(filter-out bootcd,$(ALL)) +# BootCD requires current packages +# BootCD: $(filter-out BootCD,$(ALL)) # # MyPLC # -myplc-MODULE := $(sort $(foreach module,$(ALL),$($(module)-MODULE)) myplc new_plc_www plc/scripts) -myplc-SPEC := myplc/myplc.spec +MyPLC-MODULE := MyPLC build WWW +MyPLC-SPEC := myplc.spec +# Package must be built as root +MyPLC-RPMBUILD := sudo bash ./rpmbuild.sh +ALL += MyPLC + +# MyPLC may require current packages +#MyPLC: $(filter-out MyPLC,$(ALL)) + +# ...and the yum manifest +MyPLC: RPMS/yumgroups.xml + +# +# MyPLC development environment +# + +myplc-devel-MODULE := MyPLC build +myplc-devel-SPEC := myplc-devel.spec +# Package must be built as root +myplc-devel-RPMBUILD := sudo bash ./rpmbuild.sh +ALL += myplc-devel + +# +# MyPLC native +# + +myplc-native-MODULE := MyPLC build +myplc-native-SPEC := myplc-native.spec # Package must be built as root -myplc-RPMBUILD := sudo rpmbuild -ALL += myplc +myplc-native-RPMBUILD := sudo bash ./rpmbuild.sh +ALL += myplc-native # MyPLC may require current packages -myplc: $(filter-out myplc,$(ALL)) +myplc-native: $(filter-out MyPLC,$(ALL)) # ...and the yum manifest -myplc: RPMS/yumgroups.xml +myplc-native: RPMS/yumgroups.xml + + +# +# MyPLC native +# + +myplc-devel-native-MODULE := MyPLC +myplc-devel-native-SPEC := myplc-devel-native.spec +ALL += myplc-devel-native + +# +# libnl +# +# [daniel] wait for latest Fedora release +# (03:29:46 PM) daniel_hozac: interfacing with the kernel directly when dealing with netlink was fugly, so... i had to find something nicer. +# (03:29:53 PM) daniel_hozac: the one in Fedora is lacking certain APIs i need. +# + +libnl-MODULE := libnl +libnl-SPEC := libnl.spec +ALL += libnl + +util-vserver: libnl # # Installation rules # # Upload packages to boot server -SERVER := build@boot.planet-lab.org -ARCHIVE := /var/www/html/install-rpms/archive +SERVERA := build@boot1.planet-lab.org +SERVERB := build@boot2.planet-lab.org +ARCHIVE := /plc/data/var/www/html/install-rpms/archive # Put nightly alpha builds in a subdirectory ifeq ($(TAG),HEAD) ARCHIVE := $(ARCHIVE)/planetlab-alpha -REPOS := /var/www/html/install-rpms/planetlab-alpha +REPOS := /plc/data/var/www/html/install-rpms/planetlab-alpha endif RPMS/yumgroups.xml: - install -D -m 644 groups/v3_yumgroups.xml RPMS/yumgroups.xml + install -D -m 644 groups/v4_yumgroups.xml RPMS/yumgroups.xml install: ifeq ($(BASE),) @@ -371,29 +461,37 @@ ifneq ($(wildcard /etc/planetlab/secring.gpg),) --define "_signature gpg" \ --define "_gpg_path /etc/planetlab" \ --define "_gpg_name PlanetLab " \ - --resign RPMS/*/*.rpm SRPMS/*.rpm + --resign RPMS/*/*.rpm endif ifneq ($(BUILDS),) # Remove old runs - echo "cd $(ARCHIVE) && ls -t | sed -n $(BUILDS)~1p | xargs rm -rf" | ssh $(SERVER) /bin/bash -s + echo "cd $(ARCHIVE) && ls -t | sed -n $(BUILDS)~1p | xargs rm -rf" | ssh $(SERVERA) /bin/bash -s + echo "cd $(ARCHIVE) && ls -t | sed -n $(BUILDS)~1p | xargs rm -rf" | ssh $(SERVERB) /bin/bash -s endif # Create package manifest sh ./packages.sh -b "http://build.planet-lab.org/$(subst $(HOME)/,,$(shell pwd))/RPMS" RPMS > packages.xml + # Update yum metadata + yum-arch RPMS >/dev/null + createrepo -g yumgroups.xml RPMS >/dev/null # Populate repository - ssh $(SERVER) mkdir -p $(ARCHIVE)/$(BASE)/RPMS $(ARCHIVE)/$(BASE)/SRPMS - rsync --delete --links --perms --times --group --compress --rsh=ssh \ - $(sort $(subst -debuginfo,,$(wildcard RPMS/yumgroups.xml RPMS/*/*.rpm))) $(SERVER):$(ARCHIVE)/$(BASE)/RPMS/ - ssh $(SERVER) yum-arch $(ARCHIVE)/$(BASE)/RPMS >/dev/null - ssh $(SERVER) createrepo -g yumgroups.xml $(ARCHIVE)/$(BASE)/RPMS >/dev/null - rsync --delete --links --perms --times --group --compress --rsh=ssh \ - $(wildcard SRPMS/*.rpm) $(SERVER):$(ARCHIVE)/$(BASE)/SRPMS/ - ssh $(SERVER) yum-arch $(ARCHIVE)/$(BASE)/SRPMS >/dev/null - ssh $(SERVER) createrepo $(ARCHIVE)/$(BASE)/SRPMS >/dev/null + rsync \ + --exclude '*-debuginfo-*' \ + --recursive --links --perms --times --group --compress --rsh=ssh \ + RPMS/ $(SERVERA):$(ARCHIVE)/$(BASE) + rsync \ + --exclude '*-debuginfo-*' \ + --recursive --links --perms --times --group --compress --rsh=ssh \ + RPMS/ $(SERVERB):$(ARCHIVE)/$(BASE) ifeq ($(TAG),HEAD) # Update nightly alpha symlink if it does not exist or is broken, or it is Monday - if ! ssh $(SERVER) "[ -e $(REPOS) ] && exit 0 || exit 1" || [ "$(shell date +%A)" = "Monday" ] ; then \ - ssh $(SERVER) ln -nsf $(ARCHIVE)/$(BASE)/RPMS/ $(REPOS) ; \ + if ! ssh $(SERVERA) "[ -e $(REPOS) ] && exit 0 || exit 1" || [ "$(shell date +%A)" = "Monday" ] ; then \ + ssh $(SERVERA) ln -nsf archive/$(BASE) $(REPOS) ; \ + fi + # Update nightly alpha symlink if it does not exist or is broken, or it is Monday + if ! ssh $(SERVERB) "[ -e $(REPOS) ] && exit 0 || exit 1" || [ "$(shell date +%A)" = "Monday" ] ; then \ + ssh $(SERVERB) ln -nsf archive/$(BASE) $(REPOS) ; \ fi + endif endif