X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=Makefile;h=d7fed0f19eadc45a56b9305203c904c95604be21;hb=a47655e2a7afe64f1af84ae03752b5efe7b8af51;hp=4dd947a3268f302cbd05fd3edeb3fd412d3d6943;hpb=fe400f0463beb7067bae02e397a8b5ddec5f3b63;p=build.git diff --git a/Makefile b/Makefile index 4dd947a3..d7fed0f1 100644 --- a/Makefile +++ b/Makefile @@ -56,6 +56,8 @@ # a set of *packages* that this package depends on # (*) package-DEPEND-DEVEL-RPMS # a set of *rpms* that the build will rpm-install before building +# this is intended to denote local rpms, i.e. ones that are results of our own build +# stock rpms should be mentioned in config.planetlab/devel.pkgs # (*) 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 @@ -64,6 +66,9 @@ # (*) 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) @@ -84,7 +89,7 @@ # (*) $ 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 # #################### @@ -128,6 +133,20 @@ include $(PLDISTROCONTENTS) PLDISTROTAGS := $(PLDISTRO)-tags.mk include $(PLDISTROTAGS) +# this used to be set in the -tags.mk files, but that turned out to require +# error-prone duplicate changes +# so now the nightly build script sets this to what it is currently using +# we set a default in case we run the build manually: +# if the local directory was svn checked out, then use the corresponding URL +svn-info-url-line := $(shell svn info 2> /dev/null | grep URL:) +default-build-SVNPATH := $(lastword $(svn-info-url-line)) +# otherwise, use this hard-coded default +ifeq "$(default-build-SVNPATH)" "" +default-build-SVNPATH := http://svn.planet-lab.org/svn/build/trunk +endif +# use default if necessary +build-SVNPATH ?= $(default-build-SVNPATH) + ########## stage1 and stage1iter # extract specs and compute .mk files by running # make stage1=true @@ -215,17 +234,17 @@ endef $(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)))) @@ -291,8 +310,7 @@ spec2make: spec2make.c define target_mk MAKE/$(1).mk: $($(1).specpath) spec2make .rpmmacros mkdir -p MAKE - ./spec2make $($(1)-RPMFLAGS) $($(1).specpath) $(1) > MAKE/$(1).mk - @if [ -z MAKE/$(1).mk ] ; then rm MAKE/$(1).mk ; exit 1 ; fi + ./spec2make $($(1)-RPMFLAGS) $($(1).specpath) $(1) > MAKE/$(1).mk || { rm MAKE/$(1).mk; exit 1; } endef $(foreach package,$(ALL),$(eval $(call target_mk,$(package)))) @@ -302,6 +320,10 @@ $(foreach package,$(ALL),$(eval $(call target_mk,$(package)))) pldistro.mk: echo "PLDISTRO:=$(PLDISTRO)" > $@ echo "PLDISTROTAGS:=$(PLDISTROTAGS)" >> $@ + echo "build-SVNPATH:=$(build-SVNPATH)" >> $@ + echo "PERSONALITY:=$(PERSONALITY)" >> $@ + echo "MAILTO:=$(MAILTO)" >> $@ + echo "BASE:=$(BASE)" >> $@ savepldistro: pldistro.mk .PHONY: savepldistro @@ -576,8 +598,8 @@ develclean: #################### # gather build information for the 'About' page # when run from crontab, INIT_CWD not properly set (says /root ..) -# so, the nightly build passes NIGHTLY_BASE here -# also store the nightly_base in .base for any post-processing purposes +# so, the nightly build passes BASE here +# also store BASE in .base for any post-processing purposes myplc-release: @echo 'Creating myplc-release' rm -f $@ @@ -587,13 +609,13 @@ myplc-release: $(MAKE) --no-print-directory version-svns >> $@ echo "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx rpm info" >> $@ $(MAKE) --no-print-directory version-rpms >> $@ - @echo $(NIGHTLY_BASE) > .base + @echo $(BASE) > .base version-build: @echo -n 'Build build-date: ' ; date '+%Y.%m.%d' @echo -n 'Build build-time: ' ; date '+%H:%M-%Z' @echo -n 'Build build-hostname: ' ; hostname - @echo "Build build-base: $(NIGHTLY_BASE)" + @echo "Build build-base: $(BASE)" @echo "Build planetlab-distro: $(PLDISTRO)" @echo "Build planetlab-tags: $(PLDISTROTAGS)" @echo -n 'Build planetlab-tagsid: ' ; fgrep '$$''Id' $(PLDISTROTAGS) @@ -601,7 +623,7 @@ version-build: @echo "Build target-distro: $(DISTRO)" @echo "Build target-distroname: $(DISTRONAME)" @echo "Build target-release: $(RELEASE)" - @echo "Build target-personality: $(NIGHTLY_PERSONALITY)" + @echo "Build target-personality: $(PERSONALITY)" #################### # for a given module @@ -634,15 +656,6 @@ $(foreach package,$(sort $(ALL)), $(eval $(call rpm_version_target,$(package)))) versions: myplc-release version-build version-svns version-rpms .PHONY: versions version-build version-rpms version-svns -#################### include install Makefile -# the default is to use the distro-dependent install file -# however the main distro file can redefine PLDISTROINSTALL -ifndef PLDISTROINSTALL -PLDISTROINSTALL := $(PLDISTRO)-install.mk -endif -# 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,,$@) @@ -656,7 +669,7 @@ RPMKEYS := rpm-path package #################### various lists - designed to run with stage1=true packages: - @$(foreach package,$(ALL), echo package=$(package) ref_module=$($(package).module) modules=$($(package)-MODULES); ) + @$(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); ) @@ -676,6 +689,11 @@ info: packages modules branches .PHONY: info packages modules branches module-tools +#################### +tests_svnpath: + @$(if $(TESTS_SVNPATH), echo $(TESTS_SVNPATH) > $@, \ + echo "http://svn.planet-lab.org/svn/tests/trunk" > $@) + #################### help: @echo "********** Run make in two stages:" @@ -737,6 +755,9 @@ help: @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"