tags do not have the Id keyword anymore
[build.git] / Makefile
index c764979..04fa886 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,9 +1,6 @@
 #
 # Thierry Parmentelat - INRIA Sophia Antipolis 
 #
-### $Id: Makefile 18118 2010-05-21 17:51:26Z thierry $
-### $URL: svn+ssh://thierry@svn.planet-lab.org/svn/build/trunk/Makefile $
-# 
 ####################
 # invocation:
 #
@@ -116,9 +113,6 @@ RPM-INSTALL-DEVEL := rpm --force -Uvh
 RPM-UNINSTALL-DEVEL := rpm -e
 YUM-INSTALL-DEVEL := yum -y install
 
-# see also below
-REMOTE-PLDISTROS="wextoolbox"
-
 #################### Makefile
 # Default target
 all:
@@ -155,40 +149,59 @@ include $(PLDISTROTAGS)
 # error-prone duplicate changes 
 # so now the nightly build script sets this to what it is currently using
 # in case we run this manually, i.e. if neither build-SVNPATH nor build-GITPATH is set
-# set build-GITPATH from the current repo
-ifeq "$(build-SVNPATH)" ""
-ifeq "$(build-GITPATH)" ""
-build-GITPATH := $(shell git config remote.origin.url)
+ifeq "$(build-SVNPATH)$(build-GITPATH)" ""
+build-GITPATH-local := $(shell git config remote.origin.url)
+ifneq "$(build-GITPATH-local)" ""
+build-GITPATH := $(build-GITPATH-local)
+else
+build-SVNPATH := $(lastword $(shell svn info 2> /dev/null | grep URL:))
 endif
 endif
-# the sentence for svn used to be
-#svn-info-url-line := $(shell svn info 2> /dev/null | grep URL:)
-#default-build-SVNPATH := $(lastword $(svn-info-url-line))
 
-####################
+#################### pldistros that are defined remotely
+# fetching with svn
+define remote_pldistro_fetch_svn
+$(1).config.SVNPATH := $(shell grep -v "^#" config.$(1).svnpath)
+config.$(1): config.$(1).svnpath
+       @echo "Fetching (svn) details for remote pldistro $(1)"
+       svn export $$($(1).config.SVNPATH) config.$(1)
+endef
+
+# fetching with git
+define remote_pldistro_fetch_git
+$(1).config.GITPATH := $(shell grep -v "^#" config.$(1).gitpath)
+$(1).config.gitrepo := $(firstword $(subst @, ,$$($(1).config.GITPATH)))
+$(1).config.gittag := $(word 2,$(subst @, ,$$($(1).config.GITPATH)))
+$(1).config.gittag := $(if $$($(1).config.gittag),$$($(1).config.gittag),master)
+config.$(1): GITPATH=$(shell grep -v "^#" config.$(1).gitpath)
+config.$(1): config.$(1).gitpath
+       @echo "Fetching (git) details for remote pldistro $(1)"
+       mkdir config.$(1)
+       git $(GITTAG) archive --remote=$$($(1).config.gitrepo) $$($(1).config.gittag) | tar -C config.$(1) -xf -
+endef
+
+
+# put it together
 define remote_pldistro
 $(1).mk: config.$(1)/$(1).mk
-       @echo 'creating $(1) from config subdir'
+       @echo 'creating $(1) from config.$(1)'
        cp config.$(1)/$(1).mk $(1).mk
 
 $(2).mk: config.$(1)/$(2).mk
-       @echo 'creating $(1) tags from config subdir'
+       @echo 'creating $(2) tags from config.$(1)'
        cp config.$(1)/$(2).mk $(2).mk
 
 config.$(1)/$(1).mk: config.$(1)
 config.$(1)/$(2).mk: config.$(1)
 
-config.$(1): config.$(1).svnpath
-       @echo "Fetching details for pldistro $(1)"
-       svn export $(shell grep -v "^#" config.$(1).svnpath) config.$(1)
-
 DISTCLEANS += $(1).mk $(2).mk config.$(1)
-
+$(eval $(call remote_pldistro_fetch_$(3),$(1)))
 endef
 
 # somehow this does not work, handle manually instead
+#REMOTE-PLDISTROS="wextoolbox"
 #$(foreach distro, $(REMOTE-PLDISTROS), $(eval $(call remote_pldistro,$(distro),$(distro)-tags)))
-$(eval $(call remote_pldistro,wextoolbox,wextoolbox-tags))
+$(eval $(call remote_pldistro,wextoolbox,wextoolbox-tags,svn))
 
 ########## stage1 and stage1iter
 # extract specs and compute .mk files by running 
@@ -267,16 +280,16 @@ repo: RPMS/yumgroups.xml
 define stage1_package_vars
 $(1).module := $(firstword $($(1)-MODULES))
 $(1).specpath := SPECS/$(notdir $($(1)-SPEC))
-$(1).moduledir := MODULES/$(firstword $($(1)-MODULES))
-$(1).codespec := MODULES/$(firstword $($(1)-MODULES))/$($(1)-SPEC)
+$(1).moduledir := MODULES/$$($(1).module)
+$(1).codespec := MODULES/$$($(1).module)/$($(1)-SPEC)
 endef
 
 $(foreach package, $(ALL), $(eval $(call stage1_package_vars,$(package))))
 
 # compute all modules
-ALL.modules :=
+ALL.modules := build tests
 $(foreach package,$(ALL), $(eval ALL.modules+=$($(package)-MODULES)))
-ALL.modules:=build tests $(sort $(ALL.modules))
+ALL.modules:=$(sort $(ALL.modules))
 
 # extract revision from -SVNPATH or tag from -GITPATH
 define stage1_module_vars
@@ -701,7 +714,6 @@ version-build:
        @echo    "Build build-base: $(BASE)"
        @echo    "Build planetlab-distro: $(PLDISTRO)"
        @echo    "Build planetlab-tags: $(PLDISTROTAGS)"
-       @echo -n 'Build planetlab-tagsid: ' ; fgrep '$$''Id' $(PLDISTROTAGS)
        @echo    "Build target-arch: $(HOSTARCH)"
        @echo    "Build target-distro: $(DISTRO)"
        @echo    "Build target-distroname: $(DISTRONAME)"