From 080a039de9261ab70f7d5cf92e0cfc0efb6218d1 Mon Sep 17 00:00:00 2001 From: Michał Górny Date: Thu, 11 Jun 2020 09:25:46 +0200 Subject: dev-python/llvmlite: Add LLVM 10 support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Michał Górny --- .../llvmlite/files/llvmlite-0.33.0-llvm-10.patch | 32 ++++++++++ dev-python/llvmlite/llvmlite-0.33.0-r1.ebuild | 70 ++++++++++++++++++++++ 2 files changed, 102 insertions(+) create mode 100644 dev-python/llvmlite/files/llvmlite-0.33.0-llvm-10.patch create mode 100644 dev-python/llvmlite/llvmlite-0.33.0-r1.ebuild (limited to 'dev-python/llvmlite') 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?= +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(errstream)); ++#else + Ctx.setDiagnosticHandler(llvm::make_unique(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 - <