updated after planetlab syncs up with 5.0
[build.git] / Makefile
index 9c8ea08..a41537c 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -2,6 +2,7 @@
 # Thierry Parmentelat - INRIA Sophia Antipolis 
 #
 ### $Id$
+### $URL$
 # 
 ####################
 # invocation:
 ####################
 
 # exported to spec files as plrelease
-PLANETLAB_RELEASE = 4.3
+PLANETLAB_RELEASE = 5.0
 
 #
 # Default values
@@ -146,7 +147,9 @@ include $(PLDISTROCONTENTS)
 
 #################### include <pldistro>-tags.mk
 # describes where to fetch components, and the related tags if using cvs
+ifeq "$(PLDISTROTAGS)" ""
 PLDISTROTAGS := $(PLDISTRO)-tags.mk
+endif
 include $(PLDISTROTAGS)
 
 # this used to be set in the -tags.mk files, but that turned out to require
@@ -265,14 +268,27 @@ repo: RPMS/yumgroups.xml
 # $(package)-SPEC - otherwise the cvs modules have to define spec as 
 # <module>/<module>.spec while svn modules just define it as <module>.spec
 #
-define stage1_variables
-$(1).spec = $(notdir $($(1)-SPEC))
-$(1).specpath = SPECS/$(1).spec
-$(1).module = $(firstword $($(1)-MODULES))
-$(1)-SVNPATH = $(strip $($(1)-SVNPATH))
+define stage1_package_vars
+$(1).spec := $(notdir $($(1)-SPEC))
+$(1).specpath := SPECS/$(1).spec
+$(1).module := $(firstword $($(1)-MODULES))
+endef
+
+$(foreach package, $(ALL), $(eval $(call stage1_package_vars,$(package))))
+
+# compute all modules
+ALL-MODULES :=
+$(foreach package,$(ALL), $(eval ALL-MODULES+=$($(package)-MODULES)))
+ALL-MODULES:=$(sort $(ALL-MODULES))
+
+# extract revision from -SVNPATH
+define stage1_module_vars
+$(1)-SVNPATH := $(strip $($(1)-SVNPATH))
+$(1).svnpath := $(firstword $(subst @, ,$($(1)-SVNPATH)))
+$(1).svnrev := $(word 2,$(subst @, @,$($(1)-SVNPATH)))
 endef
 
-$(foreach package, $(ALL), $(eval $(call stage1_variables,$(package))))
+$(foreach module,$(ALL-MODULES), $(eval $(call stage1_module_vars,$(module))))
 
 #
 # for each package, compute whether we need to set date 
@@ -299,6 +315,11 @@ header.spec:
        echo "%define distroname $(DISTRONAME)" >> $@
        echo "%define pldistro $(PLDISTRO)" >> $@
        echo "%define plrelease $(PLANETLAB_RELEASE)" >> $@
+       echo "# use MD5 and gzip for binary and source files" << $@
+       echo "%global _binary_filedigest_algorithm 1" >> $@
+       echo "%global _source_filedigest_algorithm 1" >> $@
+       echo "%global _source_payload       w9.gzdio" >> $@
+       echo "%global _binary_payload       w9.gzdio" >> $@
 
 ### extract spec file from scm
 define target_spec
@@ -311,7 +332,7 @@ $($(1).specpath): header.spec
            echo "%define" $(word 1,$(subst =, ,$(line))) "$(word 2,$(subst =, ,$(line)))" >> $($(1).specpath) ;))
        echo "# included from $($(1)-SPEC)" >> $($(1).specpath)
        $(if $($($(1).module)-SVNPATH),\
-          svn cat $($($(1).module)-SVNPATH)/$($(1)-SPEC) >> $($(1).specpath) || rm $($(1).specpath),\
+          svn cat $($($(1).module).svnpath)/$($(1)-SPEC)$($($(1).module).svnrev) >> $($(1).specpath) || rm $($(1).specpath),\
           cvs -d $($($(1).module)-CVSROOT) checkout \
              -r $($($(1).module)-TAG) \
              -p $($(1).module)/$($(1)-SPEC) >> $($(1).specpath))
