[OS-BUILD PATCH] Add wildcard macros -baseonly -gcov

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Don Zickus <dzickus@xxxxxxxxxx>

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@xxxxxxxxxx>

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
_______________________________________________
kernel mailing list -- kernel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to kernel-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/kernel@xxxxxxxxxxxxxxxxxxxxxxx
Do not reply to spam on the list, report it: https://pagure.io/fedora-infrastructure




[Index of Archives]     [Fedora General Discussion]     [Older Fedora Users Archive]     [Fedora Advisory Board]     [Fedora Security]     [Fedora Devel Java]     [Fedora Legacy]     [Fedora Desktop]     [ATA RAID]     [Fedora Marketing]     [Fedora Mentors]     [Fedora Package Announce]     [Fedora Package Review]     [Fedora Music]     [Fedora Packaging]     [Centos]     [Fedora SELinux]     [Coolkey]     [Yum Users]     [Tux]     [Yosemite News]     [KDE Users]     [Fedora Art]     [Fedora Docs]     [USB]     [Asterisk PBX]

  Powered by Linux