From: Marc Fiuczynski Date: Tue, 27 Nov 2007 17:03:12 +0000 (+0000) Subject: revert to Thierry's srpm build approach X-Git-Tag: 4.2-rc2~441 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=7557eb13a8579b23cb6ad8c5487388e1738f8468;p=build.git revert to Thierry's srpm build approach --- diff --git a/Makefile b/Makefile index 82d8e0aa..3ec67e1f 100644 --- a/Makefile +++ b/Makefile @@ -185,8 +185,10 @@ include $(ALLMKS) #all : codebases #all : rpms #all : srpms +# mention $(ALL) here rather than rpms +# this is because the inter-package dependencies are expressed like +# util-vserver: util-python all: rpms -all: srpms endif endif @@ -214,7 +216,7 @@ SOURCES/myplc-release: # define stage1_variables $(1)_spec = $(notdir $($(1)-SPEC)) -$(1)_specpath = SPECS/$(notdir $($(1)-SPEC)) +$(1)_specpath = CODESPECS/$(notdir $($(1)-SPEC)) $(1)_module = $(firstword $($(1)-MODULES)) endef @@ -241,7 +243,7 @@ $(foreach package, $(ALL), $(eval $(call package_hasdate,$(package)))) # cannot use variables in such rules, we need to inline everything, sigh define target_spec $($(1)_specpath): - mkdir -p SPECS + mkdir -p CODESPECS (echo -n "# Generated by planetlab build from $($(1)-SPEC) on " ; date) > $($(1)_specpath) echo "%define distroname $(DISTRO)" >> $($(1)_specpath) echo "%define distrorelease $(RELEASE)" >> $($(1)_specpath) @@ -374,27 +376,6 @@ CODEBASES/%: $(call extract_single_module,$(package))) @(echo -n "XXXXXXXXXXXXXXX -- END CODEBASE $(package) : $@ " ; date) -### rpmbuild invokation -ALLRPMS:=$(foreach package,$(ALL),$($(package)-RPM)) -rpms: $(ALLRPMS) - @echo $(words $(ALLRPMS)) binary rpms OK -.PHONY: rpms - -# usage: build_binary_rpm package -# xxx hacky - invoke createrepo if DEPENDFILES mentions RPMS/yumgroups.xml -define target_binary_rpm -$($(1)-RPM): $($(1)_specpath) $($(1)-TARBALL) .rpmmacros - mkdir -p BUILD RPMS tmp - @(echo -n "XXXXXXXXXXXXXXX -- BEG RPM $(1) " ; date) - $(if $(findstring RPMS/yumgroups.xml,$($(1)-DEPENDFILES)), createrepo --quiet -g yumgroups.xml RPMS/ , ) - $(if $($(1)-RPMBUILD),\ - $($(1)-RPMBUILD) $($(1)-RPMFLAGS) -bb $($(1)_specpath), \ - $(RPMBUILD) $($(1)-RPMFLAGS) -bb $($(1)_specpath)) - @(echo -n "XXXXXXXXXXXXXXX -- END RPM $(1) " ; date) -endef - -$(foreach package,$(ALL),$(eval $(call target_binary_rpm,$(package)))) - ### source rpms ALLSRPMS:=$(foreach package,$(ALL),$($(package)-SRPM)) srpms: $(ALLSRPMS) @@ -425,6 +406,28 @@ endef $(foreach package,$(ALL),$(eval $(call target_source_rpm,$(package)))) +### rpmbuild invokation +ALLRPMS:=$(foreach package,$(ALL),$($(package)-RPM)) +# same as above, mention $(ALL) and not $(ALLRPMS) +rpms: $(ALLRPMS) + @echo $(words $(ALLRPMS)) binary rpms OK +.PHONY: rpms + +# usage: build_binary_rpm package +# xxx hacky - invoke createrepo if DEPENDFILES mentions RPMS/yumgroups.xml +define target_binary_rpm +$($(1)-RPM): $($(1)-SRPM) + mkdir -p BUILD RPMS SPECS tmp + @(echo -n "XXXXXXXXXXXXXXX -- BEG RPM $(1) " ; date) + $(if $(findstring RPMS/yumgroups.xml,$($(1)-DEPENDFILES)), createrepo --quiet -g yumgroups.xml RPMS/ , ) + $(if $($(1)-RPMBUILD),\ + $($(1)-RPMBUILD) $($(1)-RPMFLAGS) --rebuild $($(1)-SRPM), \ + $(RPMBUILD) $($(1)-RPMFLAGS) --rebuild $($(1)-SRPM)) + @(echo -n "XXXXXXXXXXXXXXX -- END RPM $(1) " ; date) +endef + +$(foreach package,$(ALL),$(eval $(call target_binary_rpm,$(package)))) + ### RPMS/yumgroups.xml ifndef YUMGROUPS YUMGROUPS := groups/$(PLDISTRO).xml @@ -523,9 +526,9 @@ clean-help: ### brute force clean distclean1: - rm -rf pldistro.mk .rpmmacros spec2make SPECS MAKE + rm -rf pldistro.mk .rpmmacros spec2make CODESPECS MAKE distclean2: - rm -rf CODEBASES SOURCES BUILD RPMS SRPMS tmp + rm -rf CODEBASES SOURCES BUILD RPMS SRPMS SPECS tmp distclean: distclean1 distclean2 .PHONY: distclean1 distclean2 distclean @@ -571,7 +574,7 @@ help: @echo "Run make in two stages:" @echo "" @echo "make stage1=true PLDISTRO=onelab" - @echo " -> extracts all spec files in SPECS/ and mk files in MAKE/" + @echo " -> extracts all spec files in CODESPECS/ and mk files in MAKE/" @echo " as well as save PLDISTRO for subsequent runs" @echo "" @echo "Then you can use the following targets"