(*) reviewed make variable naming scheme: uses -UPPER-CASE for the ones set in .mk...
authorThierry Parmentelat <thierry.parmentelat@sophia.inria.fr>
Mon, 3 Dec 2007 12:04:37 +0000 (12:04 +0000)
committerThierry Parmentelat <thierry.parmentelat@sophia.inria.fr>
Mon, 3 Dec 2007 12:04:37 +0000 (12:04 +0000)
    and .lower-case for internal/automatic ones
(*) impacted planetlab.mk for the -DEPEND* variables
(*) make ulogd.pkginfo kernel-devel.rpminfo
(*) make help

Makefile
planetlab.mk
spec2make.c

index 4759219..d7b4f21 100644 (file)
--- a/Makefile
+++ b/Makefile
 #     make stage1=true PLDISTRO=onelab
 #
 #################### 
-# This build deals with 2 kinds of objects
+# This build deals with 3 kinds of objects
 # 
 # (*) packages are named upon the RPM name; they are mostly lowercase
 #     Add a package to ALL if you want it built as part of the default set.
 # (*) modules are named after the subversion tree; as of this writing their names 
-#     are mostly mixed case like MyPLC or Vserverreference
+#     are mostly mixed case like MyPLC or VserverReference
+# (*) rpms are named in the spec files. A package typically defines several rpms;
+#     rpms are used for defining DEPEND-DEVEL-RPMS. See also package.rpmnames
 # 
 #################### packages
 # basics: how to build a package - you need/may define the following variables
 #     packages defined BEFORE the current one (note: you should use = - as opposed to := - to define these)
 #     e.g. mydriver-SPECVARS = foo=$(kernel-rpm-release) 
 #     would let you use the %release from the kernel's package when rpmbuild'ing mydriver - see automatic below
-# (*) package-DEPENDS
+# (*) package-DEPEND-PACKAGES
 #     a set of *packages* that this package depends on
-# (*) package-DEPENDDEVELRPMS
+# (*) package-DEPEND-DEVEL-RPMS
 #     a set of *rpms* that the build will rpm-install before building <package>
-# (*) package-DEPENDFILES
+# (*) package-DEPEND-FILES
 #     a set of files that the package depends on - and that make needs to know about
 #     if this contains RPMS/yumgroups.xml, then the toplevel RPMS's index 
 #     is refreshed with createrepo prior to running rpmbuild
 #
 #################### automatic variables
 #
-# the build defines the following make variables - these are extracted from spec files
-# (*) package-TARBALLS : from the Source<n>: declaration
-#     example: kernel-i386-TARBALLS = SOURCES/linux-2.6.20.tar.bz2
-# (*) package-SOURCE : 
-#     example: kernel-i386-SOURCE = SOURCES/linux-2.6.20
-# (*) package-SRPM
-#     example: kernel-i386-SRPM = SRPMS/kernel-2.6.20-1.2949.fc6.vs2.2.0.1.0.planetlab.src.rpm
-# (*) package-RPMS
-#     example: kernel-i386-RPMS = \
-#      RPMS/i686/kernel-2.6.20-1.2949.fc6.vs2.2.0.1.0.planetlab.i686.rpm \
-#      RPMS/i686/kernel-devel-2.6.20-1.2949.fc6.vs2.2.0.1.0.planetlab.i686.rpm \
-#      RPMS/i686/kernel-vserver-2.6.20-1.2949.fc6.vs2.2.0.1.0.planetlab.i686.rpm \
-#      RPMS/i686/kernel-debuginfo-2.6.20-1.2949.fc6.vs2.2.0.1.0.planetlab.i686.rpm
-# (*) package-rpm-name
-#     example: kernel-i386-rpm-name = kernel
-# (*) package-rpm-release
-#     example: kernel-i386-rpm-release = 1.2949.fc6.vs2.2.0.1.0.planetlab
-# (*) package-version
-#     example: kernel-i386-rpm-version = 2.6.20
-# (*) package-subversion
-#     example: myplc-rpm-subversion = 15
+# the build defines some make variables that are extracted from spec files
+# see for example
+# (*)  $ make ulogd.pkginfo
+#        to see the list f variables attached to a given package
+# (*)  $ make kernel-devel.rpminfo
+#        to see the list f variables attached to a given rpm
+#
 ####################
 
 #
@@ -165,7 +153,7 @@ all: verbose
 verbose:
        @echo "========== stage2 : $(package)"
 #      @echo "stage2 : included .mk files : $(previousmks)"
