- Enable parallel builds

This commit is contained in:
Eric Sandeen 2008-11-12 17:23:22 +00:00
parent 2d92bffca5
commit 58af504b96
2 changed files with 167 additions and 2 deletions

View File

@ -0,0 +1,159 @@
(oops, cvs version)
I got tired of waiting for xfsdump to build
serially...
On a 16p altix, make -j16 (excluding the configure
phase) went from 55s to 12s.
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
---
Index: xfsdump-2.2.48/Makefile
===================================================================
--- xfsdump-2.2.48.orig/Makefile 2007-09-10 21:01:10.000000000 -0500
+++ xfsdump-2.2.48/Makefile 2008-11-12 11:17:09.751001665 -0600
@@ -15,23 +15,28 @@ LSRCFILES = configure configure.in acloc
LDIRT = config.log .dep config.status config.cache confdefs.h conftest* \
Logs/* built .census install.* install-dev.* *.gz
-SUBDIRS = include librmt \
- common estimate fsr inventory invutil dump restore \
+LIB_SUBDIRS = include librmt
+TOOL_SUBDIRS = common estimate fsr inventory invutil dump restore \
m4 man doc po debian build
+SUBDIRS = $(LIB_SUBDIRS) $(TOOL_SUBDIRS)
+
default: $(CONFIGURE)
ifeq ($(HAVE_BUILDDEFS), no)
$(MAKE) -C . $@
else
- $(SUBDIRS_MAKERULE)
+ $(MAKE) $(SUBDIRS)
endif
+$(TOOL_SUBDIRS) : $(LIB_SUBDIRS)
+
ifeq ($(HAVE_BUILDDEFS), yes)
include $(BUILDRULES)
else
clean: # if configure hasn't run, nothing to clean
endif
+.NOTPARALLEL: $(CONFIGURE)
$(CONFIGURE):
autoconf
./configure \
@@ -51,13 +56,17 @@ $(CONFIGURE):
aclocal.m4::
aclocal --acdir=`pwd`/m4 --output=$@
-install: default
- $(SUBDIRS_MAKERULE)
+install: default $(addsuffix -install,$(SUBDIRS))
$(INSTALL) -m 755 -d $(PKG_DOC_DIR)
$(INSTALL) -m 644 README $(PKG_DOC_DIR)
-install-dev: default
- $(SUBDIRS_MAKERULE)
+%-install:
+ $(MAKE) -C $* install
+
+install-dev: default $(addsuffix -install-dev,$(SUBDIRS))
+
+%-install-dev:
+ $(MAKE) -C $* install-dev
realclean distclean: clean
rm -f $(LDIRT) $(CONFIGURE)
Index: xfsdump-2.2.48/include/buildmacros
===================================================================
--- xfsdump-2.2.48.orig/include/buildmacros 2007-09-10 21:01:12.000000000 -0500
+++ xfsdump-2.2.48/include/buildmacros 2008-11-12 11:16:13.008002065 -0600
@@ -123,14 +123,6 @@ INSTALL_LINGUAS = \
done
endif
-SUBDIRS_MAKERULE = \
- @for d in $(SUBDIRS) ""; do \
- if test -d "$$d" -a ! -z "$$d"; then \
- $(ECHO) === $$d ===; \
- $(MAKEF) -C $$d $@ || exit $$?; \
- fi; \
- done
-
MAN_MAKERULE = \
@for f in *.[12345678] ""; do \
if test ! -z "$$f"; then \
Index: xfsdump-2.2.48/include/buildrules
===================================================================
--- xfsdump-2.2.48.orig/include/buildrules 2007-09-10 21:01:12.000000000 -0500
+++ xfsdump-2.2.48/include/buildrules 2008-11-12 11:16:13.034000928 -0600
@@ -6,18 +6,23 @@ _BUILDRULES_INCLUDED_ = 1
include $(TOPDIR)/include/builddefs
-clean clobber : $(SUBDIRS)
+clean clobber: $(addsuffix -clean,$(SUBDIRS))
rm -f $(DIRT)
@rm -fr .libs
- $(SUBDIRS_MAKERULE)
+
+%-clean::
+ $(MAKE) -C $* clean
# Never blow away subdirs
ifdef SUBDIRS
.PRECIOUS: $(SUBDIRS)
-$(SUBDIRS):
- $(SUBDIRS_MAKERULE)
endif
+.PHONY: $(SUBDIRS)
+
+$(SUBDIRS):
+ $(MAKE) -C $@
+
#
# Standard targets
#
@@ -68,11 +73,13 @@ ifdef LTLIBRARY
DEPENDSCRIPT := $(DEPENDSCRIPT) | $(SED) -e 's,^\([^:]*\)\.o,\1.lo,'
endif
-depend : $(CFILES) $(HFILES)
- $(SUBDIRS_MAKERULE)
+depend : $(CFILES) $(HFILES) $(addsuffix -depend,$(SUBDIRS))
$(DEPENDSCRIPT) > .dep
test -s .dep || rm -f .dep
+%-depend:
+ $(MAKE) -C $* depend
+
# Include dep, but only if it exists
ifeq ($(shell test -f .dep && echo .dep), .dep)
include .dep
Index: xfsdump-2.2.48/man/Makefile
===================================================================
--- xfsdump-2.2.48.orig/man/Makefile 2007-09-10 21:01:13.000000000 -0500
+++ xfsdump-2.2.48/man/Makefile 2008-11-12 11:16:13.051001065 -0600
@@ -7,7 +7,16 @@ include $(TOPDIR)/include/builddefs
SUBDIRS = man8
-default install install-dev : $(SUBDIRS)
- $(SUBDIRS_MAKERULE)
+default : $(SUBDIRS)
+
+install : $(addsuffix -install,$(SUBDIRS))
+
+install-dev : $(addsuffix -install-dev,$(SUBDIRS))
+
+%-install:
+ $(MAKE) -C $* install
+
+%-install-dev:
+ $(MAKE) -C $* install-dev
include $(BUILDRULES)

View File

@ -1,7 +1,7 @@
Summary: Administrative utilities for the XFS filesystem
Name: xfsdump
Version: 2.2.48
Release: 1%{?dist}
Release: 2%{?dist}
# Licensing based on generic "GNU GENERAL PUBLIC LICENSE"
# in source, with no mention of version.
License: GPL+
@ -13,6 +13,8 @@ BuildRequires: autoconf, libtool, gettext, gawk
BuildRequires: xfsprogs-devel, e2fsprogs-devel, libattr-devel ncurses-devel
Requires: xfsprogs >= 2.6.30, attr >= 2.0.0
Patch0: xfsdump-parallel-build.patch
%description
The xfsdump package contains xfsdump, xfsrestore and a number of
other utilities for administering XFS filesystems.
@ -32,6 +34,7 @@ subtrees may be restored from full or partial backups.
%prep
%setup -q
%patch0 -p1
%build
autoconf
@ -61,8 +64,11 @@ rm -rf $RPM_BUILD_ROOT
/sbin/*
%changelog
* Wed Nov 12 2008 Eric Sandeen <sandeen@redhat.com> 2.2.48-2
- Enable parallel builds
* Sun Feb 10 2008 Eric Sandeen <sandeen@redhat.com> - 2.2.48-1
- Update to xfsdump version 2.2.46
- Update to xfsdump version 2.2.48
- First build with gcc-4.3
* Mon Sep 10 2007 Eric Sandeen <sandeen@redhat.com> - 2.2.46-1