Skip to contentSkip to conversation

package/openssl: Enable parallel build

PATCH New Bernd Kuhls 4 participants 7 messages Nov 16, 2014 – Mar 8, 2015

lore
Share & tools
lore
#0 lore raw

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
new file mode 100644
index 0000000..8ac8402
@@ -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
index 7e30cad..47b6414 100644
@@ -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
#1 lore raw

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
similarity index 100%
rename from package/openssl/openssl-001-do-not-build-docs.patch
rename to package/openssl/001-do-not-build-docs.patch
package/openssl/002-dont-force-large-file.patch renamed from package/openssl/openssl-002-dont-force-large-file.patch +0 -0
similarity index 100%
rename from package/openssl/openssl-002-dont-force-large-file.patch
rename to package/openssl/002-dont-force-large-file.patch
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
similarity index 100%
rename from package/openssl/openssl-003-cryptodev-Fix-issue-with-signature-generation.patch
rename to package/openssl/003-cryptodev-Fix-issue-with-signature-generation.patch
package/openssl/004-musl-termios.patch renamed from package/openssl/openssl-004-musl-termios.patch +0 -0
similarity index 100%
rename from package/openssl/openssl-004-musl-termios.patch
rename to package/openssl/004-musl-termios.patch
package/openssl/005-parallel-build.patch renamed from package/openssl/openssl-005-parallel-build.patch +0 -0
similarity index 100%
rename from package/openssl/openssl-005-parallel-build.patch
rename to package/openssl/005-parallel-build.patch
Signature · 1 line
1.7.10.4
#2 lore raw

PATCH 2/2 package/openssl: rename patches to the new convention

Dear Bernd Kuhls,

Quoted 14 lines · Bernd Kuhls
---
 ...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
#3 lore raw

PATCH 1/2 package/openssl: Enable parallel build

In reply to Bernd Kuhls

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.661s

make -j80

real    0m27.774s
user    1m34.234s
sys     0m13.441s
Quoted 6 lines
---
 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
#4 lore raw

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.661s

make -j80

real    0m27.774s
user    1m34.234s
sys     0m13.441s
Quoted 6 lines

---
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?

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
#5 lore raw

PATCH 1/2 package/openssl: Enable parallel build

In reply to Thomas Petazzoni
Quoted 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>

#6 lore raw

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