X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=Makefile;h=de08f696a2601aa646e99d59cb2e44c800425244;hb=5b84113ae59f6d3c9022823148031b2506211693;hp=7250115d7cb738cf2bd2e0fa2fc1c330e2f2d81e;hpb=ab7afb6747c5e5357de2b64a1bc47dc85df21771;p=build.git diff --git a/Makefile b/Makefile index 7250115d..de08f696 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 @@ -92,7 +94,7 @@ #################### # exported to spec files as plrelease -PLANETLAB_RELEASE = 4.2 +PLANETLAB_RELEASE = 5.0 # # Default values @@ -103,9 +105,12 @@ DISTRO := $(shell ./getdistro.sh) RELEASE := $(shell ./getrelease.sh) DISTRONAME := $(shell ./getdistroname.sh) RPM-INSTALL-DEVEL := rpm --force -Uvh -# cannot force rpm -e +# uninstall -- cannot force rpm -e +# need to ignore result, kernel-headers cannot be uninstalled as glibc depends on it RPM-UNINSTALL-DEVEL := rpm -e +REMOTE-PLDISTROS="gnuradio" + #################### Makefile # Default target all: @@ -116,9 +121,15 @@ PLDISTRO := planetlab RPMBUILD := rpmbuild export CVS_RSH := ssh -########## pldistro.mk holds PLDISTRO - it is generated at stage1 (see below) +########## savedpldistro.mk holds PLDISTRO - it is generated at stage1 (see below) ifeq "$(stage1)" "" -include pldistro.mk +include savedpldistro.mk +endif + +# when re-running the nightly build after failure, we need to gather the former values +# do this by running make stage1=skip +PLDISTRO +ifeq "$(stage1)" "skip" +include savedpldistro.mk endif #################### include onelab.mk @@ -136,7 +147,8 @@ include $(PLDISTROTAGS) # 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 -default-build-SVNPATH := $(shell svn info 2> /dev/null | grep URL: | awk '{print $2;}') +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 @@ -144,6 +156,29 @@ endif # use default if necessary build-SVNPATH ?= $(default-build-SVNPATH) +#################### +define remote_pldistro +$(1).mk: config.$(1)/$(1).mk + @echo 'creating $(1) from config subdir' + cp config.$(1)/$(1).mk $(1).mk + +$(2).mk: config.$(1)/$(2).mk + @echo 'creating $(1) tags from config subdir' + cp config.$(1)/$(2).mk $(2).mk + +config.$(1)/$(1).mk: config.$(1) +config.$(1)/$(2).mk: config.$(1) + +config.$(1): config.$(1).svnpath + @echo "Fetching details for pldistro $(1)" + svn export $(shell grep -v "^#" config.$(1).svnpath) config.$(1) + +DISTCLEANS += $(1).mk $(2).mk config.$(1) + +endef + +$(eval $(call remote_pldistro,gnuradio,gnuradio-tags)) + ########## stage1 and stage1iter # extract specs and compute .mk files by running # make stage1=true @@ -307,23 +342,26 @@ 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)))) # stores PLDISTRO in a file # this is done at stage1. later run wont get confused -pldistro.mk: +savedpldistro.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 +savedpldistro: savedpldistro.mk +.PHONY: savedpldistro # always refresh this -all: savepldistro +all: savedpldistro #################### regular make @@ -416,7 +454,6 @@ srpms: $(ALLSRPMS) .PHONY: srpms # usage: target_source_rpm package -# select upon the package name, whether it contains srpm or not define target_source_rpm ifeq "$($(1)-BUILD-FROM-SRPM)" "" $($(1).srpm): $($(1).specpath) .rpmmacros $($(1).tarballs) @@ -424,7 +461,7 @@ $($(1).srpm): $($(1).specpath) .rpmmacros $($(1).tarballs) @(echo -n "XXXXXXXXXXXXXXX -- BEG SRPM $(1) (using SOURCES) " ; date) $(if $($(1).all-devel-rpm-paths), $(RPM-INSTALL-DEVEL) $($(1).all-devel-rpm-paths)) $($(1).rpmbuild) -bs $($(1).specpath) - $(if $($(1)-DEPEND-DEVEL-RPMS), $(RPM-UNINSTALL-DEVEL) $($(1)-DEPEND-DEVEL-RPMS)) + -$(if $($(1)-DEPEND-DEVEL-RPMS), $(RPM-UNINSTALL-DEVEL) $($(1)-DEPEND-DEVEL-RPMS)) @(echo -n "XXXXXXXXXXXXXXX -- END SRPM $(1) " ; date) else $($(1).srpm): $($(1).specpath) .rpmmacros $($(1).codebase) @@ -434,7 +471,7 @@ $($(1).srpm): $($(1).specpath) .rpmmacros $($(1).codebase) make -C $($(1).codebase) srpm SPECFILE=$(HOME)/$($(1).specpath) && \ rm -f SRPMS/$(notdir $($(1).srpm)) && \ ln $($(1).codebase)/$(notdir $($(1).srpm)) SRPMS/$(notdir $($(1).srpm)) - $(if $($(1)-DEPEND-DEVEL-RPMS), $(RPM-UNINSTALL-DEVEL) $($(1)-DEPEND-DEVEL-RPMS)) + -$(if $($(1)-DEPEND-DEVEL-RPMS), $(RPM-UNINSTALL-DEVEL) $($(1)-DEPEND-DEVEL-RPMS)) @(echo -n "XXXXXXXXXXXXXXX -- END SRPM $(1) " ; date) endif endef @@ -462,7 +499,7 @@ $($(1).rpms): $($(1).srpm) $(if $(findstring RPMS/yumgroups.xml,$($(1)-DEPEND-FILES)), $(createrepo) , ) $(if $($(1).all-devel-rpm-paths), $(RPM-INSTALL-DEVEL) $($(1).all-devel-rpm-paths)) $($(1).rpmbuild) --rebuild $(RPM-USE-TMP-DIRS) $($(1).srpm) - $(if $($(1)-DEPEND-DEVEL-RPMS), $(RPM-UNINSTALL-DEVEL) $($(1)-DEPEND-DEVEL-RPMS)) + -$(if $($(1)-DEPEND-DEVEL-RPMS), $(RPM-UNINSTALL-DEVEL) $($(1)-DEPEND-DEVEL-RPMS)) @(echo -n "XXXXXXXXXXXXXXX -- END RPM $(1) " ; date) # for manual use only - in case we need to investigate the results of an rpmbuild $(1)-compile: $($(1).srpm) @@ -471,7 +508,7 @@ $(1)-compile: $($(1).srpm) $(if $(findstring RPMS/yumgroups.xml,$($(1)-DEPEND-FILES)), $(createrepo) , ) $(if $($(1).all-devel-rpm-paths), $(RPM-INSTALL-DEVEL) $($(1).all-devel-rpm-paths)) $($(1).rpmbuild) --recompile $(RPM-USE-TMP-DIRS) $($(1).srpm) - $(if $($(1)-DEPEND-DEVEL-RPMS), $(RPM-UNINSTALL-DEVEL) $($(1)-DEPEND-DEVEL-RPMS)) + -$(if $($(1)-DEPEND-DEVEL-RPMS), $(RPM-UNINSTALL-DEVEL) $($(1)-DEPEND-DEVEL-RPMS)) @(echo -n "XXXXXXXXXXXXXXX -- END compile $(1) " ; date) .PHONY: $(1)-compile endef @@ -580,20 +617,20 @@ clean-help: ### brute force clean distclean1: - rm -rf pldistro.mk .rpmmacros spec2make header.spec SPECS MAKE + rm -rf savedpldistro.mk .rpmmacros spec2make header.spec SPECS MAKE $(DISTCLEANS) distclean2: rm -rf CODEBASES SOURCES BUILD RPMS SRPMS tmp distclean: distclean1 distclean2 .PHONY: distclean1 distclean2 distclean develclean: - $(RPM-UNINSTALL-DEVEL) $(ALL-DEVEL-RPMS) + -$(RPM-UNINSTALL-DEVEL) $(ALL-DEVEL-RPMS) #################### # 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 $@ @@ -603,13 +640,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) @@ -617,7 +654,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 @@ -684,10 +721,11 @@ info: packages modules branches .PHONY: info packages modules branches module-tools #################### -testsvnpath: +tests_svnpath: @$(if $(TESTS_SVNPATH), echo $(TESTS_SVNPATH) > $@, \ echo "http://svn.planet-lab.org/svn/tests/trunk" > $@) + #################### help: @echo "********** Run make in two stages:"