X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=Makefile;h=aea676c5ba41520e74f87be53a2d59d05bc27e91;hb=c2105102808a7aeef68e2ae86bc884ae358f309d;hp=3d3c2eb24ecf4c58a8ca08b69a709a5cf2d22dd3;hpb=b8b9aa95ffc076af818d18c46e19988713b3e39c;p=build.git diff --git a/Makefile b/Makefile index 3d3c2eb2..aea676c5 100644 --- a/Makefile +++ b/Makefile @@ -1,9 +1,6 @@ # # Thierry Parmentelat - INRIA Sophia Antipolis # -### $Id$ -### $URL$ -# #################### # 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: @@ -154,41 +148,58 @@ include $(PLDISTROTAGS) # this used to be set in the -tags.mk files, but that turned out to require # error-prone duplicate changes # so now the nightly build script sets this to what it is currently using -# we set a default in case we run the build manually: -# if the local directory was svn checked out, then use the corresponding URL -svn-info-url-line := $(shell svn info 2> /dev/null | grep URL:) -default-build-SVNPATH := $(lastword $(svn-info-url-line)) -# otherwise, use this hard-coded default -ifeq "$(default-build-SVNPATH)" "" -default-build-SVNPATH := http://svn.planet-lab.org/svn/build/trunk +# in case we run this manually, i.e. if neither build-SVNPATH nor build-GITPATH is set +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 -# use default if necessary -build-SVNPATH ?= $(default-build-SVNPATH) -#################### +#################### 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 + +FOO=@ +# 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 -p 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 -#$(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,git)) ########## stage1 and stage1iter # extract specs and compute .mk files by running @@ -267,14 +278,14 @@ 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:=$(sort $(ALL.modules)) @@ -347,14 +358,14 @@ $(foreach package,$(ALL),$(eval $(call target_spec,$(package)))) ### module extraction define target_extract_module MODULES/$(1): - @(echo -n "XXXXXXXXXXXXXXX -- BEG MODULE $(module) : $@ " ; date) + @(echo -n "XXXXXXXXXXXXXXX -- BEG MODULE $(1) : $@ " ; date) mkdir -p MODULES cd MODULES && \ $(if $($(1)-SVNPATH),\ svn export $($(1)-SVNPATH) $(1),\ mkdir $(1) ; (git archive --remote=$($(1).gitrepo) $($(1).gittag) | tar -C $(1) -xf - ) \ || { rm -rf $(1); false; } ) - @(echo -n "XXXXXXXXXXXXXXX -- END MODULE $(module) : $@ " ; date) + @(echo -n "XXXXXXXXXXXXXXX -- END MODULE $(1) : $@ " ; date) $(1)-module: MODULES/$(1) .PHONY: $(1)-module @@ -364,8 +375,6 @@ $(foreach module,$(ALL.modules),$(eval $(call target_extract_module,$(module)))) ### the tests area # use this makefile to extract tests rather than extracting manually in vbuild-nightly -$(eval $(call stage1_module_vars,tests)) -$(eval $(call target_extract_module,tests)) tests-clean: rm -rf MODULES/tests .PHONY: tests-clean @@ -396,7 +405,7 @@ endif ### this utility allows to extract various info from a spec file ### and to define them in makefiles spec2make: spec2make.c - $(CC) -g -Wall $< -o $@ -lrpm -lrpmbuild + $(CC) -g -Wall $< -o $@ -lrpm -lrpmbuild -lrpmio -lpopt ### run spec2make on the spec file and include the result # usage: spec2make package @@ -703,7 +712,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)"