# (*) package-RPMBUILD: If not rpmbuild - mostly used for sudo'ing rpmbuild
# (*) package-BUILD-FROM-SRPM: set this to any non-empty value, if your package is able to produce
# a source rpms by running 'make srpm'
+# (*) package-RPMDATE: set this to any non-empty value to get the rpm package's release field hold the current date
+# this is useful for container packages, like e.g. bootstrapfs or vserver, that contains much more than the
+# correspondng module
#
#################### modules
# Required information about the various modules (set this in e.g. planetlab-tags.mk)
# (*) $ 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
+# to see the list of variables attached to a given rpm
#
####################
#
# Default values
#
-HOSTARCH := $(shell uname -i)
+# minimal compat with macos, just so this does not complain
+HOSTARCH := $(shell uname -i 2> /dev/null || uname -m 2> /dev/null)
DISTRO := $(shell ./getdistro.sh)
RELEASE := $(shell ./getrelease.sh)
DISTRONAME := $(shell ./getdistroname.sh)
$(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
+# for each package, compute whether we need to set date
+# the heuristic is that we mention the date as part of the rpm release flag if
+# (*) the package has requested it by setting package-RPMDATE (container packages should do that)
+# (*) or SVNPATH contains 'trunk' or 'branches'
#
define package_hasdate
-$(1).has-date = $(if $(subst myplc,,$(1)), \
- $(if $($($(1).module)-SVNPATH),\
- $(if $(findstring /trunk,$($($(1).module)-SVNPATH)),yes,),\
- $(if $(findstring HEAD,$($($(1).module)-TAG)),yes,)), \
- yes)
+$(1).has-date = $(if $($(1)-RPMDATE),yes, \
+ $(if $($($(1).module)-SVNPATH), \
+ $(if $(findstring /trunk,$($($(1).module)-SVNPATH)),yes, \
+ $(if $(findstring /branches,$($($(1).module)-SVNPATH)),yes,)), \
+ $(if $(findstring HEAD,$($($(1).module)-TAG)),yes,)))
endef
$(foreach package, $(ALL), $(eval $(call package_hasdate,$(package))))
### brute force clean
distclean1:
- rm -rf pldistro.mk .rpmmacros spec2make SPECS MAKE
+ rm -rf pldistro.mk .rpmmacros spec2make header.spec SPECS MAKE
distclean2:
rm -rf CODEBASES SOURCES BUILD RPMS SRPMS tmp
distclean: distclean1 distclean2
# only if present
-include $(PLDISTROINSTALL)
+#################### 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))";)
+
+#################### various lists - designed to run with stage1=true
+packages:
+ @$(foreach package,$(ALL), echo package=$(package) ref_module=$($(package).module) modules=$($(package)-MODULES) rpmnames=$($(package).rpmnames); )
+
+modules:
+ @$(foreach module,$(ALL-MODULES), echo module=$(module) svnpath=$($(module)-SVNPATH); )
+
+branches:
+ @$(foreach module,$(ALL-MODULES), \
+ $(if $($(module)-SVNBRANCH),echo module=$(module) branch=$($(module)-SVNBRANCH);))
+
+module-tools:
+ @$(foreach module,$(ALL-MODULES), \
+ $(if $($(module)-SVNPATH), \
+ $(if $($(module)-SVNBRANCH), \
+ echo $(module):$($(module)-SVNBRANCH); , \
+ echo $(module); )))
+
+info: packages modules branches
+
+.PHONY: info packages modules branches module-tools
+
####################
help:
@echo "********** Run make in two stages:"
@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 info"
+ @echo " is equivalent to make packages modules branches"
+ @echo " provides various info on these objects"
@echo "make ulogd-pkginfo"
@echo " Displays know attributes of a package"
@echo "make kernel-devel-rpminfo"
@echo " Displays know attributes of an rpm"
+ @echo "make stage1=true PLDISTROTAGS=planetlab-tags-4.2.mk packages modules branches module-tools"
+ @echo " Lists mentioned items - module-tools is used in modules.update"
@echo ""
@echo "********** Known pakages are"
@echo "$(ALL)"
+%: 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))";)