commit:     b9d10dab6e506dac925904790cd883615fc51759
Author:     Andrei Horodniceanu <a.horodniceanu <AT> proton <DOT> me>
AuthorDate: Sat Apr 26 13:07:46 2025 +0000
Commit:     Horodniceanu Andrei <a.horodniceanu <AT> proton <DOT> me>
CommitDate: Sun May 11 16:03:14 2025 +0000
URL:        https://gitweb.gentoo.org/repo/user/dlang.git/commit/?id=b9d10dab

dev-util/gdmd: add 15

Additional features:
- Install gdmd-VER and CHOST-gdmd-VER convenience symlinks
Additional fixes:
- Add missing dev-lang/perl RDEPEND
- Correctly handle prefix systems by invoking the right perl

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

 dev-util/gdmd/gdmd-15.ebuild | 75 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 75 insertions(+)

diff --git a/dev-util/gdmd/gdmd-15.ebuild b/dev-util/gdmd/gdmd-15.ebuild
new file mode 100644
index 0000000..d543b38
--- /dev/null
+++ b/dev-util/gdmd/gdmd-15.ebuild
@@ -0,0 +1,75 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit prefix
+
+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="
+       dev-lang/perl
+       sys-devel/gcc:${PV}[d]
+"
+
+PATCHES="${FILESDIR}/${PN}-no-dmd-conf.patch"
+
+src_prepare() {
+       hprefixify dmd-script
+       default
+}
+
+src_compile() {
+       :
+}
+
+src_install() {
+       local binPath="/usr/${CHOST}/gcc-bin/${PV}"
+       exeinto "${binPath}"
+       newexe dmd-script "${CHOST}-gdmd"
+       dosym "${CHOST}-gdmd" "${binPath}/gdmd"
+
+       dosym -r "${binPath}/${CHOST}-gdmd" "/usr/bin/${CHOST}-gdmd-${SLOT}"
+       dosym -r "${binPath}/${CHOST}-gdmd" "/usr/bin/gdmd-${SLOT}"
+}
+
+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
+}

Reply via email to