summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArvind Sankar <[email protected]>2020-07-13 17:24:07 -0400
committerBrian Behlendorf <[email protected]>2020-07-14 17:31:45 -0700
commite6c093dd94e7e6f221194e96095c0133662e3500 (patch)
tree93bd1e7ca3849df14f7beb6619aa1b93d063e5ef
parent1743c737f5ad6e2c6c429858b7c0f717ecb20954 (diff)
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 <[email protected]> Signed-off-by: Arvind Sankar <[email protected]> Closes #10564
-rw-r--r--Makefile.am14
-rw-r--r--config/deb.am2
-rw-r--r--config/rpm.am8
-rw-r--r--config/tgz.am2
4 files changed, 17 insertions, 9 deletions
diff --git a/Makefile.am b/Makefile.am
index 45474daa4..4e4625794 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 83059a923..88679545a 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 51a20b3e6..9dd69ade3 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 0657d045d..4a8491401 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" \