-# 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
-
-#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
+# bootcd
+#
+bootcd-MODULES := bootcd build
+bootcd-SPEC := bootcd.spec
+bootcd-RPMBUILD := bash ./rpmbuild.sh
+bootcd-DEPEND-PACKAGES := $(IN_BOOTCD)
+bootcd-DEPEND-FILES := RPMS/yumgroups.xml
+bootcd-RPMDATE := yes
+ALL += bootcd
+IN_MYPLC += bootcd
+
+#
+# vserver : reference image for slices
+#
+vserver-MODULES := vserver-reference build
+vserver-SPEC := vserver-reference.spec
+vserver-DEPEND-PACKAGES := $(IN_VSERVER)
+vserver-DEPEND-FILES := RPMS/yumgroups.xml
+vserver-RPMDATE := yes
+ALL += vserver
+IN_BOOTSTRAPFS += vserver
+
+#
+# bootstrapfs
+#
+bootstrapfs-MODULES := bootstrapfs build
+bootstrapfs-SPEC := bootstrapfs.spec
+bootstrapfs-RPMBUILD := bash ./rpmbuild.sh
+bootstrapfs-DEPEND-PACKAGES := $(IN_BOOTSTRAPFS)
+bootstrapfs-DEPEND-FILES := RPMS/yumgroups.xml
+bootstrapfs-RPMDATE := yes
+ALL += bootstrapfs
+IN_MYPLC += bootstrapfs
+
+#
+# noderepo
+#
+# all rpms resulting from packages marked as being in bootstrapfs and vserver
+NODEREPO_RPMS = $(foreach package,$(IN_BOOTSTRAPFS) $(IN_NODEREPO) $(IN_VSERVER),$($(package).rpms))
+# replace space with +++ (specvars cannot deal with spaces)
+SPACE=$(subst x, ,x)
+NODEREPO_RPMS_3PLUS = $(subst $(SPACE),+++,$(NODEREPO_RPMS))
+
+noderepo-MODULES := bootstrapfs
+noderepo-SPEC := noderepo.spec
+noderepo-RPMBUILD := bash ./rpmbuild.sh
+# package requires all embedded packages
+noderepo-DEPEND-PACKAGES := $(IN_BOOTSTRAPFS) $(IN_NODEREPO) $(IN_VSERVER)
+noderepo-DEPEND-FILES := RPMS/yumgroups.xml
+#export rpm list to the specfile
+noderepo-SPECVARS = node_rpms_plus=$(NODEREPO_RPMS_3PLUS)
+noderepo-RPMDATE := yes
+ALL += noderepo
+IN_MYPLC += noderepo
+
+#
+# slicerepo
+#
+# all rpms resulting from packages marked as being in vserver
+SLICEREPO_RPMS = $(foreach package,$(IN_VSERVER),$($(package).rpms))
+# replace space with +++ (specvars cannot deal with spaces)
+SPACE=$(subst x, ,x)
+SLICEREPO_RPMS_3PLUS = $(subst $(SPACE),+++,$(SLICEREPO_RPMS))
+
+slicerepo-MODULES := bootstrapfs
+slicerepo-SPEC := slicerepo.spec
+slicerepo-RPMBUILD := bash ./rpmbuild.sh
+# package requires all embedded packages
+slicerepo-DEPEND-PACKAGES := $(IN_VSERVER)
+slicerepo-DEPEND-FILES := RPMS/yumgroups.xml
+#export rpm list to the specfile
+slicerepo-SPECVARS = slice_rpms_plus=$(SLICEREPO_RPMS_3PLUS)
+slicerepo-RPMDATE := yes
+ALL += slicerepo
+
+#
+# MyPLC : lightweight packaging, dependencies are yum-installed in a vserver
+#
+myplc-MODULES := myplc
+myplc-SPEC := myplc.spec
+myplc-DEPEND-FILES := myplc-release RPMS/yumgroups.xml
+ALL += myplc