@@ -359,16 +380,15 @@ $(foreach package,$(ALL),$(eval $(call target_mk,$(package))))
 
 # stores PLDISTRO in a file
 # this is done at stage1. later run wont get confused
+SAVED_VARS=PLDISTRO PLDISTROTAGS build-SVNPATH PERSONALITY MAILTO BASE WEBPATH TESTBUILDURL WEBROOT
 savedpldistro.mk:
-       echo "PLDISTRO:=$(PLDISTRO)" > $@
-       echo "PLDISTROTAGS:=$(PLDISTROTAGS)" >> $@
-       echo "build-SVNPATH:=$(build-SVNPATH)" >> $@
-       echo "PERSONALITY:=$(PERSONALITY)" >> $@
-       echo "MAILTO:=$(MAILTO)" >> $@
-       echo "BASE:=$(BASE)" >> $@
-       echo "WEBPATH:=$(WEBPATH)" >> $@
-       echo "TESTBUILDURL:=$(TESTBUILDURL)" >> $@
-       echo "WEBROOT:=$(WEBROOT)" >> $@
+       @echo "# do not edit" > $@
+       @$(foreach var,$(SAVED_VARS),echo "$(var):=$($(var))" >> $@ ;)
+       @echo "# do not edit" > aliases
+       @echo -n "alias m=\"make " >> aliases
+       @$(foreach var,$(SAVED_VARS),echo -n " $(var)=$($(var))" >> aliases ;)
+       @echo "\"" >> aliases
+       @echo "alias m1=\"m stage1=true\"" >> aliases
 
 savedpldistro: savedpldistro.mk
 .PHONY: savedpldistro
@@ -493,7 +513,7 @@ $($(1).srpm): $($(1).specpath) .rpmmacros $($(1).codebase)
        mkdir -p BUILD SRPMS tmp
        @(echo -n "XXXXXXXXXXXXXXX -- BEG SRPM $(1) (using make srpm) " ; date)
        $(call handle_devel_rpms_pre,$(1))
-       make -C $($(1).codebase) srpm SPECFILE=$(HOME)/$($(1).specpath) && \
+       make -C $($(1).codebase) srpm SPECFILE=$(HOME)/$($(1).specpath) EXPECTED_SRPM=$(notdir $($(1).srpm)) && \
            rm -f SRPMS/$(notdir $($(1).srpm)) && \
            ln $($(1).codebase)/$(notdir $($(1).srpm)) SRPMS/$(notdir $($(1).srpm)) 
        $(call handle_devel_rpms_post,$(1))
@@ -644,7 +664,7 @@ clean-help:
 distclean1:
        rm -rf savedpldistro.mk .rpmmacros spec2make header.spec SPECS MAKE $(DISTCLEANS)
 distclean2:
-       rm -rf CODEBASES SOURCES BUILD RPMS SRPMS tmp
+       rm -rf CODEBASES SOURCES BUILD BUILDROOT RPMS SRPMS tmp
 distclean: distclean1 distclean2
 .PHONY: distclean1 distclean2 distclean
 
@@ -691,11 +711,6 @@ $(1)-version-svn:
           printf $(VFORMAT) $(1)-CVSROOT "$($(1)-CVSROOT)" ; printf $(VFORMAT) $(1)-TAG "$($(1)-TAG)")
 endef
 
-# compute all modules
-ALL-MODULES :=
-$(foreach package,$(ALL), $(eval ALL-MODULES+=$($(package)-MODULES)))
-ALL-MODULES:=$(sort $(ALL-MODULES))
-
 $(foreach module,$(ALL-MODULES), $(eval $(call svn_version_target,$(module))))
 
 version-svns: $(foreach module, $(ALL-MODULES), $(module)-version-svn)