# Copyright 1999-2024 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 DESCRIPTION="Package and build management system for D" HOMEPAGE="https://code.dlang.org/" LICENSE="MIT" SLOT="0" KEYWORDS="~amd64 ~arm64 ~x86" IUSE="doc test" RESTRICT="!test? ( test )" DLANG_COMPAT=( dmd-2_{106..107} gdc-13 ldc2-1_{35..36} ) inherit dlang-single shell-completion REQUIRED_USE=${DLANG_REQUIRED_USE} DEPEND=${DLANG_DEPS} BDEPEND=${DLANG_DEPS} RDEPEND=${DLANG_DEPS} DUB_TEST_DEPS=( gitcompatibledubpackage@1.0.1 gitcompatibledubpackage@1.0.4 urld@2.1.1 ) generate_dub_test_dependencies() { local dep for dep in "${DUB_TEST_DEPS[@]}"; do local depName depVersion depName="${dep%@*}" depVersion="${dep#*@}" echo "https://code.dlang.org/packages/${depName}/${depVersion}.zip -> ${depName}-${depVersion}.zip" done } GITHUB_URI="https://codeload.github.com/dlang" SRC_URI=" ${GITHUB_URI}/${PN}/tar.gz/v${PV} -> ${PN}-${PV}.tar.gz test? ( $(generate_dub_test_dependencies) ) " PATCHES=( "${FILESDIR}/${P}-fix-wno-error-not-applying.patch" ) src_unpack() { unpack "${P}.tar.gz" if use test; then # Copy the archives locally. Some tests do need to perform an # actual fetch operation so make all of them available as # archives and let dub figure out the rest. local store="${T}/dub-test-deps" mkdir -p "${store}" || die local dep for dep in "${DUB_TEST_DEPS[@]}"; do local depName depVersion depName="${dep%@*}" depVersion="${dep#*@}" cp "${DISTDIR}/${depName}-${depVersion}.zip" "${store}" || die done # Generate a settings.json file that points to the directory with all the deps. cat < "${T}/settings.json" { "registryUrls": [ "file://${store}" ], "skipRegistry": "all" } EOF fi } src_compile() { local imports=source versions="DubApplication DubUseCurl" dlang_compile_bin bin/dub $(/../etc/dub/settings.json as per # https://dub.pm/dub-reference/settings so that it's picked up # automatically. mkdir -p "${S}/bin/../etc/dub" || die cp "${T}/settings.json" "${S}/bin/../etc/dub/" \ || die "Could not copy dub configuration file" # See https://bugs.gentoo.org/921581 we have to remove -op (preserve # source path for output files) from the flags lest the sandbox # trips us up. This shouldn't be a problem anymore with dlang-single. dlang-filter-dflags "*" "--op" "-op" # Append -Wno-error or equivalent DCFLAGS+=" $(dlang_get_wno_error_flag)" DFLAGS="${DCFLAGS}" FRONTEND="$(dlang_get_fe_version)" test/run-unittest.sh \ || die "Tests failed" } src_install() { dobin bin/dub dodoc README.md # Make sure there are no man files in any other section. use doc && doman scripts/man/*.1 newbashcomp scripts/bash-completion/${PN}.bash ${PN} dozshcomp scripts/zsh-completion/_${PN} dofishcomp scripts/fish-completion/${PN}.fish }