commit:     020699fb8aa0e91e444e98910fe035ef6bd1cd6c
Author:     Ian Moone <csmk+gentoo <AT> chaoslab <DOT> org>
AuthorDate: Wed May  9 19:06:29 2018 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri May 11 09:43:13 2018 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=020699fb

www-servers/h2o: fix build with LibreSSL 2.7

- LibreSSL 2.7 implements OpenSSL 1.1 API
- Use patch from upstream: h2o/h2o#1706

Closes: https://github.com/gentoo/gentoo/pull/8329
Package-Manager: Portage-2.3.36, Repoman-2.3.9

 www-servers/h2o/files/h2o-2.2.4-libressl.patch | 54 ++++++++++++++++++++++++++
 www-servers/h2o/h2o-2.2.4.ebuild               |  2 +
 2 files changed, 56 insertions(+)

diff --git a/www-servers/h2o/files/h2o-2.2.4-libressl.patch 
b/www-servers/h2o/files/h2o-2.2.4-libressl.patch
new file mode 100644
index 00000000000..3849dd0e2b6
--- /dev/null
+++ b/www-servers/h2o/files/h2o-2.2.4-libressl.patch
@@ -0,0 +1,54 @@
+--- a/include/h2o/openssl_backport.h
++++ b/include/h2o/openssl_backport.h
+@@ -25,7 +25,7 @@
+ #include <stdlib.h>
+
+ /* backports for OpenSSL 1.0.2 */
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || (defined(LIBRESSL_VERSION_NUMBER) 
&& LIBRESSL_VERSION_NUMBER < 0x2070000fL)
+
+ #define BIO_get_data(bio) ((bio)->ptr)
+ #define BIO_set_data(bio, p) ((bio)->ptr = (p))
+@@ -57,7 +58,7 @@ static inline BIO_METHOD *BIO_meth_new(int type, const char 
*name)
+ #endif
+
+ /* backports for OpenSSL 1.0.1 and LibreSSL */
+-#if OPENSSL_VERSION_NUMBER < 0x10002000L || defined(LIBRESSL_VERSION_NUMBER)
++#if OPENSSL_VERSION_NUMBER < 0x10002000L || (defined(LIBRESSL_VERSION_NUMBER) 
&& LIBRESSL_VERSION_NUMBER < 0x2070000fL)
+
+ #define SSL_is_server(ssl) ((ssl)->server)
+
+--- a/deps/neverbleed/neverbleed.c
++++ b/deps/neverbleed/neverbleed.c
+@@ -547,7 +547,7 @@ static int sign_stub(struct expbuf_t *buf)
+     return 0;
+ }
+
+-#if !OPENSSL_1_1_API
++#if !OPENSSL_1_1_API && (!defined(LIBRESSL_VERSION_NUMBER) || 
LIBRESSL_VERSION_NUMBER < 0x2070000fL)
+
+ static void RSA_get0_key(const RSA *rsa, const BIGNUM **n, const BIGNUM **e, 
const BIGNUM **d)
+ {
+
+--- a/deps/picotls/lib/openssl.c
++++ b/deps/picotls/lib/openssl.c
+@@ -41,13 +41,15 @@
+ #include "picotls.h"
+ #include "picotls/openssl.h"
+
+-#if (OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER))
+-#define OPENSSL_1_0_API 1
++#if !defined(LIBRESSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER >= 0x10100000L
++#define OPENSSL_1_1_API 1
++#elif defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER >= 
0x2070000fL
++#define OPENSSL_1_1_API 1
+ #else
+-#define OPENSSL_1_0_API 0
++#define OPENSSL_1_1_API 0
+ #endif
+
+-#if OPENSSL_1_0_API
++#if !OPENSSL_1_1_API
+
+ #define EVP_PKEY_up_ref(p) CRYPTO_add(&(p)->references, 1, 
CRYPTO_LOCK_EVP_PKEY)
+ #define X509_STORE_up_ref(p) CRYPTO_add(&(p)->references, 1, 
CRYPTO_LOCK_X509_STORE)

diff --git a/www-servers/h2o/h2o-2.2.4.ebuild b/www-servers/h2o/h2o-2.2.4.ebuild
index d33e39efe54..ab022fd4783 100644
--- a/www-servers/h2o/h2o-2.2.4.ebuild
+++ b/www-servers/h2o/h2o-2.2.4.ebuild
@@ -25,6 +25,8 @@ DEPEND="${RDEPEND}
                ${RUBY_DEPS}
        )"
 
+PATCHES=( "${FILESDIR}"/${P}-libressl.patch )
+
 pkg_setup() {
        enewgroup h2o
        enewuser h2o -1 -1 -1 h2o

Reply via email to