Gentoo Archives: gentoo-commits

From: Matthew Smith <matthew@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: profiles/base/, sys-devel/mold/files/, sys-devel/mold/
Date: Fri, 19 Aug 2022 17:56:05
Message-Id: 1660931713.8c985cde69b8ea7384e1aead73a21230ec6345d4.matthew@gentoo
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 +}