From 3b62593394b72c411d075e6c1f9af47e7f5db626 Mon Sep 17 00:00:00 2001 From: Piotr Wojnarowski Date: Mon, 11 May 2026 00:41:41 +0200 Subject: [PATCH] Fix Nettle 4 compatibility --- .SRCINFO | 2 ++ PKGBUILD | 9 ++++++++ nettle-4-digest-api.patch | 48 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 59 insertions(+) create mode 100644 nettle-4-digest-api.patch diff --git a/.SRCINFO b/.SRCINFO index d8831ad..6239896 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -28,7 +28,9 @@ pkgbase = rom-properties makedepends = tinyxml2 options = !debug source = rom-properties-2.7.1.tar.gz::https://github.com/GerbilSoft/rom-properties/archive/v2.7.1.tar.gz + source = nettle-4-digest-api.patch sha256sums = 6856e3ad88720d0571e82fcac64c0c51605f8ddfbd942130ee5a6e688a2bc399 + sha256sums = f647ce0c460c05b1956b787804d0defef2771b71d2f64010a05f586c3d6fad10 pkgname = rom-properties depends = curl diff --git a/PKGBUILD b/PKGBUILD index 7ec53e2..7641331 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -33,13 +33,22 @@ makedepends=( ) source=( "$pkgbase-$pkgver.tar.gz::https://github.com/GerbilSoft/rom-properties/archive/v$pkgver.tar.gz" + 'nettle-4-digest-api.patch' ) sha256sums=( '6856e3ad88720d0571e82fcac64c0c51605f8ddfbd942130ee5a6e688a2bc399' + 'f647ce0c460c05b1956b787804d0defef2771b71d2f64010a05f586c3d6fad10' ) options=(!debug) +prepare() { + cd "$pkgbase-$pkgver" + + patch -Np1 -i "$srcdir/nettle-4-digest-api.patch" +} + + build() { cd "$pkgbase-$pkgver" diff --git a/nettle-4-digest-api.patch b/nettle-4-digest-api.patch new file mode 100644 index 0000000..88cc5c8 --- /dev/null +++ b/nettle-4-digest-api.patch @@ -0,0 +1,48 @@ +diff --git a/src/librpbase/crypto/HashNettle.cpp b/src/librpbase/crypto/HashNettle.cpp +index b2cd045a5..65e81709a 100644 +--- a/src/librpbase/crypto/HashNettle.cpp ++++ b/src/librpbase/crypto/HashNettle.cpp +@@ -17,6 +17,7 @@ + # include + # include + # include ++# include + #endif /* ENABLE_DECRYPTION */ + + // C++ STL classes +@@ -24,6 +25,14 @@ using std::array; + + namespace LibRpBase { + ++#ifdef ENABLE_DECRYPTION ++#if NETTLE_VERSION_MAJOR >= 4 ++# define RP_NETTLE_DIGEST(func, ctx, length, digest) func((ctx), (digest)) ++#else /* NETTLE_VERSION_MAJOR < 4 */ ++# define RP_NETTLE_DIGEST(func, ctx, length, digest) func((ctx), (length), (digest)) ++#endif /* NETTLE_VERSION_MAJOR >= 4 */ ++#endif /* ENABLE_DECRYPTION */ ++ + class HashPrivate + { + public: +@@ -222,16 +232,16 @@ int Hash::getHash(uint8_t *pHash, size_t hash_len) + } + #ifdef ENABLE_DECRYPTION + case Algorithm::MD5: +- md5_digest(&d->ctx.md5, hash_len, pHash); ++ RP_NETTLE_DIGEST(md5_digest, &d->ctx.md5, expected_hash_len, pHash); + break; + case Algorithm::SHA1: +- sha1_digest(&d->ctx.sha1, hash_len, pHash); ++ RP_NETTLE_DIGEST(sha1_digest, &d->ctx.sha1, expected_hash_len, pHash); + break; + case Algorithm::SHA256: +- sha256_digest(&d->ctx.sha256, hash_len, pHash); ++ RP_NETTLE_DIGEST(sha256_digest, &d->ctx.sha256, expected_hash_len, pHash); + break; + case Algorithm::SHA512: +- sha512_digest(&d->ctx.sha512, hash_len, pHash); ++ RP_NETTLE_DIGEST(sha512_digest, &d->ctx.sha512, expected_hash_len, pHash); + break; + #endif /* ENABLE_DECRYPTION */ + } -- 2.54.0