X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=Makefile;h=94d2e191319d059577e5688419fbe7318c681b99;hb=d9513719cdd432f8e275c04bba14907d889a6af9;hp=411baadb5bcc33b8ef30f900bde5cc4481ea4c54;hpb=a355b1dcd47a81f57b95a09f6c75c32cf8ffac77;p=build.git diff --git a/Makefile b/Makefile index 411baadb..94d2e191 100644 --- a/Makefile +++ b/Makefile @@ -21,15 +21,7 @@ # #################### (planetlab) distributions # -# (*) the default distribution is called 'planetlab' -# (*) you may define an alternative distribution, e.g. onelab -# in this case you need to -# (*) create onelab.mk that defines your *packages* (see below) -# (*) create onelab-tags.mk that defines where to fetch your *modules* -# (*) create your main yumgroups.xml as groups/.xml -# (*) there are also various places where a set of modules are defined. -# check for .lst files in the various modules that build root images -# and mimic what's done for planetlab +# (*) see README-pldistros.txt # (*) then you need to run # make stage1=true PLDISTRO=onelab # @@ -96,6 +88,9 @@ # #################### +# exported to spec files as plrelease +PLANETLAB_RELEASE = 4.2 + # # Default values # @@ -188,15 +183,10 @@ all: repo endif endif -### yumgroups.xml -# the source -ifndef YUMGROUPS -YUMGROUPS := groups/$(PLDISTRO).xml -endif - -RPMS/yumgroups.xml: $(YUMGROUPS) +### yumgroups.xml : compute from all known .pkgs files +RPMS/yumgroups.xml: mkdir -p RPMS - install -D -m 644 $(YUMGROUPS) $@ + ./yumgroups.sh $(PLDISTRO) > $@ createrepo = createrepo --quiet -g yumgroups.xml RPMS/ @@ -245,6 +235,7 @@ $($(1).specpath): echo "%define distroname $(DISTRO)" >> $($(1).specpath) echo "%define distrorelease $(RELEASE)" >> $($(1).specpath) echo "%define pldistro $(PLDISTRO)" >> $($(1).specpath) + echo "%define plrelease $(PLANETLAB_RELEASE)" >> $($(1).specpath) $(if $($(1).has-date),echo "%define date $(shell date +%Y.%m.%d)" >> $($(1).specpath),) $(if $($(1)-SPECVARS), \ $(foreach line,$($(1)-SPECVARS), \ @@ -435,22 +426,32 @@ rpms: $(ALLRPMS) # use tmp dirs when building binary rpm so make remains idempotent # otherwise SOURCES/ or SPEC gets touched again - which leads to rebuilding RPM-USE-TMP-DIRS = --define "_sourcedir $(HOME)/tmp" --define "_specdir $(HOME)/tmp" +RPM-USE-COMPILE-DIRS = --define "_sourcedir $(HOME)/COMPILE" --define "_specdir $(HOME)/COMPILE" # usage: build_binary_rpm package # xxx hacky - invoke createrepo if DEPEND-FILES mentions RPMS/yumgroups.xml define target_binary_rpm $($(1).rpms): $($(1).srpm) - mkdir -p BUILD RPMS tmp + mkdir -p RPMS tmp @(echo -n "XXXXXXXXXXXXXXX -- BEG RPM $(1) " ; date) $(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)) @(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) + mkdir -p COMPILE tmp + @(echo -n "XXXXXXXXXXXXXXX -- BEG compile $(1) " ; date) + $(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)) + @(echo -n "XXXXXXXXXXXXXXX -- END compile $(1) " ; date) +.PHONY: $(1).compile endef $(foreach package,$(ALL),$(eval $(call target_binary_rpm,$(package)))) - ### shorthand target # e.g. make proper -> does propers rpms # usage shorthand_target package @@ -567,6 +568,7 @@ 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 myplc-release: @echo 'Creating myplc-release' rm -f $@ @@ -576,13 +578,13 @@ myplc-release: $(MAKE) --no-print-directory version-svns >> $@ echo "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx rpm info" >> $@ $(MAKE) --no-print-directory version-rpms >> $@ + @echo $(NIGHTLY_BASE) > .base version-build: @echo -n 'Build bdate: ' ; date '+%Y.%m.%d' @echo -n 'Build btime: ' ; date '+%H:%M' @echo -n 'Build bhostname: ' ; hostname @echo "Build base: $(NIGHTLY_BASE)" - @echo "Build binit_cwd: $(INIT_CWD)" @echo -n 'Build btags: ' ; fgrep '$$''Id' $(PLDISTROTAGS) @echo "Build tarch: $(HOSTARCH)" @echo "Build tdistro: $(DISTRO)" @@ -616,7 +618,7 @@ endef $(foreach package,$(sort $(ALL)), $(eval $(call rpm_version_target,$(package)))) -versions: version-build version-svns version-rpms +versions: myplc-release version-build version-svns version-rpms .PHONY: versions version-build version-rpms version-svns #################### include install Makefile @@ -662,6 +664,11 @@ help: @echo 'make srpms' @echo 'make rpms' @echo "" + @echo "********** Manual targets" + @echo "make package.compile" + @echo " The regular process uses rpmbuild --rebuild, that performs" + @echo " a compilation directory cleanup upon completion. If you need to investigate" + @echo " the intermediate compilation directory, use the .compile targets" @echo "********** Cleaning examples" @echo "make clean" @echo " removes the files made by make"