summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'dev-libs')
-rw-r--r--dev-libs/libressl/files/libressl-2.8.3-solaris10.patch69
-rw-r--r--dev-libs/libressl/libressl-2.8.3.ebuild5
-rw-r--r--dev-libs/libressl/libressl-2.9.0.ebuild5
3 files changed, 77 insertions, 2 deletions
diff --git a/dev-libs/libressl/files/libressl-2.8.3-solaris10.patch b/dev-libs/libressl/files/libressl-2.8.3-solaris10.patch
new file mode 100644
index 000000000000..20a0af0800bd
--- /dev/null
+++ b/dev-libs/libressl/files/libressl-2.8.3-solaris10.patch
@@ -0,0 +1,69 @@
+From libressl Thu Jul 21 09:25:08 2016
+From: schily () schily ! net (Joerg Schilling)
+Date: Thu, 21 Jul 2016 09:25:08 +0000
+To: libressl
+Subject: Non-portable code in ./crypto/compat/getentropy_solaris.c
+Message-Id: <579094f4.Ca9M384ri4oiBOIa%schily () schily ! net>
+X-MARC-Message: https://marc.info/?l=libressl&m=146910737815443
+
+Hi,
+
+the code works only on Solaris based on OpenSolaris-ON from February 18 2010 or
+later.
+
+Many people however still use Solaris 10.
+
+BTW: there is an official portable ELF way based on the AUX vector to do the same
+but this was unfortunately not made a public libc interface, so it would need to
+be incorporated into your code:
+
+https://sourceforge.net/p/schillix-on/schillix-on/ci/default/tree/usr/src/lib/libc/port/gen/getauxv.c
+
+___getauxptr(AT_PHDR) returns the address of &phdr[0]
+___getauxval(AT_PHENT) returns sizeof(phdr[0])
+___getauxval(AT_PHNUM) returns # phdr entries
+
+
+Here is a patch to disable the non-portable code getting the code to compile at
+all:
+
+
+
+--- a/crypto/compat/getentropy_solaris.c
++++ b/crypto/compat/getentropy_solaris.c
+@@ -72,7 +72,9 @@
+ static int getentropy_urandom(void *buf, size_t len, const char *path,
+ int devfscheck);
+ static int getentropy_fallback(void *buf, size_t len);
++#ifdef ElfW
+ static int getentropy_phdr(struct dl_phdr_info *info, size_t size, void *data);
++#endif
+
+ int
+ getentropy(void *buf, size_t len)
+@@ -244,6 +246,7 @@
+ #endif
+ };
+
++#ifdef ElfW
+ static int
+ getentropy_phdr(struct dl_phdr_info *info, size_t size, void *data)
+ {
+@@ -252,6 +255,7 @@
+ SHA512_Update(ctx, &info->dlpi_addr, sizeof (info->dlpi_addr));
+ return (0);
+ }
++#endif
+
+ static int
+ getentropy_fallback(void *buf, size_t len)
+@@ -290,7 +294,9 @@
+ cnt += (int)tv.tv_usec;
+ }
+
++#ifdef ElfW
+ dl_iterate_phdr(getentropy_phdr, &ctx);
++#endif
+
+ for (ii = 0; ii < sizeof(cl)/sizeof(cl[0]); ii++)
+ HX(clock_gettime(cl[ii], &ts) == -1, ts);
diff --git a/dev-libs/libressl/libressl-2.8.3.ebuild b/dev-libs/libressl/libressl-2.8.3.ebuild
index 22b9aef5d690..b438e7c15cac 100644
--- a/dev-libs/libressl/libressl-2.8.3.ebuild
+++ b/dev-libs/libressl/libressl-2.8.3.ebuild
@@ -3,7 +3,7 @@
EAPI=6
-inherit multilib-minimal
+inherit multilib-minimal libtool
DESCRIPTION="Free version of the SSL/TLS protocol forked from OpenSSL"
HOMEPAGE="https://www.libressl.org/"
@@ -34,7 +34,10 @@ src_prepare() {
-e '/^[ \t]*USER_CFLAGS=/s#-O2"#"#' \
configure || die "fixing CFLAGS failed"
+ eapply "${FILESDIR}"/${P}-solaris10.patch
eapply_user
+
+ elibtoolize # for Solaris
}
multilib_src_configure() {
diff --git a/dev-libs/libressl/libressl-2.9.0.ebuild b/dev-libs/libressl/libressl-2.9.0.ebuild
index f7db72c59351..9356bf70659e 100644
--- a/dev-libs/libressl/libressl-2.9.0.ebuild
+++ b/dev-libs/libressl/libressl-2.9.0.ebuild
@@ -3,7 +3,7 @@
EAPI=6
-inherit multilib-minimal
+inherit multilib-minimal libtool
DESCRIPTION="Free version of the SSL/TLS protocol forked from OpenSSL"
HOMEPAGE="https://www.libressl.org/"
@@ -34,7 +34,10 @@ src_prepare() {
-e '/^[ \t]*USER_CFLAGS=/s#-O2"#"#' \
configure || die "fixing CFLAGS failed"
+ eapply "${FILESDIR}"/${PN}-2.8.3-solaris10.patch
eapply_user
+
+ elibtoolize # for Solaris
}
multilib_src_configure() {