diff options
-rw-r--r-- | dev-libs/c-blosc/c-blosc-1.21.4-r1.ebuild | 57 | ||||
-rw-r--r-- | dev-libs/c-blosc/files/c-blosc-1.21.4-no-unaligned.patch | 33 |
2 files changed, 90 insertions, 0 deletions
diff --git a/dev-libs/c-blosc/c-blosc-1.21.4-r1.ebuild b/dev-libs/c-blosc/c-blosc-1.21.4-r1.ebuild new file mode 100644 index 000000000000..bfeb84b2d188 --- /dev/null +++ b/dev-libs/c-blosc/c-blosc-1.21.4-r1.ebuild @@ -0,0 +1,57 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit cmake + +DESCRIPTION="Blocking, shuffling and lossless compression library" +HOMEPAGE=" + https://www.blosc.org/ + https://github.com/Blosc/c-blosc/ +" +SRC_URI=" + https://github.com/Blosc/c-blosc/archive/v${PV}.tar.gz + -> ${P}.gh.tar.gz +" + +LICENSE="BSD" +SLOT="0/1" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux" +IUSE="+lz4 +snappy test zlib zstd" +RESTRICT="!test? ( test )" + +DEPEND=" + lz4? ( >=app-arch/lz4-1.7.5:= ) + snappy? ( app-arch/snappy:= ) + zlib? ( sys-libs/zlib:= ) + zstd? ( app-arch/zstd:= ) +" +RDEPEND=" + ${DEPEND} +" + +PATCHES=( + "${FILESDIR}"/${PN}-1.21.4-no-unaligned.patch +) + +src_configure() { + # remove bundled libs (just in case) + rm -rf internal-complibs || die + + local mycmakeargs=( + -DBUILD_STATIC=OFF + -DBUILD_TESTS=$(usex test) + -DBUILD_BENCHMARKS=OFF + -DBUILD_FUZZERS=OFF + -DDEACTIVATE_LZ4=$(usex !lz4) + -DDEACTIVATE_SNAPPY=$(usex !snappy) + -DDEACTIVATE_ZLIB=$(usex !zlib) + -DDEACTIVATE_ZSTD=$(usex !zstd) + -DPREFER_EXTERNAL_LZ4=ON + # snappy is always external + -DPREFER_EXTERNAL_ZLIB=ON + -DPREFER_EXTERNAL_ZSTD=ON + ) + cmake_src_configure +} diff --git a/dev-libs/c-blosc/files/c-blosc-1.21.4-no-unaligned.patch b/dev-libs/c-blosc/files/c-blosc-1.21.4-no-unaligned.patch new file mode 100644 index 000000000000..932df9355a99 --- /dev/null +++ b/dev-libs/c-blosc/files/c-blosc-1.21.4-no-unaligned.patch @@ -0,0 +1,33 @@ +Causes SIGBUS on armv7 (at least in jiji's arm32-on-arm64 chroot) in Pandas test +suite. Unaligned access is UB anyway. +--- a/blosc/blosc-common.h ++++ b/blosc/blosc-common.h +@@ -43,28 +43,6 @@ + */ + #if !defined(BLOSC_STRICT_ALIGN) + #define BLOSC_STRICT_ALIGN +-#if defined(__i386__) || defined(__386) || defined (__amd64) /* GNU C, Sun Studio */ +-#undef BLOSC_STRICT_ALIGN +-#elif defined(__i486__) || defined(__i586__) || defined(__i686__) /* GNU C */ +-#undef BLOSC_STRICT_ALIGN +-#elif defined(_M_IX86) || defined(_M_X64) /* Intel, MSVC */ +-#undef BLOSC_STRICT_ALIGN +-#elif defined(__386) +-#undef BLOSC_STRICT_ALIGN +-#elif defined(_X86_) /* MinGW */ +-#undef BLOSC_STRICT_ALIGN +-#elif defined(__I86__) /* Digital Mars */ +-#undef BLOSC_STRICT_ALIGN +-/* Seems like unaligned access in ARM (at least ARMv6) is pretty +- expensive, so we are going to always enforce strict alignment in ARM. +- If anybody suggest that newer ARMs are better, we can revisit this. */ +-/* #elif defined(__ARM_FEATURE_UNALIGNED) */ /* ARM, GNU C */ +-/* #undef BLOSC_STRICT_ALIGN */ +-#elif defined(_ARCH_PPC) || defined(__PPC__) +-/* Modern PowerPC systems (like POWER8) should support unaligned access +- quite efficiently. */ +-#undef BLOSC_STRICT_ALIGN +-#endif + #endif + + #if defined(__SSE2__) |