# Thierry Parmentelat - INRIA Sophia Antipolis
#
### $Id$
+### $URL$
#
####################
# invocation:
####################
# exported to spec files as plrelease
-PLANETLAB_RELEASE = 4.3
+PLANETLAB_RELEASE = 5.0
#
# Default values
#################### 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
# $(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
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))
# 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
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))
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
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)