From fb8496f965ebbddd0d4380f1d69d3b41ea10cc7c Mon Sep 17 00:00:00 2001 From: Thierry Parmentelat Date: Mon, 3 Dec 2007 12:04:37 +0000 Subject: [PATCH] (*) reviewed make variable naming scheme: uses -UPPER-CASE for the ones set in .mk files, and .lower-case for internal/automatic ones (*) impacted planetlab.mk for the -DEPEND* variables (*) make ulogd.pkginfo kernel-devel.rpminfo (*) make help --- Makefile | 239 ++++++++++++++++++++++++++------------------------- planetlab.mk | 38 ++++---- spec2make.c | 15 ++-- 3 files changed, 151 insertions(+), 141 deletions(-) diff --git a/Makefile b/Makefile index 47592191..d7b4f210 100644 --- a/Makefile +++ b/Makefile @@ -34,12 +34,14 @@ # 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 @@ -58,11 +60,11 @@ # 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-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 @@ -83,27 +85,13 @@ # #################### automatic variables # -# the build defines the following make variables - these are extracted from spec files -# (*) package-TARBALLS : from the Source: 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 # /.spec while svn modules just define it as .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/- is made # with a copy -rl from CODEBASES/ -# 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-" - @echo '$ make util-vserver-tarball' + @echo 'make util-vserver-tarball' @echo " creates source tarball in SOURCES/util-vserver-." - @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))";) diff --git a/planetlab.mk b/planetlab.mk index 10ce4dc0..942e5ff2 100644 --- a/planetlab.mk +++ b/planetlab.mk @@ -16,14 +16,14 @@ # 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 diff --git a/spec2make.c b/spec2make.c index ff21e9d1..5b405ed9 100644 --- a/spec2make.c +++ b/spec2make.c @@ -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); } } -- 2.43.0