From: Thierry Parmentelat Date: Wed, 28 Nov 2007 00:20:06 +0000 (+0000) Subject: tries to fix dependencies X-Git-Tag: 4.2-rc2~437 X-Git-Url: http://git.onelab.eu/?p=build.git;a=commitdiff_plain;h=53e1b8d41a034d40f4ef1abaf2c374920bc6cc05 tries to fix dependencies --- diff --git a/Makefile b/Makefile index 3ec67e1f..e5a8a91b 100644 --- a/Makefile +++ b/Makefile @@ -60,6 +60,8 @@ # would let you use the %release from the kernel's package when rpmbuild'ing mydriver - see automatic below # (*) package-DEPENDS # a set of *packages* that this package depends on +# (*) package-DEPENDDEVELS +# a set of *packages* that the build will rpm-install the -devel variant before building # (*) package-DEPENDFILES # 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 @@ -82,14 +84,14 @@ #################### automatic variables # # the build defines the following make variables - these are extracted from spec files -# (*) package-TARBALL : from the Source: declaration -# example: kernel-i386-TARBALL = SOURCES/linux-2.6.20.tar.bz2 +# (*) package-TARBALLS : from the Source: declaration +# example: kernel-i386-TARBALLS = SOURCES/linux-2.6.20.tar.bz2 # (*) package-SOURCE : # example: kernel-i386-SOURCE = SOURCES/linux-2.6.20 # (*) package-SRPM # example: kernel-i386-SRPM = SRPMS/kernel-2.6.20-1.2949.fc6.vs2.2.0.1.0.planetlab.src.rpm -# (*) package-RPM -# example: kernel-i386-RPM = \ +# (*) package-RPMS +# example: kernel-i386-RPMS = \ # RPMS/i686/kernel-2.6.20-1.2949.fc6.vs2.2.0.1.0.planetlab.i686.rpm \ # RPMS/i686/kernel-devel-2.6.20-1.2949.fc6.vs2.2.0.1.0.planetlab.i686.rpm \ # RPMS/i686/kernel-vserver-2.6.20-1.2949.fc6.vs2.2.0.1.0.planetlab.i686.rpm \ @@ -307,7 +309,7 @@ all: savepldistro #################### ### pack sources into tarballs -ALLTARBALLS:= $(foreach package, $(ALL), $($(package)-TARBALL)) +ALLTARBALLS:= $(foreach package, $(ALL), $($(package)-TARBALLS)) tarballs: $(ALLTARBALLS) @echo $(words $(ALLTARBALLS)) source tarballs OK .PHONY: tarballs @@ -386,7 +388,7 @@ srpms: $(ALLSRPMS) # select upon the package name, whether it contains srpm or not define target_source_rpm ifeq "$(subst srpm,,$(1))" "$(1)" -$($(1)-SRPM): $($(1)_specpath) .rpmmacros $($(1)-TARBALL) +$($(1)-SRPM): $($(1)_specpath) .rpmmacros $($(1)-TARBALLS) mkdir -p BUILD SRPMS tmp @(echo -n "XXXXXXXXXXXXXXX -- BEG SRPM $(1) " ; date) $(if $($(1)-RPMBUILD),\ @@ -407,7 +409,7 @@ endef $(foreach package,$(ALL),$(eval $(call target_source_rpm,$(package)))) ### rpmbuild invokation -ALLRPMS:=$(foreach package,$(ALL),$($(package)-RPM)) +ALLRPMS:=$(foreach package,$(ALL),$($(package)-RPMS)) # same as above, mention $(ALL) and not $(ALLRPMS) rpms: $(ALLRPMS) @echo $(words $(ALLRPMS)) binary rpms OK @@ -416,10 +418,11 @@ rpms: $(ALLRPMS) # usage: build_binary_rpm package # xxx hacky - invoke createrepo if DEPENDFILES mentions RPMS/yumgroups.xml define target_binary_rpm -$($(1)-RPM): $($(1)-SRPM) +$($(1)-RPMS): $($(1)-SRPM) mkdir -p BUILD RPMS SPECS tmp @(echo -n "XXXXXXXXXXXXXXX -- BEG RPM $(1) " ; date) $(if $(findstring RPMS/yumgroups.xml,$($(1)-DEPENDFILES)), createrepo --quiet -g yumgroups.xml RPMS/ , ) + @$(foreach devel,$($(1)-DEPENDDEVELS), $(if $($(devel)-DEVEL-RPMS),rpm -Uvh $($(devel)-DEVEL-RPMS);)) $(if $($(1)-RPMBUILD),\ $($(1)-RPMBUILD) $($(1)-RPMFLAGS) --rebuild $($(1)-SRPM), \ $(RPMBUILD) $($(1)-RPMFLAGS) --rebuild $($(1)-SRPM)) @@ -439,20 +442,20 @@ RPMS/yumgroups.xml: $(YUMGROUPS) # e.g. make proper -> does propers rpms # usage shorthand_target package define target_shorthand -$(1): $($(package)-RPM) +$(1): $($(package)-RPMS) .PHONY: $(1) $(1)-spec: $($(package)-SPEC) .PHONY: $(1)-spec $(1)-mk: $($(package)-MK) .PHONY: $(1)-mk -$(1)-tarball: $($(package)-TARBALL) +$(1)-tarball: $($(package)-TARBALLS) .PHONY: $(1)-tarball $(1)-codebase: $($(package)-CODEBASE) .PHONY: $(1)-source $(1)-source: $($(package)-SOURCE) .PHONY: $(1)-codebase -$(1)-rpm: $($(package)-RPM) -.PHONY: $(1)-rpm +$(1)-rpms: $($(package)-RPMS) +.PHONY: $(1)-rpms $(1)-srpm: $($(package)-SRPM) .PHONY: $(1)-srpm endef @@ -462,7 +465,7 @@ $(foreach package,$(ALL),$(eval $(call target_shorthand,$(package)))) ### dependencies define package_depends_on_file $(1):$(2) -$($(1)-RPM):$(2) +$($(1)-RPMS):$(2) endef define target_dependfiles @@ -471,18 +474,17 @@ endef define package_depends_on_package $(1):$(2) -$(1):$($(2)-RPM) -$($(1)-RPM):$($(2)-RPM) +$(1):$($(2)-RPMS) +$($(1)-RPMS):$($(2)-RPMS) endef define target_depends -$(foreach package,$($(1)-DEPENDS),$(eval $(call package_depends_on_package,$(1),$(package)))) +$(foreach package,$($(1)-DEPENDS) $($(1)-DEPENDDEVELS),$(eval $(call package_depends_on_package,$(1),$(package)))) endef $(foreach package,$(ALL),$(eval $(call target_depends,$(package)))) $(foreach package,$(ALL),$(eval $(call target_dependfiles,$(package)))) - ### clean target # usage: target_clean package define target_clean @@ -495,21 +497,21 @@ $(1)-clean-source: .PHONY: $(1)-clean-source CLEANS += $(1)-clean-source $(1)-clean-tarball: - rm -rf $($(1)-TARBALL) + rm -rf $($(1)-TARBALLS) .PHONY: $(1)-clean-tarball CLEANS += $(1)-clean-tarball $(1)-clean-build: rm -rf BUILD/$(notdir $($(1)-SOURCE)) CLEANS += $(1)-clean-build -$(1)-clean-rpm: - rm -rf $($(1)-RPM) -.PHONY: $(1)-clean-rpm -CLEANS += $(1)-clean-rpm +$(1)-clean-rpms: + rm -rf $($(1)-RPMS) +.PHONY: $(1)-clean-rpms +CLEANS += $(1)-clean-rpms $(1)-clean-srpm: rm -rf $($(1)-SRPM) .PHONY: $(1)-clean-srpm CLEANS += $(1)-clean-srpm -$(1)-clean: $(1)-clean-codebase $(1)-clean-source $(1)-clean-tarball $(1)-clean-build $(1)-clean-rpm $(1)-clean-srpm +$(1)-clean: $(1)-clean-codebase $(1)-clean-source $(1)-clean-tarball $(1)-clean-build $(1)-clean-rpms $(1)-clean-srpm .PHONY: $(1)-clean endef @@ -582,7 +584,7 @@ help: @echo " rebuilds everything" @echo '$ make util-vserver' @echo " makes the RPMS related to util-vserver" - @echo " equivalent to 'make util-vserver-rpm'" + @echo " equivalent to 'make util-vserver-rpms'" @echo "" @echo "Or, vertically - step-by-step for a given package" @echo '$ make util-vserver-codebase' @@ -591,7 +593,7 @@ help: @echo " creates source link in SOURCES/util-vserver-" @echo '$ make util-vserver-tarball' @echo " creates source tarball in SOURCES/util-vserver-." - @echo '$ make util-vserver-rpm' + @echo '$ make util-vserver-rpms' @echo " build rpm(s) in RPMS/" @echo '$ make util-vserver-srpm' @echo " build source rpm in SRPMS/" diff --git a/planetlab.mk b/planetlab.mk index 50ff0d3d..1643166b 100644 --- a/planetlab.mk +++ b/planetlab.mk @@ -41,14 +41,13 @@ KERNELS += srpm-kernel-$(HOSTARCH) #endif kernel: $(KERNELS) - sudo rpm -Uvh RPMS/i686/kernel-devel*.rpm - kernel-clean: $(foreach package,$(KERNELS),$(package)-clean) -kernel-devel: $(KERNELS) - ALL += $(KERNELS) +# the first kernel package defined here +kernel_package := $(word 1,$(KERNELS)) + # # libnl # @@ -66,7 +65,7 @@ ALL += libnl util-vserver-MODULES := util-vserver util-vserver-SPEC := util-vserver.spec util-vserver-RPMFLAGS:= --without dietlibc -util-vserver-DEPENDS := libnl +util-vserver-DEPENDDEVELS := libnl ALL += util-vserver # @@ -114,8 +113,9 @@ proper-MODULES := proper proper-SPEC := proper.spec proper-RPMBUILD := sudo bash ./rpmbuild.sh # proper uses scripts in util-python for building -proper-DEPENDS := libhttpd++ util-python +proper-DEPENDDEVELS := libhttpd++ util-python # disabled temporarily (or ?) +# need to check that these two define a -devel package #ALL += proper # @@ -131,7 +131,7 @@ ALL += codemux # ulogd-MODULES := ulogd ulogd-SPEC := ulogd.spec -ulogd-DEPENDS := kernel-devel proper +ulogd-DEPENDDEVELS := $(kernel_package) proper ALL += ulogd # @@ -160,7 +160,7 @@ ALL += pl_mom # iptables-MODULES := iptables iptables-SPEC := iptables.spec -iptables-DEPENDS :=kernel-devel +iptables-DEPENDDEVELS := $(kernel_package) ALL += iptables # diff --git a/spec2make.c b/spec2make.c index 18bebd8f..7d721ec2 100644 --- a/spec2make.c +++ b/spec2make.c @@ -123,7 +123,7 @@ main(int argc, char *argv[]) char fullSource[PATH_MAX]; strncpy(fullSource, source->fullSource, sizeof(fullSource)); - printf("%s-TARBALL += SOURCES/%s\n", package_name, basename(fullSource)); + printf("%s-TARBALLS += SOURCES/%s\n", package_name, basename(fullSource)); /* computes the SOURCEDIR variable by removing .tar.gz or .tar.bz2 */ { char *suffixes[] = {".tar.gz",".tgz",".tar.bz2", NULL}; @@ -168,8 +168,12 @@ main(int argc, char *argv[]) arch=target; } } - printf("%s-RPM += RPMS/%s/%s-%s-%s.%s.rpm\n", + printf("%s-RPMS += RPMS/%s/%s-%s-%s.%s.rpm\n", package_name, arch, name, version, release, arch); + if (strstr (name,"-devel")!=NULL) { + printf("%s-DEVEL-RPMS += RPMS/%s/%s-%s-%s.%s.rpm\n", + package_name, arch, name, version, release, arch); + } } }