Setting tag nodemanager-5.2-11
[build.git] / Makefile
index 12d4a00..1c9e81f 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -362,16 +362,40 @@ endef
 
 $(foreach package,$(ALL),$(eval $(call target_spec,$(package))))
 
+####################
+# fetch modules
+# expected input:
+#   $(1) is the name of a git module
+#     $($(1).gitrepo) and $(($1).gittag) are used to determine branch or tag name
+# expected result
+#   $(1)/ in the cwd will hold the result
+
+# fetch svn module
+define fetch_svn_module
+       svn export $($(1)-SVNPATH) $(1)
+endef
+
+# git_fetch_module
+# as far as possible we use git-archive to fetch a git module
+# however if that fails we fallback to a git-clone strategy,
+# for when git-archive is not supported, e.g. for github
+# side effect
+#   $(1)/ gets cleaned up if job cannot be done
+define fetch_git_module
+       mkdir $(1) ; \
+       (git archive --remote=$($(1).gitrepo) $($(1).gittag) | tar -C $(1) -xf - ) || \
+       (echo "==================== git archive FAILED, trying git clone instead" ; \
+         git clone $($(1).gitrepo) $(1); cd $(1) ; git checkout $($(1).gittag) ; rm -rf .git ) || \
+       { rm -rf $(1); false; }
+endef
+
 ### module extraction
 define target_extract_module
 MODULES/$(1):
        @(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; } )
+       $(if $($(1)-SVNPATH),$(call fetch_svn_module,$(1)),$(call fetch_git_module,$(1)) )
        @(echo -n "XXXXXXXXXXXXXXX -- END MODULE $(1) : $@ " ; date)
 
 $(1)-module: MODULES/$(1)
@@ -381,7 +405,6 @@ endef
 $(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
 build-clean:
        rm -rf MODULES/build
 .PHONY: build-clean
@@ -528,10 +551,10 @@ srpms: $(ALLSRPMS)
 #################### manage build requirements
 # default values
 RPMYUM-INSTALL-LOCAL := rpm --force -Uvh
+RPMYUM-INSTALL-STOCK := yum -y install
 # uninstall -- cannot force rpm -e
 # need to ignore result, kernel-headers cannot be uninstalled as glibc depends on it
 RPMYUM-UNINSTALL-STOCK := rpm -e
-RPMYUM-INSTALL-STOCK := yum -y install
 
 ### these macro handles the LOCAL-DEVEL-RPMS and LOCAL-DEVEL-RPMS-CRUCIAL tags for a given package
 # before building : rpm-install LOCAL-DEVEL-RPMS 
@@ -548,6 +571,19 @@ define rpmyum_uninstall_stock_rpms
        -$(if $($(1)-LOCAL-DEVEL-RPMS), echo "Unstalling for $(1)-LOCAL-DEVEL-RPMS" ; $(RPMYUM-UNINSTALL-STOCK) $($(1)-LOCAL-DEVEL-RPMS))
 endef
 
+# similar for debian 
+DPKGAPT-INSTALL-STOCK := apt-get -y install
+DPKGAPT-UNINSTALL-STOCK := echo WARNING uninstalling stock debs not implemented
+
+define dpkgapt_install_stock_debs 
+       $(if $($(1)-STOCK-DEVEL-DEBS), echo "Installing for $(1)-STOCK-DEVEL-DEBS" ; $(DPKGAPT-INSTALL-STOCK) $($(1)-STOCK-DEVEL-DEBS))
+endef
+
+define dpkgapt_uninstall_stock_debs
+       -$(if $($(1)-LOCAL-DEVEL-DEBS), echo "Unstalling for $(1)-LOCAL-DEVEL-DEBS" ; $(DPKGAPT-UNINSTALL-STOCK) $($(1)-LOCAL-DEVEL-DEBS))
+endef
+
+
 ####################
 # usage: target_source_rpm package
 define target_source_rpm 
@@ -670,9 +706,11 @@ $(foreach package,$(ALL),$(eval $(call target_depends,$(package))))
 # so I'm reverting to simplicity
 define target_debian
 $(1)-debian: $(1)-tarball
+       $(call dpkgapt_install_stock_debs,$(1))
        mkdir -p DEBIAN/$(1)
        rsync -a MODULES/$(1)/ DEBIAN/$(1)/
        make -C DEBIAN/$(1) "RPMTARBALL=$(HOME)/$($(1).tarballs)" "RPMVERSION=$($(1).rpm-version)" "RPMRELEASE=$($(1).rpm-release)" "RPMNAME=$($(1).rpm-name)" debian
+       $(call dpkgapt_uninstall_stock_debs,$(1))
 endef
 
 $(foreach package,$(ALL),$(eval $(call target_debian,$(package))))