-all: $($(package)_specpath)
+all: $($(package).specpath)
 all: MAKE/$(package).mk
 else
 ### stage1
@@ -235,9 +223,9 @@ repo: RPMS/yumgroups.xml
 # <module>/<module>.spec while svn modules just define it as <module>.spec
 #
 define stage1_variables
-$(1)_spec = $(notdir $($(1)-SPEC))
-$(1)_specpath = SPECS/$(notdir $($(1)-SPEC))
-$(1)_module = $(firstword $($(1)-MODULES))
+$(1).spec = $(notdir $($(1)-SPEC))
+$(1).specpath = SPECS/$(notdir $($(1)-SPEC))
+$(1).module = $(firstword $($(1)-MODULES))
 endef
 
 $(foreach package, $(ALL), $(eval $(call stage1_variables,$(package))))
@@ -246,9 +234,10 @@ $(foreach package, $(ALL), $(eval $(call stage1_variables,$(package))))
 # for each package, compute whether we need to set date (i.e. whether we use the trunk)
 # the myplc package is forced to have a date, because it is more convenient
 # (we cannot bump its number everytime something changes in the system)
+# myplc-native does not need this trick
 # 
 define package_hasdate
-$(1)_hasdate = $(if $(subst myplc,,$(1)), \
+$(1).has-date = $(if $(subst myplc,,$(1)), \
                  $(if $($(1)-SVNPATH),\
                     $(if $(findstring /trunk,$($(1)-SVNPATH)),yes,),\
                     $(if $(findstring HEAD,$($(1)-TAG)),yes,)), \
@@ -258,27 +247,24 @@ endef
 $(foreach package, $(ALL), $(eval $(call package_hasdate,$(package))))
 
 ### extract spec file from scm
-# usage: extract_spec_file package 
-# see early releases for comments on other possible implementations
-# cannot use variables in such rules, we need to inline everything, sigh
 define target_spec
-$($(1)_specpath):
+$($(1).specpath):
        mkdir -p SPECS
-       (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)
-       echo "%define pldistro $(PLDISTRO)" >> $($(1)_specpath)
-       $(if $($(1)_hasdate),echo "%define date $(shell date +%Y.%m.%d)" >> $($(1)_specpath),)
-       echo "# included from codebase specfile" >> $($(1)_specpath)
+       (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)
+       echo "%define pldistro $(PLDISTRO)" >> $($(1).specpath)
+       $(if $($(1).has-date),echo "%define date $(shell date +%Y.%m.%d)" >> $($(1).specpath),)
+       echo "# included from codebase specfile" >> $($(1).specpath)
        $(if $($(1)-SPECVARS), \
          $(foreach line,$($(1)-SPECVARS), \
-           echo "%define" $(word 1,$(subst =, ,$(line))) "$(word 2,$(subst =, ,$(line)))" >> $($(1)_specpath) ;))
-       $(if $($($(1)_module)-SVNPATH),\
-          svn cat $($($(1)_module)-SVNPATH)/$($(1)-SPEC) >> $($(1)_specpath),\
-          cvs -d $($($(1)_module)-CVSROOT) checkout \
-             -r $($($(1)_module)-TAG) \
-             -p $($(1)_module)/$($(1)-SPEC) >> $($(1)_specpath))
-       @if [ -z $($(1)_specpath) ] ; then rm $($(1)_specpath) ; exit 1 ; fi
+           echo "%define" $(word 1,$(subst =, ,$(line))) "$(word 2,$(subst =, ,$(line)))" >> $($(1).specpath) ;))
+       $(if $($($(1).module)-SVNPATH),\
+          svn cat $($($(1).module)-SVNPATH)/$($(1)-SPEC) >> $($(1).specpath),\
+          cvs -d $($($(1).module)-CVSROOT) checkout \
+             -r $($($(1).module)-TAG) \
+             -p $($(1).module)/$($(1)-SPEC) >> $($(1).specpath))
+       @if [ -z $($(1).specpath) ] ; then rm $($(1).specpath) ; exit 1 ; fi
 endef
 
 $(foreach package,$(ALL),$(eval $(call target_spec,$(package))))
@@ -315,9 +301,9 @@ spec2make: spec2make.c
 ### run spec2make on the spec file and include the result
 # usage: spec2make package
 define target_mk
-MAKE/$(1).mk: $($(1)_specpath) spec2make .rpmmacros
+MAKE/$(1).mk: $($(1).specpath) spec2make .rpmmacros
        mkdir -p MAKE
