X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=Makefile;h=385a61b4158fb10b0626e1f238de820a2639dfcc;hb=d4a57e98cff29cddde7108b475f6b046e9fea20a;hp=c3840808b47b7a455c0325ab0ec21b0336da4280;hpb=88df74b9ee7a42a9aea2a40059613cd444ce8ae1;p=build.git diff --git a/Makefile b/Makefile index c3840808..385a61b4 100644 --- a/Makefile +++ b/Makefile @@ -55,16 +55,14 @@ # (*) package-DEVEL-RPMS # a set of stock rpms that this package needs at build-time # this can also be set in config./devel.pkgs or config.planetlab/devel.pkgs as appropriate -# (*) package-EXCLUDE-DEVEL-RPMS -# a set of stock *rpms* that the build will rpm-uninstall before building -# this is intended to denote stock rpms, and the build will attempt to yum-install them -# back after the package is rebuilt -# This feature is not used at the moment and kept only just in case # (*) package-DEPEND-DEVEL-RPMS # a set of local *rpms* that the build will rpm-install before building # the build will attempt to uninstall those once the package is built, this is not fatal though # this is intended to denote local rpms, i.e. ones that are results of our own build # stock rpms should be mentioned in DEVEL-RPMS or in devel.pkgs as described above +# (*) package-DEPEND-DEVEL-RPMS-UPDATES +# like package-DEPEND-DEVEL-RPMS but for crucial packages (like autoconf) that only need an update from our build +# rpms in this area will *not* be uninstalled after the target is made, because that would ruin the build vm for good # (*) 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 @@ -112,7 +110,7 @@ #################### # exported to spec files as plrelease -PLANETLAB_RELEASE = 5.1 +PLANETLAB_RELEASE = 5.2 # # Default values @@ -338,7 +336,7 @@ $(foreach package, $(ALL), $(eval $(call package_hasdate,$(package)))) ### the common header for generated specfiles # useful when trying new specfiles manually header.spec: - (echo -n "# Generated by planetlab build from $($(1)-SPEC) on " ; date) > $@ + (echo -n "# Generated by planetlab build on " ; date) > $@ echo "%define distro $(DISTRO)" >> $@ echo "%define distrorelease $(RELEASE)" >> $@ echo "%define distroname $(DISTRONAME)" >> $@ @@ -466,7 +464,7 @@ all: envfrompreviousrun define stage2_variables ### devel dependencies $(1).rpmbuild = $(RPMBUILD) $($(1)-RPMFLAGS) -$(1).all-devel-rpm-paths := $(foreach rpm,$($(1)-DEPEND-DEVEL-RPMS),$($(rpm).rpm-path)) +$(1).all-devel-rpm-paths := $(foreach rpm,$($(1)-DEPEND-DEVEL-RPMS) $($(1)-DEPEND-DEVEL-RPMS-UPDATES),$($(rpm).rpm-path)) $(1).depend-devel-packages := $(sort $(foreach rpm,$($(1)-DEPEND-DEVEL-RPMS),$($(rpm).package))) ALL-DEVEL-RPMS += $($(1)-DEPEND-DEVEL-RPMS) endef @@ -538,16 +536,14 @@ define handle_stock_devel_rpms_pre $(if $($(1)-DEVEL-RPMS), echo "Installing for $(1)-DEVEL-RPMS" ; $(YUM-INSTALL-DEVEL) $($(1)-DEVEL-RPMS)) endef -### these macro handles the DEPEND-DEVEL-RPMS and EXCLUDE-DEVEL-RPMS tags for a hiven package -# before building : rpm-install DEPEND-DEVEL-RPMS and rpm-uninstall EXCLUDE +### these macro handles the DEPEND-DEVEL-RPMS and DEPEND-DEVEL-RPMS-UPDATES tags for a given package +# before building : rpm-install DEPEND-DEVEL-RPMS define handle_local_devel_rpms_pre $(if $($(1).all-devel-rpm-paths), echo "Installing for $(1)-DEPEND-DEVEL-RPMS" ; $(RPM-INSTALL-DEVEL) $($(1).all-devel-rpm-paths)) - $(if $($(1)-EXCLUDE-DEVEL-RPMS), echo "Uninstalling for $(1)-EXCLUDE-DEVEL-RPMS" ; $(RPM-UNINSTALL-DEVEL) $($(1)-EXCLUDE-DEVEL-RPMS)) endef define handle_local_devel_rpms_post -$(if $($(1)-DEPEND-DEVEL-RPMS), echo "Unstalling for $(1)-DEPEND-DEVEL-RPMS" ; $(RPM-UNINSTALL-DEVEL) $($(1)-DEPEND-DEVEL-RPMS)) - $(if $($(1)-EXCLUDE-DEVEL-RPMS), "Reinstalling for $(1)-EXCLUDE-DEVEL-RPMS" ; $(YUM-INSTALL-DEVEL) $($(1)-EXCLUDE-DEVEL-RPMS) ) endef # usage: target_source_rpm package @@ -662,6 +658,22 @@ endef $(foreach package,$(ALL),$(eval $(call target_depends,$(package)))) +#################### +# very rough for now (one module per package), targets only sfa for now +# the general idea here is, changing the specfile (for version number and all) is enough, and this +# gets passed to "make debian" in the module +# PREFIX: at one point we had passed PREFIX=/usr to this 'make debian' +# however it turned out we could manage this some other way (see manifold) +# so I'm reverting to simplicity +define target_debian +$(1)-debian: $(1)-tarball + mkdir -p DEBIAN/$(1) + rsync -a MODULES/$(1)/ DEBIAN/$(1)/ + make -C DEBIAN/$(1) "RPMTARBALL=$(HOME)/$($(1).tarballs)" "RPMVERSION=$($(1).rpm-version)" "RPMRELEASE=$($(1).rpm-release)" "RPMNAME=$($(1).rpm-name)" debian +endef + +$(foreach package,$(ALL),$(eval $(call target_debian,$(package)))) + ### clean target # usage: target_clean package define target_clean @@ -688,7 +700,11 @@ $(1)-clean-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-debian: + rm -rf DEBIAN/$(1) +.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-debian $(1)-clean: $(1)-clean-modules $(1)-codeclean .PHONY: $(1)-codeclean $(1)-clean $(1)-clean-spec: