revert to Thierry's srpm build approach
authorMarc Fiuczynski <mef@cs.princeton.edu>
Tue, 27 Nov 2007 17:03:12 +0000 (17:03 +0000)
committerMarc Fiuczynski <mef@cs.princeton.edu>
Tue, 27 Nov 2007 17:03:12 +0000 (17:03 +0000)
Makefile

index 82d8e0a..3ec67e1 100644 (file)
--- 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"