-       ./spec2make $($(1)-RPMFLAGS) $($(1)_specpath) $(1) > MAKE/$(1).mk
+       ./spec2make $($(1)-RPMFLAGS) $($(1).specpath) $(1) > MAKE/$(1).mk
        @if [ -z MAKE/$(1).mk ] ; then rm MAKE/$(1).mk ; exit 1 ; fi
 endef
 
@@ -337,7 +323,7 @@ all: savepldistro
 
 ####################
 ### pack sources into tarballs
-ALLTARBALLS:= $(foreach package, $(ALL), $($(package)-TARBALLS))
+ALLTARBALLS:= $(foreach package, $(ALL), $($(package).tarballs))
 tarballs: $(ALLTARBALLS)
        @echo $(words $(ALLTARBALLS)) source tarballs OK
 .PHONY: tarballs
@@ -360,8 +346,8 @@ URLS/%:
 
 ### the directory SOURCES/<package>-<version> is made 
 # with a copy -rl from CODEBASES/<package>
-# the former is $(package-SOURCE) and the latter is $(package-CODEBASE)
-ALLSOURCES:=$(foreach package, $(ALL), $($(package)-SOURCE))
+# the former is $(package.source) and the latter is $(package.codebase)
+ALLSOURCES:=$(foreach package, $(ALL), $($(package).source))
 # so that make does not use the rule below directly for creating the tarball files
 .SECONDARY: $(ALLSOURCES)
 
@@ -370,13 +356,13 @@ sources: $(ALLSOURCES)
 .PHONY: sources
 
 define target_link_codebase_sources
-$($(1)-SOURCE): $($(1)-CODEBASE) ; mkdir -p SOURCES ; cp -rl $($(1)-CODEBASE) $($(1)-SOURCE)
+$($(1).source): $($(1).codebase) ; mkdir -p SOURCES ; cp -rl $($(1).codebase) $($(1).source)
 endef
 
 $(foreach package,$(ALL),$(eval $(call target_link_codebase_sources,$(package))))
 
 ### codebase extraction
-ALLCODEBASES:=$(foreach package, $(ALL), $($(package)-CODEBASE))
+ALLCODEBASES:=$(foreach package, $(ALL), $($(package).codebase))
 # so that make does not use the rule below directly for creating the tarball files
 .SECONDARY: $(ALLCODEBASES)
 
@@ -388,7 +374,7 @@ codebases : $(ALLCODEBASES)
 # usage: extract_single_module package 
 define extract_single_module
        mkdir -p CODEBASES
-       $(if $($($(1)_module)-SVNPATH), cd CODEBASES && svn export $($($(1)_module)-SVNPATH) $(1), cd CODEBASES && cvs -d $($($(1)_module)-CVSROOT) export -r $($($(1)_module)-TAG) -d $(1) $($(1)_module))
+       $(if $($($(1).module)-SVNPATH), cd CODEBASES && svn export $($($(1).module)-SVNPATH) $(1), cd CODEBASES && cvs -d $($($(1).module)-CVSROOT) export -r $($($(1).module)-TAG) -d $(1) $($(1).module))
 endef
 
 # usage: extract_multi_module package 
@@ -407,7 +393,7 @@ CODEBASES/%:
        @(echo -n "XXXXXXXXXXXXXXX -- END CODEBASE $(package) : $@ " ; date)
 
 ### source rpms
-ALLSRPMS:=$(foreach package,$(ALL),$($(package)-SRPM))
+ALLSRPMS:=$(foreach package,$(ALL),$($(package).srpm))
 srpms: $(ALLSRPMS)
        @echo $(words $(ALLSRPMS)) source rpms OK
 .PHONY: srpms
@@ -415,24 +401,24 @@ srpms: $(ALLSRPMS)
 # usage: target_source_rpm package
 # select upon the package name, whether it contains srpm or not
 define target_source_rpm 
-$(1).all-devel-rpm-paths := $(foreach rpm,$($(1)-DEPENDDEVELRPMS),$($(rpm).rpm-path))
+$(1).all-devel-rpm-paths := $(foreach rpm,$($(1)-DEPEND-DEVEL-RPMS),$($(rpm).rpm-path))
 ifeq "$(subst srpm,,$(1))" "$(1)"
