From e6c093dd94e7e6f221194e96095c0133662e3500 Mon Sep 17 00:00:00 2001 From: Arvind Sankar Date: Mon, 13 Jul 2020 17:24:07 -0400 Subject: [PATCH] Fix parallel make srpm When building srpm using make -j, each of the recursive makes invoked to build srpm-{dkms,kmod,utils} will build the dist target. This is both unnecessary, and also has a very good chance of breaking when they race trying to build gitrev. Fix this by make dist a prerequisite of srpm-{dkms,kmod,utils} instead of srpm-common, so that it will be done once before invoking the recursive makes. Also, gitrev is not really required for make dist, so instead of adding it to BUILT_SOURCES, just add it as a prerequisite of the all target. Mark the individual package targets as PHONY. Reviewed-by: Brian Behlendorf Signed-off-by: Arvind Sankar Closes #10564 --- Makefile.am | 14 ++++++-------- config/deb.am | 2 ++ config/rpm.am | 8 +++++++- config/tgz.am | 2 ++ 4 files changed, 17 insertions(+), 9 deletions(-) diff --git a/Makefile.am b/Makefile.am index 45474daa43..4e46257947 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,9 +1,5 @@ ACLOCAL_AMFLAGS = -I config -include config/rpm.am -include config/deb.am -include config/tgz.am - SUBDIRS = include if BUILD_LINUX SUBDIRS += rpm @@ -54,6 +50,7 @@ EXTRA_DIST += module/zfs/THIRDPARTYLICENSE.cityhash.descrip @CODE_COVERAGE_RULES@ GITREV = include/zfs_gitrev.h +CLEANFILES = $(GITREV) PHONY = gitrev gitrev: @@ -68,10 +65,7 @@ gitrev: mv -f $(GITREV)~ $(GITREV); \ fi -$(GITREV): gitrev - -BUILT_SOURCES = $(GITREV) -CLEANFILES = $(GITREV) +all: gitrev # Double-colon rules are allowed; there are multiple independent definitions. distclean-local:: @@ -252,4 +246,8 @@ pkg-dkms: @DEFAULT_PACKAGE@-dkms pkg-kmod: @DEFAULT_PACKAGE@-kmod pkg-utils: @DEFAULT_PACKAGE@-utils +include config/rpm.am +include config/deb.am +include config/tgz.am + .PHONY: $(PHONY) diff --git a/config/deb.am b/config/deb.am index 83059a9234..88679545a5 100644 --- a/config/deb.am +++ b/config/deb.am @@ -1,3 +1,5 @@ +PHONY += deb-kmod deb-dkms deb-utils deb deb-local + deb-local: @(if test "${HAVE_DPKGBUILD}" = "no"; then \ echo -e "\n" \ diff --git a/config/rpm.am b/config/rpm.am index 51a20b3e6a..9dd69ade33 100644 --- a/config/rpm.am +++ b/config/rpm.am @@ -6,6 +6,12 @@ # Build targets for RPM packages. ############################################################################### +PHONY += srpm srpms srpm-kmod srpm-dkms srpm-utils +PHONY += rpm rpms rpm-kmod rpm-dkms rpm-utils +PHONY += srpm-common rpm-common rpm-local + +srpm-kmod srpm-dkms srpm-utils: dist + srpm-kmod: $(MAKE) $(AM_MAKEFLAGS) pkg="${PACKAGE}-kmod" \ def='${SRPM_DEFINE_COMMON} ${SRPM_DEFINE_KMOD}' srpm-common @@ -54,7 +60,7 @@ rpm-local: cp $(top_srcdir)/scripts/kmodtool $(rpmbuild)/SOURCES && \ cp $(distdir).tar.gz $(rpmbuild)/SOURCES) -srpm-common: dist +srpm-common: @(dist=`$(RPM) --eval %{?dist}`; \ rpmpkg=$(pkg)-$(VERSION)-$(RELEASE)$$dist*src.rpm; \ rpmspec=$(pkg).spec; \ diff --git a/config/tgz.am b/config/tgz.am index 0657d045d1..4a84914017 100644 --- a/config/tgz.am +++ b/config/tgz.am @@ -1,3 +1,5 @@ +PHONY += tgz tgz-kmod tgz-utils tgz-local + tgz-local: @(if test "${HAVE_ALIEN}" = "no"; then \ echo -e "\n" \