diff --git a/main/snappy/APKBUILD b/main/snappy/APKBUILD index 40cd04dba7fc3a6698ec54530eb199f9e06c43d5..950f54722fc5d3be6be74bd4104091572ffd8538 100644 --- a/main/snappy/APKBUILD +++ b/main/snappy/APKBUILD @@ -1,8 +1,9 @@ # Contributor: Natanael Copa <ncopa@alpinelinux.org> # Maintainer: Natanael Copa <ncopa@alpinelinux.org> pkgname=snappy -pkgver=1.1.8 -pkgrel=2 +pkgver=1.1.9 +pkgrel=0 +_googletest_commit=18f8200e3079b0e54fa00cb7ac55d4c39dcf6da6 pkgdesc="Fast compression and decompression library" url="https://google.github.io/snappy/" arch="all" @@ -10,15 +11,22 @@ license="BSD-3-Clause" makedepends="cmake" subpackages="$pkgname-dbg $pkgname-static $pkgname-dev $pkgname-doc" source="$pkgname-$pkgver.tar.gz::https://github.com/google/snappy/archive/$pkgver.tar.gz - optimize-mips-s390x.patch + googletest-$_googletest_commit.tar.gz::https://github.com/google/googletest/archive/$_googletest_commit.tar.gz cmakelists.patch + fix-inline.patch " +prepare() { + rmdir third_party/googletest + ln -s "$srcdir"/googletest-$_googletest_commit third_party/googletest + default_prepare +} + build() { if [ "$CBUILD" != "$CHOST" ]; then CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux" fi - cmake \ + cmake -B build \ -DCMAKE_BUILD_TYPE=None \ -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=/usr/lib \ @@ -26,16 +34,27 @@ build() { -DBUILD_STATIC_LIBS=ON \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ - ${CMAKE_CROSSOPTS} . - cmake --build . + -DSNAPPY_BUILD_BENCHMARKS=OFF \ + -DSNAPPY_BUILD_TESTS=ON \ + $CMAKE_CROSSOPTS + cmake --build build } check() { - ctest --verbose + cd build && ctest --verbose } package() { - make DESTDIR="$pkgdir" install + DESTDIR="$pkgdir" cmake --install build + + # clean-up + rm -r \ + "$pkgdir"/usr/include/gmock \ + "$pkgdir"/usr/include/gtest \ + "$pkgdir"/usr/lib/libgmock* \ + "$pkgdir"/usr/lib/libgtest* \ + "$pkgdir"/usr/lib/cmake/GTest \ + "$pkgdir"/usr/lib/pkgconfig local file; for file in AUTHORS CONTRIBUTING.md COPYING NEWS README.md \ format_description.txt framing_format.txt; do @@ -43,6 +62,9 @@ package() { done } -sha512sums="efe18ff1b3edda1b4b6cefcbc6da8119c05d63afdbf7a784f3490353c74dced76baed7b5f1aa34b99899729192b9d657c33c76de4b507a51553fa8001ae75c1c snappy-1.1.8.tar.gz -a14b0159631beac628cf99cf9ad970631dfdbf607ca2c3911a64124d1133694689dc76a70f25d4f780ce7093584249905aec2926ef7a3d9350952f7648938392 optimize-mips-s390x.patch -6a379a1bd026282d98d5f2ffd316e126d5383b7c32852f81102c7a2aa0754e0c5567f82766dbd72b62552ef8a9569795c5f667387d3f1b2c9ef2bfffc578de18 cmakelists.patch" +sha512sums=" +f1f8a90f5f7f23310423574b1d8c9acb84c66ea620f3999d1060395205e5760883476837aba02f0aa913af60819e34c625d8308c18a5d7a9c4e190f35968b024 snappy-1.1.9.tar.gz +f77c747218dc5ae4858b2b4c58a401eb895493adf470a331d6bac32cd20542533ff3a77081db653bbc18b9f55f6864be04e1739ef4afaed7db39d7c698abf880 googletest-18f8200e3079b0e54fa00cb7ac55d4c39dcf6da6.tar.gz +8a891edf2f0b267b05c67d54945f11d723b058ddab5ac3f27b4f00678759d4a52b617d0c5724c7170a285eb068ffa4ffbbc5a9efa250964979b3969fc8730eb3 cmakelists.patch +47aca85575dc53ed9cee127285e0545200d22c789a2bd8f03bb9a8cd93168b1b9b990c092d0b340122f800d2e4eafd0b718f04d09bc16ff4fe08cebb98daf741 fix-inline.patch +" diff --git a/main/snappy/cmakelists.patch b/main/snappy/cmakelists.patch index 40704452b372b1a61c36292e86004597a3eccb37..9c168534dd5f198b3f5bf50bf309c8fb3a80b703 100644 --- a/main/snappy/cmakelists.patch +++ b/main/snappy/cmakelists.patch @@ -1,6 +1,6 @@ --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -41,6 +41,8 @@ +@@ -86,6 +86,8 @@ # it prominent in the GUI. option(BUILD_SHARED_LIBS "Build shared libraries(DLLs)." OFF) @@ -8,8 +8,8 @@ + option(SNAPPY_BUILD_TESTS "Build Snappy's own tests." ON) - option(SNAPPY_FUZZING_BUILD "Build Snappy for fuzzing." OFF) -@@ -51,6 +53,10 @@ + option(SNAPPY_BUILD_BENCHMARKS "Build Snappy's benchmarks" ON) +@@ -98,6 +100,10 @@ option(SNAPPY_INSTALL "Install Snappy's header and library" ON) @@ -20,7 +20,7 @@ include(TestBigEndian) test_big_endian(SNAPPY_IS_BIG_ENDIAN) -@@ -166,19 +172,28 @@ +@@ -213,19 +219,28 @@ "snappy-stubs-public.h.in" "${PROJECT_BINARY_DIR}/snappy-stubs-public.h") @@ -54,7 +54,7 @@ $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/snappy-c.h> $<INSTALL_INTERFACE:include/snappy-c.h> $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/snappy-sinksource.h> -@@ -186,18 +201,32 @@ +@@ -233,18 +248,32 @@ $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/snappy.h> $<INSTALL_INTERFACE:include/snappy.h> $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/snappy-stubs-public.h> diff --git a/main/snappy/fix-inline.patch b/main/snappy/fix-inline.patch new file mode 100644 index 0000000000000000000000000000000000000000..96484e03fecdc3dec26c473a1cc440d4f20642b7 --- /dev/null +++ b/main/snappy/fix-inline.patch @@ -0,0 +1,13 @@ +Patch-Source: https://github.com/google/snappy/pull/128 + +--- a/snappy.cc ++++ b/snappy.cc +@@ -1014,7 +1014,7 @@ + } + + SNAPPY_ATTRIBUTE_ALWAYS_INLINE +-size_t AdvanceToNextTag(const uint8_t** ip_p, size_t* tag) { ++inline size_t AdvanceToNextTag(const uint8_t** ip_p, size_t* tag) { + const uint8_t*& ip = *ip_p; + // This section is crucial for the throughput of the decompression loop. + // The latency of an iteration is fundamentally constrained by the diff --git a/main/snappy/optimize-mips-s390x.patch b/main/snappy/optimize-mips-s390x.patch deleted file mode 100644 index 07c95096aeb46bb6f123aa8bb982065acaaea1c7..0000000000000000000000000000000000000000 --- a/main/snappy/optimize-mips-s390x.patch +++ /dev/null @@ -1,80 +0,0 @@ -diff --git a/snappy-stubs-internal.h b/snappy-stubs-internal.h -index f834bdb..22407ef 100644 ---- a/snappy-stubs-internal.h -+++ b/snappy-stubs-internal.h -@@ -123,7 +123,7 @@ static const int64 kint64max = static_cast<int64>(0x7FFFFFFFFFFFFFFFLL); - // x86, PowerPC, and ARM64 can simply do these loads and stores native. - - #if defined(__i386__) || defined(__x86_64__) || defined(__powerpc__) || \ -- defined(__aarch64__) -+ defined(__aarch64__) || defined(__s390x__) - - #define UNALIGNED_LOAD16(_p) (*reinterpret_cast<const uint16 *>(_p)) - #define UNALIGNED_LOAD32(_p) (*reinterpret_cast<const uint32 *>(_p)) -@@ -150,6 +150,8 @@ static const int64 kint64max = static_cast<int64>(0x7FFFFFFFFFFFFFFFLL); - // (it ignores __attribute__((packed)) on individual variables). However, - // we can tell it that a _struct_ is unaligned, which has the same effect, - // so we do that. -+// -+// On pre-R6 MIPS just let the compiler use LWL/LWR, SWL/SWR etc. - - #elif defined(__arm__) && \ - !defined(__ARM_ARCH_4__) && \ -@@ -163,7 +165,8 @@ static const int64 kint64max = static_cast<int64>(0x7FFFFFFFFFFFFFFFLL); - !defined(__ARM_ARCH_6K__) && \ - !defined(__ARM_ARCH_6Z__) && \ - !defined(__ARM_ARCH_6ZK__) && \ -- !defined(__ARM_ARCH_6T2__) -+ !defined(__ARM_ARCH_6T2__) || \ -+ (defined(__mips__) && (!defined(__mips_isa_rev) || __mips_isa_rev < 6)) - - #if __GNUC__ - #define ATTRIBUTE_PACKED __attribute__((__packed__)) -@@ -184,6 +187,11 @@ struct Unaligned32Struct { - uint8 dummy; // To make the size non-power-of-two. - } ATTRIBUTE_PACKED; - -+struct Unaligned64Struct { -+ uint64 value; -+ uint8 dummy; // To make the size non-power-of-two. -+} ATTRIBUTE_PACKED; -+ - } // namespace internal - } // namespace base - -@@ -203,6 +211,7 @@ struct Unaligned32Struct { - // See if that would be more efficient on platforms supporting it, - // at least for copies. - -+#ifndef __mips__ - inline uint64 UNALIGNED_LOAD64(const void *p) { - uint64 t; - memcpy(&t, p, sizeof t); -@@ -212,6 +221,13 @@ inline uint64 UNALIGNED_LOAD64(const void *p) { - inline void UNALIGNED_STORE64(void *p, uint64 v) { - memcpy(p, &v, sizeof v); - } -+#else -+#define UNALIGNED_LOAD64(_p) \ -+ ((reinterpret_cast<const ::snappy::base::internal::Unaligned64Struct *>(_p))->value) -+#define UNALIGNED_STORE64(_p, _val) \ -+ ((reinterpret_cast< ::snappy::base::internal::Unaligned64Struct *>(_p))->value = \ -+ (_val)) -+#endif - - #else - -@@ -274,6 +290,13 @@ inline void UNALIGNED_STORE64(void *p, uint64 v) { - #define bswap_32(x) OSSwapInt32(x) - #define bswap_64(x) OSSwapInt64(x) - -+#elif defined(__GNUC__) -+/* musl provides suboptimal (generic) bswap_xx implementations in <byteswap.h> */ -+ -+#define bswap_16 __builtin_bswap16 -+#define bswap_32 __builtin_bswap32 -+#define bswap_64 __builtin_bswap64 -+ - #elif defined(HAVE_BYTESWAP_H) - #include <byteswap.h> -