From b3cbe8b32f3350e17daefdccbbacccd8c2aa5728 Mon Sep 17 00:00:00 2001 From: Thierry Parmentelat Date: Fri, 4 Jan 2008 10:49:07 +0000 Subject: [PATCH] first draft of the onelab distro --- onelab-install.mk | 73 +++++++ onelab-tags-rc2.mk | 60 ----- onelab-tags.mk | 91 +++----- onelab.mk | 531 ++++++++++++++++++--------------------------- planetlab.mk | 39 ++-- 5 files changed, 332 insertions(+), 462 deletions(-) create mode 100644 onelab-install.mk delete mode 100644 onelab-tags-rc2.mk diff --git a/onelab-install.mk b/onelab-install.mk new file mode 100644 index 00000000..688cc0c2 --- /dev/null +++ b/onelab-install.mk @@ -0,0 +1,73 @@ +# +# Thierry Parmentelat - INRIA Sophia Antipolis +# +### $Id: onelab-install.mk 685 2007-07-19 09:01:41Z thierry $ +# +# Installation rules +# + +# make install : +# uses $(PLCSSH) as an ssh address for the destination host +# first copies everything on a separate rpm repo, prepares it, +# and then renames it into planetlab + +# Upload packages to boot server + +# use PLCHOST if set +ifdef PLCHOST +PLCSSH:=root@$(PLCHOST) +endif +# if nothing's defined : use this default +ifndef PLCSSH +PLCSSH := root@private.one-lab.org +endif + +RPMSAREA := /var/www/html/install-rpms/ +BOOTAREA := /var/www/html/boot/ + +#BASE := onelab +BASENEW := build-$(notdir $(shell pwd)) +BASEBAK := planetlab-bak +BASE := planetlab + +########## +# if make is invoked with -n, run rsync, but with --dry-run +RSYNC_COND_DRY_RUN := $(if $(findstring n,$(MAKEFLAGS)),--dry-run,) +RSYNC := rsync $(RSYNC_COND_DRY_RUN) + +INSTALL-TARGETS := install-rpms install-index install-adopt install-bootstrap +install: $(INSTALL-TARGETS) +.PHONY: install $(INSTALL-TARGETS) + +install-help: + @echo install: $(INSTALL-TARGETS) + +install-rpms:RPMS/yumgroups.xml + # create repository + ssh $(PLCSSH) mkdir -p /plc/data/$(RPMSAREA)/$(BASENEW) + # populate + +$(RSYNC) -v --perms --times --group --compress --rsh=ssh \ + RPMS/yumgroups.xml $(wildcard RPMS/*/*.rpm) $(PLCSSH):/plc/data/$(RPMSAREA)/$(BASENEW)/ + +install-index: + # sign and index new repository + ssh $(PLCSSH) chroot /plc/root /etc/plc.d/packages start $(RPMSAREA)/$(BASENEW)/ 2>> install-index.log + +install-clean-index: + # sign and index new repository + ssh $(PLCSSH) chroot /plc/root /etc/plc.d/packages clean $(RPMSAREA)/$(BASENEW)/ 2>> install-index.log + +install-adopt: + # cleanup former bak + ssh $(PLCSSH) rm -rf /plc/data/$(RPMSAREA)/$(BASEBAK) + # bak previous repo + ssh $(PLCSSH) mv /plc/data/$(RPMSAREA)/$(BASE) /plc/data/$(RPMSAREA)/$(BASEBAK) + # install new repo + ssh $(PLCSSH) 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 $(PLCSSH):/plc/data/$(BOOTAREA) ; fi + + diff --git a/onelab-tags-rc2.mk b/onelab-tags-rc2.mk deleted file mode 100644 index 82aefe12..00000000 --- a/onelab-tags-rc2.mk +++ /dev/null @@ -1,60 +0,0 @@ -# we do not use TAG directly anymore -# this because we want the rpm's releases to reflect the date even when a tag is used - -CVSROOT := :pserver:anon@cvs.planet-lab.org:/cvs - -# this one is special : the boot script (in our case nightly-build.sh) extracts -# build from the trunk/HEAD. Then the various modules may need to extract build again, -# typically when then use mkfedora, and for that purpose they use the following tag. -build-TAG := planetlab-4_0-rc2 - -# the build's logic is sometimes confusing. Whether a package mentions a single or multiple modules, -# the variable used is different. -# Look for xxx-ambiguous-xxx below -# We define both just in case (as of now only the first one is used) - -# xxx-ambiguous-xxx -linux-2.6-TAG := planetlab-4_0-rc2 -kernel-i686-TAG := planetlab-4_0-rc2 -# we dont use this yet -kernel-x86_64-TAG := planetlab-4_0-rc2 -kernel-i586-TAG := planetlab-4_0-rc2 -# end -vnet-TAG := planetlab-4_0-rc2 -madwifi-ng-SVNPATH := svn+ssh://build@svn.one-lab.org/svn/madwifi-ng/tags/0.9.3 -wireless-tools-SVNPATH := svn+ssh://build@svn.one-lab.org/svn/wireless-tools/tags/29pre14 -ivtv-TAG := planetlab-4_0-rc2 -util-vserver-TAG := planetlab-4_0-rc2 -PlanetLabAccounts-TAG := planetlab-4_0-rc2 -NodeUpdate-TAG := planetlab-4_0-rc2 -PlanetLabConf-TAG := planetlab-4_0-rc2 -ipod-TAG := planetlab-4_0-rc2 -sudo-TAG := planetlab-4_0-rc2 -pycurl-TAG := planetlab-4_0-rc2 -BootServerRequest-TAG := planetlab-4_0-rc2 -PlanetLabID-TAG := planetlab-4_0-rc2 -NodeManager-TAG := planetlab-4_0-rc2 -pl_sshd-TAG := planetlab-4_0-rc2 -libhttpd++-TAG := planetlab-4_0-rc2 -proper-TAG := planetlab-4_0-rc2 -mysql-TAG := planetlab-4_0-rc2 -ulogd-TAG := planetlab-4_0-rc2 -netflow-TAG := planetlab-4_0-rc2 -pl_mom-TAG := planetlab-4_0-rc2 -iptables-TAG := planetlab-4_0-rc2 -iproute2-TAG := planetlab-4_0-rc2 -kexec-tools-TAG := planetlab-4_0-rc2 -util-python-TAG := planetlab-4_0-rc2 -# xxx-ambiguous-xxx -PLCAPI-SVNPATH := svn+ssh://build@svn.one-lab.org/svn/new_plc_api/trunk -new_plc_api-SVNPATH := svn+ssh://build@svn.one-lab.org/svn/new_plc_api/trunk -# end -vserver-reference-TAG := planetlab-4_0-rc2 -bootmanager-SVNPATH := svn+ssh://build@svn.one-lab.org/svn/bootmanager/trunk -bootcd-SVNPATH := svn+ssh://build@svn.one-lab.org/svn/bootcd/trunk -# xxx-ambiguous-xxx -plcwww-SVNPATH := svn+ssh://build@svn.one-lab.org/svn/new_plc_www/trunk -new_plc_www-SVNPATH := svn+ssh://build@svn.one-lab.org/svn/new_plc_www/trunk -# end -myplc-SVNPATH := svn+ssh://build@svn.one-lab.org/svn/myplc/trunk -plc/scripts-TAG := planetlab-4_0-rc2 diff --git a/onelab-tags.mk b/onelab-tags.mk index 4e40d268..67596137 100644 --- a/onelab-tags.mk +++ b/onelab-tags.mk @@ -1,60 +1,33 @@ -# we do not use TAG directly anymore -# this because we want the rpm's releases to reflect the date even when a tag is used +# $Id: planetlab-tags.mk 7507 2007-12-13 09:32:33Z thierry $ -CVSROOT := :pserver:anon@cvs.planet-lab.org:/cvs - -# this one is special : the boot script (in our case nightly-build.sh) extracts -# build from the trunk/HEAD. Then the various modules may need to extract build again, -# typically when then use mkfedora, and for that purpose they use the following tag. -build-TAG := planetlab-4_0-branch - -# the build's logic is sometimes confusing. Whether a package mentions a single or multiple modules, -# the variable used is different. -# Look for xxx-ambiguous-xxx below -# We define both just in case (as of now only the first one is used) - -# xxx-ambiguous-xxx -linux-2.6-TAG := planetlab-4_0-branch -kernel-i686-TAG := planetlab-4_0-branch -# we dont use this yet -kernel-x86_64-TAG := planetlab-4_0-branch -kernel-i586-TAG := planetlab-4_0-branch -# end -vnet-TAG := planetlab-4_0-branch -madwifi-ng-SVNPATH := svn+ssh://build@svn.one-lab.org/svn/madwifi-ng/tags/0.9.3 -wireless-tools-SVNPATH := svn+ssh://build@svn.one-lab.org/svn/wireless-tools/tags/29pre14 -ivtv-TAG := planetlab-4_0-branch -util-vserver-TAG := planetlab-4_0-branch -PlanetLabAccounts-TAG := planetlab-4_0-branch -NodeUpdate-TAG := planetlab-4_0-branch -PlanetLabConf-TAG := planetlab-4_0-branch -ipod-TAG := planetlab-4_0-branch -sudo-TAG := planetlab-4_0-branch -pycurl-TAG := planetlab-4_0-branch -BootServerRequest-TAG := planetlab-4_0-branch -PlanetLabID-TAG := planetlab-4_0-branch -NodeManager-TAG := planetlab-4_0-branch -pl_sshd-TAG := planetlab-4_0-branch -libhttpd++-TAG := planetlab-4_0-branch -proper-TAG := planetlab-4_0-branch -mysql-TAG := planetlab-4_0-branch -ulogd-TAG := planetlab-4_0-branch -netflow-TAG := planetlab-4_0-branch -pl_mom-TAG := planetlab-4_0-branch -iptables-TAG := planetlab-4_0-branch -iproute2-TAG := planetlab-4_0-branch -kexec-tools-TAG := planetlab-4_0-branch -util-python-TAG := planetlab-4_0-branch -# xxx-ambiguous-xxx -PLCAPI-SVNPATH := svn+ssh://build@svn.one-lab.org/svn/new_plc_api/trunk -new_plc_api-SVNPATH := svn+ssh://build@svn.one-lab.org/svn/new_plc_api/trunk -# end -vserver-reference-TAG := planetlab-4_0-branch -bootmanager-SVNPATH := svn+ssh://build@svn.one-lab.org/svn/bootmanager/trunk -bootcd-SVNPATH := svn+ssh://build@svn.one-lab.org/svn/bootcd/trunk -# xxx-ambiguous-xxx -plcwww-SVNPATH := svn+ssh://build@svn.one-lab.org/svn/new_plc_www/trunk -new_plc_www-SVNPATH := svn+ssh://build@svn.one-lab.org/svn/new_plc_www/trunk -# end -myplc-SVNPATH := svn+ssh://build@svn.one-lab.org/svn/myplc/trunk -plc/scripts-TAG := planetlab-4_0-branch +build-SVNPATH := http://svn.planet-lab.org/svn/build/trunk +linux-patches-SVNPATH := http://svn.planet-lab.org/svn/linux-2.6/trunk +madwifi-SVNPATH := http://svn.planet-lab.org/svn/madwifi/trunk +wireless-tools-SVNPATH := http://svn.planet-lab.org/svn/wireless-tools/trunk +nozomi-SVNPATH := http://svn.one-lab.org/nozomi/imports/2.21alpha_060917 +comgt-SVNPATH := http://svn.one-lab.org/comgt/imports/0.3 +libnl-SVNPATH := http://svn.planet-lab.org/svn/libnl/trunk +util-vserver-SVNPATH := http://svn.planet-lab.org/svn/util-vserver/branches/scholz +util-vserver-pl-SVNPATH := http://svn.planet-lab.org/svn/util-vserver-pl/trunk +NodeUpdate-SVNPATH := http://svn.planet-lab.org/svn/NodeUpdate/trunk +PingOfDeath-SVNPATH := http://svn.planet-lab.org/svn/PingOfDeath/trunk +NodeManager-SVNPATH := http://svn.planet-lab.org/svn/NodeManager/trunk +pl_sshd-SVNPATH := http://svn.planet-lab.org/svn/pl_sshd/trunk +libhttpd++-SVNPATH := http://svn.planet-lab.org/svn/libhttpd++/trunk +proper-SVNPATH := http://svn.planet-lab.org/svn/proper/trunk +CoDemux-SVNPATH := http://svn.planet-lab.org/svn/CoDemux/trunk +ulogd-SVNPATH := http://svn.planet-lab.org/svn/ulogd/trunk +fprobe-ulog-SVNPATH := http://svn.planet-lab.org/svn/fprobe-ulog/trunk +PlanetFlow-SVNPATH := http://svn.planet-lab.org/svn/PlanetFlow/trunk +Mom-SVNPATH := http://svn.planet-lab.org/svn/Mom/trunk +iptables-SVNPATH := http://svn.planet-lab.org/svn/iptables/trunk +iproute2-SVNPATH := http://svn.planet-lab.org/svn/iproute2/trunk +vsys-SVNPATH := http://svn.planet-lab.org/svn/vsys/trunk +PLCAPI-SVNPATH := http://svn.planet-lab.org/svn/PLCAPI/trunk +WWW-SVNPATH := http://svn.one-lab.org/new_plc_www/trunk +VserverReference-SVNPATH := http://svn.planet-lab.org/svn/VserverReference/trunk +BootManager-SVNPATH := http://svn.planet-lab.org/svn/BootManager/trunk +pypcilib-SVNPATH := http://svn.planet-lab.org/svn/pypcilib/trunk +BootCD-SVNPATH := http://svn.planet-lab.org/svn/BootCD/trunk +BootstrapFS-SVNPATH := http://svn.planet-lab.org/svn/BootstrapFS/trunk +MyPLC-SVNPATH := http://svn.planet-lab.org/svn/MyPLC/trunk diff --git a/onelab.mk b/onelab.mk index 280aa6f2..2910a78a 100644 --- a/onelab.mk +++ b/onelab.mk @@ -1,458 +1,345 @@ # -# PlanetLab standard components list -# +# OneLab standard components list +# initial version from Mark Huang # Mark Huang # Copyright (C) 2003-2006 The Trustees of Princeton University +# rewritten by Thierry Parmentelat - INRIA Sophia Antipolis # # $Id$ # - -# -# Required: -# -# CVSROOT or package-CVSROOT: CVSROOT to use -# TAG or package-TAG: CVS tag to use -# package-MODULE: CVS module name to use -# package-SPEC: RPM spec file template +# see doc in Makefile # -# Optional: + # -# package-RPMFLAGS: Miscellaneous RPM flags -# package-RPMBUILD: If not rpmbuild -# package-CVS_RSH: If not ssh +# kernel # -# Add to ALL if you want the package built as part of the default set. +# use a package name with srpm in it: +# so the source rpm is created by running make srpm in the codebase # -#### -# 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 +kernel-MODULES := linux-patches +kernel-SPEC := kernel-2.6.spec +kernel-BUILD-FROM-SRPM := yes +ifeq "$(HOSTARCH)" "i386" +kernel-RPMFLAGS:= --target i686 +else +kernel-RPMFLAGS:= --target $(HOSTARCH) +endif +KERNELS += kernel -TAGSFILE = onelab-tags.mk +kernels: $(KERNELS) +kernels-clean: $(foreach package,$(KERNELS),$(package)-clean) -include $(TAGSFILE) +ALL += $(KERNELS) +# this is to mark on which image a given rpm is supposed to go +IN_BOOTCD += $(KERNELS) +IN_VSERVER += $(KERNELS) +IN_BOOTSTRAPFS += $(KERNELS) +# turns out myplc installs kernel-vserver +IN_MYPLC += $(KERNELS) # -# Default values +# kexec-tools # - -# 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 -ifneq ($(wildcard CVS/Root),) -# Check if we are able to access CVS -CVSTAG := $(shell cvs status planetlab.mk 2>/dev/null | sed -ne 's/[[:space:]]*Sticky Tag:[[:space:]]*\([^[:space:]]*\).*/\1/p') -ifneq ($(CVSTAG),) -CVSROOT := $(shell cat CVS/Root) -ifeq ($(CVSTAG),(none)) -TAG := HEAD -else -TAG := $(CVSTAG) -endif +ifeq "$(DISTRO)" "Fedora" +ifeq "$(RELEASE)" "4" +kexec-tools-MODULES := kexec-tools +kexec-tools-SPEC := kexec-tools.spec +kexec-tools-CVSROOT := :pserver:anon@cvs.planet-lab.org:/cvs +kexec-tools-TAG := planetlab-4_1-rc2 +ALL += kexec-tools +IN_BOOTCD += kexec-tools endif endif # -# kernel +# madwifi # +madwifi-MODULES := madwifi +madwifi-SPEC := madwifi.spec +madwifi-BUILD-FROM-SRPM := yes +madwifi-DEPEND-DEVEL-RPMS := kernel-devel +madwifi-SPECVARS = kernel_version=$(kernel.rpm-version) \ + kernel_release=$(kernel.rpm-release) \ + kernel_arch=$(kernel.rpm-arch) +ALL += madwifi +IN_BOOTSTRAPFS += madwifi -#kernel-x86_64-MODULE := linux-2.6 -#kernel-x86_64-RPMFLAGS:= --target x86_64 -#kernel-x86_64-SPEC := linux-2.6/scripts/kernel-2.6-$(PLDISTRO).spec -##ALL += kernel-x86_64 - -kernel-i686-MODULE := linux-2.6 -kernel-i686-RPMFLAGS:= --target i686 -kernel-i686-SPEC := linux-2.6/scripts/kernel-2.6-$(PLDISTRO).spec -ALL += kernel-i686 - -#kernel-i586-MODULE := linux-2.6 -#kernel-i586-RPMFLAGS:= --target i586 -#kernel-i586-SPEC := linux-2.6/scripts/kernel-2.6-planetlab.spec -#ALL += kernel-i586 - -#kernel: kernel-i586 kernel-i686 -#kernel-clean: kernel-i586-clean kernel-i686-clean -kernel: kernel-i686 -kernel-clean: kernel-i686-clean - -# -# vnet # +# wireless-tools +# +wireless-tools-MODULES := wireless-tools +wireless-tools-SPEC := wireless-tools.spec +wireless-tools-BUILD-FROM-SRPM := yes +ALL += wireless-tools +IN_BOOTSTRAPFS += wireless-tools -vnet-MODULE := vnet -vnet-SPEC := vnet/vnet.spec -ALL += vnet +# +# nozomi +# -# Build kernel first so we can bootstrap off of its build -vnet: kernel +nozomi-MODULES := nozomi +nozomi-SPEC := nozomi.spec +nozomi-DEPEND-DEVEL-RPMS := kernel-devel +nozomi-SPECVARS = kernel_release=$(kernel.rpm-release) +IN_BOOTSTRAPFS += nozomi +ALL += nozomi # -# madwifi -# - -madwifi-ng-MODULE := madwifi-ng -madwifi-ng-SPEC := madwifi.spec -ALL += madwifi-ng - -# Build kernel first so we can bootstrap off of its build -madwifi-ng: kernel - -# -# wireless-tools +# comgt # -wireless-tools-MODULE = wireless-tools -wireless-tools-SPEC := wireless-tools.spec -ALL += wireless-tools +comgt-MODULES := comgt +comgt-SPEC := comgt.spec +IN_BOOTSTRAPFS += comgt +ALL += comgt # -# ivtv +# libnl # - -#ivtv-MODULE := ivtv -#ivtv-SPEC := ivtv/ivtv.spec -#ALL += ivtv +# [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-MODULES := libnl +libnl-SPEC := libnl.spec +ALL += libnl # # util-vserver # - -util-vserver-MODULE := util-vserver -util-vserver-SPEC := util-vserver/util-vserver.spec +util-vserver-MODULES := util-vserver +util-vserver-SPEC := util-vserver.spec util-vserver-RPMFLAGS:= --without dietlibc ALL += util-vserver +IN_BOOTSTRAPFS += util-vserver # -# PlanetLabAccounts +# util-vserver-pl # - -PlanetLabAccounts-MODULE := PlanetLabAccounts -PlanetLabAccounts-SPEC := PlanetLabAccounts/PlanetLabAccounts.spec -ALL += PlanetLabAccounts +util-vserver-pl-MODULES := util-vserver-pl +util-vserver-pl-SPEC := util-vserver-pl.spec +util-vserver-pl-DEPEND-DEVEL-RPMS := libnl libnl-devel util-vserver-lib util-vserver-devel util-vserver-core +ALL += util-vserver-pl +IN_BOOTSTRAPFS += util-vserver-pl # # NodeUpdate # - -NodeUpdate-MODULE := NodeUpdate -NodeUpdate-SPEC := NodeUpdate/NodeUpdate.spec +NodeUpdate-MODULES := NodeUpdate +NodeUpdate-SPEC := NodeUpdate.spec ALL += NodeUpdate - -# -# PlanetLabConf -# - -PlanetLabConf-MODULE := PlanetLabConf -PlanetLabConf-SPEC := PlanetLabConf/PlanetLabConf.spec -ALL += PlanetLabConf +IN_BOOTSTRAPFS += NodeUpdate # # ipod # - -ipod-MODULE := ipod -ipod-SPEC := ipod/ipod.spec +ipod-MODULES := PingOfDeath +ipod-SPEC := ipod.spec ALL += ipod +IN_BOOTSTRAPFS += ipod # -# sudo -# - -sudo-MODULE := sudo -sudo-SPEC := sudo/planetlab_sudo.spec -ALL += sudo - -# -# pycurl -# - -pycurl-MODULE := pycurl -pycurl-SPEC := pycurl/pycurl.spec -ALL += pycurl - -# -# BootServerRequest -# - -BootServerRequest-MODULE := BootServerRequest -BootServerRequest-SPEC := BootServerRequest/PLBootServerRequest.spec -ALL += BootServerRequest - -# -# PlanetLabID +# NodeManager # - -PlanetLabID-MODULE := PlanetLabID -PlanetLabID-SPEC := PlanetLabID/PlanetLabID.spec -ALL += PlanetLabID - -# -# Node Manager -# - -NodeManager-MODULE := NodeManager -NodeManager-SPEC := NodeManager/NodeManager.spec +NodeManager-MODULES := NodeManager +NodeManager-SPEC := NodeManager.spec ALL += NodeManager +IN_BOOTSTRAPFS += NodeManager # # pl_sshd # - -pl_sshd-MODULE := pl_sshd -pl_sshd-SPEC := pl_sshd/pl_sshd.spec +pl_sshd-MODULES := pl_sshd +pl_sshd-SPEC := pl_sshd.spec ALL += pl_sshd +IN_BOOTSTRAPFS += pl_sshd # # libhttpd++: # - -libhttpd++-MODULE := libhttpd++ -libhttpd++-SPEC := libhttpd++/libhttpd++.spec -ALL += libhttpd++ +# Deprecate when vsys takes over [sapan]. +# keep in build for proper. +# +libhttpd-MODULES := libhttpd++ +libhttpd-SPEC := libhttpd++.spec +ALL += libhttpd +IN_BOOTSTRAPFS += libhttpd # -# Proper: Privileged Operations Service +# proper: Privileged Operations Service # - -proper-MODULE := proper -proper-SPEC := proper/proper.spec +proper-MODULES := proper +proper-SPEC := proper.spec +proper-DEPEND-DEVEL-RPMS := libhttpd++-devel ALL += proper - -proper: libhttpd++ +IN_BOOTSTRAPFS += proper # -# MySQL +# codemux: Port 80 demux # - -mysql-MODULE := mysql -mysql-SPEC := mysql/mysql.spec -ALL += mysql +codemux-MODULES := CoDemux +codemux-SPEC := codemux.spec +codemux-RPMBUILD := sudo bash ./rpmbuild.sh +ALL += codemux +IN_BOOTSTRAPFS += codemux # # ulogd # - -ulogd-MODULE := ulogd -ulogd-SPEC := ulogd/ulogd.spec +ulogd-MODULES := ulogd +ulogd-SPEC := ulogd.spec +ulogd-DEPEND-DEVEL-RPMS := kernel-devel proper-libs proper-devel ALL += ulogd +IN_VSERVER += ulogd -ulogd: kernel proper mysql +# +# fprobe-ulog +# +fprobe-ulog-MODULES := fprobe-ulog +fprobe-ulog-SPEC := fprobe-ulog.spec +ALL += fprobe-ulog +IN_BOOTSTRAPFS += fprobe-ulog # # netflow # - -netflow-MODULE := netflow -netflow-SPEC := netflow/netflow.spec +netflow-MODULES := PlanetFlow +netflow-SPEC := netflow.spec ALL += netflow - -netflow: mysql +IN_BOOTSTRAPFS += netflow # # PlanetLab Mom: Cleans up your mess # - -pl_mom-MODULE := pl_mom -pl_mom-SPEC := pl_mom/pl_mom.spec +pl_mom-MODULES := Mom +pl_mom-SPEC := pl_mom.spec ALL += pl_mom +IN_BOOTSTRAPFS += pl_mom # # iptables # - -iptables-MODULE := iptables -iptables-SPEC := iptables/iptables.spec +iptables-MODULES := iptables +iptables-SPEC := iptables.spec +iptables-DEPEND-DEVEL-RPMS := kernel-devel ALL += iptables - -iptables: kernel +IN_BOOTSTRAPFS += iptables # # iproute # - -iproute-MODULE := iproute2 -iproute-SPEC := iproute2/iproute.spec +iproute-MODULES := iproute2 +iproute-SPEC := iproute.spec ALL += iproute +IN_BOOTSTRAPFS += iproute # -# kexec-tools -# - -kexec-tools-MODULE := kexec-tools -kexec-tools-SPEC := kexec-tools/kexec-tools.spec -ALL += kexec-tools - -# -# util-python +# vsys # - -util-python-MODULE := util-python -util-python-SPEC := util-python/util-python.spec -ALL += util-python - -# proper and util-vserver both use scripts in util-python for building -proper: util-python -util-vserver: util-python -PlanetLabAuth: util-python +vsys-MODULES := vsys +vsys-SPEC := vsys.spec +ifeq "$(DISTRO)" "Fedora" +ifeq "$(RELEASE)" "7" +ALL += vsys +endif +ifeq "$(RELEASE)" "8" +ALL += vsys +endif +endif # # PLCAPI # - -PLCAPI-MODULE := new_plc_api +PLCAPI-MODULES := PLCAPI PLCAPI-SPEC := PLCAPI.spec ALL += PLCAPI +IN_MYPLC += PLCAPI # -# vserver-reference +# PLCWWW # - -vserver-reference-MODULE := vserver-reference build -vserver-reference-SPEC := vserver-reference/vserver-reference.spec -# Package must be built as root -vserver-reference-RPMBUILD := sudo rpmbuild -ALL += vserver-reference - -# vserver-reference may require current packages -vserver-reference: $(filter-out vserver-reference,$(ALL)) +PLCWWW-MODULES := WWW +PLCWWW-SPEC := PLCWWW.spec +ALL += PLCWWW +IN_MYPLC += PLCWWW # # bootmanager # - -bootmanager-MODULE := bootmanager build +bootmanager-MODULES := BootManager bootmanager-SPEC := bootmanager.spec -bootmanager-RPMBUILD := sudo rpmbuild ALL += bootmanager +IN_MYPLC += bootmanager -# bootmanager requires current packages -bootmanager: $(filter-out bootmanager,$(ALL)) - -# ...and the yum manifest -bootmanager: RPMS/yumgroups.xml +# +# pypcilib : used in bootcd +# +pypcilib-MODULES := pypcilib +pypcilib-SPEC := pypcilib.spec +ALL += pypcilib +IN_BOOTCD += pypcilib # # bootcd # - -bootcd-MODULE := bootcd build bootmanager +bootcd-MODULES := BootCD build bootcd-SPEC := bootcd.spec -bootcd-RPMBUILD := sudo rpmbuild +bootcd-RPMBUILD := sudo bash ./rpmbuild.sh +# package has *some* dependencies, at least these ones +bootcd-DEPEND-PACKAGES := $(IN_BOOTCD) +bootcd-DEPEND-FILES := RPMS/yumgroups.xml ALL += bootcd - -# bootcd requires current packages -bootcd: $(filter-out bootcd,$(ALL)) +IN_MYPLC += bootcd # -# plcwww +# vserver : reference image for slices # - -plcwww-MODULE := new_plc_www -plcwww-SPEC := plcwww.spec -ALL += plcwww +vserver-MODULES := VserverReference build +vserver-SPEC := vserver-reference.spec +# Package must be built as root +vserver-RPMBUILD := sudo bash ./rpmbuild.sh +# this list is useful for manual builds only, since nightly builds +# always redo all sequentially - try to keep updated +vserver-DEPEND-PACKAGES := $(IN_VSERVER) +vserver-DEPEND-FILES := RPMS/yumgroups.xml +ALL += vserver +IN_BOOTSTRAPFS := vserver # -# MyPLC +# bootstrapfs # +bootstrapfs-MODULES := BootstrapFS build +bootstrapfs-SPEC := bootstrapfs.spec +bootstrapfs-RPMBUILD := sudo bash ./rpmbuild.sh +# package requires all regular packages +bootstrapfs-DEPEND-PACKAGES := $(IN_BOOTSTRAPFS) +bootstrapfs-DEPEND-FILES := RPMS/yumgroups.xml +ALL += bootstrapfs +IN_MYPLC += bootstrapfs -myplc-MODULE := build myplc plc/scripts +# +# myplc : initial, chroot-based packaging +# +myplc-MODULES := MyPLC build myplc-SPEC := myplc.spec # Package must be built as root -myplc-RPMBUILD := sudo rpmbuild +myplc-RPMBUILD := sudo bash ./rpmbuild.sh +# myplc may require all packages +myplc-DEPEND-PACKAGES := $(IN_MYPLC) +myplc-DEPEND-FILES := RPMS/yumgroups.xml myplc-release ALL += myplc -# MyPLC may require current packages -myplc: $(filter-out myplc,$(ALL)) - -# ...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 # - -###myplc-devel-MODULE := build myplc -###myplc-devel-SPEC := myplc/myplc-devel.spec -#### Package must be built as root -###myplc-devel-RPMBUILD := sudo rpmbuild -###ALL += myplc-devel - +# MyPLC native : lightweight packaging, dependencies are yum-installed in a vserver # -# Installation rules -# - -# Upload packages to boot server -SERVER := root@onelab-plc.inria.fr -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 +myplc-native-MODULES := MyPLC build +myplc-native-SPEC := myplc-native.spec +# Package must be built as root +myplc-native-RPMBUILD := sudo bash ./rpmbuild.sh +# Thierry : don't depend on anything at build-time +#myplc-native-DEPEND-PACKAGES := +# Thierry : dunno about this one, let's stay safe +myplc-native-DEPEND-FILES := myplc-release +ALL += myplc-native -#BASE := onelab -BASENEW := build-$(notdir $(shell pwd)) -BASEBAK := planetlab-bak -BASE := planetlab - -RPMS/yumgroups.xml: - install -D -m 644 $(YUMGROUPS) RPMS/yumgroups.xml - -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 /plc/data/$(RPMSAREA)/$(BASENEW) - # populate - rsync -v --perms --times --group --compress --rsh=ssh \ - RPMS/yumgroups.xml $(wildcard RPMS/*/*.rpm) $(SERVER):/plc/data/$(RPMSAREA)/$(BASENEW)/ - -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 /plc/data/$(RPMSAREA)/$(BASEBAK) - # bak previous repo - ssh $(SERVER) mv /plc/data/$(RPMSAREA)/$(BASE) /plc/data/$(RPMSAREA)/$(BASEBAK) - # install new repo - 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):/plc/data/$(BOOTAREA) ; fi -#endif - -.PHONY: install diff --git a/planetlab.mk b/planetlab.mk index 016b7b18..db424720 100644 --- a/planetlab.mk +++ b/planetlab.mk @@ -1,8 +1,9 @@ # # PlanetLab standard components list -# +# initial version from Mark Huang # Mark Huang # Copyright (C) 2003-2006 The Trustees of Princeton University +# rewritten by Thierry Parmentelat - INRIA Sophia Antipolis # # $Id$ # @@ -17,7 +18,7 @@ # kernel-MODULES := linux-patches -kernel-SPEC := kernel-2.6-planetlab.spec +kernel-SPEC := kernel-2.6.spec kernel-BUILD-FROM-SRPM := yes ifeq "$(HOSTARCH)" "i386" kernel-RPMFLAGS:= --target i686 @@ -38,9 +39,21 @@ IN_BOOTSTRAPFS += $(KERNELS) IN_MYPLC += $(KERNELS) # -# madwifi +# kexec-tools +# +ifeq "$(DISTRO)" "Fedora" +ifeq "$(RELEASE)" "4" +kexec-tools-MODULES := kexec-tools +kexec-tools-SPEC := kexec-tools.spec +kexec-tools-CVSROOT := :pserver:anon@cvs.planet-lab.org:/cvs +kexec-tools-TAG := planetlab-4_1-rc2 +ALL += kexec-tools +IN_BOOTCD += kexec-tools +endif +endif + # -# [thierry] - temporarily use onelab's svn +# madwifi # madwifi-MODULES := madwifi madwifi-SPEC := madwifi.spec @@ -49,8 +62,8 @@ madwifi-DEPEND-DEVEL-RPMS := kernel-devel madwifi-SPECVARS = kernel_version=$(kernel.rpm-version) \ kernel_release=$(kernel.rpm-release) \ kernel_arch=$(kernel.rpm-arch) -IN_BOOTSTRAPFS += madwifi ALL += madwifi +IN_BOOTSTRAPFS += madwifi # # wireless-tools @@ -61,22 +74,6 @@ wireless-tools-BUILD-FROM-SRPM := yes ALL += wireless-tools IN_BOOTSTRAPFS += wireless-tools -#################### tmp -ifeq "$(DISTRO)" "Fedora" -ifeq "$(RELEASE)" "4" -# -# kexec-tools -# -kexec-tools-MODULES := kexec-tools -kexec-tools-SPEC := kexec-tools.spec -kexec-tools-CVSROOT := :pserver:anon@cvs.planet-lab.org:/cvs -kexec-tools-TAG := planetlab-4_1-rc2 -ALL += kexec-tools -IN_BOOTCD += kexec-tools -endif -endif -#################### tmp - # # libnl # -- 2.47.0