1 |
commit: 45383ff8ce6e52da70b4e5d0c604f4dfbd6eb4e9 |
2 |
Author: Marek Szuba <marecki <AT> gentoo <DOT> org> |
3 |
AuthorDate: Tue Oct 11 00:55:33 2016 +0000 |
4 |
Commit: Marek Szuba <marecki <AT> gentoo <DOT> org> |
5 |
CommitDate: Tue Oct 11 00:56:26 2016 +0000 |
6 |
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=45383ff8 |
7 |
|
8 |
dev-libs/beignet: support x11-libs/libdrm-2.4.71 |
9 |
|
10 |
This backports the upstream patch which made it to Git earlier on today to |
11 |
1.2.0. This allows Beignet to link against both stable libdrm-2.4.70 and |
12 |
unstable libdrm-2.4.71; I haven't tested earlier versions so the ebuild now |
13 |
requires >=2.4.70. |
14 |
|
15 |
Package-Manager: portage-2.3.1 |
16 |
|
17 |
dev-libs/beignet/beignet-1.2.0-r1.ebuild | 101 +++++++++++++++++++++ |
18 |
.../beignet-1.2.0-drm_intel_get_pooled_eu.patch | 23 +++++ |
19 |
2 files changed, 124 insertions(+) |
20 |
|
21 |
diff --git a/dev-libs/beignet/beignet-1.2.0-r1.ebuild b/dev-libs/beignet/beignet-1.2.0-r1.ebuild |
22 |
new file mode 100644 |
23 |
index 00000000..67c4cb1 |
24 |
--- /dev/null |
25 |
+++ b/dev-libs/beignet/beignet-1.2.0-r1.ebuild |
26 |
@@ -0,0 +1,101 @@ |
27 |
+# Copyright 1999-2016 Gentoo Foundation |
28 |
+# Distributed under the terms of the GNU General Public License v2 |
29 |
+# $Id$ |
30 |
+ |
31 |
+EAPI=6 |
32 |
+ |
33 |
+PYTHON_COMPAT=( python2_7 ) |
34 |
+CMAKE_BUILD_TYPE="Release" |
35 |
+ |
36 |
+inherit python-any-r1 cmake-multilib flag-o-matic toolchain-funcs |
37 |
+ |
38 |
+DESCRIPTION="OpenCL implementation for Intel GPUs" |
39 |
+HOMEPAGE="https://01.org/beignet" |
40 |
+ |
41 |
+LICENSE="LGPL-2.1+" |
42 |
+SLOT="0" |
43 |
+ |
44 |
+if [[ "${PV}" == "9999" ]]; then |
45 |
+ inherit git-r3 |
46 |
+ EGIT_REPO_URI="git://anongit.freedesktop.org/beignet" |
47 |
+ KEYWORDS="" |
48 |
+else |
49 |
+ KEYWORDS="~amd64" |
50 |
+ SRC_URI="https://01.org/sites/default/files/${P}-source.tar.gz" |
51 |
+ S=${WORKDIR}/Beignet-${PV}-Source |
52 |
+fi |
53 |
+ |
54 |
+COMMON="${PYTHON_DEPS} |
55 |
+ media-libs/mesa |
56 |
+ sys-devel/clang |
57 |
+ >=sys-devel/llvm-3.5 |
58 |
+ <sys-devel/llvm-3.9 |
59 |
+ >=x11-libs/libdrm-2.4.70[video_cards_intel] |
60 |
+ x11-libs/libXext |
61 |
+ x11-libs/libXfixes" |
62 |
+RDEPEND="${COMMON} |
63 |
+ app-eselect/eselect-opencl" |
64 |
+DEPEND="${COMMON} |
65 |
+ ${PYTHON_DEPS} |
66 |
+ virtual/pkgconfig" |
67 |
+ |
68 |
+PATCHES=( |
69 |
+ "${FILESDIR}"/no-debian-multiarch.patch |
70 |
+ "${FILESDIR}"/${P}_no-hardcoded-cflags.patch |
71 |
+ "${FILESDIR}"/llvm-terminfo.patch |
72 |
+ "${FILESDIR}"/${P}-drm_intel_get_pooled_eu.patch |
73 |
+) |
74 |
+ |
75 |
+DOCS=( |
76 |
+ docs/. |
77 |
+) |
78 |
+ |
79 |
+pkg_pretend() { |
80 |
+ if [[ ${MERGE_TYPE} != "binary" ]]; then |
81 |
+ if tc-is-gcc; then |
82 |
+ if [[ $(gcc-major-version) -eq 4 ]] && [[ $(gcc-minor-version) -lt 6 ]]; then |
83 |
+ eerror "Compilation with gcc older than 4.6 is not supported" |
84 |
+ die "Too old gcc found." |
85 |
+ fi |
86 |
+ fi |
87 |
+ fi |
88 |
+} |
89 |
+ |
90 |
+pkg_setup() { |
91 |
+ python_setup |
92 |
+} |
93 |
+ |
94 |
+src_prepare() { |
95 |
+ # See Bug #593968 |
96 |
+ append-flags -fPIC |
97 |
+ |
98 |
+ cmake-utils_src_prepare |
99 |
+ # We cannot run tests because they require permissions to access |
100 |
+ # the hardware, and building them is very time-consuming. |
101 |
+ cmake_comment_add_subdirectory utests |
102 |
+} |
103 |
+ |
104 |
+multilib_src_configure() { |
105 |
+ VENDOR_DIR="/usr/$(get_libdir)/OpenCL/vendors/${PN}" |
106 |
+ |
107 |
+ local mycmakeargs=( |
108 |
+ -DCMAKE_INSTALL_PREFIX="${VENDOR_DIR}" |
109 |
+ ) |
110 |
+ |
111 |
+ cmake-utils_src_configure |
112 |
+} |
113 |
+ |
114 |
+multilib_src_install() { |
115 |
+ VENDOR_DIR="/usr/$(get_libdir)/OpenCL/vendors/${PN}" |
116 |
+ |
117 |
+ cmake-utils_src_install |
118 |
+ |
119 |
+ insinto /etc/OpenCL/vendors/ |
120 |
+ echo "${VENDOR_DIR}/lib/${PN}/libcl.so" > "${PN}-${ABI}.icd" || die "Failed to generate ICD file" |
121 |
+ doins "${PN}-${ABI}.icd" |
122 |
+ |
123 |
+ dosym "lib/${PN}/libcl.so" "${VENDOR_DIR}"/libOpenCL.so.1 |
124 |
+ dosym "lib/${PN}/libcl.so" "${VENDOR_DIR}"/libOpenCL.so |
125 |
+ dosym "lib/${PN}/libcl.so" "${VENDOR_DIR}"/libcl.so.1 |
126 |
+ dosym "lib/${PN}/libcl.so" "${VENDOR_DIR}"/libcl.so |
127 |
+} |
128 |
|
129 |
diff --git a/dev-libs/beignet/files/beignet-1.2.0-drm_intel_get_pooled_eu.patch b/dev-libs/beignet/files/beignet-1.2.0-drm_intel_get_pooled_eu.patch |
130 |
new file mode 100644 |
131 |
index 00000000..9ffaee0 |
132 |
--- /dev/null |
133 |
+++ b/dev-libs/beignet/files/beignet-1.2.0-drm_intel_get_pooled_eu.patch |
134 |
@@ -0,0 +1,23 @@ |
135 |
+diff --git a/src/intel/intel_driver.c b/src/intel/intel_driver.c |
136 |
+index 5f4afda..cf8f829 100644 |
137 |
+--- a/src/intel/intel_driver.c |
138 |
++++ b/src/intel/intel_driver.c |
139 |
+@@ -958,14 +958,14 @@ intel_update_device_info(cl_device_id device) |
140 |
+ |
141 |
+ #ifdef HAS_POOLED_EU |
142 |
+ /* BXT pooled eu, 3*6 to 2*9, like sub slice count is 2 */ |
143 |
+- unsigned int has_pooled_eu = 0; |
144 |
+- if(!drm_intel_get_pooled_eu(driver->fd, &has_pooled_eu) && has_pooled_eu) |
145 |
++ int has_pooled_eu; |
146 |
++ if((has_pooled_eu = drm_intel_get_pooled_eu(driver->fd)) > 0) |
147 |
+ device->sub_slice_count = 2; |
148 |
+ |
149 |
+ #ifdef HAS_MIN_EU_IN_POOL |
150 |
+- unsigned int min_eu; |
151 |
++ int min_eu; |
152 |
+ /* for fused down 2x6 devices, beignet don't support. */ |
153 |
+- if (has_pooled_eu && !drm_intel_get_min_eu_in_pool(driver->fd, &min_eu)) { |
154 |
++ if (has_pooled_eu > 0 && (min_eu = drm_intel_get_min_eu_in_pool(driver->fd)) > 0) { |
155 |
+ assert(min_eu == 9); //don't support fuse down device. |
156 |
+ } |
157 |
+ #endif //HAS_MIN_EU_IN_POOL |