-$($(1)-SRPM): $($(1)_specpath) .rpmmacros $($(1)-TARBALLS
+$($(1).srpm): $($(1).specpath) .rpmmacros $($(1).tarballs
        mkdir -p BUILD SRPMS tmp
        @(echo -n "XXXXXXXXXXXXXXX -- BEG SRPM $(1) " ; date)
        $(if $($(1).all-devel-rpm-paths), $(RPM-INSTALL-DEVEL) $($(1).all-devel-rpm-paths))
        $(if $($(1)-RPMBUILD),\
-         $($(1)-RPMBUILD) $($(1)-RPMFLAGS) -bs $($(1)_specpath),
-         $(RPMBUILD) $($(1)-RPMFLAGS) -bs $($(1)_specpath))    
+         $($(1)-RPMBUILD) $($(1)-RPMFLAGS) -bs $($(1).specpath),
+         $(RPMBUILD) $($(1)-RPMFLAGS) -bs $($(1).specpath))    
        @(echo -n "XXXXXXXXXXXXXXX -- END SRPM $(1) " ; date)
 else
-$($(1)-SRPM): $($(1)_specpath) .rpmmacros $($(1)-CODEBASE)
+$($(1).srpm): $($(1).specpath) .rpmmacros $($(1).codebase)
        mkdir -p BUILD SRPMS tmp
        @(echo -n "XXXXXXXXXXXXXXX -- BEG SRPM $(1) (using make srpm) " ; date)
        $(if $($(1).all-devel-rpm-paths), $(RPM-INSTALL-DEVEL) $($(1).all-devel-rpm-paths))
-       make -C $($(1)-CODEBASE) srpm && \
-           rm -f SRPMS/$(notdir $($(1)-SRPM)) && \
-           ln $($(1)-CODEBASE)/$(notdir $($(1)-SRPM)) SRPMS/$(notdir $($(1)-SRPM)) 
+       make -C $($(1).codebase) srpm && \
+           rm -f SRPMS/$(notdir $($(1).srpm)) && \
+           ln $($(1).codebase)/$(notdir $($(1).srpm)) SRPMS/$(notdir $($(1).srpm)) 
        @(echo -n "XXXXXXXXXXXXXXX -- END SRPM $(1) " ; date)
 endif
 endef
@@ -440,7 +426,7 @@ endef
 $(foreach package,$(ALL),$(eval $(call target_source_rpm,$(package))))
 
 ### rpmbuild invokation
-ALLRPMS:=$(foreach package,$(ALL),$($(package)-RPMS))
+ALLRPMS:=$(foreach package,$(ALL),$($(package).rpms))
 # same as above, mention $(ALL) and not $(ALLRPMS)
 rpms: $(ALLRPMS)
        @echo $(words $(ALLRPMS)) binary rpms OK
@@ -451,15 +437,15 @@ rpms: $(ALLRPMS)
 rpm_use_tmp_dirs = --define "_sourcedir $(HOME)/tmp" --define "_specdir $(HOME)/tmp"
 
 # usage: build_binary_rpm package
-# xxx hacky - invoke createrepo if DEPENDFILES mentions RPMS/yumgroups.xml
+# xxx hacky - invoke createrepo if DEPEND-FILES mentions RPMS/yumgroups.xml
 define target_binary_rpm 
-$($(1)-RPMS): $($(1)-SRPM)
+$($(1).rpms): $($(1).srpm)
        mkdir -p BUILD RPMS tmp
        @(echo -n "XXXXXXXXXXXXXXX -- BEG RPM $(1) " ; date)
-       $(if $(findstring RPMS/yumgroups.xml,$($(1)-DEPENDFILES)), $(createrepo) , )
+       $(if $(findstring RPMS/yumgroups.xml,$($(1)-DEPEND-FILES)), $(createrepo) , )
        $(if $($(1)-RPMBUILD),\
-         $($(1)-RPMBUILD) $($(1)-RPMFLAGS) --rebuild $(rpm_use_tmp_dirs) $($(1)-SRPM), \
-         $(RPMBUILD)  $($(1)-RPMFLAGS) --rebuild $(rpm_use_tmp_dirs) $($(1)-SRPM))
+         $($(1)-RPMBUILD) $($(1)-RPMFLAGS) --rebuild $(rpm_use_tmp_dirs) $($(1).srpm), \
+         $(RPMBUILD)  $($(1)-RPMFLAGS) --rebuild $(rpm_use_tmp_dirs) $($(1).srpm))
        @(echo -n "XXXXXXXXXXXXXXX -- END RPM $(1) " ; date)
 endef
 
@@ -469,21 +455,21 @@ $(foreach package,$(ALL),$(eval $(call target_binary_rpm,$(package))))
 # e.g. make proper -> does propers rpms
 # usage shorthand_target package
 define target_shorthand 
