package/openssl: Enable parallel build
PATCH 1/2 package/openssl: Enable parallel build
Patch taken from Gentoo, tested 50+ times on buildroot with make -j80.
Comparison of compile duration:
make -j1
real 1m24.464s user 1m8.620s sys 0m9.661s
make -j80
real 0m27.774s user 1m34.234s sys 0m13.441s
--- package/openssl/openssl-005-parallel-build.patch | 363 ++++++++++++++++++++++ package/openssl/openssl.mk | 10 +- 2 files changed, 368 insertions(+), 5 deletions(-) create mode 100644 package/openssl/openssl-005-parallel-build.patch
package/openssl/openssl-005-parallel-build.patch new file +363 -0
@@ -0,0 +1,363 @@ +Fix parallel build + +Downloaded from +http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/dev-libs/openssl/files/openssl-1.0.1-parallel-build.patch?view=markup +and adjusted to 001-do-not-build-docs.patch + +Signed-off-by: Bernd Kuhls <[email protected]> + + +http://rt.openssl.org/Ticket/Display.html?id=2084 + +--- a/Makefile.org ++++ b/Makefile.org +@@ -247,17 +247,17 @@ + build_libs: build_crypto build_ssl build_engines + + build_crypto: +- @dir=crypto; target=all; $(BUILD_ONE_CMD) ++ + at dir=crypto; target=all; $(BUILD_ONE_CMD) +-build_ssl: ++build_ssl: build_crypto +- @dir=ssl; target=all; $(BUILD_ONE_CMD) ++ + at dir=ssl; target=all; $(BUILD_ONE_CMD) +-build_engines: ++build_engines: build_crypto +- @dir=engines; target=all; $(BUILD_ONE_CMD) ++ + at dir=engines; target=all; $(BUILD_ONE_CMD) +-build_apps: ++build_apps: build_libs +- @dir=apps; target=all; $(BUILD_ONE_CMD) ++ + at dir=apps; target=all; $(BUILD_ONE_CMD) +-build_tests: ++build_tests: build_libs +- @dir=test; target=all; $(BUILD_ONE_CMD) ++ + at dir=test; target=all; $(BUILD_ONE_CMD) +-build_tools: ++build_tools: build_libs +- @dir=tools; target=all; $(BUILD_ONE_CMD) ++ + at dir=tools; target=all; $(BUILD_ONE_CMD) + + all_testapps: build_libs build_testapps + build_testapps: +@@ -497,9 +497,9 @@ + dist_pem_h: + (cd crypto/pem; $(MAKE) -e $(BUILDENV) pem.h; $(MAKE) clean) + +-install: all install_sw ++install: install_sw + +-install_sw: ++install_dirs: + @$(PERL) $(TOP)/util/mkdir-p.pl $(INSTALL_PREFIX)$(INSTALLTOP)/bin \ + $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR) \ + $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines \ +@@ -508,6 +508,13 @@ + $(INSTALL_PREFIX)$(OPENSSLDIR)/misc \ + $(INSTALL_PREFIX)$(OPENSSLDIR)/certs \ + $(INSTALL_PREFIX)$(OPENSSLDIR)/private ++ @$(PERL) $(TOP)/util/mkdir-p.pl \ ++ $(INSTALL_PREFIX)$(MANDIR)/man1 \ ++ $(INSTALL_PREFIX)$(MANDIR)/man3 \ ++ $(INSTALL_PREFIX)$(MANDIR)/man5 \ ++ $(INSTALL_PREFIX)$(MANDIR)/man7 ++ ++install_sw: install_dirs + @set -e; headerlist="$(EXHEADER)"; for i in $$headerlist;\ + do \ + (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \ +@@ -511,7 +511,7 @@ + (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \ + chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \ + done; +- @set -e; target=install; $(RECURSIVE_BUILD_CMD) ++ + at set -e; target=install; $(RECURSIVE_BUILD_CMD) + @set -e; liblist="$(LIBS)"; for i in $$liblist ;\ + do \ + if [ -f "$$i" ]; then \ +@@ -593,12 +600,7 @@ + done; \ + done + +-install_docs: +- @$(PERL) $(TOP)/util/mkdir-p.pl \ +- $(INSTALL_PREFIX)$(MANDIR)/man1 \ +- $(INSTALL_PREFIX)$(MANDIR)/man3 \ +- $(INSTALL_PREFIX)$(MANDIR)/man5 \ +- $(INSTALL_PREFIX)$(MANDIR)/man7 ++install_docs: install_dirs + @pod2man="`cd ./util; ./pod2mantest $(PERL)`"; \ + here="`pwd`"; \ + filecase=; \ +--- a/Makefile.shared ++++ b/Makefile.shared +@@ -105,6 +105,7 @@ LINK_SO= \ + SHAREDFLAGS="$${SHAREDFLAGS:-$(CFLAGS) $(SHARED_LDFLAGS)}"; \ + LIBPATH=`for x in $$LIBDEPS; do echo $$x; done | sed -e 's/^ *-L//;t' -e d | uniq`; \ + LIBPATH=`echo $$LIBPATH | sed -e 's/ /:/g'`; \ ++ [ -e $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX ] && exit 0; \ + LD_LIBRARY_PATH=$$LIBPATH:$$LD_LIBRARY_PATH \ + $${SHAREDCMD} $${SHAREDFLAGS} \ + -o $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX \ +@@ -122,6 +124,7 @@ SYMLINK_SO= \ + done; \ + fi; \ + if [ -n "$$SHLIB_SOVER" ]; then \ ++ [ -e "$$SHLIB$$SHLIB_SUFFIX" ] || \ + ( $(SET_X); rm -f $$SHLIB$$SHLIB_SUFFIX; \ + ln -s $$prev $$SHLIB$$SHLIB_SUFFIX ); \ + fi; \ +--- a/crypto/Makefile ++++ b/crypto/Makefile +@@ -85,11 +85,11 @@ + @if [ -z "$(THIS)" ]; then $(MAKE) -f $(TOP)/Makefile reflect THIS=$@; fi + + subdirs: +- @target=all; $(RECURSIVE_MAKE) ++ + at target=all; $(RECURSIVE_MAKE) + + files: + $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO +- @target=files; $(RECURSIVE_MAKE) ++ + at target=files; $(RECURSIVE_MAKE) + + links: + @$(PERL) $(TOP)/util/mklink.pl ../include/openssl $(EXHEADER) +@@ -100,7 +100,7 @@ + # lib: $(LIB): are splitted to avoid end-less loop + lib: $(LIB) + @touch lib +-$(LIB): $(LIBOBJ) ++$(LIB): $(LIBOBJ) | subdirs + $(AR) $(LIB) $(LIBOBJ) + $(RANLIB) $(LIB) || echo Never mind. + +@@ -110,7 +110,7 @@ + fi + + libs: +- @target=lib; $(RECURSIVE_MAKE) ++ + at target=lib; $(RECURSIVE_MAKE) + + install: + @[ -n "$(INSTALLTOP)" ] # should be set by top Makefile... +@@ -119,7 +119,7 @@ + (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \ + chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \ + done; +- @target=install; $(RECURSIVE_MAKE) ++ + at target=install; $(RECURSIVE_MAKE) + + lint: + @target=lint; $(RECURSIVE_MAKE) +--- a/engines/Makefile ++++ b/engines/Makefile +@@ -72,7 +72,7 @@ + + all: lib subdirs + +-lib: $(LIBOBJ) ++lib: $(LIBOBJ) | subdirs + @if [ -n "$(SHARED_LIBS)" ]; then \ + set -e; \ + for l in $(LIBNAMES); do \ +@@ -89,7 +89,7 @@ + + subdirs: + echo $(EDIRS) +- @target=all; $(RECURSIVE_MAKE) ++ + at target=all; $(RECURSIVE_MAKE) + + files: + $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO +@@ -128,7 +128,7 @@ + mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$pfx$$l$$sfx.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$pfx$$l$$sfx ); \ + done; \ + fi +- @target=install; $(RECURSIVE_MAKE) ++ + at target=install; $(RECURSIVE_MAKE) + + tags: + ctags $(SRC) +--- a/test/Makefile ++++ b/test/Makefile +@@ -123,7 +123,7 @@ + tags: + ctags $(SRC) + +-tests: exe apps $(TESTS) ++tests: exe $(TESTS) + + apps: + @(cd ..; $(MAKE) DIRS=apps all) +@@ -365,109 +365,109 @@ + link_app.$${shlib_target} + + $(RSATEST)$(EXE_EXT): $(RSATEST).o $(DLIBCRYPTO) +- @target=$(RSATEST); $(BUILD_CMD) ++ + at target=$(RSATEST); $(BUILD_CMD) + + $(BNTEST)$(EXE_EXT): $(BNTEST).o $(DLIBCRYPTO) +- @target=$(BNTEST); $(BUILD_CMD) ++ + at target=$(BNTEST); $(BUILD_CMD) + + $(ECTEST)$(EXE_EXT): $(ECTEST).o $(DLIBCRYPTO) +- @target=$(ECTEST); $(BUILD_CMD) ++ + at target=$(ECTEST); $(BUILD_CMD) + + $(EXPTEST)$(EXE_EXT): $(EXPTEST).o $(DLIBCRYPTO) +- @target=$(EXPTEST); $(BUILD_CMD) ++ + at target=$(EXPTEST); $(BUILD_CMD) + + $(IDEATEST)$(EXE_EXT): $(IDEATEST).o $(DLIBCRYPTO) +- @target=$(IDEATEST); $(BUILD_CMD) ++ + at target=$(IDEATEST); $(BUILD_CMD) + + $(MD2TEST)$(EXE_EXT): $(MD2TEST).o $(DLIBCRYPTO) +- @target=$(MD2TEST); $(BUILD_CMD) ++ + at target=$(MD2TEST); $(BUILD_CMD) + + $(SHATEST)$(EXE_EXT): $(SHATEST).o $(DLIBCRYPTO) +- @target=$(SHATEST); $(BUILD_CMD) ++ + at target=$(SHATEST); $(BUILD_CMD) + + $(SHA1TEST)$(EXE_EXT): $(SHA1TEST).o $(DLIBCRYPTO) +- @target=$(SHA1TEST); $(BUILD_CMD) ++ + at target=$(SHA1TEST); $(BUILD_CMD) + + $(SHA256TEST)$(EXE_EXT): $(SHA256TEST).o $(DLIBCRYPTO) +- @target=$(SHA256TEST); $(BUILD_CMD) ++ + at target=$(SHA256TEST); $(BUILD_CMD) + + $(SHA512TEST)$(EXE_EXT): $(SHA512TEST).o $(DLIBCRYPTO) +- @target=$(SHA512TEST); $(BUILD_CMD) ++ + at target=$(SHA512TEST); $(BUILD_CMD) + + $(RMDTEST)$(EXE_EXT): $(RMDTEST).o $(DLIBCRYPTO) +- @target=$(RMDTEST); $(BUILD_CMD) ++ + at target=$(RMDTEST); $(BUILD_CMD) + + $(MDC2TEST)$(EXE_EXT): $(MDC2TEST).o $(DLIBCRYPTO) +- @target=$(MDC2TEST); $(BUILD_CMD) ++ + at target=$(MDC2TEST); $(BUILD_CMD) + + $(MD4TEST)$(EXE_EXT): $(MD4TEST).o $(DLIBCRYPTO) +- @target=$(MD4TEST); $(BUILD_CMD) ++ + at target=$(MD4TEST); $(BUILD_CMD) + + $(MD5TEST)$(EXE_EXT): $(MD5TEST).o $(DLIBCRYPTO) +- @target=$(MD5TEST); $(BUILD_CMD) ++ + at target=$(MD5TEST); $(BUILD_CMD) + + $(HMACTEST)$(EXE_EXT): $(HMACTEST).o $(DLIBCRYPTO) +- @target=$(HMACTEST); $(BUILD_CMD) ++ + at target=$(HMACTEST); $(BUILD_CMD) + + $(WPTEST)$(EXE_EXT): $(WPTEST).o $(DLIBCRYPTO) +- @target=$(WPTEST); $(BUILD_CMD) ++ + at target=$(WPTEST); $(BUILD_CMD) + + $(RC2TEST)$(EXE_EXT): $(RC2TEST).o $(DLIBCRYPTO) +- @target=$(RC2TEST); $(BUILD_CMD) ++ + at target=$(RC2TEST); $(BUILD_CMD) + + $(BFTEST)$(EXE_EXT): $(BFTEST).o $(DLIBCRYPTO) +- @target=$(BFTEST); $(BUILD_CMD) ++ + at target=$(BFTEST); $(BUILD_CMD) + + $(CASTTEST)$(EXE_EXT): $(CASTTEST).o $(DLIBCRYPTO) +- @target=$(CASTTEST); $(BUILD_CMD) ++ + at target=$(CASTTEST); $(BUILD_CMD) + + $(RC4TEST)$(EXE_EXT): $(RC4TEST).o $(DLIBCRYPTO) +- @target=$(RC4TEST); $(BUILD_CMD) ++ + at target=$(RC4TEST); $(BUILD_CMD) + + $(RC5TEST)$(EXE_EXT): $(RC5TEST).o $(DLIBCRYPTO) +- @target=$(RC5TEST); $(BUILD_CMD) ++ + at target=$(RC5TEST); $(BUILD_CMD) + + $(DESTEST)$(EXE_EXT): $(DESTEST).o $(DLIBCRYPTO) +- @target=$(DESTEST); $(BUILD_CMD) ++ + at target=$(DESTEST); $(BUILD_CMD) + + $(RANDTEST)$(EXE_EXT): $(RANDTEST).o $(DLIBCRYPTO) +- @target=$(RANDTEST); $(BUILD_CMD) ++ + at target=$(RANDTEST); $(BUILD_CMD) + + $(DHTEST)$(EXE_EXT): $(DHTEST).o $(DLIBCRYPTO) +- @target=$(DHTEST); $(BUILD_CMD) ++ + at target=$(DHTEST); $(BUILD_CMD) + + $(DSATEST)$(EXE_EXT): $(DSATEST).o $(DLIBCRYPTO) +- @target=$(DSATEST); $(BUILD_CMD) ++ + at target=$(DSATEST); $(BUILD_CMD) + + $(METHTEST)$(EXE_EXT): $(METHTEST).o $(DLIBCRYPTO) +- @target=$(METHTEST); $(BUILD_CMD) ++ + at target=$(METHTEST); $(BUILD_CMD) + + $(SSLTEST)$(EXE_EXT): $(SSLTEST).o $(DLIBSSL) $(DLIBCRYPTO) +- @target=$(SSLTEST); $(FIPS_BUILD_CMD) ++ + at target=$(SSLTEST); $(FIPS_BUILD_CMD) + + $(ENGINETEST)$(EXE_EXT): $(ENGINETEST).o $(DLIBCRYPTO) +- @target=$(ENGINETEST); $(BUILD_CMD) ++ + at target=$(ENGINETEST); $(BUILD_CMD) + + $(EVPTEST)$(EXE_EXT): $(EVPTEST).o $(DLIBCRYPTO) +- @target=$(EVPTEST); $(BUILD_CMD) ++ + at target=$(EVPTEST); $(BUILD_CMD) + + $(ECDSATEST)$(EXE_EXT): $(ECDSATEST).o $(DLIBCRYPTO) +- @target=$(ECDSATEST); $(BUILD_CMD) ++ + at target=$(ECDSATEST); $(BUILD_CMD) + + $(ECDHTEST)$(EXE_EXT): $(ECDHTEST).o $(DLIBCRYPTO) +- @target=$(ECDHTEST); $(BUILD_CMD) ++ + at target=$(ECDHTEST); $(BUILD_CMD) + + $(IGETEST)$(EXE_EXT): $(IGETEST).o $(DLIBCRYPTO) +- @target=$(IGETEST); $(BUILD_CMD) ++ + at target=$(IGETEST); $(BUILD_CMD) + + $(JPAKETEST)$(EXE_EXT): $(JPAKETEST).o $(DLIBCRYPTO) +- @target=$(JPAKETEST); $(BUILD_CMD) ++ + at target=$(JPAKETEST); $(BUILD_CMD) + + $(ASN1TEST)$(EXE_EXT): $(ASN1TEST).o $(DLIBCRYPTO) +- @target=$(ASN1TEST); $(BUILD_CMD) ++ + at target=$(ASN1TEST); $(BUILD_CMD) + + $(SRPTEST)$(EXE_EXT): $(SRPTEST).o $(DLIBCRYPTO) +- @target=$(SRPTEST); $(BUILD_CMD) ++ + at target=$(SRPTEST); $(BUILD_CMD) + + #$(AESTEST).o: $(AESTEST).c + # $(CC) -c $(CFLAGS) -DINTERMEDIATE_VALUE_KAT -DTRACE_KAT_MCT $(AESTEST).c +@@ -480,7 +480,7 @@ + # fi + + dummytest$(EXE_EXT): dummytest.o $(DLIBCRYPTO) +- @target=dummytest; $(BUILD_CMD) ++ + at target=dummytest; $(BUILD_CMD) + + # DO NOT DELETE THIS LINE -- make depend depends on it. + +--- a/crypto/objects/Makefile ++++ b/crypto/objects/Makefile +@@ -44,11 +44,11 @@ obj_dat.h: obj_dat.pl obj_mac.h + # objects.pl both reads and writes obj_mac.num + obj_mac.h: objects.pl objects.txt obj_mac.num + $(PERL) objects.pl objects.txt obj_mac.num obj_mac.h +- @sleep 1; touch obj_mac.h; sleep 1 + +-obj_xref.h: objxref.pl obj_xref.txt obj_mac.num ++# This doesn't really need obj_mac.h, but since that rule reads & writes ++# obj_mac.num, we can't run in parallel with it. ++obj_xref.h: objxref.pl obj_xref.txt obj_mac.num obj_mac.h + $(PERL) objxref.pl obj_mac.num obj_xref.txt > obj_xref.h +- @sleep 1; touch obj_xref.h; sleep 1 + + files: + $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO
package/openssl/openssl.mk +5 -5
@@ -95,23 +95,23 @@ define OPENSSL_CONFIGURE_CMDS endef define HOST_OPENSSL_BUILD_CMDS - $(MAKE1) -C $(@D) + $(MAKE) -C $(@D) endef define OPENSSL_BUILD_CMDS - $(MAKE1) -C $(@D) + $(MAKE) -C $(@D) endef define OPENSSL_INSTALL_STAGING_CMDS - $(MAKE1) -C $(@D) INSTALL_PREFIX=$(STAGING_DIR) install + $(MAKE) -C $(@D) INSTALL_PREFIX=$(STAGING_DIR) install endef define HOST_OPENSSL_INSTALL_CMDS - $(MAKE1) -C $(@D) install + $(MAKE) -C $(@D) install endef define OPENSSL_INSTALL_TARGET_CMDS - $(MAKE1) -C $(@D) INSTALL_PREFIX=$(TARGET_DIR) install + $(MAKE) -C $(@D) INSTALL_PREFIX=$(TARGET_DIR) install rm -rf $(TARGET_DIR)/usr/lib/ssl rm -f $(TARGET_DIR)/usr/bin/c_rehash endef
Signature · 1 line
1.7.10.4
PATCH 2/2 package/openssl: rename patches to the new convention
---
...openssl-001-do-not-build-docs.patch => 001-do-not-build-docs.patch} | 0
...002-dont-force-large-file.patch => 002-dont-force-large-file.patch} | 0
...n.patch => 003-cryptodev-Fix-issue-with-signature-generation.patch} | 0
.../openssl/{openssl-004-musl-termios.patch => 004-musl-termios.patch} | 0
.../{openssl-005-parallel-build.patch => 005-parallel-build.patch} | 0
5 files changed, 0 insertions(+), 0 deletions(-)
rename package/openssl/{openssl-001-do-not-build-docs.patch => 001-do-not-build-docs.patch} (100%)
rename package/openssl/{openssl-002-dont-force-large-file.patch => 002-dont-force-large-file.patch} (100%)
rename package/openssl/{openssl-003-cryptodev-Fix-issue-with-signature-generation.patch => 003-cryptodev-Fix-issue-with-signature-generation.patch} (100%)
rename package/openssl/{openssl-004-musl-termios.patch => 004-musl-termios.patch} (100%)
rename package/openssl/{openssl-005-parallel-build.patch => 005-parallel-build.patch} (100%)package/openssl/001-do-not-build-docs.patch renamed from package/openssl/openssl-001-do-not-build-docs.patch +0 -0
package/openssl/002-dont-force-large-file.patch renamed from package/openssl/openssl-002-dont-force-large-file.patch +0 -0
package/openssl/003-cryptodev-Fix-issue-with-signature-generation.patch renamed from package/openssl/openssl-003-cryptodev-Fix-issue-with-signature-generation.patch +0 -0
package/openssl/004-musl-termios.patch renamed from package/openssl/openssl-004-musl-termios.patch +0 -0
package/openssl/005-parallel-build.patch renamed from package/openssl/openssl-005-parallel-build.patch +0 -0
Signature · 1 line
1.7.10.4
Thomas Petazzoni
AppliedPATCH 2/2 package/openssl: rename patches to the new convention
Dear Bernd Kuhls,
Quoted 14 lines · Bernd Kuhls
Signed-off-by Bernd Kuhls <[email protected]>--- ...openssl-001-do-not-build-docs.patch => 001-do-not-build-docs.patch} | 0 ...002-dont-force-large-file.patch => 002-dont-force-large-file.patch} | 0 ...n.patch => 003-cryptodev-Fix-issue-with-signature-generation.patch} | 0 .../openssl/{openssl-004-musl-termios.patch => 004-musl-termios.patch} | 0 .../{openssl-005-parallel-build.patch => 005-parallel-build.patch} | 0 5 files changed, 0 insertions(+), 0 deletions(-) rename package/openssl/{openssl-001-do-not-build-docs.patch => 001-do-not-build-docs.patch} (100%) rename package/openssl/{openssl-002-dont-force-large-file.patch => 002-dont-force-large-file.patch} (100%) rename package/openssl/{openssl-003-cryptodev-Fix-issue-with-signature-generation.patch => 003-cryptodev-Fix-issue-with-signature-generation.patch} (100%) rename package/openssl/{openssl-004-musl-termios.patch => 004-musl-termios.patch} (100%) rename package/openssl/{openssl-005-parallel-build.patch => 005-parallel-build.patch} (100%)
Applied to next, thanks. Obviously, I've dropped the part of this patch that renames the parallel build patch, since I haven't applied PATCH 1/2 of this series.
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH 1/2 package/openssl: Enable parallel build
In reply to Bernd KuhlsDear Bernd Kuhls,
Quoted 14 lines · Bernd Kuhls
Patch taken from Gentoo, tested 50+ times on buildroot with make -j80.
Comparison of compile duration:
make -j1
real 1m24.464s user 1m8.620s sys 0m9.661smake -j80
real 0m27.774s user 1m34.234s sys 0m13.441s
Quoted 6 lines
Signed-off-by Bernd Kuhls <[email protected]>--- package/openssl/openssl-005-parallel-build.patch | 363 ++++++++++++++++++++++ package/openssl/openssl.mk | 10 +- 2 files changed, 368 insertions(+), 5 deletions(-) create mode 100644 package/openssl/openssl-005-parallel-build.patch
Unfortunately, this patch is a fairly large patch, which is more a feature patch than a real fix. Could we instead get it merged upstream?
I discussed this with Yann, and I believe Peter will agree that it's a feature patch that we shouldn't take in Buildroot. The solutions are either to take this patch upstream, or in Buildroot build in parallel and then fallback to serial build if the parallel build has failed. Something along the lines of:
$(MAKE) -C $(@D) || $(MAKE1) -C $(@D)
(Suggested by Yann).
So I'll mark this patch as rejected in patchwork.
Best regards,
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH 1/2 package/openssl: Enable parallel build
Quoted 28 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"Thomas" == Thomas Petazzoni <[email protected]> writes:
Dear Bernd Kuhls,
Quoted 14 lines · Bernd Kuhls
Patch taken from Gentoo, tested 50+ times on buildroot with make -j80.
Comparison of compile duration:
make -j1
real 1m24.464s user 1m8.620s sys 0m9.661smake -j80
real 0m27.774s user 1m34.234s sys 0m13.441sQuoted 6 lines
Signed-off-by Bernd Kuhls <[email protected]>---
package/openssl/openssl-005-parallel-build.patch| 363 ++++++++++++++++++++++package/openssl/openssl.mk| 10 +-2 files changed, 368 insertions(+), 5 deletions(-)create mode 100644
package/openssl/openssl-005-parallel-build.patchUnfortunately, this patch is a fairly large patch, which is more a feature patch than a real fix. Could we instead get it merged upstream?
Quoted 8 lines
I discussed this with Yann, and I believe Peter will agree that it's a feature patch that we shouldn't take in Buildroot. The solutions are either to take this patch upstream, or in Buildroot build in parallel and then fallback to serial build if the parallel build has failed.
Something along the lines of:
$(MAKE) -C $(@D) || $(MAKE1) -C $(@D)
Yes, we discussed it on IRC, but I haven't gotten around to write an email yet.
I completely agree with the above. Considering what package it is, and the amount of trouble other distributions (E.G. the big Debian openssl issue) has had with carrying openssl patches, and the fact that the above speedup (~1 minute in the best case) is relatively small compared to the typical build time, I would also reject it until it get merged upstream.
Signature · 1 line
Bye, Peter Korsgaard
PATCH 1/2 package/openssl: Enable parallel build
In reply to Thomas PetazzoniQuoted 2 lines · Thomas Petazzoni
Unfortunately, this patch is a fairly large patch, which is more a feature patch than a real fix. Could we instead get it merged upstream?
i've tried before and only got some of it in. i could try again since upstream openssl has changed a bit.
Quoted 7 lines
I discussed this with Yann, and I believe Peter will agree that it's a feature patch that we shouldn't take in Buildroot. The solutions are either to take this patch upstream, or in Buildroot build in parallel and then fallback to serial build if the parallel build has failed. Something along the lines of:
$(MAKE) -C $(@D) || $(MAKE1) -C $(@D)
unfortunately, that is not safe. it might end up with incomplete static archives. at least, that was some of the errors we saw in the past that
made me investigate making openssl parallel safe.
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20150307/c15d7112/attachment.asc>
PATCH 1/2 package/openssl: Enable parallel build
Dear Mike Frysinger,
Quoted 2 lines · Mike Frysinger
i've tried before and only got some of it in. i could try again since upstream openssl has changed a bit.
Would be good.
Quoted 11 lines
Quoted 7 lines
I discussed this with Yann, and I believe Peter will agree that it's a feature patch that we shouldn't take in Buildroot. The solutions are either to take this patch upstream, or in Buildroot build in parallel and then fallback to serial build if the parallel build has failed. Something along the lines of:
$(MAKE) -C $(@D) || $(MAKE1) -C $(@D)unfortunately, that is not safe. it might end up with incomplete static archives. at least, that was some of the errors we saw in the past that made me investigate making openssl parallel safe.
Ah, ok. So I guess so far our only luck is to get something done by the upstream OpenSSL folks. Can you let us know the outcome of this effort?
Thanks!
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com