summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichał Górny <mgorny@gentoo.org>2020-06-11 09:25:46 +0200
committerMichał Górny <mgorny@gentoo.org>2020-06-11 10:01:46 +0200
commit080a039de9261ab70f7d5cf92e0cfc0efb6218d1 (patch)
tree84b7bb47c3d9e604d31fa828f54e06cb42cbadf5 /dev-python/llvmlite
parentdev-python/pip: Backport endianness patch to older versions (diff)
downloadgentoo-080a039de9261ab70f7d5cf92e0cfc0efb6218d1.tar.gz
gentoo-080a039de9261ab70f7d5cf92e0cfc0efb6218d1.tar.bz2
gentoo-080a039de9261ab70f7d5cf92e0cfc0efb6218d1.zip
dev-python/llvmlite: Add LLVM 10 support
Signed-off-by: Michał Górny <mgorny@gentoo.org>
Diffstat (limited to 'dev-python/llvmlite')
-rw-r--r--dev-python/llvmlite/files/llvmlite-0.33.0-llvm-10.patch32
-rw-r--r--dev-python/llvmlite/llvmlite-0.33.0-r1.ebuild70
2 files changed, 102 insertions, 0 deletions
diff --git a/dev-python/llvmlite/files/llvmlite-0.33.0-llvm-10.patch b/dev-python/llvmlite/files/llvmlite-0.33.0-llvm-10.patch
new file mode 100644
index 000000000000..b6c4242e4459
--- /dev/null
+++ b/dev-python/llvmlite/files/llvmlite-0.33.0-llvm-10.patch
@@ -0,0 +1,32 @@
+From 87a2de4b22e141d37b796dce77a6daef243145eb Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
+Date: Thu, 11 Jun 2020 09:22:32 +0200
+Subject: [PATCH] Use std::make_unique on LLVM 10
+
+LLVM 10 removes llvm::make_unique in favor of std::make_unique.
+However, this requires C++14 and is therefore unsuitable for LLVM 9
+that forces -std=c++11. Update the code to use both conditionally.
+This fixes all issues with LLVM 10.
+---
+ ffi/linker.cpp | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/ffi/linker.cpp b/ffi/linker.cpp
+index 57bb80b..585b261 100644
+--- a/ffi/linker.cpp
++++ b/ffi/linker.cpp
+@@ -42,7 +42,11 @@ LLVMPY_LinkModules(LLVMModuleRef Dest, LLVMModuleRef Src, const char **Err)
+ auto OldDiagnosticHandler = Ctx.getDiagnosticHandler();
+
+ // set the handler to a new one
++#if LLVM_VERSION_MAJOR >= 10
++ Ctx.setDiagnosticHandler(std::make_unique<ReportNotAbortDiagnosticHandler>(errstream));
++#else
+ Ctx.setDiagnosticHandler(llvm::make_unique<ReportNotAbortDiagnosticHandler>(errstream));
++#endif
+
+ // link
+ bool failed = LLVMLinkModules2(Dest, Src);
+--
+2.27.0
+
diff --git a/dev-python/llvmlite/llvmlite-0.33.0-r1.ebuild b/dev-python/llvmlite/llvmlite-0.33.0-r1.ebuild
new file mode 100644
index 000000000000..5b5f7d1db25e
--- /dev/null
+++ b/dev-python/llvmlite/llvmlite-0.33.0-r1.ebuild
@@ -0,0 +1,70 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{6..9} )
+
+inherit distutils-r1 llvm
+
+DESCRIPTION="Python wrapper around the llvm C++ library"
+HOMEPAGE="https://llvmlite.pydata.org/"
+SRC_URI="https://github.com/numba/llvmlite/archive/v${PV/_/}.tar.gz -> ${P/_/}.gh.tar.gz"
+S=${WORKDIR}/${P/_/}
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86 ~amd64-linux ~x86-linux"
+IUSE="examples"
+
+LLVM_MAX_SLOT=10
+
+RDEPEND="
+ sys-devel/llvm:${LLVM_MAX_SLOT}
+ sys-libs/zlib:0=
+"
+DEPEND="${RDEPEND}"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-llvm-10.patch
+)
+
+src_prepare() {
+ # test_version hardcodes permitted versions
+ # test_parse* relies on exact error message
+ sed -e 's:test_version:_&:' \
+ -e 's:test_parse_bitcode_error:_&:' \
+ -i llvmlite/tests/test_binding.py || die
+
+ distutils-r1_src_prepare
+}
+
+python_configure_all() {
+ # upstream's build system is just horrible, and they ignored the PR
+ # fixing it, so let's build the shared lib properly using implicit
+ # make rules
+
+ export LDLIBS=$(llvm-config --libs all)
+ export CXXFLAGS="$(llvm-config --cxxflags) -fPIC ${CXXFLAGS}"
+ export LDFLAGS="$(llvm-config --ldflags) ${LDFLAGS}"
+
+ local files=( ffi/*.cpp )
+ emake -f - <<EOF
+ffi/libllvmlite.so: ${files[*]/.cpp/.o}
+ \$(CXX) -shared \$(CXXFLAGS) \$(LDFLAGS) -o \$@ \$^ \$(LDLIBS)
+EOF
+
+ export LLVMLITE_SKIP_LLVM_VERSION_CHECK=1
+}
+
+python_test() {
+ "${EPYTHON}" runtests.py -v || die "Tests failed under ${EPYTHON}"
+}
+
+python_install_all() {
+ distutils-r1_python_install_all
+ if use examples; then
+ dodoc -r examples
+ docompress -x /usr/share/doc/${PF}/examples
+ fi
+}