-$(1): $($(package)-RPMS)
+$(1): $($(package).rpms)
 .PHONY: $(1)
 $(1)-spec: $($(package)-SPEC)
 .PHONY: $(1)-spec
 $(1)-mk: $($(package)-MK)
 .PHONY: $(1)-mk
-$(1)-tarball: $($(package)-TARBALLS)
+$(1)-tarball: $($(package).tarballs)
 .PHONY: $(1)-tarball
-$(1)-codebase: $($(package)-CODEBASE)
+$(1)-codebase: $($(package).codebase)
 .PHONY: $(1)-source
-$(1)-source: $($(package)-SOURCE)
+$(1)-source: $($(package).source)
 .PHONY: $(1)-codebase
-$(1)-rpms: $($(package)-RPMS)
+$(1)-rpms: $($(package).rpms)
 .PHONY: $(1)-rpms
-$(1)-srpm: $($(package)-SRPM)
+$(1)-srpm: $($(package).srpm)
 .PHONY: $(1)-srpm
 endef
 
@@ -492,29 +478,29 @@ $(foreach package,$(ALL),$(eval $(call target_shorthand,$(package))))
 ### file dependencies
 define package_depends_on_file
 $(1):$(2)
-$($(1)-SRPM):$(2)
+$($(1).srpm):$(2)
 endef
 
 define target_dependfiles
-$(foreach file,$($(1)-DEPENDFILES),$(eval $(call package_depends_on_file,$(1),$(file))))
+$(foreach file,$($(1)-DEPEND-FILES),$(eval $(call package_depends_on_file,$(1),$(file))))
 endef
 
 $(foreach package,$(ALL),$(eval $(call target_dependfiles,$(package))))
 
 ### package dependencies
 define compute_devel_depends
-$(1).depend-devel-packages := $(foreach rpm,$($(1)-DEPENDDEVELRPMS),$($(rpm).package))
+$(1).depend-devel-packages := $(foreach rpm,$($(1)-DEPEND-DEVEL-RPMS),$($(rpm).package))
 endef
 $(foreach package,$(ALL),$(eval $(call compute_devel_depends,$(package))))
 
 define package_depends_on_package
 $(1):$(2)
-$(1):$($(2)-RPMS)
-$($(1)-SRPM):$($(2)-RPMS)
+$(1):$($(2).rpms)
+$($(1).srpm):$($(2).rpms)
 endef
 
 define target_depends
-$(foreach package,$($(1)-DEPENDS) $($(1).depend-devel-packages),$(eval $(call package_depends_on_package,$(1),$(package))))
+$(foreach package,$($(1)-DEPEND-PACKAGES) $($(1).depend-devel-packages),$(eval $(call package_depends_on_package,$(1),$(package))))
 endef
 
 $(foreach package,$(ALL),$(eval $(call target_depends,$(package))))
@@ -523,33 +509,33 @@ $(foreach package,$(ALL),$(eval $(call target_depends,$(package))))
 # usage: target_clean package
 define target_clean
 $(1)-clean-codebase:
-       rm -rf $($(1)-CODEBASE)
+       rm -rf $($(1).codebase)
 .PHONY: $(1)-clean-codebase
 CLEANS += $(1)-clean-codebase
 $(1)-clean-source:
-       rm -rf $($(1)-SOURCE)
+       rm -rf $($(1).source)
 .PHONY: $(1)-clean-source
 CLEANS += $(1)-clean-source
 $(1)-clean-tarball:
-       rm -rf $($(1)-TARBALLS)
+       rm -rf $($(1).tarballs)
 .PHONY: $(1)-clean-tarball
 CLEANS += $(1)-clean-tarball
 $(1)-clean-build:
-       rm -rf BUILD/$(notdir $($(1)-SOURCE))
+       rm -rf BUILD/$(notdir $($(1).source))
 CLEANS += $(1)-clean-build
 $(1)-clean-rpms:
-       rm -rf $($(1)-RPMS)
+       rm -rf $($(1).rpms)
 .PHONY: $(1)-clean-rpms
 CLEANS += $(1)-clean-rpms
 $(1)-clean-srpm:
-       rm -rf $($(1)-SRPM)
+       rm -rf $($(1).srpm)
 .PHONY: $(1)-clean-srpm
 CLEANS += $(1)-clean-srpm
 $(1)-codeclean: $(1)-clean-source $(1)-clean-tarball $(1)-clean-build $(1)-clean-rpms $(1)-clean-srpm
 $(1)-clean: $(1)-clean-codebase $(1)-codeclean
 .PHONY: $(1)-codeclean $(1)-clean 
 $(1)-clean-spec:
