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/, dev-libs/beignet/files/
Date: Tue, 11 Oct 2016 00:56:47
Message-Id: 1476147386.45383ff8ce6e52da70b4e5d0c604f4dfbd6eb4e9.marecki@gentoo
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