1 |
commit: 8c985cde69b8ea7384e1aead73a21230ec6345d4 |
2 |
Author: Matthew Smith <matthew <AT> gentoo <DOT> org> |
3 |
AuthorDate: Fri Aug 19 17:50:30 2022 +0000 |
4 |
Commit: Matthew Smith <matthew <AT> gentoo <DOT> org> |
5 |
CommitDate: Fri Aug 19 17:55:13 2022 +0000 |
6 |
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=8c985cde |
7 |
|
8 |
sys-devel/mold: add 1.4.1 |
9 |
|
10 |
Also switch to new CMake build system, and add a (currently masked) |
11 |
USE-flag to switch between vendored and system tbb. |
12 |
|
13 |
Signed-off-by: Matthew Smith <matthew <AT> gentoo.org> |
14 |
|
15 |
profiles/base/package.use.mask | 5 + |
16 |
sys-devel/mold/Manifest | 1 + |
17 |
sys-devel/mold/files/mold-1.4.1-glob-tests.patch | 296 +++++++++++++++++++++++ |
18 |
sys-devel/mold/metadata.xml | 3 + |
19 |
sys-devel/mold/mold-1.4.1.ebuild | 103 ++++++++ |
20 |
5 files changed, 408 insertions(+) |
21 |
|
22 |
diff --git a/profiles/base/package.use.mask b/profiles/base/package.use.mask |
23 |
index 349d75049ba3..c1cdde4e768a 100644 |
24 |
--- a/profiles/base/package.use.mask |
25 |
+++ b/profiles/base/package.use.mask |
26 |
@@ -6,6 +6,11 @@ |
27 |
# This file is only for generic masks. For arch-specific masks (i.e. |
28 |
# mask everywhere, unmask on arch/*) use arch/base. |
29 |
|
30 |
+# Matthew Smith <matthew@g.o> (2022-08-19) |
31 |
+# Upstream recommends that tbb be built with a patch to avoid bugs. |
32 |
+# https://github.com/rui314/mold/releases/tag/v1.4.1 |
33 |
+sys-devel/mold system-tbb |
34 |
+ |
35 |
# John Helmert III <ajak@g.o> (2022-08-14) |
36 |
# libaacplus is last rited |
37 |
media-sound/darkice aacplus |
38 |
|
39 |
diff --git a/sys-devel/mold/Manifest b/sys-devel/mold/Manifest |
40 |
index 180c8cf53493..de469cd16390 100644 |
41 |
--- a/sys-devel/mold/Manifest |
42 |
+++ b/sys-devel/mold/Manifest |
43 |
@@ -1,2 +1,3 @@ |
44 |
DIST mold-1.3.1.tar.gz 4692379 BLAKE2B e34e9416cfc65d2097c4659ddc205a0c4492e50a1c6e4560006757e5c371d27410e38131f353cd0ee60b124e5fe42b0a1c50cdc3a7bed9f666596e608340e4fd SHA512 f576d2fcfee5cb3bade5ba24dcdd3020a16131ce7d4c3a00c3f92b94785ed86f3f040a6f5814b9c975c4c3d90a2b8c36a8101d5fbf1bc0a4be316f4a4a6dcefa |
45 |
DIST mold-1.4.0.tar.gz 4722082 BLAKE2B 65ac52724018f5df82ca40b287a5f3b2c3e4b6b313ef2573bfd0ed6d03054d92b9e1e52cbdad1930406cff232c4b952c33a16979968502c439b860bd782726a9 SHA512 7b7c4a7bac6bbc6e22372d93d94a6cb804c7017eba16b90e9bbc42b9608108c724ef55337aabdd9ce2f5244b94c8fd64311e70e18b5f8cf5f68533c2639e550d |
46 |
+DIST mold-1.4.1.tar.gz 6280266 BLAKE2B 60d0a876e0bcc8f644e4b6fffe0de14299bf2bd6e382869c87761d725dca6efa874cac37aaf94ad85038c5a24521ed3582782be943236ab81c2e4b66e6002f5e SHA512 304caf4e9d9b24170a9442a84036790407bd02609a5d07c31e5f0f6285128099cbc962571804636a5da55afda59b447c12218f9e4d402fbfa55ebc354814bdda |
47 |
|
48 |
diff --git a/sys-devel/mold/files/mold-1.4.1-glob-tests.patch b/sys-devel/mold/files/mold-1.4.1-glob-tests.patch |
49 |
new file mode 100644 |
50 |
index 000000000000..ad9dda565323 |
51 |
--- /dev/null |
52 |
+++ b/sys-devel/mold/files/mold-1.4.1-glob-tests.patch |
53 |
@@ -0,0 +1,296 @@ |
54 |
+From 60070e0c1352a1cc6b02a0d1a30c657368a033c3 Mon Sep 17 00:00:00 2001 |
55 |
+From: Rui Ueyama <ruiu@×××××××××.systems> |
56 |
+Date: Fri, 19 Aug 2022 20:05:26 +0800 |
57 |
+Subject: [PATCH] Simplify |
58 |
+ |
59 |
+--- |
60 |
+ test/elf/CMakeLists.txt | 265 +------------------------------------- |
61 |
+ test/macho/CMakeLists.txt | 100 +------------- |
62 |
+ 2 files changed, 6 insertions(+), 359 deletions(-) |
63 |
+ |
64 |
+diff --git a/test/elf/CMakeLists.txt b/test/elf/CMakeLists.txt |
65 |
+index 5d15d6cb..138e8205 100644 |
66 |
+--- a/test/elf/CMakeLists.txt |
67 |
++++ b/test/elf/CMakeLists.txt |
68 |
+@@ -1,269 +1,12 @@ |
69 |
+-set(MOLD_ELF_TESTS |
70 |
+- absolute-symbols |
71 |
+- allow-multiple-definition |
72 |
+- ar-alignment |
73 |
+- arm32-thumb-interwork |
74 |
+- as-needed |
75 |
+- as-needed-weak |
76 |
+- as-needed2 |
77 |
+- auxiliary |
78 |
+- basic |
79 |
+- bno-symbolic |
80 |
+- bsymbolic |
81 |
+- bsymbolic-functions |
82 |
+- bug178 |
83 |
+- build-id |
84 |
+- canonical-plt |
85 |
+- cmdline |
86 |
+- color-diagnostics |
87 |
+- comment |
88 |
+- common |
89 |
+- common-archive |
90 |
+- common-ref |
91 |
+- compress-debug-sections |
92 |
+- compressed-debug-info |
93 |
+- compressed-debug-info-gnu |
94 |
+- copyrel |
95 |
+- copyrel-protected |
96 |
+- copyrel-relro |
97 |
+- dead-debug-sections |
98 |
+- debug-macro-section |
99 |
+- default-symver |
100 |
+- defsym |
101 |
+- defsym2 |
102 |
+- demangle |
103 |
+- demangle-rust |
104 |
+- dependency-file |
105 |
+- disable-new-dtags |
106 |
+- discard |
107 |
+- dso-undef |
108 |
+- dt-init |
109 |
+- dt-needed |
110 |
+- duplicate-error |
111 |
+- dynamic |
112 |
+- dynamic-dt-debug |
113 |
+- dynamic-linker |
114 |
+- dynamic-list |
115 |
+- dynamic-list2 |
116 |
+- dynamic-list3 |
117 |
+- emit-relocs |
118 |
+- empty-file |
119 |
+- empty-input |
120 |
+- empty-version |
121 |
+- emulation-deduction |
122 |
+- entry |
123 |
+- exception |
124 |
+- exception-mcmodel-large |
125 |
+- exclude-libs |
126 |
+- exclude-libs2 |
127 |
+- exclude-libs3 |
128 |
+- execstack |
129 |
+- execstack-if-needed |
130 |
+- export-dynamic |
131 |
+- export-from-exe |
132 |
+- fatal-warnings |
133 |
+- filler |
134 |
+- filter |
135 |
+- func-addr |
136 |
+- gc-sections |
137 |
+- gdb-index-compress-output |
138 |
+- gdb-index-dwarf2 |
139 |
+- gdb-index-dwarf3 |
140 |
+- gdb-index-dwarf4 |
141 |
+- gdb-index-dwarf5 |
142 |
+- gdb-index-empty |
143 |
+- glibc-2.22-bug |
144 |
+- gnu-hash |
145 |
+- gnu-linkonce |
146 |
+- gnu-retain |
147 |
+- gnu-unique |
148 |
+- gnu-warning |
149 |
+- hello-dynamic |
150 |
+- hello-static |
151 |
+- help |
152 |
+- hidden-undef |
153 |
+- icf |
154 |
+- icf-small |
155 |
+- ifunc-dso |
156 |
+- ifunc-dynamic |
157 |
+- ifunc-export |
158 |
+- ifunc-static |
159 |
+- ifunc-static-pie |
160 |
+- image-base |
161 |
+- incompatible-libs |
162 |
+- incompatible-libs2 |
163 |
+- incompatible-obj |
164 |
+- init |
165 |
+- init-array |
166 |
+- init-array-priorities |
167 |
+- init-array-readonly |
168 |
+- init-in-dso |
169 |
+- initfirst |
170 |
+- interpose |
171 |
+- invalid-version-script |
172 |
+- large-alignment |
173 |
+- large-alignment-dso |
174 |
+- link-order |
175 |
+- linker-script |
176 |
+- linker-script-defsym |
177 |
+- linker-script2 |
178 |
+- linker-script3 |
179 |
+- linker-script4 |
180 |
+- lto-archive |
181 |
+- lto-dso |
182 |
+- lto-gcc |
183 |
+- lto-llvm |
184 |
+- lto-version-script |
185 |
+- many-sections |
186 |
+- mergeable-records |
187 |
+- mergeable-strings |
188 |
+- missing-but-ok |
189 |
+- missing-error |
190 |
+- mold-wrapper |
191 |
+- mold-wrapper2 |
192 |
+- no-quick-exit |
193 |
+- nocopyreloc |
194 |
+- noinhibit-exec |
195 |
+- non-canonical-plt |
196 |
+- nostdlib |
197 |
+- note |
198 |
+- note-property |
199 |
+- note2 |
200 |
+- now |
201 |
+- oformat-binary |
202 |
+- omagic |
203 |
+- pack-dyn-relocs-relr |
204 |
+- package-metadata |
205 |
+- pie |
206 |
+- plt |
207 |
+- plt-dso |
208 |
+- pltgot |
209 |
+- preinit-array |
210 |
+- print-dependencies |
211 |
+- protected |
212 |
+- protected-dynsym |
213 |
+- push-pop-state |
214 |
+- relax |
215 |
+- reloc |
216 |
+- reloc-overflow |
217 |
+- reloc-rodata |
218 |
+- reloc-zero |
219 |
+- relocatable |
220 |
+- relocatable-archive |
221 |
+- relro |
222 |
+- repro |
223 |
+- require-defined |
224 |
+- response-file |
225 |
+- retain-symbols-file |
226 |
+- reverse-sections |
227 |
+- rodata-name |
228 |
+- rosegment |
229 |
+- rpath |
230 |
+- run |
231 |
+- run-clang |
232 |
+- section-alignment |
233 |
+- section-name |
234 |
+- section-start |
235 |
+- shared |
236 |
+- shuffle-sections |
237 |
+- shuffle-sections-seed |
238 |
+- soname |
239 |
+- start-lib |
240 |
+- start-stop-symbol |
241 |
+- static-archive |
242 |
+- static-pie |
243 |
+- stdout |
244 |
+- strip |
245 |
+- symbol-rank |
246 |
+- symbol-version |
247 |
+- symbol-version2 |
248 |
+- symbol-version3 |
249 |
+- symtab |
250 |
+- symtab-dso |
251 |
+- symtab-section-symbols |
252 |
+- synthetic-symbols |
253 |
+- sysroot |
254 |
+- sysroot-linker-script |
255 |
+- sysroot2 |
256 |
+- thin-archive |
257 |
+- thread-count |
258 |
+- tls-common |
259 |
+- tls-dso |
260 |
+- tls-gd |
261 |
+- tls-gd-mcmodel-large |
262 |
+- tls-gd-noplt |
263 |
+- tls-gd2 |
264 |
+- tls-ie |
265 |
+- tls-large-tbss |
266 |
+- tls-ld |
267 |
+- tls-ld-mcmodel-large |
268 |
+- tls-ld-noplt |
269 |
+- tls-le |
270 |
+- tls-module-base |
271 |
+- tls-nopic |
272 |
+- tls-pic |
273 |
+- tlsdesc |
274 |
+- tlsdesc-import |
275 |
+- tlsdesc-static |
276 |
+- trace |
277 |
+- trace-symbol |
278 |
+- undefined |
279 |
+- unique |
280 |
+- unresolved-symbols |
281 |
+- verbose |
282 |
+- version |
283 |
+- version-script |
284 |
+- version-script10 |
285 |
+- version-script11 |
286 |
+- version-script12 |
287 |
+- version-script13 |
288 |
+- version-script14 |
289 |
+- version-script15 |
290 |
+- version-script16 |
291 |
+- version-script17 |
292 |
+- version-script2 |
293 |
+- version-script3 |
294 |
+- version-script4 |
295 |
+- version-script5 |
296 |
+- version-script6 |
297 |
+- version-script7 |
298 |
+- version-script8 |
299 |
+- version-script9 |
300 |
+- versioned-undef |
301 |
+- visibility |
302 |
+- warn-common |
303 |
+- warn-execstack |
304 |
+- warn-once |
305 |
+- warn-shared-textrel |
306 |
+- warn-textrel |
307 |
+- warn-unresolved-symbols |
308 |
+- weak-export-dso |
309 |
+- weak-export-exe |
310 |
+- weak-undef |
311 |
+- whole-archive |
312 |
+- wrap |
313 |
+- z-cet-report |
314 |
+- z-defs |
315 |
+- z-ibt |
316 |
+- z-ibtplt |
317 |
+- z-max-page-size |
318 |
+- z-nodefaultlib |
319 |
+- z-nodump |
320 |
+- z-now |
321 |
+- z-origin |
322 |
+- z-separate-code |
323 |
+- z-shstk |
324 |
+- z-text |
325 |
+- z-unknown |
326 |
+- ) |
327 |
+- |
328 |
+ option(MOLD_ENABLE_QEMU_TESTS "Enable tests for other targets" OFF) |
329 |
+ |
330 |
++file(GLOB MOLD_ELF_TESTS RELATIVE ${CMAKE_CURRENT_LIST_DIR} "*.sh") |
331 |
++ |
332 |
+ function(mold_add_arch_test NAME TRIPLE MACHINE) |
333 |
+ if(NOT ${CMAKE_HOST_SYSTEM_PROCESSOR} STREQUAL ${MACHINE}) |
334 |
+ set(TEST_NAME "${MACHINE}-${NAME}") |
335 |
+ add_test(NAME ${TEST_NAME} |
336 |
+- COMMAND bash -x ${CMAKE_CURRENT_LIST_DIR}/${NAME}.sh |
337 |
++ COMMAND bash -x ${CMAKE_CURRENT_LIST_DIR}/${NAME} |
338 |
+ WORKING_DIRECTORY ${mold_BINARY_DIR}) |
339 |
+ |
340 |
+ set(TEST_ENV |
341 |
+@@ -280,7 +23,7 @@ endfunction() |
342 |
+ |
343 |
+ foreach(TEST IN LISTS MOLD_ELF_TESTS) |
344 |
+ add_test(NAME "${CMAKE_HOST_SYSTEM_PROCESSOR}-${TEST}" |
345 |
+- COMMAND bash -x ${CMAKE_CURRENT_LIST_DIR}/${TEST}.sh |
346 |
++ COMMAND bash -x ${CMAKE_CURRENT_LIST_DIR}/${TEST} |
347 |
+ WORKING_DIRECTORY ${mold_BINARY_DIR}) |
348 |
+ |
349 |
+ if(MOLD_ENABLE_QEMU_TESTS) |
350 |
|
351 |
diff --git a/sys-devel/mold/metadata.xml b/sys-devel/mold/metadata.xml |
352 |
index f8a85299d5bb..20ae5863a76b 100644 |
353 |
--- a/sys-devel/mold/metadata.xml |
354 |
+++ b/sys-devel/mold/metadata.xml |
355 |
@@ -12,4 +12,7 @@ |
356 |
<upstream> |
357 |
<remote-id type="github">rui314/mold</remote-id> |
358 |
</upstream> |
359 |
+ <use> |
360 |
+ <flag name="system-tbb">Use dev-cpp/tbb package instead of vendored copy</flag> |
361 |
+ </use> |
362 |
</pkgmetadata> |
363 |
|
364 |
diff --git a/sys-devel/mold/mold-1.4.1.ebuild b/sys-devel/mold/mold-1.4.1.ebuild |
365 |
new file mode 100644 |
366 |
index 000000000000..1aac8ca1098e |
367 |
--- /dev/null |
368 |
+++ b/sys-devel/mold/mold-1.4.1.ebuild |
369 |
@@ -0,0 +1,103 @@ |
370 |
+# Copyright 2021-2022 Gentoo Authors |
371 |
+# Distributed under the terms of the GNU General Public License v2 |
372 |
+ |
373 |
+EAPI=8 |
374 |
+ |
375 |
+inherit cmake toolchain-funcs |
376 |
+ |
377 |
+DESCRIPTION="A Modern Linker" |
378 |
+HOMEPAGE="https://github.com/rui314/mold" |
379 |
+if [[ ${PV} == 9999 ]] ; then |
380 |
+ EGIT_REPO_URI="https://github.com/rui314/mold.git" |
381 |
+ inherit git-r3 |
382 |
+else |
383 |
+ SRC_URI="https://github.com/rui314/mold/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz" |
384 |
+ KEYWORDS="~amd64 ~riscv" |
385 |
+fi |
386 |
+ |
387 |
+# mold (AGPL-3) |
388 |
+# - xxhash (BSD-2) |
389 |
+# - tbb (Apache-2.0) |
390 |
+LICENSE="AGPL-3 Apache-2.0 BSD-2" |
391 |
+SLOT="0" |
392 |
+IUSE="system-tbb" |
393 |
+ |
394 |
+RDEPEND=" |
395 |
+ sys-libs/zlib |
396 |
+ system-tbb? ( >=dev-cpp/tbb-2021.4.0:= ) |
397 |
+ !kernel_Darwin? ( |
398 |
+ >=dev-libs/mimalloc-2:= |
399 |
+ dev-libs/openssl:= |
400 |
+ ) |
401 |
+" |
402 |
+DEPEND="${RDEPEND}" |
403 |
+ |
404 |
+PATCHES=( |
405 |
+ # Allows us to rm the tests as before. Will be included in next |
406 |
+ # release. |
407 |
+ "${FILESDIR}"/mold-1.4.1-glob-tests.patch |
408 |
+) |
409 |
+ |
410 |
+pkg_pretend() { |
411 |
+ # Requires a c++20 compiler, see #831473 |
412 |
+ if [[ ${MERGE_TYPE} != binary ]]; then |
413 |
+ if tc-is-gcc && [[ $(gcc-major-version) -lt 10 ]]; then |
414 |
+ die "${PN} needs at least gcc 10" |
415 |
+ elif tc-is-clang && [[ $(clang-major-version) -lt 12 ]]; then |
416 |
+ die "${PN} needs at least clang 12" |
417 |
+ fi |
418 |
+ fi |
419 |
+} |
420 |
+ |
421 |
+src_prepare() { |
422 |
+ cmake_src_prepare |
423 |
+ |
424 |
+ # Needs unpackaged dwarfdump |
425 |
+ rm test/elf/{{dead,compress}-debug-sections,compressed-debug-info}.sh || die |
426 |
+ |
427 |
+ # Heavy tests, need qemu |
428 |
+ rm test/elf/gdb-index-{compress-output,dwarf{2,3,4,5}}.sh || die |
429 |
+ rm test/elf/lto-{archive,dso,gcc,llvm,version-script}.sh || die |
430 |
+ |
431 |
+ # Sandbox sadness |
432 |
+ rm test/elf/run.sh || die |
433 |
+ sed -i 's|`pwd`/mold-wrapper.so|"& ${LD_PRELOAD}"|' \ |
434 |
+ test/elf/mold-wrapper{,2}.sh || die |
435 |
+ |
436 |
+ # static-pie tests require glibc built with static-pie support |
437 |
+ if ! has_version -d 'sys-libs/glibc[static-pie(+)]'; then |
438 |
+ rm test/elf/{,ifunc-}static-pie.sh || die |
439 |
+ fi |
440 |
+ |
441 |
+ # Don't require python |
442 |
+ sed -i '/find_package(Python3/d' CMakeLists.txt || die |
443 |
+ sed -i '/add_dependencies/d' CMakeLists.txt || die |
444 |
+ cat <<EOF>git-hash.cc |
445 |
+#include <string> |
446 |
+namespace mold { |
447 |
+std::string mold_git_hash = "gentoo-${PVR}"; |
448 |
+} |
449 |
+EOF |
450 |
+} |
451 |
+ |
452 |
+src_configure() { |
453 |
+ local mycmakeargs=( |
454 |
+ -DMOLD_ENABLE_QEMU_TESTS=OFF |
455 |
+ -DMOLD_LTO=OFF # Should be up to the user to decide this with CXXFLAGS. |
456 |
+ -DMOLD_USE_SYSTEM_MIMALLOC=ON |
457 |
+ -DMOLD_USE_SYSTEM_TBB=$(usex system-tbb) |
458 |
+ ) |
459 |
+ cmake_src_configure |
460 |
+} |
461 |
+ |
462 |
+src_install() { |
463 |
+ dobin "${BUILD_DIR}"/${PN} |
464 |
+ dolib.so "${BUILD_DIR}"/${PN}-wrapper.so |
465 |
+ |
466 |
+ dodoc docs/{design,execstack}.md |
467 |
+ doman docs/${PN}.1 |
468 |
+ |
469 |
+ dosym ${PN} /usr/bin/ld.${PN} |
470 |
+ dosym ${PN} /usr/bin/ld64.${PN} |
471 |
+ dosym ../../../usr/bin/${PN} /usr/libexec/${PN}/ld |
472 |
+} |