From: Peter Korsgaard <jacmet@uclibc.org>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH] poco: fix parallel build failure
Date: Mon, 17 Sep 2012 21:27:21 +0200 [thread overview]
Message-ID: <87pq5ko3fq.fsf@macbook.be.48ers.dk> (raw)
In-Reply-To: <983f847ed905297a7f8e78b258e482c71b13232a.1346227179.git.baruch@tkos.co.il> (Baruch Siach's message of "Wed, 29 Aug 2012 11:04:05 +0300")
>>>>> "Baruch" == Baruch Siach <baruch@tkos.co.il> writes:
Baruch> This added patch should fix
Baruch> http://autobuild.buildroot.net/results/1bf7e51ef30af9bbf5e423e80ef07212b83bdaf8/.
Baruch> CROSSENV is now required also in the install stages to prevent
Baruch> a rebuild using the host native toolchain.
Sorry, this doesn't actually work. We now have
http://autobuild.buildroot.net/results/1cca8b4115674f12884bcbc0c680efed0fb939ae/
Which is because poco now gets rebuilt at the install staging/target
steps, where we're not passing MYSQL_LIBDIR/INCDIR as all the .o targets
are considered out of date because of the phony objdirs prerequisite.
I don't right away see a clean solution to it (you could use order-only
('|') rules, but it isn't really pretty), so I simply reverted this and
just changed the build step to use MAKE1.
Feel free to submit a correct patch insted.
Baruch> Signed-off-by: Baruch Siach <baruch@tkos.co.il>
Baruch> ---
Baruch> I've never encountered this build failure on my machine, so I can't verify the
Baruch> fix. If this patch is accepted, and we won't get these failures on the
Baruch> autobuild machines, I'll try to upstream this patch.
Baruch> package/poco/poco-fix-parallel-build.patch | 71 ++++++++++++++++++++++++++++
Baruch> package/poco/poco.mk | 6 ++-
Baruch> 2 files changed, 75 insertions(+), 2 deletions(-)
Baruch> create mode 100644 package/poco/poco-fix-parallel-build.patch
Baruch> diff --git a/package/poco/poco-fix-parallel-build.patch b/package/poco/poco-fix-parallel-build.patch
Baruch> new file mode 100644
Baruch> index 0000000..39a1e3e
Baruch> --- /dev/null
Baruch> +++ b/package/poco/poco-fix-parallel-build.patch
Baruch> @@ -0,0 +1,71 @@
Baruch> +poco: fix parallel build
Baruch> +
Baruch> +The makefile rule for generating objects implicitly depends on the existence
Baruch> +of the containing directory. The makefile dependecies do not reflect this,
Baruch> +however. Instead, the final compilation producs depend on one of libdirs,
Baruch> +bindirs, or static_bindirs, which in turn depend on objdirs. This breaks
Baruch> +parallel build since the objdirs target may not complete before the object
Baruch> +files build starts as follows (abbreviated):
Baruch> +
Baruch> +make[2]: Entering directory `/home/test/test/output/build/poco-1.4.3p1/Zip'
Baruch> +mkdir -p /home/test/test/output/build/poco-1.4.3p1/Zip/obj/Linux/powerpc/release_static
Baruch> +mkdir -p /home/test/test/output/build/poco-1.4.3p1/Zip/obj/Linux/powerpc/debug_static
Baruch> +mkdir -p /home/test/test/output/build/poco-1.4.3p1/Zip/obj/Linux/powerpc/release_shared
Baruch> +mkdir -p /home/test/test/output/build/poco-1.4.3p1/Zip/obj/Linux/powerpc/debug_shared
Baruch> +** Compiling src/AutoDetectStream.cpp (release, shared)
Baruch> +...
Baruch> +Assembler messages:
Baruch> +Fatal error: can't create /home/test/test/output/build/poco-1.4.3p1/Zip/obj/Linux/powerpc/release_shared/AutoDetectStream.o: No such file or directory
Baruch> +
Baruch> +Add direct dependency on the objects directories to fix this.
Baruch> +
Baruch> +Signed-off-by: Baruch Siach <baruch@tkos.co.il>
Baruch> +---
Baruch> +
Baruch> +diff -Nur poco-1.4.3p1-all.orig/build/rules/compile poco-1.4.3p1-all/build/rules/compile
Baruch> +--- poco-1.4.3p1-all.orig/build/rules/compile 2012-01-23 16:12:26.000000000 +0200
Baruch> ++++ poco-1.4.3p1-all/build/rules/compile 2012-08-28 13:10:17.000000000 +0300
Baruch> +@@ -33,35 +32,35 @@
Baruch> + #
Baruch> + # Rules for compiling
Baruch> + #
Baruch> +-$(OBJPATH_DEBUG_STATIC)/%.o: $(SRCDIR)/%.cpp $(DEPPATH)/%.d
Baruch> ++$(OBJPATH_DEBUG_STATIC)/%.o: $(SRCDIR)/%.cpp $(DEPPATH)/%.d objdirs
Baruch> + @echo "** Compiling" $< "(debug, static)"
Baruch> + $(CXX) $(INCLUDE) $(CXXFLAGS) $(DEBUGOPT_CXX) $(STATICOPT_CXX) -c $< -o $@
Baruch> +
Baruch> +-$(OBJPATH_RELEASE_STATIC)/%.o: $(SRCDIR)/%.cpp $(DEPPATH)/%.d
Baruch> ++$(OBJPATH_RELEASE_STATIC)/%.o: $(SRCDIR)/%.cpp $(DEPPATH)/%.d objdirs
Baruch> + @echo "** Compiling" $< "(release, static)"
Baruch> + $(CXX) $(INCLUDE) $(CXXFLAGS) $(RELEASEOPT_CXX) $(STATICOPT_CXX) -c $< -o $@
Baruch> +
Baruch> +-$(OBJPATH_DEBUG_STATIC)/%.o: $(SRCDIR)/%.c $(DEPPATH)/%.d
Baruch> ++$(OBJPATH_DEBUG_STATIC)/%.o: $(SRCDIR)/%.c $(DEPPATH)/%.d objdirs
Baruch> + @echo "** Compiling" $< "(debug, static)"
Baruch> + $(CC) $(INCLUDE) $(CFLAGS) $(DEBUGOPT_CC) $(STATICOPT_CC) -c $< -o $@
Baruch> +
Baruch> +-$(OBJPATH_RELEASE_STATIC)/%.o: $(SRCDIR)/%.c $(DEPPATH)/%.d
Baruch> ++$(OBJPATH_RELEASE_STATIC)/%.o: $(SRCDIR)/%.c $(DEPPATH)/%.d objdirs
Baruch> + @echo "** Compiling" $< "(release, static)"
Baruch> + $(CC) $(INCLUDE) $(CFLAGS) $(RELEASEOPT_CC) $(STATICOPT_CC) -c $< -o $@
Baruch> +
Baruch> +-$(OBJPATH_DEBUG_SHARED)/%.o: $(SRCDIR)/%.cpp $(DEPPATH)/%.d
Baruch> ++$(OBJPATH_DEBUG_SHARED)/%.o: $(SRCDIR)/%.cpp $(DEPPATH)/%.d objdirs
Baruch> + @echo "** Compiling" $< "(debug, shared)"
Baruch> + $(CXX) $(INCLUDE) $(CXXFLAGS) $(DEBUGOPT_CXX) $(SHAREDOPT_CXX) -c $< -o $@
Baruch> +
Baruch> +-$(OBJPATH_RELEASE_SHARED)/%.o: $(SRCDIR)/%.cpp $(DEPPATH)/%.d
Baruch> ++$(OBJPATH_RELEASE_SHARED)/%.o: $(SRCDIR)/%.cpp $(DEPPATH)/%.d objdirs
Baruch> + @echo "** Compiling" $< "(release, shared)"
Baruch> + $(CXX) $(INCLUDE) $(CXXFLAGS) $(RELEASEOPT_CXX) $(SHAREDOPT_CXX) -c $< -o $@
Baruch> +
Baruch> +-$(OBJPATH_DEBUG_SHARED)/%.o: $(SRCDIR)/%.c $(DEPPATH)/%.d
Baruch> ++$(OBJPATH_DEBUG_SHARED)/%.o: $(SRCDIR)/%.c $(DEPPATH)/%.d objdirs
Baruch> + @echo "** Compiling" $< "(debug, shared)"
Baruch> + $(CC) $(INCLUDE) $(CFLAGS) $(DEBUGOPT_CC) $(SHAREDOPT_CC) -c $< -o $@
Baruch> +
Baruch> +-$(OBJPATH_RELEASE_SHARED)/%.o: $(SRCDIR)/%.c $(DEPPATH)/%.d
Baruch> ++$(OBJPATH_RELEASE_SHARED)/%.o: $(SRCDIR)/%.c $(DEPPATH)/%.d objdirs
Baruch> + @echo "** Compiling" $< "(release, shared)"
Baruch> + $(CC) $(INCLUDE) $(CFLAGS) $(RELEASEOPT_CC) $(SHAREDOPT_CC) -c $< -o $@
Baruch> +
Baruch> diff --git a/package/poco/poco.mk b/package/poco/poco.mk
Baruch> index f74c2b1..c73d6b6 100644
Baruch> --- a/package/poco/poco.mk
Baruch> +++ b/package/poco/poco.mk
Baruch> @@ -50,11 +50,13 @@ define POCO_BUILD_CMDS
Baruch> endef
Baruch> define POCO_INSTALL_STAGING_CMDS
Baruch> - $(MAKE) DESTDIR=$(STAGING_DIR) POCO_TARGET_OSARCH=$(ARCH) install -C $(@D)
Baruch> + $(MAKE) DESTDIR=$(STAGING_DIR) POCO_TARGET_OSARCH=$(ARCH) \
Baruch> + CROSSENV=$(TARGET_CROSS) install -C $(@D)
Baruch> endef
Baruch> define POCO_INSTALL_TARGET_CMDS
Baruch> - $(MAKE) DESTDIR=$(TARGET_DIR) POCO_TARGET_OSARCH=$(ARCH) install -C $(@D)
Baruch> + $(MAKE) DESTDIR=$(TARGET_DIR) POCO_TARGET_OSARCH=$(ARCH) \
Baruch> + CROSSENV=$(TARGET_CROSS) install -C $(@D)
Baruch> endef
Baruch> $(eval $(generic-package))
Baruch> --
Baruch> 1.7.10.4
Baruch> _______________________________________________
Baruch> buildroot mailing list
Baruch> buildroot at busybox.net
Baruch> http://lists.busybox.net/mailman/listinfo/buildroot
--
Bye, Peter Korsgaard
next prev parent reply other threads:[~2012-09-17 19:27 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-29 8:04 [Buildroot] [PATCH] poco: fix parallel build failure Baruch Siach
2012-09-14 10:00 ` Peter Korsgaard
2012-09-17 19:27 ` Peter Korsgaard [this message]
2012-09-19 6:40 ` Baruch Siach
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87pq5ko3fq.fsf@macbook.be.48ers.dk \
--to=jacmet@uclibc.org \
--cc=buildroot@busybox.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox