From: Don Zickus dzickus@redhat.com
Add wildcard macros -baseonly -gcov
There are multiple usecases for -baseonly and -gcov on various targets in the Makefile. Instead of calling those targets out repeatedly, lets generalize them a bit.
Allow adding -baseonly and -gcov to: dist-rpm dist-srpm dist-brew dist-koji distg-brew distg-koji
Gcov is useful for adding code coverage. Baseonly is useful to only build the kernel for debugging purposes without userspace tools.
Signed-off-by: Don Zickus dzickus@redhat.com
diff --git a/redhat/Makefile b/redhat/Makefile index blahblah..blahblah 100644 --- a/redhat/Makefile +++ b/redhat/Makefile @@ -297,6 +297,12 @@ dist-sources: dist-kabi dist-kabi-dup sources-rh dist-test-patch: generate-testpatch-tmp @mv $(TESTPATCH).tmp $(TESTPATCH);
+%-baseonly: RPMBUILDOPTS=--target $(MACH) --without debug --without debuginfo --without vdso_install --without bpftool --without perf --without tools --without selftests -bb +%-baseonly: BUILDOPTS+=-debug -debuginfo -vdso_install -bpftool -perf -tools -selftests + +%-gcov: BUILDID=".gcov" +%-gcov: BUILDOPTS+="+gcov" + do-rpmbuild: dist-sources $(RPMBUILD) --define "_sourcedir $(SOURCES)" --define "_builddir $(RPM)/BUILD" --define "_srcrpmdir $(RPM)/SRPMS" --define "_rpmdir $(RPM)/RPMS" --define "_specdir $(RPM)/SPECS" --define "dist $(DIST)" $(RPMBUILDOPTS) $(RPM)/SOURCES/$(PACKAGE_NAME).spec
@@ -306,9 +312,9 @@ dist-all-rpms: dist-sources do-rpmbuild dist-srpm: RPMBUILDOPTS=--nodeps -bs dist-srpm: dist-sources do-rpmbuild
-dist-srpm-gcov: BUILDID=".gcov" -dist-srpm-gcov: BUILDOPTS+="+gcov" -dist-srpm-gcov: dist-srpm +dist-srpm-%: dist-srpm + @# phony command to force this to be a target and not variable + @FOO=BAR
dist-rpms: RPMBUILDOPTS=--target $(MACH) -bb dist-rpms: dist-sources do-rpmbuild @@ -322,8 +328,7 @@ dist-prep: dist-sources do-rpmbuild dist-perf: RPMBUILDOPTS=--without up --without smp --without zfcpdump --without debug --without doc --without headers --without --without doc --without debuginfo --target $(MACH) -bb dist-perf: dist-sources do-rpmbuild
-dist-rpm-baseonly: RPMBUILDOPTS=--target $(MACH) --without debug --without debuginfo --without vdso_install --without bpftool --without perf --without tools -bb -dist-rpm-baseonly: dist-sources do-rpmbuild +dist-rpm-%: dist-sources do-rpmbuild
# unless you know what you're doing, you don't want to use the next four ones dist-release-finish: setup-source @@ -388,9 +393,25 @@ distg-koji: BUILD_FLAGS ?= $(KOJI_FLAGS) $(TEST_FLAGS) dist-brew dist-koji: dist-%: dist-srpm $* $(BUILD_PROFILE) build $(BUILD_FLAGS) $(BUILD_TARGET) $(SRPMS)/$(PACKAGE_NAME)-$(KVERSION)-$(PKGRELEASE)$(DIST).src.rpm $(OUTPUT_FILE)
+dist-brew-%: dist-brew + @# phony command to force this to be a target and not variable + @FOO=BAR + +dist-koji-%: dist-koji + @# phony command to force this to be a target and not variable + @FOO=BAR + distg-brew distg-koji: distg-%: $* $(BUILD_PROFILE) build $(BUILD_FLAGS) $(BUILD_TARGET) "$(RHGITURL)?redhat/koji#$(RHGITCOMMIT)"
+distg-brew-%: dist-brew + @# phony command to force this to be a target and not variable + @FOO=BAR + +distg-koji-%: dist-koji + @# phony command to force this to be a target and not variable + @FOO=BAR + .PHONY: $(REDHAT)/rpm/SOURCES/$(PACKAGE_NAME).spec $(REDHAT)/rpm/SOURCES/$(PACKAGE_NAME).spec: @echo "dist-sources" @@ -469,34 +490,30 @@ dist-full-help: @echo 'Building targets:' @echo ' All RPM/SRPM files will be put under the redhat/rpm/ directory.' @echo '' - @echo ' dist-srpm - Create a source RPM and put it into the redhat/rpm/SRPMS/' + @echo ' dist-srpm@ - Create a source RPM and put it into the redhat/rpm/SRPMS/' @echo ' directory. See the dist-brew target for available options.' - @echo ' dist-srpm-gcov - Create a source RPM with gcov enabled and put it into the' - @echo ' redhat/rpm/SRPMS/ directory.' - @echo ' dist-brew - Create a kernel SRPM and then call brew to build the' + @echo ' dist-brew@ - Create a kernel SRPM and then call brew to build the' @echo ' created SRPM. Add BUILDOPTS="+<opt> -<opt> [...]" to' @echo ' enable/disable build options.' @echo ' Available <opt>s and their default values:' \ $$(sed -n -e 's/^%define with_([^ \t]*).*?_without_.*/+\1/p' \ -e 's/^%define with_([^ \t]*).*?_with_.*/-\1/p' kernel.spec.template | \ grep -v 'only$$') | fmt -80 - @echo ' dist-koji - Create a kernel SRPM and then call koji to build the' + @echo ' dist-koji@ - Create a kernel SRPM and then call koji to build the' @echo ' created SRPM. See the dist-brew target for available' @echo ' options.' - @echo ' distg-brew - Pass HEAD of the current git branch to brew to build an' + @echo ' distg-brew@ - Pass HEAD of the current git branch to brew to build an' @echo ' RPM set. Do not forget to push to the remote repository' @echo ' first. Preceed make command by RHGITCOMMIT=<commitID>' @echo ' specify commit ID to use.' @echo ' To set the remote repo, invoke:' @echo ' git config rhg.url git://<repo_path>' - @echo ' distg-koji - Pass HEAD of the current git branch to koji to build an' + @echo ' distg-koji@ - Pass HEAD of the current git branch to koji to build an' @echo ' RPM set. Do not forget to push to the remote repository' @echo ' first. See the distg-brew target for options and' @echo ' configuration.' - @echo ' dist-rpms - Create the binary RPMS for the kernel.' + @echo ' dist-rpms@ - Create the binary RPMS for the kernel.' @echo ' See the dist-brew target for available options.' - @echo ' dist-rpm-baseonly - Create the binary RPMS for the kernel and modules' - @echo ' (no userspace tools or debuginfo).' @echo ' dist-kernel-<type> - Create binary RPMS for a particular kernel type.' @echo ' Available <type>s:'\ $$(sed -n 's/^%define with_([^ ]*only).*/\1/p' kernel.spec.template) @@ -524,6 +541,12 @@ dist-full-help: @echo ' dist-rhel-configs - build ELN configs' @echo ' dist-fedora-configs - build Fedora configs'
+ @echo '' + @echo 'Wildcard targets: [indicated by '@' above]' + @echo ' *-baseonly - builds only the kernel (disables userspace and debuginfo)' + @echo ' - Examples: dist-srpm-baseonly, dist-brew-baseonly' + @echo ' *-gcov - builds a kernel with gcov enabled' + @echo ' - Examples: dist-srpm-gcov, dist-brew-gcov' @echo '' @echo 'kABI targets:' @echo ' dist-kabi - Create kABI stablelist files in redhat/kabi/kabi-rhel*/'
-- https://gitlab.com/cki-project/kernel-ark/-/merge_requests/1444
From: Herton R. Krzesinski on gitlab.com https://gitlab.com/cki-project/kernel-ark/-/merge_requests/1444#note_7188472...
I think you missed here the "phony command" as in the ```dist-srpm-%``` target (as dist-rpm-% doesn't work without it too). Also may be instead of FOO=BAR, may be doing only ```@:``` or echo something to force it to be a target may be would be better here (eg.: ```@echo $@ finished```)?
From: Patrick Talbert on gitlab.com https://gitlab.com/cki-project/kernel-ark/-/merge_requests/1444#note_2116482...
@dzickusrh I am closing this as it seems outdated.
kernel@lists.fedoraproject.org