-       rm -rf $($(1)_specpath)
+       rm -rf $($(1).specpath)
 .PHONY: $(1)-clean-spec
 $(1)-clean-make:
        rm -rf MAKE/$(1).mk
@@ -616,54 +602,65 @@ endif
 
 ####################
 help:
-       @echo "Known pakages are"
-       @echo "  $(ALL)"
-       @echo "Run make in two stages:"
+       @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 "    as well as save PLDISTRO for subsequent runs"
        @echo ""
-       @echo "Then you can use the following targets"
-       @echo 'make'
+       @echo "********** Then you can use the following targets"
+       @echo 'make'
        @echo "  rebuilds everything"
-       @echo 'make util-vserver'
+       @echo 'make util-vserver'
        @echo "  makes the RPMS related to util-vserver"
        @echo "  equivalent to 'make util-vserver-rpms'"
        @echo ""
-       @echo "Or, vertically - step-by-step for a given package"
-       @echo 'make util-vserver-codebase'
+       @echo "********** Or, vertically - step-by-step for a given package"
+       @echo 'make util-vserver-codebase'
        @echo "  performs codebase extraction in CODEBASES/util-vserver"
-       @echo 'make util-vserver-source'
+       @echo 'make util-vserver-source'
        @echo "  creates source link in SOURCES/util-vserver-<version>"
-       @echo 'make util-vserver-tarball'
+       @echo 'make util-vserver-tarball'
        @echo "  creates source tarball in SOURCES/util-vserver-<version>.<tarextension>"
-       @echo '$ make util-vserver-rpms'
-       @echo "  build rpm(s) in RPMS/"
-       @echo '$ make util-vserver-srpm'
+       @echo 'make util-vserver-srpm'
        @echo "  build source rpm in SRPMS/"
+       @echo 'make util-vserver-rpms'
+       @echo "  build rpm(s) in RPMS/"
        @echo ""
-       @echo "Or, horizontally, reach a step for all known packages"
-       @echo 'make codebases'
-       @echo 'make sources'
-       @echo 'make tarballs'
-       @echo '$ make rpms'
-       @echo '$ make srpms'
+       @echo "********** Or, horizontally, reach a step for all known packages"
+       @echo 'make codebases'
+       @echo 'make sources'
+       @echo 'make tarballs'
+       @echo 'make srpms'
+       @echo 'make rpms'
        @echo ""
-       @echo "Cleaning examples"
-       @echo "make clean"
+       @echo "********** Cleaning examples"
+       @echo "make clean"
        @echo "  removes the files made by make"
-       @echo "make distclean"
+       @echo "make distclean"
        @echo "  brute-force cleaning, removes entire directories - requires a new stage1"
        @echo ""
-       @echo "$ make iptables-distclean"
-       @echo "$ make iptables-codeclean"
+       @echo "make iptables-distclean"
+       @echo "  deep clean for a given package"
+       @echo "make iptables-codeclean"
        @echo "  run this if you've made a change in the CODEBASES area for iptables"
        @echo ""
-       @echo "make util-vserver-clean"
+       @echo "make util-vserver-clean"
        @echo "  removes codebase, source, tarball, build, rpm and srpm for util-vserver"
-       @echo "make util-vserver-clean-codebase"
+       @echo "make util-vserver-clean-codebase"
        @echo "  and so on for source, tarball, build, rpm and srpm"
+       @echo ""
+       @echo "********** Info examples"
+       @echo "make ++ALL"
+       @echo "  Displays the value of a given variable (here ALL)"
+       @echo "  with only a single plus sign only the value is displayed"
+       @echo "make ulogd.pkginfo"
+       @echo "  Displays know attributes of a package"
+       @echo "make kernel-devel.rpminfo"
+       @echo "  Displays know attributes of an rpm"
+       @echo ""
+       @echo "********** Known pakages are"
+       @echo "$(ALL)"
 
 #################### convenience, for debugging only
 # make +foo : prints the value of $(foo)
@@ -674,3 +671,13 @@ help:
 +%: varname=$(subst +,,$@)
 +%:
        @echo "$($(varname))"
