commit:     1cf8dcdfefdc82f93090358ca989c725ff388039
Author:     Andrei Horodniceanu <a.horodniceanu <AT> proton <DOT> me>
AuthorDate: Sun Apr 21 16:52:27 2024 +0000
Commit:     Horodniceanu Andrei <a.horodniceanu <AT> proton <DOT> me>
CommitDate: Sun Apr 21 17:01:54 2024 +0000
URL:        https://gitweb.gentoo.org/repo/user/dlang.git/commit/?id=1cf8dcdf

dev-lang/ldc2: add 1.37.0

Signed-off-by: Andrei Horodniceanu <a.horodniceanu <AT> proton.me>

 dev-lang/ldc2/Manifest           |   1 +
 dev-lang/ldc2/ldc2-1.37.0.ebuild | 195 +++++++++++++++++++++++++++++++++++++++
 eclass/dlang-compilers-r1.eclass |   1 +
 profiles/use.desc                |   2 +
 4 files changed, 199 insertions(+)

diff --git a/dev-lang/ldc2/Manifest b/dev-lang/ldc2/Manifest
index 77ede1e..4ae4b26 100644
--- a/dev-lang/ldc2/Manifest
+++ b/dev-lang/ldc2/Manifest
@@ -3,3 +3,4 @@ DIST ldc-1.33.0-src.tar.gz 8139266 BLAKE2B 
6c2efd0765307815563bc7bd775f1faef3f5e
 DIST ldc-1.34.0-src.tar.gz 8176200 BLAKE2B 
048975a3142da860540ba5378be5214884eb44e2f4492e95aa124a669ccf53bbcf9ccce24f12946948265af5a0de1f5771d21f196052ab53275aa8bb7d0dfb2e
 SHA512 
c4ceda1d448b91f706719cdea141cb705f9996ea3f86c107620f13e2f50f6a29724a69b5e3b01c51e13dd4e50ba29a280785ce0789188641c90738d774300a06
 DIST ldc-1.35.0-src.tar.gz 8241960 BLAKE2B 
fb531841e57225f82cddf5135d0b0da98624d33aba76a1d39d98b13deb319556eaad3599ba1461f9f509c6b7b535632b85805de2433bae4ccf50c691c116da3f
 SHA512 
f85871832455a8e3208f7f905b04ac249a988f8ea2cfe81ed2a67b56404d11a08653b13b6019f45d9dbcf6fbd60086e6aabb13307908d1bbf6d86bd91462dfaa
 DIST ldc-1.36.0-src.tar.gz 8551871 BLAKE2B 
b0f09128ab37e332f2eebab3288cac687f91b696ba758d9ecd6fc4d98dc70d13e6fc4e02878028ac530cc9d9449d1148c8c3ed052fecfb18c95bd76437537467
 SHA512 
e8060ae30ddf659c51b2e57989b14f1d94c58537a3aa0c5afd3cf2906503d66421598014c33fdeb063a5aaea00034b4b11769a2c07cc2dabd7644840241183b4
+DIST ldc-1.37.0-src.tar.gz 8555980 BLAKE2B 
ac93c903f9dbeec5b69e94c7cdf851ae3fa3168752dceccbd1262fbdae5cdda43e53b82bd7c8b24b0bb2dc06fb00f3b1c74a278a851ea68b948dc7e618460227
 SHA512 
488451dba58262cf533760f471f707f984d66edeb5c7dfff5a512efa0111742cead4ff23ed5ace39ea4d07e9bac290a846d0df3de49fd3fc276241a771aff0ed

