Gentoo Archives: gentoo-commits

From: "Michał Górny" <mgorny@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: sys-devel/clang/
Date: Fri, 09 Feb 2018 16:00:22
Message-Id: 1518192000.72967e1048f2e376bd4d4432f8f3366c7a4634cc.mgorny@gentoo
1 commit: 72967e1048f2e376bd4d4432f8f3366c7a4634cc
2 Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
3 AuthorDate: Fri Feb 9 09:56:59 2018 +0000
4 Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
5 CommitDate: Fri Feb 9 16:00:00 2018 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=72967e10
7
8 sys-devel/clang: Bump to 6.0.0rc2
9
10 sys-devel/clang/Manifest | 3 +
11 sys-devel/clang/clang-6.0.0_rc2.ebuild | 302 +++++++++++++++++++++++++++++++++
12 2 files changed, 305 insertions(+)
13
14 diff --git a/sys-devel/clang/Manifest b/sys-devel/clang/Manifest
15 index 8bb6d69e0ca..174ced32783 100644
16 --- a/sys-devel/clang/Manifest
17 +++ b/sys-devel/clang/Manifest
18 @@ -1,8 +1,11 @@
19 DIST cfe-4.0.1.src.tar.xz 10933628 BLAKE2B bc1bb8875e83ccecd446a48cfa41f5c98a09d6ad24ff439a983f629711b4513b9c4bee4070f8df13b6b2a52d673b0706733a4c151ce5021a0233147debff14ac SHA512 936c9e1626b27e63a4fb11f3c0cb998eeaf9a520ad6e2bcd67cb4352e59e7781ecc700df79794f3fd70473d90b7e2ba418a39038eb0146b68e843f0705c1f964
20 DIST cfe-5.0.1.src.tar.xz 11483036 BLAKE2B c4eb54cd8271b62cf7a2219db0b599b68c00b6e574d1946220efbd1633e841796e6717d6eeb35e84a6db32a731a3285b59cedeb3b1a8f3c3c502b799fdd0a720 SHA512 6619177a2ff9934fe8b15d6aa229abb8e34d0b1a75228d9efba9393daf71d6419a7256de57b31e2f9f829f71f842118556f996e86ee076f1e0a7cd394dfd31a2
21 +DIST cfe-6.0.0rc2.src.tar.xz 11957996 BLAKE2B 65cd91d8b5591e6312f9b46c1deecca5e14db72f58830b5249ca0fbc3b0911ae5bf60c9e1e326cad6eb670d5f2a144229b4e04e5b7645e516b2a530e428cc171 SHA512 991c45ee8500bee1e7004172e2ab8fa78e3d412b1474cfb48ee6f49232afe8d2f512e2ebf148afc4f8b38cff0110e3af26bdbec2138d80592c876452a18c63fe
22 DIST clang-tools-extra-4.0.1.src.tar.xz 581788 BLAKE2B 52ca89eda6fe1e0fbbdc46e17f4067f03a9a9440dcdcc98811651087d0c9ab24dfe3eefb0b80a32ec41abe0766cb3e47031de61c4cff02b7d0e08c8fd03e3faa SHA512 ea26d926f428e62e76cf8a073e63ffe05645f6592e05d7717d5c257908870ae9217727d3e1578227b14eda5937085872463f1a8e99970256179c68b8a92e69e0
23 DIST clang-tools-extra-5.0.1.src.tar.xz 646328 BLAKE2B 472eb1e73a17564790919ec392dddcd91f131c1cbf2a5f3cab09a9f7126d4d18ec6785ffcb3c3230eec6edc90acbe2bf859367c37f62ba77d7542f4c18b925f3 SHA512 2e6a811cccd22281f7567f5626ff0484ed1fefee4a9244a717e3ccb9516dce9e7ff315044fb10e505e91c3f1c6d2774558debb9559915d053886599bcb153d7b
24 +DIST clang-tools-extra-6.0.0rc2.src.tar.xz 758068 BLAKE2B dd39e975015601a7df327acd76f5dbd46a20858d65f72e8af4b1e2a176f5c98a07c9d2db12dccef1e9127019e78d7201cf82c27c2b372bfae70f55859fca0e94 SHA512 0a09582e602603c975ec0eb95c67333fdf7985038a36053b7a63db68709a7a5a5ef4b9b2579f7c53e1c3fc39e28ee3c69e3d484f9ab2841f25abe26a84971917
25 DIST llvm-4.0.1.src.tar.xz 21065652 BLAKE2B 6327eed2d1feb108440f22d2581d1ff86c10a10c29793538d8d899c7e2dc83d3f7b147d3fd4bcce2bd2bf57c071b08c624aeafe40a3e7a3914506e7751727e6c SHA512 16adc39b34ddb628f81b171119a8e2a0e9138b25011e803ef0b688e2fbea116fc4953d3a1b61b90a98a75e33619f81566b7cb06a9a2ea4d04ac5e0eb303a2d1d
26 DIST llvm-5.0.1-manpages.tar.bz2 94004 BLAKE2B 34eb29361ad7aa881e64d1dd2992fd89ce44adafd2521284c27b6ffe7082bc7e70458204e6f34d582b704bf7c5dad93c6a6dc41fc7abc41862aab8f5ec53ed07 SHA512 3444cc8e06009f5dd2669b92af662a1049d9294c8ca0dcf45486e1dc1aaf10160860b7856d30ad70bbe5864b21d1539316e89f5237549f5653954e23baf64334
27 DIST llvm-5.0.1.src.tar.xz 23428720 BLAKE2B 3db4d33df21018d17eef0042c0d8d82a8412bd5daa99cfb5405a6ec83c5774178fa76b220e8731c2a9a64dabf898aa90fe29c685327bd63a4f078e8e94a9a77e SHA512 bee1d45fca15ce725b1f2b1339b13eb6f750a3a321cfd099075477ec25835a8ca55b5366172c4aad46592dfd8afe372349ecf264f581463d017f9cee2d63c1cb
28 +DIST llvm-6.0.0rc2.src.tar.xz 25288140 BLAKE2B 095f054ce2ccb1eee3def2b8c6cecc610c4392283062338aa20d2de33c951484a2dc6774db2727e19e879307cfc95dda2730185cde8e52f4f45851d8dd809b3e SHA512 3cb3521ba8d90bf2a90c49d753ab5e92f1e0ccfc86946f3767c06d0f276e2c4cf8ff2f984680835efbaa4dae1cd2d3a074468e547785e05a67ea55311b94a0e9
29 DIST llvm-manpages-4.0.1.tar.bz2 87981 BLAKE2B 79ffd254ee5c6e09159c954913ef820f74107d4fcea5e3ed82592dc36af8fdfbf1e850547ba8bfc20aa9a5ecdd26c50329e6a6d558ae3aa5475a930789ce3e01 SHA512 d5b3213567c25db58ef364d272314a79c311a80fc21d98c09a5540af45a8190a38f489228663fe9a9b63bf0f2b952c460c4196a8fc8d6f221619f6e7ed2fc415
30
31 diff --git a/sys-devel/clang/clang-6.0.0_rc2.ebuild b/sys-devel/clang/clang-6.0.0_rc2.ebuild
32 new file mode 100644
33 index 00000000000..514b588975b
34 --- /dev/null
35 +++ b/sys-devel/clang/clang-6.0.0_rc2.ebuild
36 @@ -0,0 +1,302 @@
37 +# Copyright 1999-2018 Gentoo Foundation
38 +# Distributed under the terms of the GNU General Public License v2
39 +
40 +EAPI=6
41 +
42 +: ${CMAKE_MAKEFILE_GENERATOR:=ninja}
43 +# (needed due to CMAKE_BUILD_TYPE != Gentoo)
44 +CMAKE_MIN_VERSION=3.7.0-r1
45 +PYTHON_COMPAT=( python2_7 )
46 +
47 +inherit cmake-utils eapi7-ver flag-o-matic llvm \
48 + multilib-minimal pax-utils prefix python-single-r1 toolchain-funcs
49 +
50 +MY_P=cfe-${PV/_/}.src
51 +EXTRA_P=clang-tools-extra-${PV/_/}.src
52 +LLVM_P=llvm-${PV/_/}.src
53 +
54 +DESCRIPTION="C language family frontend for LLVM"
55 +HOMEPAGE="https://llvm.org/"
56 +SRC_URI="http://prereleases.llvm.org/${PV/_//}/${MY_P}.tar.xz
57 + http://prereleases.llvm.org/${PV/_//}/${EXTRA_P}.tar.xz
58 + test? ( http:/pre/releases.llvm.org/${PV/_//}/${LLVM_P}.tar.xz )"
59 +# !doc? ( https://dev.gentoo.org/~mgorny/dist/llvm/llvm-${PV}-manpages.tar.bz2 )"
60 +
61 +# Keep in sync with sys-devel/llvm
62 +ALL_LLVM_TARGETS=( AArch64 AMDGPU ARM BPF Hexagon Lanai Mips MSP430
63 + NVPTX PowerPC Sparc SystemZ X86 XCore )
64 +ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
65 +LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/?}
66 +
67 +LICENSE="UoI-NCSA"
68 +SLOT="$(ver_cut 1)"
69 +KEYWORDS=""
70 +IUSE="debug default-compiler-rt default-libcxx doc +static-analyzer
71 + test xml z3 kernel_FreeBSD ${ALL_LLVM_TARGETS[*]}"
72 +RESTRICT="!test? ( test )"
73 +
74 +RDEPEND="
75 + ~sys-devel/llvm-${PV}:${SLOT}=[debug=,${LLVM_TARGET_USEDEPS// /,},${MULTILIB_USEDEP}]
76 + static-analyzer? (
77 + dev-lang/perl:*
78 + z3? ( sci-mathematics/z3:0= )
79 + )
80 + xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
81 + ${PYTHON_DEPS}"
82 +# configparser-3.2 breaks the build (3.3 or none at all are fine)
83 +DEPEND="${RDEPEND}
84 + doc? ( dev-python/sphinx )
85 + xml? ( virtual/pkgconfig )
86 + !!<dev-python/configparser-3.3.0.2
87 + ${PYTHON_DEPS}"
88 +RDEPEND="${RDEPEND}
89 + !<sys-devel/llvm-4.0.0_rc:0
90 + !sys-devel/clang:0"
91 +PDEPEND="
92 + ~sys-devel/clang-runtime-${PV}
93 + default-compiler-rt? ( =sys-libs/compiler-rt-${PV%_*}* )
94 + default-libcxx? ( sys-libs/libcxx )"
95 +
96 +REQUIRED_USE="${PYTHON_REQUIRED_USE}
97 + || ( ${ALL_LLVM_TARGETS[*]} )"
98 +
99 +# We need extra level of indirection for CLANG_RESOURCE_DIR
100 +S=${WORKDIR}/x/y/${MY_P}
101 +
102 +# least intrusive of all
103 +CMAKE_BUILD_TYPE=RelWithDebInfo
104 +
105 +PATCHES=(
106 + # add Prefix include paths for Darwin
107 + "${FILESDIR}"/5.0.1/darwin_prefix-include-paths.patch
108 +)
109 +
110 +# Multilib notes:
111 +# 1. ABI_* flags control ABIs libclang* is built for only.
112 +# 2. clang is always capable of compiling code for all ABIs for enabled
113 +# target. However, you will need appropriate crt* files (installed
114 +# e.g. by sys-devel/gcc and sys-libs/glibc).
115 +# 3. ${CHOST}-clang wrappers are always installed for all ABIs included
116 +# in the current profile (i.e. alike supported by sys-devel/gcc).
117 +#
118 +# Therefore: use sys-devel/clang[${MULTILIB_USEDEP}] only if you need
119 +# multilib clang* libraries (not runtime, not wrappers).
120 +
121 +pkg_setup() {
122 + LLVM_MAX_SLOT=${SLOT} llvm_pkg_setup
123 + python-single-r1_pkg_setup
124 +}
125 +
126 +src_unpack() {
127 + # create extra parent dir for CLANG_RESOURCE_DIR
128 + mkdir -p x/y || die
129 + cd x/y || die
130 +
131 + einfo "Unpacking ${MY_P}.tar.xz ..."
132 + tar -xf "${DISTDIR}/${MY_P}.tar.xz" || die
133 + einfo "Unpacking ${EXTRA_P}.tar.xz ..."
134 + tar -xf "${DISTDIR}/${EXTRA_P}.tar.xz" || die
135 +
136 + mv "${EXTRA_P}" "${S}"/tools/extra || die
137 + if use test; then
138 + einfo "Unpacking parts of ${LLVM_P}.tar.xz ..."
139 + tar -xf "${DISTDIR}/${LLVM_P}.tar.xz" \
140 + "${LLVM_P}"/utils/{lit,llvm-lit,unittest} || die
141 + mv "${LLVM_P}" "${WORKDIR}"/llvm || die
142 + fi
143 +
144 +# if ! use doc; then
145 +# einfo "Unpacking llvm-${PV}-manpages.tar.bz2 ..."
146 +# tar -xf "${DISTDIR}/llvm-${PV}-manpages.tar.bz2" || die
147 +# fi
148 +}
149 +
150 +src_prepare() {
151 + cmake-utils_src_prepare
152 + eprefixify lib/Frontend/InitHeaderSearch.cpp
153 +}
154 +
155 +multilib_src_configure() {
156 + local llvm_version=$(llvm-config --version) || die
157 + local clang_version=$(ver_cut 1-3 "${llvm_version}")
158 +
159 + local mycmakeargs=(
160 + # ensure that the correct llvm-config is used
161 + -DLLVM_CONFIG="$(type -P "${CHOST}-llvm-config")"
162 + -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${SLOT}"
163 + # relative to bindir
164 + -DCLANG_RESOURCE_DIR="../../../../lib/clang/${clang_version}"
165 +
166 + -DBUILD_SHARED_LIBS=ON
167 + -DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
168 + -DLLVM_BUILD_TESTS=$(usex test)
169 +
170 + # these are not propagated reliably, so redefine them
171 + -DLLVM_ENABLE_EH=ON
172 + -DLLVM_ENABLE_RTTI=ON
173 +
174 + -DCMAKE_DISABLE_FIND_PACKAGE_LibXml2=$(usex !xml)
175 + # libgomp support fails to find headers without explicit -I
176 + # furthermore, it provides only syntax checking
177 + -DCLANG_DEFAULT_OPENMP_RUNTIME=libomp
178 +
179 + # override default stdlib and rtlib
180 + -DCLANG_DEFAULT_CXX_STDLIB=$(usex default-libcxx libc++ "")
181 + -DCLANG_DEFAULT_RTLIB=$(usex default-compiler-rt compiler-rt "")
182 +
183 + -DCLANG_ENABLE_ARCMT=$(usex static-analyzer)
184 + -DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer)
185 + # z3 is not multilib-friendly
186 + -DCLANG_ANALYZER_BUILD_Z3=$(multilib_native_usex z3)
187 + )
188 + use test && mycmakeargs+=(
189 + -DLLVM_MAIN_SRC_DIR="${WORKDIR}/llvm"
190 + -DLLVM_LIT_ARGS="-vv"
191 + )
192 +
193 + if multilib_is_native_abi; then
194 + mycmakeargs+=(
195 + # normally copied from LLVM_INCLUDE_DOCS but the latter
196 + # is lacking value in stand-alone builds
197 + -DCLANG_INCLUDE_DOCS=$(usex doc)
198 + -DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=$(usex doc)
199 + )
200 + use doc && mycmakeargs+=(
201 + -DLLVM_BUILD_DOCS=ON
202 + -DLLVM_ENABLE_SPHINX=ON
203 + -DCLANG_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/html"
204 + -DCLANG-TOOLS_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/tools-extra"
205 + -DSPHINX_WARNINGS_AS_ERRORS=OFF
206 + )
207 + use z3 && mycmakeargs+=(
208 + -DZ3_INCLUDE_DIR="${EPREFIX}/usr/include/z3"
209 + )
210 + else
211 + mycmakeargs+=(
212 + -DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD=OFF
213 + )
214 + fi
215 +
216 + if tc-is-cross-compiler; then
217 + [[ -x "/usr/bin/clang-tblgen" ]] \
218 + || die "/usr/bin/clang-tblgen not found or usable"
219 + mycmakeargs+=(
220 + -DCMAKE_CROSSCOMPILING=ON
221 + -DCLANG_TABLEGEN=/usr/bin/clang-tblgen
222 + )
223 + fi
224 +
225 + # LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844
226 + use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG"
227 + cmake-utils_src_configure
228 +}
229 +
230 +multilib_src_compile() {
231 + cmake-utils_src_compile
232 +
233 + # provide a symlink for tests
234 + if [[ ! -L ${WORKDIR}/lib/clang ]]; then
235 + mkdir -p "${WORKDIR}"/lib || die
236 + ln -s "${BUILD_DIR}/$(get_libdir)/clang" "${WORKDIR}"/lib/clang || die
237 + fi
238 +}
239 +
240 +multilib_src_test() {
241 + # respect TMPDIR!
242 + local -x LIT_PRESERVES_TMP=1
243 + cmake-utils_src_make check-clang
244 + multilib_is_native_abi && cmake-utils_src_make check-clang-tools
245 +}
246 +
247 +src_install() {
248 + MULTILIB_WRAPPED_HEADERS=(
249 + /usr/include/clang/Config/config.h
250 + )
251 +
252 + multilib-minimal_src_install
253 +
254 + # Move runtime headers to /usr/lib/clang, where they belong
255 + mv "${ED%/}"/usr/include/clangrt "${ED%/}"/usr/lib/clang || die
256 + # move (remaining) wrapped headers back
257 + mv "${ED%/}"/usr/include "${ED%/}"/usr/lib/llvm/${SLOT}/include || die
258 +
259 + # Apply CHOST and version suffix to clang tools
260 + # note: we use two version components here (vs 3 in runtime path)
261 + local llvm_version=$(llvm-config --version) || die
262 + local clang_version=$(ver_cut 1-2 "${llvm_version}")
263 + local clang_full_version=$(ver_cut 1-3 "${llvm_version}")
264 + local clang_tools=( clang clang++ clang-cl clang-cpp )
265 + local abi i
266 +
267 + # cmake gives us:
268 + # - clang-X.Y
269 + # - clang -> clang-X.Y
270 + # - clang++, clang-cl, clang-cpp -> clang
271 + # we want to have:
272 + # - clang-X.Y
273 + # - clang++-X.Y, clang-cl-X.Y, clang-cpp-X.Y -> clang-X.Y
274 + # - clang, clang++, clang-cl, clang-cpp -> clang*-X.Y
275 + # also in CHOST variant
276 + for i in "${clang_tools[@]:1}"; do
277 + rm "${ED%/}/usr/lib/llvm/${SLOT}/bin/${i}" || die
278 + dosym "clang-${clang_version}" "/usr/lib/llvm/${SLOT}/bin/${i}-${clang_version}"
279 + dosym "${i}-${clang_version}" "/usr/lib/llvm/${SLOT}/bin/${i}"
280 + done
281 +
282 + # now create target symlinks for all supported ABIs
283 + for abi in $(get_all_abis); do
284 + local abi_chost=$(get_abi_CHOST "${abi}")
285 + for i in "${clang_tools[@]}"; do
286 + dosym "${i}-${clang_version}" \
287 + "/usr/lib/llvm/${SLOT}/bin/${abi_chost}-${i}-${clang_version}"
288 + dosym "${abi_chost}-${i}-${clang_version}" \
289 + "/usr/lib/llvm/${SLOT}/bin/${abi_chost}-${i}"
290 + done
291 + done
292 +
293 + # Remove unnecessary headers on FreeBSD, bug #417171
294 + if use kernel_FreeBSD; then
295 + rm "${ED}"usr/lib/clang/${clang_full_version}/include/{std,float,iso,limits,tgmath,varargs}*.h || die
296 + fi
297 +}
298 +
299 +multilib_src_install() {
300 + cmake-utils_src_install
301 +
302 + # move headers to /usr/include for wrapping & ABI mismatch checks
303 + # (also drop the version suffix from runtime headers)
304 + rm -rf "${ED%/}"/usr/include || die
305 + mv "${ED%/}"/usr/lib/llvm/${SLOT}/include "${ED%/}"/usr/include || die
306 + mv "${ED%/}"/usr/lib/llvm/${SLOT}/$(get_libdir)/clang "${ED%/}"/usr/include/clangrt || die
307 +}
308 +
309 +multilib_src_install_all() {
310 + python_fix_shebang "${ED}"
311 + if use static-analyzer; then
312 + python_optimize "${ED}"usr/lib/llvm/${SLOT}/share/scan-view
313 + fi
314 +
315 + # install pre-generated manpages
316 +# if ! use doc; then
317 +# insinto "/usr/lib/llvm/${SLOT}/share/man/man1"
318 +# doins "${WORKDIR}/x/y/llvm-${PV}-manpages/clang"/*.1
319 +# fi
320 +
321 + docompress "/usr/lib/llvm/${SLOT}/share/man"
322 + # match 'html' non-compression
323 + use doc && docompress -x "/usr/share/doc/${PF}/tools-extra"
324 + # +x for some reason; TODO: investigate
325 + use static-analyzer && fperms a-x "/usr/lib/llvm/${SLOT}/share/man/man1/scan-build.1"
326 +}
327 +
328 +pkg_postinst() {
329 + if [[ ${ROOT} == / && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
330 + eselect compiler-shadow update all
331 + fi
332 +}
333 +
334 +pkg_postrm() {
335 + if [[ ${ROOT} == / && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
336 + eselect compiler-shadow clean all
337 + fi
338 +}