[PATCH] build: create include/xfs before installing headers (was Re: [PATCH 06/10] xfsprogs: use <>-style includes in installed headers)
Dave Chinner
david at fromorbit.com
Fri Jul 31 17:44:50 CDT 2015
On Fri, Jul 31, 2015 at 10:09:57AM +0200, Christoph Hellwig wrote:
> On Fri, Jul 31, 2015 at 12:55:06PM +1000, Dave Chinner wrote:
> > I made a small change to pull the creation of include/xfs out of
> > include/Makefile and up into include/buildrules where it is done
> > before running the install-headers rule on each header subdir,
> > and that fixes it. i.e:
>
> Thanks, this looks sensible to me.
>
> > Now I've just got to work out which patch is breaking 'make deb'....
>
> "packaging: rework dh_autoreconf invocation for deb builds" is the
> culprit..
That goes away on a make distclean. What was wrong is that
debian/buildrules manually builds programs for the installer packge
(the udebs, IIUC) and so it runs the headers-install rules manually
rather than through the top level make file. It needed to have a
mkdir -p install/xfs added to it....
I've isolated all this to a patch that applies in front of you
series, as it appears the problems aren't directly related to any of
the changes you made - they just expose the problem. Patch below.
Cheers,
Dave.
--
Dave Chinner
david at fromorbit.com
build: create include/xfs before installing headers
From: Dave Chinner <dchinner at redhat.com>
Currently the install-headers rule from include/Makefile creates
include/xfs, but there is no guarantee that it will be the first
directory that make executes that rule in. Hence other directories
can race with the creation on include/xfs and fail.
Move the creation of include/xfs to occur before running the
install_headers rules on the subdirectories to avoid any possible
races with creation.
Signed-off-by: Dave Chinner <dchinner at redhat.com>
---
debian/rules | 1 +
include/Makefile | 5 +----
include/buildrules | 8 +++++++-
3 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/debian/rules b/debian/rules
index 27b043f..5526bbf 100755
--- a/debian/rules
+++ b/debian/rules
@@ -44,6 +44,7 @@ dibuild:
@echo "== dpkg-buildpackage: installer" 1>&2
if [ ! -f mkfs/mkfs.xfs-$(bootpkg) ]; then \
$(diopts) $(MAKE) include/platform_defs.h; \
+ mkdir -p include/xfs; \
for dir in include libxfs; do \
$(MAKE) -C $$dir NODEP=1 install-headers; \
done; \
diff --git a/include/Makefile b/include/Makefile
index 91b33b0..01c886d 100644
--- a/include/Makefile
+++ b/include/Makefile
@@ -65,12 +65,9 @@ include $(BUILDRULES)
# set up include/xfs header directory
install-headers: $(addsuffix -hdrs, $(HFILES) $(QAHFILES) $(PHFILES) $(DKHFILES) $(LIBHFILES))
-%-hdrs: xfs
+%-hdrs:
$(Q)$(LN_S) -f $(PWD)/include/$* xfs/$*
-xfs:
- @mkdir -p xfs
-
install: default
$(INSTALL) -m 755 -d $(PKG_INC_DIR)
diff --git a/include/buildrules b/include/buildrules
index 0e13f9d..5010895 100644
--- a/include/buildrules
+++ b/include/buildrules
@@ -14,10 +14,16 @@ clean clobber : $(addsuffix -clean,$(SUBDIRS))
$(Q)$(MAKE) $(MAKEOPTS) -C $* clean
ifdef HDR_SUBDIRS
+.PHONY: .xfs
+
headers: $(addsuffix -headers, $(HDR_SUBDIRS))
-%-headers:
+
+%-headers: .xfs
@echo " [HEADERS] $*"
$(Q)$(MAKE) $(MAKEOPTS) -C $* NODEP=1 install-headers
+
+.xfs:
+ @mkdir -p include/xfs
endif
# Never blow away subdirs
More information about the xfs
mailing list