From 35c179492506ae06f74e9213dbebc403ca57c690 Mon Sep 17 00:00:00 2001 From: Andrei Horodniceanu Date: Sat, 1 Jun 2024 14:24:53 +0300 Subject: dev-util/gdmd: add 14 Additionally: - use symlinks instead of hardlinks for gdmd -> ${CHOST}-gdmd - call gcc-config in pkg_postinst if the selected configuration matches this package's SLOT. This creates a symlink under /usr/bin which is required for rdmd from dev-util/dlang-tools to find the default compiler. - restrict tests as there aren't any. Signed-off-by: Andrei Horodniceanu --- dev-util/gdmd/gdmd-14.ebuild | 62 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 dev-util/gdmd/gdmd-14.ebuild (limited to 'dev-util') diff --git a/dev-util/gdmd/gdmd-14.ebuild b/dev-util/gdmd/gdmd-14.ebuild new file mode 100644 index 0000000..fc256ad --- /dev/null +++ b/dev-util/gdmd/gdmd-14.ebuild @@ -0,0 +1,62 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DESCRIPTION="Wrapper script for gdc that emulates the dmd command" +HOMEPAGE="https://www.gdcproject.org/" + +RELEASE="0.1.0" +SRC_URI="https://codeload.github.com/D-Programming-GDC/gdmd/tar.gz/script-${RELEASE} -> gdmd-${RELEASE}.tar.gz" +S="${WORKDIR}/gdmd-script-${RELEASE}" +LICENSE="GPL-3+" + +SLOT="${PV}" +KEYWORDS="~amd64 ~arm64 ~x86" +RESTRICT="test" # no tests + +RDEPEND="sys-devel/gcc:${PV}[d]" + +PATCHES="${FILESDIR}/${PN}-no-dmd-conf.patch" + +src_compile() { + : +} + +src_install() { + local binPath="/usr/${CHOST}/gcc-bin/${PV}" + exeinto "${binPath}" + newexe dmd-script "${CHOST}-gdmd" + dosym "${CHOST}-gdmd" "${binPath}/gdmd" +} + +pkg_postinst() { + maybe_update_gcc_config +} + +# We can't really call gcc-config in postrm since it won't know which +# symlinks under /usr/bin were left by us. If it turns out to be a +# problem we could try to remove the symlink manually. + +maybe_update_gcc_config() { + # Call gcc-config if the current configuration if for the same slot + # we are installing to. This is needed to make gdmd available in + # $PATH. + + local CTARGET=${CTARGET:-${CHOST}} + + # Logic taken from toolchain.eclass and simplified a little + local curr_config + curr_config=$(gcc-config -c ${CTARGET} 2>&1) || return 0 + + local curr_config_ver=$(gcc-config -S ${curr_config} | awk '{print $2}') + local curr_specs=$(gcc-config -S ${curr_config} | awk '{print $3}') + + if [[ ${curr_config_ver} == ${SLOT} && ! ${curr_specs} ]]; then + # We should call gcc-config to make sure the addition of gdmd is + # propagated in $PATH. Don't do anything if not on a traditional + # layout, the risk of breaking something outweights having the + # script in $PATH. + gcc-config "${CTARGET}-${SLOT}" + fi +} -- cgit v1.2.3-65-gdbad