From df79ac6ebda43f3ec1b398650c9fa82c4d681617 Mon Sep 17 00:00:00 2001 From: Yingjie Wang Date: Wed, 31 Dec 2025 03:56:24 -0500 Subject: [PATCH] new blfs: dev-libs/libevent-2.1.12 --- dev-libs/libevent-2.1.12.PKGBUILD | 40 ++++++++++ .../libevent-2.1.12-openssl-compat.patch | 75 +++++++++++++++++++ 2 files changed, 115 insertions(+) create mode 100644 dev-libs/libevent-2.1.12.PKGBUILD create mode 100644 dev-libs/libevent-2.1.12/libevent-2.1.12-openssl-compat.patch diff --git a/dev-libs/libevent-2.1.12.PKGBUILD b/dev-libs/libevent-2.1.12.PKGBUILD new file mode 100644 index 0000000..1c27851 --- /dev/null +++ b/dev-libs/libevent-2.1.12.PKGBUILD @@ -0,0 +1,40 @@ +pkgname=libevent +pkgver=2.1.12 +pkgdesc="Event notification library" +homepage="https://libevent.org/" +arch=(x86_64) +license=(BSD-3-Clause-Modification) +sources=("${pkgname}-${pkgver}-stable.tar.gz" + "libevent-2.1.12-openssl-compat.patch" +) +urls=("https://github.com/libevent/libevent/releases/download/release-${pkgver}-stable/${sources[0]}" + "libevent-2.1.12-openssl-compat.patch" +) +md5sums=("b5333f021f880fe76490d8a799cd79f4" + "09ad6d62f6d7861c20df28a8a0ede1e0" +) + +src_prepare() { + tar -xf ${distdir}/${sources[0]} --strip-components=1 + patch -p1 -i ${filedir}/${sources[1]} + sed -i 's/python/&3/' event_rpcgen.py +} + +src_build() { + ./configure --prefix=/usr \ + --disable-static \ + --disable-libevent-regress # skip regress tests, following Arch + make +} + +src_check() { + make verify +} + +src_install() { + make DESTDIR="${pkgdir}" install + install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 LICENSE +} + + +# vim:ft=sh syn=sh et sw=2: diff --git a/dev-libs/libevent-2.1.12/libevent-2.1.12-openssl-compat.patch b/dev-libs/libevent-2.1.12/libevent-2.1.12-openssl-compat.patch new file mode 100644 index 0000000..a16d9ab --- /dev/null +++ b/dev-libs/libevent-2.1.12/libevent-2.1.12-openssl-compat.patch @@ -0,0 +1,75 @@ +commit 7f4684c0d362fefee8697ceed3f4f8642ed147ce +Author: William Marlow +Date: Sat Jun 18 21:43:31 2022 +0100 + + Initial OpenSSL 3.0 support + + * Don't use deprecated functions when building against OpenSSL 3.0. + * Recognise that OpenSSL 3.0 can signal a dirty shutdown as a protocol. + error in addition to the expected IO error produced by OpenSSL 1.1.1 + * Update regress_mbedtls.c for compatibility with OpenSSL 3 + + (cherry picked from commit 29c420c418aeb497e5e8b7abd45dee39194ca5fc) + + Conflicts: + bufferevent_openssl.c + sample/becat.c + test/regress_mbedtls.c + +diff --git a/bufferevent_openssl.c b/bufferevent_openssl.c +index b51b834b..520e2d6f 100644 +--- a/bufferevent_openssl.c ++++ b/bufferevent_openssl.c +@@ -514,7 +514,9 @@ conn_closed(struct bufferevent_openssl *bev_ssl, int when, int errcode, int ret) + put_error(bev_ssl, errcode); + break; + case SSL_ERROR_SSL: +- /* Protocol error. */ ++ /* Protocol error; possibly a dirty shutdown. */ ++ if (ret == 0 && SSL_is_init_finished(bev_ssl->ssl) == 0) ++ dirty_shutdown = 1; + put_error(bev_ssl, errcode); + break; + case SSL_ERROR_WANT_X509_LOOKUP: +diff --git a/sample/le-proxy.c b/sample/le-proxy.c +index 13e0e2ae..e9af3c68 100644 +--- a/sample/le-proxy.c ++++ b/sample/le-proxy.c +@@ -112,10 +112,15 @@ eventcb(struct bufferevent *bev, short what, void *ctx) + ERR_reason_error_string(err); + const char *lib = (const char*) + ERR_lib_error_string(err); ++#if OPENSSL_VERSION_MAJOR >= 3 ++ fprintf(stderr, ++ "%s in %s\n", msg, lib); ++#else + const char *func = (const char*) + ERR_func_error_string(err); + fprintf(stderr, + "%s in %s %s\n", msg, lib, func); ++#endif + } + if (errno) + perror("connection error"); +diff --git a/test/regress_ssl.c b/test/regress_ssl.c +index 37dc334d..490be9b2 100644 +--- a/test/regress_ssl.c ++++ b/test/regress_ssl.c +@@ -374,7 +374,16 @@ eventcb(struct bufferevent *bev, short what, void *ctx) + ++n_connected; + ssl = bufferevent_openssl_get_ssl(bev); + tt_assert(ssl); ++#if OPENSSL_VERSION_MAJOR >= 3 ++ /* SSL_get1_peer_certificate() means we want ++ * to increase the reference count on the cert ++ * and so we will need to free it ourselves later ++ * when we're done with it. The non-reference count ++ * increasing version is not available in OpenSSL 1.1.1. */ ++ peer_cert = SSL_get1_peer_certificate(ssl); ++#else + peer_cert = SSL_get_peer_certificate(ssl); ++#endif + if (type & REGRESS_OPENSSL_SERVER) { + tt_assert(peer_cert == NULL); + } else { +