diff --git a/dev-lang/ldc2/ldc2-1.37.0.ebuild b/dev-lang/ldc2/ldc2-1.37.0.ebuild
new file mode 100644
index 0000000..1367abe
--- /dev/null
+++ b/dev-lang/ldc2/ldc2-1.37.0.ebuild
@@ -0,0 +1,195 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# Upstream supports LLVM 11.0 through 17.0.
+LLVM_COMPAT=( {15..17} )
+PYTHON_COMPAT=( python3_{10..12} )
+inherit cmake llvm-r1 multilib-build multiprocessing python-any-r1 
toolchain-funcs
+
+DESCRIPTION="LLVM D Compiler"
+HOMEPAGE="https://github.com/ldc-developers/ldc";
+MY_PV="${PV//_/-}"
+MY_P="ldc-${MY_PV}-src"
+SRC_URI="https://github.com/ldc-developers/ldc/releases/download/v${MY_PV}/${MY_P}.tar.gz";
+S=${WORKDIR}/${MY_P}
+LICENSE="BSD"
+
+# Only increase subslot in case of ABI breakage
+SLOT="$(ver_cut 1-2)/0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+IUSE="static-libs test"
+RESTRICT="!test? ( test )"
+
+DLANG_COMPAT=( dmd-2_{106..108} gdc-13 ldc2-1_{35..37} )
+
+inherit dlang-single
+
+REQUIRED_USE=${DLANG_REQUIRED_USE}
+DEPEND="
+       ${DLANG_DEPS}
+       $(llvm_gen_dep '
+         sys-devel/llvm:${LLVM_SLOT}=
+       ')
+       net-misc/curl[${MULTILIB_USEDEP}]
+"
+IDEPEND=">=app-eselect/eselect-dlang-20140709"
+RDEPEND="
+       ${DEPEND}
+       ${IDEPEND}
+"
+BDEPEND="
+       ${DLANG_DEPS}
+       test? (
+                 ${PYTHON_DEPS}
+                 $(python_gen_any_dep '
+                         dev-python/lit[${PYTHON_USEDEP}]
+                 ')
+       )
+"
+
+python_check_deps() {
+               python_has_version "dev-python/lit[${PYTHON_USEDEP}]"
+}
+
+PATCHES=(
+       "${FILESDIR}"/ldc2-1.15.0-link-defaultlib-shared.patch
+       "${FILESDIR}/${PN}"-1.36.0-disable-compiler-rt-sanitizers-tests.patch
+       "${FILESDIR}/${PN}"-1.36.0-lit-cfg-disable-gdb.patch
+
+       # https://github.com/dlang/phobos/pull/8956
+       "${FILESDIR}/${PN}"-1.36.0-fix-phobos-OS-dependent-test-string.patch
+       # https://github.com/ldc-developers/ldc/pull/4612
+       "${FILESDIR}/${PN}"-1.36.0-tests-dshell-remove--m-switch.patch
+       # 
https://github.com/ldc-developers/ldc/issues/4614#issuecomment-2034169152
+       "${FILESDIR}/${PN}"-remove-dmd-common-int128-unittest.patch
+)
+
+pkg_setup() {
+       dlang_setup
+       llvm-r1_pkg_setup
+       use test && python_setup
+}
+
+src_prepare(){
+       # Disable GDB tests by passing GDB_FLAGS=OFF
+       # Put this here to avoid trigerring reconfigurations later on.
+       sed -i 's/\(GDB_FLAGS=\)\S\+/\1OFF/' "${S}"/tests/dmd/CMakeLists.txt
+
+       cmake_src_prepare
+}
+
+src_configure() {
+       local mycmakeargs=(
+               -DD_VERSION=2
+               -DCMAKE_INSTALL_PREFIX="${EPREFIX}"/usr/lib/ldc2/$(ver_cut 1-2)
+               -DD_COMPILER="$(dlang_get_dmdw) $(dlang_get_dmdw_dcflags)"
+               -DLDC_WITH_LLD=OFF
+               -DCOMPILE_D_MODULES_SEPARATELY=ON
+               -DLDC_ENABLE_ASSERTIONS=OFF
+               -DBUILD_SHARED_LIBS=$(usex static-libs BOTH ON)
+       )
+       use abi_x86_32 && use abi_x86_64 && mycmakeargs+=( -DMULTILIB=ON )
+
+       cmake_src_configure
+}
+
+src_test()
+{
+       # Call the same tests that .github/actions/main.yml does
+
+       local jobs=$(get_makeopts_jobs)
+
+       ### 4a-test-ldc2 ###
+
+       # We build it explicitly so that MAKEOPTS is respected
+       cmake_src_compile ldc2-unittest
+       cmake_src_test -R ldc2-unittest
+
+       ### 4b-test-lit ###
+
+       # https://github.com/ldc-developers/ldc/pull/4611
+       sed -i '1 iREQUIRES: PGO_RT' "${S}"/tests/PGO/final_switch_release.d || 
die
+
+       if [[ ${ARCH} == x86 ]]; then
+               # Fails on x86 due to stack coruption unrelated to the test.
+               # It has been fixed since.
+               rm -f "${S}"/tests/codegen/mangling.d || die
+       fi
+
+       # Instead of running cmake_src_test -R lit-tests we call lit directly
+       pushd "${BUILD_DIR}"/tests > /dev/null || die
+       "${EPYTHON}" runlit.py -j${jobs} -v . || die 'lit tests failed'
+       popd > /dev/null || die
+
+       ### 4c-test-dmd ###
+
+       # https://github.com/dlang/dmd/pull/16353
+       # Requires gdb but isn't named appropriately
+       mv "${S}"/tests/dmd/runnable/{,gdb-}b18504.d || die
+       # Calss gcc directly
+       sed -i "s/gcc/$(tc-getCC)/" "${S}"/tests/dmd/runnable/importc-test1.sh 
|| die
+       # Fails on aarch64 due to int128
+       if [[ ${ARCH} == arm64 ]]; then
+               # https://github.com/dlang/dmd/pull/16352
+               rm -f "${S}"/tests/dmd/compilable/stdcheaders.c || die
+       fi
+
+       # These tests invoke a runner that runs the tests in parallel so
+       # specify the jobs only to the runner and not cmake. I'm pretty sure
+       # that some of the tests can't be run simultaniously by multiple
+       # runners so keep the cmake jobs to 1.
+       DMD_TESTSUITE_MAKE_ARGS=-j${jobs} cmake_src_test -j 1 -V -R 
dmd-testsuite
+
+       ### 4d-test-libs ###
+
+       # We compile the tests first so that $MAKEOPTS is respect, if
+       # compiled during the tests, nproc jobs will be used.
+       cmake_src_compile all-test-runners
+
+       local CMAKE_SKIP_TESTS=(
+               # These are the targets tested above
+               ldc2-unittest
+               lit-tests
+               dmd-testsuite
+
+               # These tests call gdb
+               druntime-test-exceptions
+               # Require valgrind
+               druntime-test-gc
+               druntime-test-valgrind
+
+               # This one fails due to an uncaught error, probably due to the
+               # sandbox.
+               druntime-test-cycles
+       )
+       if [[ ${ARCH} == arm64 ]]; then
+               # https://github.com/ldc-developers/ldc/issues/4613
+
+               # Hangs with optimizations (or segfaults)
+               CMAKE_SKIP_TESTS+=( core.thread.fiber )
+               # fails due to "innacuracy"
+               CMAKE_SKIP_TESTS+=( std.internal.math.gammafunction )
+               # Bad code generation with optimizations?
+               CMAKE_SKIP_TESTS+=( std.math.exponential )
+       fi
+
+       cmake_src_test
+}
+
+src_install() {
+       cmake_src_install
+
+       rm -rf "${ED}"/usr/share/bash-completion
+}
+
+pkg_postinst() {
+       # Update active ldc2
+       "${EROOT}"/usr/bin/eselect dlang update ldc2
+}
+
+pkg_postrm() {
+       "${EROOT}"/usr/bin/eselect dlang update ldc2
+}

diff --git a/eclass/dlang-compilers-r1.eclass b/eclass/dlang-compilers-r1.eclass
index 5cd8836..be07b57 100644
--- a/eclass/dlang-compilers-r1.eclass
+++ b/eclass/dlang-compilers-r1.eclass
@@ -92,6 +92,7 @@ readonly _DLANG_LDC2_FRONTENDS=(
        "1.34 2.104 ~amd64 ~arm64 ~x86"
        "1.35 2.105 ~amd64 ~arm64 ~x86"
        "1.36 2.106 ~amd64 ~arm64 ~x86"
+       "1.37 2.107 ~amd64 ~arm64 ~x86"
 )
 
 # @FUNCTION: _dlang_accumulate_implementations

diff --git a/profiles/use.desc b/profiles/use.desc
index 6533851..871cbb7 100644
--- a/profiles/use.desc
+++ b/profiles/use.desc
@@ -15,6 +15,7 @@ dlang_single_target_ldc2-1_33 - Build for ldc2 1.33 only
 dlang_single_target_ldc2-1_34 - Build for ldc2 1.34 only
 dlang_single_target_ldc2-1_35 - Build for ldc2 1.35 only
 dlang_single_target_ldc2-1_36 - Build for ldc2 1.36 only
+dlang_single_target_ldc2-1_37 - Build for ldc2 1.37 only
 
 dlang_targets_dmd-2_101 - Build with DMD 2.101
 dlang_targets_dmd-2_102 - Build with DMD 2.102
@@ -33,6 +34,7 @@ dlang_targets_ldc2-1_33 - Build with ldc2 1.33
 dlang_targets_ldc2-1_34 - Build with ldc2 1.34
 dlang_targets_ldc2-1_35 - Build with ldc2 1.35
 dlang_targets_ldc2-1_36 - Build with ldc2 1.36
+dlang_targets_ldc2-1_37 - Build with ldc2 1.37
 
 
 dmd-2_101 - Build for DMD 2.101

Reply via email to