# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 DLANG_COMPAT=( dmd-2_{106..111} gdc-1{3..5} ldc2-1_{35..40} ) DUB_DEPENDENCIES=( gitcompatibledubpackage@1.0.1 gitcompatibledubpackage@1.0.4 urld@2.1.1 ) inherit dlang-single dub shell-completion DESCRIPTION="Package and build management system for D" HOMEPAGE="https://code.dlang.org/" GITHUB_URI="https://codeload.github.com/dlang" man_pages_uri="https://github.com/the-horo/distfiles/releases/download/init" SRC_URI=" ${GITHUB_URI}/${PN}/tar.gz/v${PV} -> ${P}.tar.gz ${man_pages_uri}/${P}-man-pages.tar.gz test? ( ${DUB_DEPENDENCIES_URIS} ) " LICENSE="MIT" SLOT="0" KEYWORDS="~amd64 ~arm64 ~x86" IUSE="doc test" RESTRICT="!test? ( test )" RDEPEND+=" virtual/pkgconfig" src_unpack() { dub_gen_settings unpack "${P}.tar.gz" "${P}-man-pages.tar.gz" use test && dub_copy_dependencies_locally "${DUB_DEPENDENCIES[@]}" } src_prepare() { # Note, disabling tests is possible yet very hard. You have to # create a bash variable containing a regex (to be used in =~) that # matches all the tests that you want *to* run. It's probably easier # to delete the subdirectory under ${S}/test. # Tries to connect to github.com and fails due to the network sandbox rm -r "${S}/test/git-dependency" || die # gdc doesn't support #include's in its importC implementation. if [[ ${EDC} == gdc* ]]; then rm -r "${S}/test/use-c-sources" || die rm -r "${S}/test/issue2698-cimportpaths-broken-with-dmd-ldc" || die fi # $(basename DC) not matching ^(dmd|ldc2|gdc)$ makes the test runner # not skip known failures, so skip them here instead if [[ ${EDC} == dmd* ]]; then rm -r test/issue2258-dynLib-exe-dep || die fi if [[ ${EDC} != ldc2* ]]; then rm -r test/depen-build-settings || die fi default } src_compile() { # dmd misscompilation with -O # https://github.com/dlang/dmd/issues/21400 dlang-filter-dflags dmd* -O* local imports=source versions="DubApplication DubUseCurl" dlang_compile_bin bin/dub $( "${wdc}" <<-EOF || die #!${BROOT}/bin/sh ${DC} "\${@}" ${dflags[*]} EOF chmod +x "${wdc}" local -x DC="${wdc}" # Run the unittests in the source files. "${DUB}" test --verbose -c application || die # Some tests overwrite DUB_HOME messing up the configuration file # so put it in one of the other available locations mkdir -p "${S}/bin/../etc/dub" || die cp "${DUB_HOME}/settings.json" "${S}/bin/../etc/dub/settings.json" || die # Run the integration tests. FRONTEND="$(dlang_get_fe_version)" test/run-unittest.sh \ || die "Tests failed" } src_install() { dobin bin/dub dodoc README.md doman "${WORKDIR}/${P}-man-pages"/* newbashcomp scripts/bash-completion/${PN}.bash ${PN} dozshcomp scripts/zsh-completion/_${PN} dofishcomp scripts/fish-completion/${PN}.fish }