+## package info
+PKGKEYS := tarballs source codebase srpm rpms rpmnames rpm-release rpm-name rpm-version rpm-subversion
+%.pkginfo: package=$(subst .pkginfo,,$@)
+%.pkginfo: 
+       @$(foreach key,$(PKGKEYS),echo "$(package).$(key)=$($(package).$(key))";)
+## rpm info
+RPMKEYS := rpm-path package
+%.rpminfo: rpm=$(subst .rpminfo,,$@)
+%.rpminfo: 
+       @$(foreach key,$(RPMKEYS),echo "$(rpm).$(key)=$($(rpm).$(key))";)
index 10ce4dc..942e5ff 100644 (file)
 # so the source rpm is created by running make srpm in the codebase
 #
 
-srpm-kernel-$(HOSTARCH)-MODULES := linux-patches
-srpm-kernel-$(HOSTARCH)-SPEC := kernel-2.6-planetlab.spec
+srpm-kernel-MODULES := linux-patches
+srpm-kernel-SPEC := kernel-2.6-planetlab.spec
 ifeq ($(HOSTARCH),i386)
-srpm-kernel-$(HOSTARCH)-RPMFLAGS:= --target i686
+srpm-kernel-RPMFLAGS:= --target i686
 else
-srpm-kernel-$(HOSTARCH)-RPMFLAGS:= --target $(HOSTARCH)
+srpm-kernel-RPMFLAGS:= --target $(HOSTARCH)
 endif
-KERNELS += srpm-kernel-$(HOSTARCH)
+KERNELS += srpm-kernel
 
 kernel: $(KERNELS)
 kernel-clean: $(foreach package,$(KERNELS),$(package)-clean)
@@ -64,7 +64,7 @@ IN_BOOTSTRAPFS += util-vserver
 #
 util-vserver-pl-MODULES := util-vserver-pl
 util-vserver-pl-SPEC := util-vserver-pl.spec
-util-vserver-pl-DEPENDDEVELRPMS := libnl libnl-devel util-vserver-lib util-vserver-devel util-vserver-core
+util-vserver-pl-DEPEND-DEVEL-RPMS := libnl libnl-devel util-vserver-lib util-vserver-devel util-vserver-core
 ALL += util-vserver-pl
 IN_BOOTSTRAPFS += util-vserver-pl
 
@@ -115,7 +115,7 @@ ALL += libhttpd
 #
 proper-MODULES := proper
 proper-SPEC := proper.spec
-proper-DEPENDDEVELRPMS := libhttpd++-devel
+proper-DEPEND-DEVEL-RPMS := libhttpd++-devel
 ALL += proper
 
 #
@@ -132,7 +132,7 @@ IN_BOOTSTRAPFS += codemux
 #
 ulogd-MODULES := ulogd
 ulogd-SPEC := ulogd.spec
-ulogd-DEPENDDEVELRPMS := kernel-devel proper-libs proper-devel
+ulogd-DEPEND-DEVEL-RPMS := kernel-devel proper-libs proper-devel
 ALL += ulogd
 IN_VSERVER += ulogd
 
@@ -165,7 +165,7 @@ IN_BOOTSTRAPFS += pl_mom
 #
 iptables-MODULES := iptables
 iptables-SPEC := iptables.spec
-iptables-DEPENDDEVELRPMS := kernel-devel
+iptables-DEPEND-DEVEL-RPMS := kernel-devel
 ALL += iptables
 IN_BOOTSTRAPFS += iptables
 
@@ -232,8 +232,8 @@ bootcd-MODULES := BootCD build
 bootcd-SPEC := bootcd.spec
 bootcd-RPMBUILD := sudo bash ./rpmbuild.sh
 # package has *some* dependencies, at least these ones
-bootcd-DEPENDS := $(IN_BOOTCD)
-bootcd-DEPENDFILES := RPMS/yumgroups.xml
+bootcd-DEPEND-PACKAGES := $(IN_BOOTCD)
+bootcd-DEPEND-FILES := RPMS/yumgroups.xml
 ALL += bootcd
 IN_MYPLC += bootcd
 
@@ -246,8 +246,8 @@ vserver-SPEC := vserver-reference.spec
 vserver-RPMBUILD := sudo bash ./rpmbuild.sh
 # this list is useful for manual builds only, since nightly builds 
 # always redo all sequentially - try to keep updated
-vserver-DEPENDS := $(IN_VSERVER)
-vserver-DEPENDFILES := RPMS/yumgroups.xml
+vserver-DEPEND-PACKAGES := $(IN_VSERVER)
+vserver-DEPEND-FILES := RPMS/yumgroups.xml
 ALL += vserver
 IN_BOOTSTRAPFS := vserver
 
