Files
buildroot/package/luvi/0001-Selectively-disable-GCC-diagnostics-in-ocsp.c.patch
Romain Naour 00317f0aff package/luvi: bump to version 2.15.0
Luvi 2.14.0 fails to build with GCC 14.x for several reasons due to
too old lua-openssl 0.8.2-0 submodule:

TestLuvi/build/luvi-2.14.0/deps/lua-openssl/src/ocsp.c: In function 'openssl_ocsp_request_read':
TestLuvi/build/luvi-2.14.0/deps/lua-openssl/src/ocsp.c:124:29: error: passing argument 1 of 'PEM_ASN1_read_bio' from incompatible pointer type [-Wincompatible-pointer-types]
  124 |   OCSP_REQUEST *req = pem ? PEM_read_bio_OCSP_REQUEST(bio, NULL, NULL)
      |                             ^~~~~~~~~~~~~~~~~~~~~~~~~
      |                             |
      |                             char * (*)()

Fixed in lua-openssl by [1].

TestLuvi/build/luvi-2.14.0/deps/lua-openssl/src/x509.c: In function 'openssl_push_general_name':
TestLuvi/build/luvi-2.14.0/deps/lua-openssl/src/x509.c:377:45: error: passing argument 2 of 'openssl_push_asn1type' from incompatible pointer type [-Wincompatible-pointer-types]
  377 |     openssl_push_asn1type(L, general_name->d.x400Address);
      |                              ~~~~~~~~~~~~~~~^~~~~~~~~~~~
      |                                             |
      |                                             ASN1_STRING * {aka struct asn1_string_st *}

Fixed in lua-openssl by [2].

TestLuvi/build/luvi-2.14.0/deps/lua-openssl/src/openssl.c: In function 'luaclose_openssl':
TestLuvi/build/luvi-2.14.0/deps/lua-openssl/src/stdatomic.h:387:9: error: implicit declaration of function '__c11_atomic_fetch_sub'; did you mean '__atomic_fetch_sub'? [-Wimplicit-function-declaration]
  387 |         __c11_atomic_fetch_sub(object, operand, order)

Fixed in lua-openssl by [3].

Instead of fixing one by one each issues, update to the latest release
that include lua-openssl 0.9.0-0. Luvi v2.15.0 still have some GCC 14.x
issues, backport two additional patches.

Download luvi sources using git method since the release archive
no longer include the release version in its name [4].

Luvi switched to PCRE2 [5], update the optional dependency.

Update TestLuvi to select PCR2 package.

Fixes:
https://gitlab.com/buildroot.org/buildroot/-/jobs/11271124430 (TestLuvi)

[1] bfeedbe8c0
[2] e5b5420cc5
[3] cfcaa16d1a
[4] https://github.com/luvit/luvi/releases/download/v2.15.0/luvi-source.tar.gz
[5] https://github.com/luvit/luvi/releases/tag/v2.15.0

Signed-off-by: Romain Naour <romain.naour@smile.fr>
Signed-off-by: Julien Olivain <ju.o@free.fr>
2025-09-14 23:12:15 +02:00

81 lines
2.4 KiB
Diff

From 52bc36f5a548543835c24b87e7b7b72a327b1df7 Mon Sep 17 00:00:00 2001
From: RDW <duckwhale@mail.ru>
Date: Sun, 14 Sep 2025 00:33:10 +0200
Subject: [PATCH] Selectively disable GCC diagnostics in ocsp.c
GCC 14 fails to compile the library because -Wincompatible-pointer-types is now fatal.
Since the warning is already disabled for clang here, might as well include GCC also.
Needless to say, this is a workaround and a proper fix would require upstream changes.
Upstream: https://github.com/zhaozg/lua-openssl/commit/bfeedbe8c06d8b4400fa670edecd452a433ddac4
[Romain:
- rebase on lua-openssl 0.9.0-0
- format the patch as luvi patch (patching lua-openssl submodule)
]
Signed-off-by: Romain Naour <romain.naour@smile.fr>
---
deps/lua-openssl/src/ocsp.c | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
diff --git a/deps/lua-openssl/src/ocsp.c b/deps/lua-openssl/src/ocsp.c
index ac67a53..00e3b61 100644
--- a/deps/lua-openssl/src/ocsp.c
+++ b/deps/lua-openssl/src/ocsp.c
@@ -183,15 +183,26 @@ static int openssl_ocsp_request_read(lua_State *L)
BIO *bio = load_bio_object(L, 1);
int pem = lua_gettop(L) > 1 ? auxiliar_checkboolean(L, 2) : 0;
+#if defined(__GNUC__)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wincompatible-pointer-types"
+#endif
+
#if defined(__clang__)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wincompatible-pointer-types"
#endif
OCSP_REQUEST *req = pem ? PEM_read_bio_OCSP_REQUEST(bio, NULL, NULL)
: d2i_OCSP_REQUEST_bio(bio, NULL);
+
+#if defined(__GNUC__)
+#pragma GCC diagnostic pop
+#endif
+
#if defined(__clang__)
#pragma clang diagnostic pop
#endif
+
BIO_free(bio);
if (req)
@@ -359,15 +370,26 @@ static int openssl_ocsp_response_read(lua_State *L)
int pem = lua_gettop(L) > 1 ? auxiliar_checkboolean(L, 2) : 0;
int ret = 0;
+#if defined(__GNUC__)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wincompatible-pointer-types"
+#endif
+
#if defined(__clang__)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wincompatible-pointer-types"
#endif
OCSP_RESPONSE *res = pem ? PEM_read_bio_OCSP_RESPONSE(bio, NULL, NULL)
: d2i_OCSP_RESPONSE_bio(bio, NULL);
+
+#if defined(__GNUC__)
+#pragma GCC diagnostic pop
+#endif
+
#if defined(__clang__)
#pragma clang diagnostic pop
#endif
+
if (res)
{
PUSH_OBJECT(res, "openssl.ocsp_response");
--
2.51.0