Gentoo Archives: gentoo-commits

From: Marek Szuba <marecki@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: dev-libs/beignet/files/, dev-libs/beignet/
Date: Wed, 11 Jul 2018 10:07:48
Message-Id: 1531303657.f6b57af58d4fed1bb3144aa11e12abc7652754cd.marecki@gentoo
1 commit: f6b57af58d4fed1bb3144aa11e12abc7652754cd
2 Author: Marek Szuba <marecki <AT> gentoo <DOT> org>
3 AuthorDate: Wed Jul 11 10:06:08 2018 +0000
4 Commit: Marek Szuba <marecki <AT> gentoo <DOT> org>
5 CommitDate: Wed Jul 11 10:07:37 2018 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=f6b57af5
7
8 dev-libs/beignet: support LLVM-6
9
10 Uses an unofficial patch from Arch Linux. Seems to work fine.
11
12 Suggested-by: Hanno Meyer-Thurow <h.mth <AT> web.de>
13 Closes: https://bugs.gentoo.org/show_bug.cgi?id=658794
14 Package-Manager: Portage-2.3.40, Repoman-2.3.9
15
16 dev-libs/beignet/beignet-1.3.2-r1.ebuild | 106 +++++++++++++++++++++++
17 dev-libs/beignet/files/beignet-1.3.2_llvm6.patch | 27 ++++++
18 2 files changed, 133 insertions(+)
19
20 diff --git a/dev-libs/beignet/beignet-1.3.2-r1.ebuild b/dev-libs/beignet/beignet-1.3.2-r1.ebuild
21 new file mode 100644
22 index 00000000000..c562b68c13b
23 --- /dev/null
24 +++ b/dev-libs/beignet/beignet-1.3.2-r1.ebuild
25 @@ -0,0 +1,106 @@
26 +# Copyright 1999-2018 Gentoo Foundation
27 +# Distributed under the terms of the GNU General Public License v2
28 +
29 +EAPI=6
30 +
31 +PYTHON_COMPAT=( python{2_7,3_4,3_5,3_6} )
32 +CMAKE_BUILD_TYPE="Release"
33 +
34 +inherit python-any-r1 cmake-multilib flag-o-matic llvm toolchain-funcs
35 +
36 +DESCRIPTION="OpenCL implementation for Intel GPUs"
37 +HOMEPAGE="https://01.org/beignet"
38 +
39 +LICENSE="LGPL-2.1+"
40 +SLOT="0"
41 +IUSE="ocl-icd ocl20"
42 +
43 +if [[ "${PV}" == "9999" ]]; then
44 + inherit git-r3
45 + EGIT_REPO_URI="https://anongit.freedesktop.org/git/beignet.git"
46 + KEYWORDS=""
47 +else
48 + KEYWORDS="~amd64"
49 + SRC_URI="https://01.org/sites/default/files/${P}-source.tar.gz"
50 + S=${WORKDIR}/Beignet-${PV}-Source
51 +fi
52 +
53 +COMMON="media-libs/mesa[${MULTILIB_USEDEP}]
54 + <sys-devel/clang-6.0.9999:=[${MULTILIB_USEDEP}]
55 + >=x11-libs/libdrm-2.4.70[video_cards_intel,${MULTILIB_USEDEP}]
56 + x11-libs/libXext[${MULTILIB_USEDEP}]
57 + x11-libs/libXfixes[${MULTILIB_USEDEP}]"
58 +RDEPEND="${COMMON}
59 + app-eselect/eselect-opencl"
60 +DEPEND="${COMMON}
61 + ${PYTHON_DEPS}
62 + ocl-icd? ( dev-libs/ocl-icd )
63 + virtual/pkgconfig"
64 +
65 +LLVM_MAX_SLOT=6
66 +
67 +PATCHES=(
68 + "${FILESDIR}"/no-debian-multiarch.patch
69 + "${FILESDIR}"/${PN}-1.3.2_cmake-llvm-config-multilib.patch
70 + "${FILESDIR}"/${PN}-1.3.2_llvm6.patch
71 + "${FILESDIR}"/${PN}-1.3.1-oclicd_no_upstream_icdfile.patch
72 + "${FILESDIR}"/${PN}-1.2.0_no-hardcoded-cflags.patch
73 + "${FILESDIR}"/llvm-terminfo.patch
74 +)
75 +
76 +DOCS=(
77 + docs/.
78 +)
79 +
80 +pkg_pretend() {
81 + if [[ ${MERGE_TYPE} != "binary" ]]; then
82 + if tc-is-gcc; then
83 + if [[ $(gcc-major-version) -eq 4 ]] && [[ $(gcc-minor-version) -lt 6 ]]; then
84 + eerror "Compilation with gcc older than 4.6 is not supported"
85 + die "Too old gcc found."
86 + fi
87 + fi
88 + fi
89 +}
90 +
91 +pkg_setup() {
92 + llvm_pkg_setup
93 + python_setup
94 +}
95 +
96 +src_prepare() {
97 + # See Bug #593968
98 + append-flags -fPIC
99 +
100 + cmake-utils_src_prepare
101 + # We cannot run tests because they require permissions to access
102 + # the hardware, and building them is very time-consuming.
103 + cmake_comment_add_subdirectory utests
104 +}
105 +
106 +multilib_src_configure() {
107 + VENDOR_DIR="/usr/$(get_libdir)/OpenCL/vendors/${PN}"
108 +
109 + local mycmakeargs=(
110 + -DCMAKE_INSTALL_PREFIX="${VENDOR_DIR}"
111 + -DOCLICD_COMPAT=$(usex ocl-icd)
112 + $(usex ocl20 "" "-DENABLE_OPENCL_20=OFF")
113 + )
114 +
115 + cmake-utils_src_configure
116 +}
117 +
118 +multilib_src_install() {
119 + VENDOR_DIR="/usr/$(get_libdir)/OpenCL/vendors/${PN}"
120 +
121 + cmake-utils_src_install
122 +
123 + insinto /etc/OpenCL/vendors/
124 + echo "${VENDOR_DIR}/lib/${PN}/libcl.so" > "${PN}-${ABI}.icd" || die "Failed to generate ICD file"
125 + doins "${PN}-${ABI}.icd"
126 +
127 + dosym "lib/${PN}/libcl.so" "${VENDOR_DIR}"/libOpenCL.so.1
128 + dosym "lib/${PN}/libcl.so" "${VENDOR_DIR}"/libOpenCL.so
129 + dosym "lib/${PN}/libcl.so" "${VENDOR_DIR}"/libcl.so.1
130 + dosym "lib/${PN}/libcl.so" "${VENDOR_DIR}"/libcl.so
131 +}
132
133 diff --git a/dev-libs/beignet/files/beignet-1.3.2_llvm6.patch b/dev-libs/beignet/files/beignet-1.3.2_llvm6.patch
134 new file mode 100644
135 index 00000000000..be3ccbc4432
136 --- /dev/null
137 +++ b/dev-libs/beignet/files/beignet-1.3.2_llvm6.patch
138 @@ -0,0 +1,27 @@
139 +--- a/backend/src/llvm/llvm_to_gen.cpp
140 ++++ b/backend/src/llvm/llvm_to_gen.cpp
141 +@@ -322,7 +322,11 @@ namespace gbe
142 + DataLayout DL(&mod);
143 +
144 + gbeDiagnosticContext dc;
145 ++#if LLVM_VERSION_MAJOR >= 6
146 ++ mod.getContext().setDiagnosticHandlerCallBack(&gbeDiagnosticHandler,&dc);
147 ++#else
148 + mod.getContext().setDiagnosticHandler(&gbeDiagnosticHandler,&dc);
149 ++#endif
150 +
151 + #if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 37
152 + mod.setDataLayout(DL);
153 +--- a/backend/src/llvm/llvm_unroll.cpp
154 ++++ b/backend/src/llvm/llvm_unroll.cpp
155 +@@ -205,7 +205,9 @@ namespace gbe {
156 + if (parentTripCount != 0 && currTripCount * parentTripCount > 32) {
157 + //Don't change the unrollID if doesn't force unroll.
158 + //setUnrollID(parentL, false);
159 +-#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 38
160 ++#if LLVM_VERSION_MAJOR >= 6
161 ++ loopInfo.erase(parentL);
162 ++#elif LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 38
163 + loopInfo.markAsRemoved(parentL);
164 + #else
165 + LPM.deleteLoopFromQueue(parentL);