@@ -258,8 +258,8 @@ bootstrapfs-MODULES := BootstrapFS build
 bootstrapfs-SPEC := bootstrapfs.spec
 bootstrapfs-RPMBUILD := sudo bash ./rpmbuild.sh
 # package requires all regular packages
-bootstrapfs-DEPENDS := $(IN_BOOTSTRAPFS)
-bootstrapfs-DEPENDFILES := RPMS/yumgroups.xml
+bootstrapfs-DEPEND-PACKAGES := $(IN_BOOTSTRAPFS)
+bootstrapfs-DEPEND-FILES := RPMS/yumgroups.xml
 ALL += bootstrapfs
 IN_MYPLC += bootstrapfs
 
@@ -271,8 +271,8 @@ myplc-SPEC := myplc.spec
 # Package must be built as root
 myplc-RPMBUILD := sudo bash ./rpmbuild.sh
 # myplc may require all packages
-myplc-DEPENDS := $(IN_MYPLC)
-myplc-DEPENDFILES := RPMS/yumgroups.xml myplc-release
+myplc-DEPEND-PACKAGES := $(IN_MYPLC)
+myplc-DEPEND-FILES := RPMS/yumgroups.xml myplc-release
 ALL += myplc
 
 #
@@ -283,8 +283,8 @@ myplc-native-SPEC := myplc-native.spec
 # Package must be built as root
 myplc-native-RPMBUILD := sudo bash ./rpmbuild.sh
 # Thierry : don't depend on anything at build-time
-#myplc-native-DEPENDS :=
+#myplc-native-DEPEND-PACKAGES :=
 # Thierry : dunno about this one, let's stay safe
-myplc-native-DEPENDFILES := myplc-release
+myplc-native-DEPEND-FILES := myplc-release
 ALL += myplc-native
 
index ff21e9d..5b405ed 100644 (file)
@@ -123,7 +123,7 @@ main(int argc, char *argv[])
     char fullSource[PATH_MAX];
 
     strncpy(fullSource, source->fullSource, sizeof(fullSource));
-    printf("%s-TARBALLS += SOURCES/%s\n", package_name, basename(fullSource));
+    printf("%s.tarballs += SOURCES/%s\n", package_name, basename(fullSource));
     /* computes the SOURCEDIR variable by removing .tar.gz or .tar.bz2 */
     { 
       char *suffixes[] = {".tar.gz",".tgz",".tar.bz2", NULL};
@@ -138,8 +138,8 @@ main(int argc, char *argv[])
          size_t len = (size_t)(suffix_index-fullSource);
          strncpy(sourcename,fullSource,len);
          sourcename[len]='\0';
-         printf ("%s-SOURCE := SOURCES/%s\n",package_name,basename(sourcename));
-         printf ("%s-CODEBASE := CODEBASES/%s\n",package_name,package_name);
+         printf ("%s.source := SOURCES/%s\n",package_name,basename(sourcename));
+         printf ("%s.codebase := CODEBASES/%s\n",package_name,package_name);
          break;
        }
       }
@@ -152,7 +152,7 @@ main(int argc, char *argv[])
   name = version = release = NULL;
   (void) headerNVR(pkg->header, &name, &version, &release);
   if (name && version && release)
-    printf("%s-SRPM := SRPMS/%s-%s-%s.src.rpm\n",
+    printf("%s.srpm := SRPMS/%s-%s-%s.src.rpm\n",
           package_name, name, version, release);
 
   /* Print non-empty packages */
@@ -168,8 +168,11 @@ main(int argc, char *argv[])
       /* skip empty packages */
       if (pkg->fileList) {
        /* attach (add) rpm path to package */
-       printf("%s-RPMS += RPMS/%s/%s-%s-%s.%s.rpm\n",
+       printf("%s.rpms += RPMS/%s/%s-%s-%s.%s.rpm\n",
               package_name, arch, name, version, release, arch);
+       /* convenience */
+       printf("%s.rpmnames += %s\n",
+              package_name, name);
        /* attach path to rpm name */
        printf("%s.rpm-path := RPMS/%s/%s-%s-%s.%s.rpm\n",
               name,arch, name, version, release, arch);
@@ -188,7 +191,7 @@ main(int argc, char *argv[])
     for (nav=macros; *nav; nav++) {
       sprintf(macro,"%%{%s}",*nav);
       char *value = rpmExpand(macro,NULL);
-      printf ("%s-rpm-%s := %s\n",package_name,*nav,value);
+      printf ("%s.rpm-%s := %s\n",package_name,*nav,value);
     }
   }