Diff mold-2.42.1 with a mold-9999

/usr/portage/sys-devel/mold/mold-9999.ebuild 2026-10-13 20:03:07.311912875 +0300
3 3

  
4 4
EAPI=8
5 5

  
6
inherit cmake flag-o-matic toolchain-funcs
6
RUST_MIN_VER="1.95"
7
inherit cargo toolchain-funcs
7 8

  
8 9
DESCRIPTION="A Modern Linker"
9 10
HOMEPAGE="https://github.com/rui314/mold"
......
14 15
	SRC_URI="https://github.com/rui314/mold/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
15 16
	# -alpha: alpha support was dropped upstream:
16 17
	# https://github.com/rui314/mold/commit/3711ddb95e23c12991f6b8c7bfeba4f1421d19d4
17
	KEYWORDS="-alpha amd64 ~arm ~arm64 ~loong ~ppc ~riscv ~sparc ~x86"
18
	KEYWORDS="-alpha ~amd64 ~arm ~arm64 ~loong ~ppc ~riscv ~sparc ~x86"
18 19
fi
19 20

  
20 21
# mold (MIT)
......
22 23
#  - siphash ( MIT CC0-1.0 )
23 24
LICENSE="MIT BSD-2 CC0-1.0"
24 25
SLOT="0"
25
IUSE="debug mimalloc test"
26

  
26
IUSE="test"
27 27
RESTRICT="!test? ( test )"
28 28

  
29 29
RDEPEND="
30 30
	app-arch/zstd:=
31
	>=dev-cpp/tbb-2021.7.0-r1:=
32
	dev-libs/blake3:=
33
	dev-libs/xxhash:=
34 31
	virtual/zlib:=
35
	mimalloc? ( >=dev-libs/mimalloc-3:= )
36 32
"
37 33
DEPEND="${RDEPEND}"
38 34
BDEPEND="
35
	virtual/pkgconfig
39 36
	test? ( llvm-core/clang:* )
40 37
"
41 38

  
42
pkg_pretend() {
43
	# Requires a c++20 compiler, see #831473
44
	if [[ ${MERGE_TYPE} != binary ]]; then
45
		if tc-is-gcc && [[ $(gcc-major-version) -lt 10 ]]; then
46
			die "${PN} needs at least gcc 10"
47
		elif tc-is-clang && [[ $(clang-major-version) -lt 12 ]]; then
48
			die "${PN} needs at least clang 12"
49
		fi
39
src_unpack() {
40
	if [[ ${PV} == 9999 ]] ; then
41
		git-r3_src_unpack
42
		cargo_live_src_unpack
43
	else
44
		cargo_src_unpack
50 45
	fi
51 46
}
52 47

  
53 48
src_prepare() {
54
	# remove unused vendored deps to be sure we don't use them
55
	# do this before running cmake_src_prepare to avoid warnings
56
	# being picked up by tinderbox etc. (#964723)
57
	# we keep rust-demangle for now as this isn't packaged in gentoo
58
	rm -rf third-party/{blake3,mimalloc,tbb,xxhash,zlib,zstd} || die
59

  
60
	cmake_src_prepare
61

  
62
	# use dev-libs/xxhash instead of vendored lib
63
	sed -i 's#../third-party/xxhash/##' lib/lib.h || die
49
	default
64 50

  
65 51
	# Needs unpackaged dwarfdump
66
	rm test/{{dead,compress}-debug-sections,compressed-debug-info}.sh || die
52
	rm tests/{{dead,compress}-debug-sections,compressed-debug-info}.sh || die
67 53

  
68 54
	# Heavy tests, need qemu
69
	rm test/gdb-index-{compress-output,dwarf{2,3,4,5}}.sh || die
70
	rm test/lto-{archive,dso,gcc,llvm,version-script}.sh || die
55
	rm tests/gdb-index-{compress-output,dwarf{2,3,4,5}}.sh || die
56
	rm tests/lto-{archive,dso,gcc,llvm,version-script}.sh || die
71 57

  
72 58
	# Sandbox sadness
73
	rm test/run.sh || die
59
	rm tests/run.sh || die
74 60
	sed -i 's|`pwd`/mold-wrapper.so|"& ${LD_PRELOAD}"|' \
75
		test/mold-wrapper{,2}.sh || die
61
		tests/mold-wrapper{,2}.sh || die
76 62

  
77 63
	# Fails if binutils errors out on textrels by default
78
	rm test/textrel.sh test/textrel2.sh || die
64
	rm tests/textrel.sh tests/textrel2.sh || die
65

  
66
	# Fails with -mno-direct-extern-access
67
	rm tests/copyrel-{protected,alignment,norelro}.sh tests/nocopyreloc.sh || die
68
	# TODO
69
	rm tests/abs-reloc-promotion.sh tests/arch-x86_64-z-dynamic-undefined-weak.sh || die
70
	rm tests/linker-script-group-as-needed.sh tests/gdb-index-dwarf64.sh || die
71
	rm tests/mold-wrapper2.sh || die
79 72

  
80 73
	# Don't let the default linker config affect the tests, bug #974439
81
	sed -e 's:\(clang\|clang\+\+\):\1 --no-default-config:' -i test/*.sh || die
74
	sed -e 's:\(clang\|clang\+\+\):\1 --no-default-config:' -i tests/*.sh || die
82 75

  
83 76
	# static-pie tests require glibc built with static-pie support
84 77
	if ! has_version -d 'sys-libs/glibc[static-pie(+)]'; then
85
		rm test/{,ifunc-}static-pie.sh || die
78
		rm tests/{,ifunc-}static-pie.sh || die
86 79
	fi
87 80
}
88 81

  
89 82
src_configure() {
90
	use debug || append-cppflags "-DNDEBUG"
83
	export ZSTD_SYS_USE_PKG_CONFIG=1
91 84

  
92
	local mycmakeargs=(
93
		-DBUILD_TESTING=$(usex test)
94
		-DMOLD_LTO=OFF # Should be up to the user to decide this with CXXFLAGS.
95
		-DMOLD_USE_MIMALLOC=$(usex mimalloc)
96
		-DMOLD_USE_SYSTEM_MIMALLOC=$(usex mimalloc)
97
		-DMOLD_USE_SYSTEM_TBB=ON
85
	local myfeatures=(
86
		mold/system-allocator
98 87
	)
99 88

  
100
	if use test ; then
101
		mycmakeargs+=(
102
			-DMOLD_ENABLE_QEMU_TESTS=OFF
103
		)
104
	fi
105

  
106
	cmake_src_configure
89
	cargo_src_configure
107 90
}
108 91

  
109 92
src_test() {
110 93
	export TEST_CC="$(tc-getCC)" TEST_GCC="$(tc-getCC)" \
111 94
		TEST_CXX="$(tc-getCXX)" TEST_GXX="$(tc-getCXX)"
112
	cmake_src_test
95
	cargo_src_test
113 96
}
114 97

  
115 98
src_install() {
116
	dobin "${BUILD_DIR}"/${PN}
117

  
118
	# https://bugs.gentoo.org/872773
119
	insinto /usr/$(get_libdir)/mold
120
	doins "${BUILD_DIR}"/${PN}-wrapper.so
99
	dobin "$(cargo_target_dir)"/${PN}
121 100

  
122
	dodoc docs/{design,execstack}.md
123
	doman docs/${PN}.1
101
	doman docs/mold.1
102
	dodoc docs/mold.md
124 103

  
125 104
	dosym ${PN} /usr/bin/ld.${PN}
126 105
	dosym ${PN} /usr/bin/ld64.${PN}
Thank you!