public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] repo/user/dlang:master commit in: eclass/, profiles/
@ 2022-02-06 15:50 Marco Leise
  0 siblings, 0 replies; 4+ messages in thread
From: Marco Leise @ 2022-02-06 15:50 UTC (permalink / raw
  To: gentoo-commits

commit:     e7cac6f2e7069b79de6b0120097fc2f2e1e700a1
Author:     Niko Böckerman <niko.bockerman <AT> protonmail <DOT> com>
AuthorDate: Thu Feb  3 19:29:06 2022 +0000
Commit:     Marco Leise <marco.leise <AT> gmx <DOT> de>
CommitDate: Thu Feb  3 19:36:26 2022 +0000
URL:        https://gitweb.gentoo.org/repo/user/dlang.git/commit/?id=e7cac6f2

Add ldc2 1.25 and 1.26 as possible compilers

Signed-off-by: Niko Böckerman <niko.bockerman <AT> protonmail.com>

 eclass/dlang-compilers.eclass | 2 ++
 profiles/use.desc             | 2 ++
 2 files changed, 4 insertions(+)

diff --git a/eclass/dlang-compilers.eclass b/eclass/dlang-compilers.eclass
index 22b3d66..f74b9a4 100644
--- a/eclass/dlang-compilers.eclass
+++ b/eclass/dlang-compilers.eclass
@@ -62,6 +62,8 @@ dlang-compilers_declare_versions() {
 		["1.22"]="2.092 amd64 ~arm ~arm64 ~ppc64 x86"
 		["1.23"]="2.093 amd64 ~arm ~arm64 ~ppc64 x86"
 		["1.24"]="2.094 amd64 ~arm ~arm64 ~ppc64 x86"
+		["1.25"]="2.095 ~amd64 ~arm ~arm64 ~ppc64 ~x86"
+		["1.26"]="2.096 ~amd64 ~arm ~arm64 ~ppc64 ~x86"
 	)
 }
 

diff --git a/profiles/use.desc b/profiles/use.desc
index 7aa58d7..6141d18 100644
--- a/profiles/use.desc
+++ b/profiles/use.desc
@@ -40,3 +40,5 @@ ldc2-1_21 - Build for ldc2 1.21
 ldc2-1_22 - Build for ldc2 1.22
 ldc2-1_23 - Build for ldc2 1.23
 ldc2-1_24 - Build for ldc2 1.24
+ldc2-1_25 - Build for ldc2 1.25
+ldc2-1_26 - Build for ldc2 1.26


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [gentoo-commits] repo/user/dlang:master commit in: eclass/, profiles/
@ 2022-10-13 15:56 Marco Leise
  0 siblings, 0 replies; 4+ messages in thread
From: Marco Leise @ 2022-10-13 15:56 UTC (permalink / raw
  To: gentoo-commits

commit:     655270085d33b7b3b166df4d5ef5086121cab380
Author:     Horodniceanu Andrei <a.horodniceanu <AT> protonmail <DOT> com>
AuthorDate: Sun Oct  9 15:56:46 2022 +0000
Commit:     Marco Leise <marco.leise <AT> gmx <DOT> de>
CommitDate: Sun Oct  9 15:56:46 2022 +0000
URL:        https://gitweb.gentoo.org/repo/user/dlang.git/commit/?id=65527008

Fix dlang-compilers.eclass keyword mismatch, remove obsolete dmd-2_063 reference.

Signed-off-by: Horodniceanu Andrei <a.horodniceanu <AT> protonmail.com>

 eclass/dlang-compilers.eclass | 6 +++---
 profiles/use.desc             | 1 -
 2 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/eclass/dlang-compilers.eclass b/eclass/dlang-compilers.eclass
index 7ae7285..a872872 100644
--- a/eclass/dlang-compilers.eclass
+++ b/eclass/dlang-compilers.eclass
@@ -47,9 +47,9 @@ dlang-compilers_declare_versions() {
 		["2.094"]="2.094 x86 amd64"
 		["2.095"]="2.095 x86 amd64"
 		["2.096"]="2.096 x86 amd64"
-		["2.097"]="2.097 ~x86 ~amd64"
-		["2.098"]="2.098 ~x86 ~amd64"
-		["2.099"]="2.099 ~x86 ~amd64"
+		["2.097"]="2.097 x86 amd64"
+		["2.098"]="2.098 x86 amd64"
+		["2.099"]="2.099 x86 amd64"
 	)
 
 	# GDC (hppa, sparc: masked "d" USE-flag)

diff --git a/profiles/use.desc b/profiles/use.desc
index d9c78c3..f8d195d 100644
--- a/profiles/use.desc
+++ b/profiles/use.desc
@@ -1,4 +1,3 @@
-dmd-2_063 - Build for DMD 2.063
 dmd-2_064 - Build for DMD 2.064
 dmd-2_065 - Build for DMD 2.065
 dmd-2_066 - Build for DMD 2.066


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [gentoo-commits] repo/user/dlang:master commit in: eclass/, profiles/
@ 2025-05-12  4:01 Horodniceanu Andrei
  0 siblings, 0 replies; 4+ messages in thread
From: Horodniceanu Andrei @ 2025-05-12  4:01 UTC (permalink / raw
  To: gentoo-commits

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

dlang-compilers-r1.eclass: Add gdc-15 target

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

 eclass/dlang-compilers-r1.eclass | 3 ++-
 profiles/use.desc                | 2 ++
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/eclass/dlang-compilers-r1.eclass b/eclass/dlang-compilers-r1.eclass
index 805227e..08f582d 100644
--- a/eclass/dlang-compilers-r1.eclass
+++ b/eclass/dlang-compilers-r1.eclass
@@ -1,4 +1,4 @@
-# Copyright 2024 Gentoo Authors
+# Copyright 2024-2025 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 # @ECLASS: dlang-compilers-r1.eclass
@@ -71,6 +71,7 @@ readonly _DLANG_GDC_FRONTENDS=(
 	"12 2.100 ~amd64 ~arm64 ~x86"
 	"13 2.103 ~amd64 ~arm64 ~x86"
 	"14 2.108 ~amd64 ~arm64 ~x86"
+	"15 2.111 ~amd64 ~arm64 ~x86"
 )
 
 # @ECLASS_VARIABLE: _DLANG_LDC2_FRONTENDS

diff --git a/profiles/use.desc b/profiles/use.desc
index f39776f..0cd1b6f 100644
--- a/profiles/use.desc
+++ b/profiles/use.desc
@@ -13,6 +13,7 @@ dlang_single_target_dmd-2_111 - Build for DMD 2.111 only
 dlang_single_target_gdc-12 - Build for GCC 12 only
 dlang_single_target_gdc-13 - Build for GCC 13 only
 dlang_single_target_gdc-14 - Build for GCC 14 only
+dlang_single_target_gdc-15 - Build for GCC 15 only
 
 dlang_single_target_ldc2-1_32 - Build for ldc2 1.32 only
 dlang_single_target_ldc2-1_33 - Build for ldc2 1.33 only
@@ -39,6 +40,7 @@ dlang_targets_dmd-2_111 - Build with DMD 2.111
 dlang_targets_gdc-12 - Build with GCC 12
 dlang_targets_gdc-13 - Build with GCC 13
 dlang_targets_gdc-14 - Build with GCC 14
+dlang_targets_gdc-15 - Build with GCC 15
 
 dlang_targets_ldc2-1_32 - Build with ldc2 1.32
 dlang_targets_ldc2-1_33 - Build with ldc2 1.33


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [gentoo-commits] repo/user/dlang:master commit in: eclass/, profiles/
@ 2025-08-24 15:47 Horodniceanu Andrei
  0 siblings, 0 replies; 4+ messages in thread
From: Horodniceanu Andrei @ 2025-08-24 15:47 UTC (permalink / raw
  To: gentoo-commits

commit:     f47ab7bebacac6cfc355b1d161e3cd50bab0381f
Author:     Andrei Horodniceanu <a.horodniceanu <AT> proton <DOT> me>
AuthorDate: Fri Aug  8 15:30:37 2025 +0000
Commit:     Horodniceanu Andrei <a.horodniceanu <AT> proton <DOT> me>
CommitDate: Sun Aug 24 15:29:18 2025 +0000
URL:        https://gitweb.gentoo.org/repo/user/dlang.git/commit/?id=f47ab7be

Drop old dlang eclasses

Signed-off-by: Andrei Horodniceanu <a.horodniceanu <AT> proton.me>
Part-of: https://github.com/gentoo/dlang/pull/140
Signed-off-by: Andrei Horodniceanu <a.horodniceanu <AT> proton.me>

 eclass/dlang-compilers.eclass |  43 ---
 eclass/dlang.eclass           | 799 ------------------------------------------
 eclass/dmd.eclass             | 422 ----------------------
 profiles/use.desc             |   7 -
 4 files changed, 1271 deletions(-)

diff --git a/eclass/dlang-compilers.eclass b/eclass/dlang-compilers.eclass
deleted file mode 100644
index 7d70852..0000000
--- a/eclass/dlang-compilers.eclass
+++ /dev/null
@@ -1,43 +0,0 @@
-# @ECLASS: dlang-compilers.eclass
-# @MAINTAINER:
-# Marco Leise <marco.leise@gmx.de>
-# @BLURB: Support data for dlang.eclass
-# @DESCRIPTION:
-# Contains the available D compiler versions with their stable archs.
-
-if [[ ${_ECLASS_ONCE_DLANG_COMPILERS} != "recur -_+^+_- spank" ]] ; then
-_ECLASS_ONCE_DLANG_COMPILERS="recur -_+^+_- spank"
-
-# @FUNCTION: dlang-compilers_declare_versions
-# @DESCRIPTION:
-# Exports an associative array of all available Dlang compiler versions and their corresponding language support as well
-# as the list of stable and unstable keywords. The language support is basically the DMD front-end version that the
-# compiler is based on. For DMD it will be the same as the compiler version, while for GDC and LDC2 it will differ.
-# The keywords are required, because we offer many compilers to be used for Dlang packages and pull them in as build
-# time dependencies. A stable package cannot depend on an unstable package though, so short of manually looking for
-# KEYWORDS in compiler ebuilds we just keep them up-to-date here. GDC in particular needs constant attention as
-# architectures get markes stable all the time.
-dlang-compilers_declare_versions() {
-	declare -gA _dlang_dmd_frontend
-	declare -gA _dlang_gdc_frontend
-	declare -gA _dlang_ldc2_frontend
-
-	# DMD
-	_dlang_dmd_frontend=(
-		["2.107"]="2.107 ~x86 ~amd64"
-	)
-
-	# GDC (hppa, sparc: masked "d" USE-flag)
-	_dlang_gdc_frontend=(
-		["11"]="2.076 ~alpha amd64 arm arm64 ~ia64 ~m68k ~mips ppc ppc64 ~riscv ~s390 x86"
-		["12"]="2.100 ~alpha amd64 arm arm64 ~ia64 ~m68k ~mips ~ppc ppc64 ~riscv ~s390 x86"
-		["13"]="2.103 ~alpha amd64 arm arm64 ~ia64 ~loong ~m68k ~mips ~ppc ppc64 ~riscv ~s390 x86"
-	)
-
-	# LDC
-	_dlang_ldc2_frontend=(
-		["1.36"]="2.106 ~amd64 ~arm64 ~x86"
-	)
-}
-
-fi

diff --git a/eclass/dlang.eclass b/eclass/dlang.eclass
deleted file mode 100644
index 5c7d3f9..0000000
--- a/eclass/dlang.eclass
+++ /dev/null
@@ -1,799 +0,0 @@
-# @ECLASS: dlang.eclass
-# @MAINTAINER:
-# Marco Leise <marco.leise@gmx.de>
-# @SUPPORTED_EAPIS: 6 7 8
-# @BLURB: install D libraries in multiple locations for each D version and compiler
-# @DESCRIPTION:
-# The dlang eclass faciliates creating dependiencies on D libraries for use
-# with different D compilers and D versions.
-# DLANG_VERSION_RANGE can be set in the ebuild to limit the search on the known
-# compatible Dlang front-end versions. It is a space separated list with each item
-# can be a single version, an open or a closed range (e.g. "2.063 2.065-2.067 2.070-").
-# The range can be open in either direction.
-# DLANG_PACKAGE_TYPE determines whether the current ebuild can be compiled for
-# multiple Dlang compilers (i.e. is a library to be installed for different
-# versions of dmd, gdc or ldc2) or a single compiler (i.e. is an application).
-# "single" - An application is built and the package will be built using one compiler.
-# "multi" - A library is built and multiple compiler versions and vendors can be selected.
-# "dmd" - Special case for dmd, which is like "single", but picking no compiler USE flag
-#         is allowed and results in a self-hosting dmd.
-# DLANG_USE_COMPILER, if set, inhibits the generation of IUSE, REQUIRED_USE, DEPEND
-# and RDEPEND for Dlang compilers based on above variables. The ebuild is responsible
-# for providing them as required by the function it uses from this eclass.
-
-# @ECLASS_VARIABLE: DLANG_COMPILER_USE
-# @DESCRIPTION:
-# Holds the active Dlang compiler for an application as a USE flag to be passed on to depencencies (libraries).
-# Using this variable one can ensure that all required libraries must be compiled with the same compiler.
-
-# @ECLASS_VARIABLE: DLANG_IMPORT_DIR
-# @DESCRIPTION:
-# The path that is used to install include files. A sub-directory specific to the package should be used.
-
-# @ECLASS_VARIABLE: DLANG_COMPILER_DISABLED_BACKENDS
-# @PRE_INHERIT
-# @DEFAULT_UNSET
-# @DESCRIPTION:
-# Optional list of D compiler backends to disable as a Bash array.
-# Possible values include dmd, ldc2, and gdc.
-# Set before inheritting the eclass.
-
-if [[ ${_ECLASS_ONCE_DLANG} != "recur -_+^+_- spank" ]] ; then
-_ECLASS_ONCE_DLANG="recur -_+^+_- spank"
-
-case ${EAPI:-0} in
-	6) inherit eapi7-ver ;;
-	7|8) ;;
-	*) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;;
-esac
-
-inherit flag-o-matic dlang-compilers
-if [[ "${DLANG_PACKAGE_TYPE}" == "multi" ]]; then
-	# We handle a multi instance package.
-	inherit multilib-minimal
-fi
-
-EXPORT_FUNCTIONS src_prepare src_configure src_compile src_test src_install
-
-# Definition of know compilers and supported front-end versions from dlang-compilers.eclass
-dlang-compilers_declare_versions
-
-# @FUNCTION: dlang_foreach_config
-# @DESCRIPTION:
-# Function that calls its arguments for each D configuration. A few environment
-# variables will be set for each call:
-# ABI: See 'multilib_get_enabled_abis' from multilib-build.eclass.
-# MODEL: This is either 32 or 64.
-# DLANG_VENDOR: Either DigitalMars, GNU or LDC.
-# DC: D compiler command. E.g.
-#   /usr/x86_64-pc-linux-gnu/gcc-bin/12/x86_64-pc-linux-gnu-gdc,
-#   /usr/lib/dmd/2.067/bin/dmd, or
-#   /usr/lib/ldc2/0.17/bin/ldc2
-# DMD: DMD compiler command. E.g.
-#   /usr/x86_64-pc-linux-gnu/gcc-bin/12/x86_64-pc-linux-gnu-gdmd,
-#   /usr/lib/dmd/2.086/bin/dmd, or
-#   /usr/lib/ldc2/0.17/bin/ldmd2
-# DC_VERSION: Release version of the compiler. This is the version excluding any
-#   Patch releases. So dmd 2.064.2 would still be 2.064. This version is used
-#   to separate potentially incompatible ABIs and to create the library path.
-#   Typical versions of gdc or ldc are 4.8.1 or 0.12.
-# DLANG_VERSION: This differs from DC_VERSION in so far as it displays the
-#   front-end or language specification version for every compiler. Since the
-#   release of D1 it follows the scheme x.yyy and is as of writing at 2.064.
-# DLANG_LINKER_FLAG: The command-line flag, the respective compiler understands
-#   as a prefix for a single argument that should be passed to the linker.
-#   dmd: -L, gdc: -Xlinker, ldc: -L=
-# DLANG_LIB_DIR: The compiler and compiler version specific library directory.
-dlang_foreach_config() {
-	debug-print-function ${FUNCNAME} "${@}"
-
-	local MULTIBUILD_VARIANTS=($(_dlang_build_configurations))
-
-	multibuild_wrapper() {
-		debug-print-function ${FUNCNAME} "${@}"
-
-		# We need to reset CC, else when dmd calls it, the result is:
-		# "x86_64-pc-linux-gnu-gcc -m32": No such file or directory
-		if [[ -v CC ]]; then
-			local _ORIGINAL_CC="${CC}"
-		fi
-		multilib_toolchain_setup "${ABI}"
-		if [[ -v _ORIGINAL_CC ]]; then
-			CC="${_ORIGINAL_CC}"
-		else
-			unset CC
-		fi
-		mkdir -p "${BUILD_DIR}" || die
-		pushd "${BUILD_DIR}" >/dev/null || die
-		_dlang_use_build_vars "${@}"
-		popd >/dev/null || die
-	}
-
-	multibuild_foreach_variant multibuild_wrapper "${@}"
-}
-
-# @FUNCTION: dlang_single_config
-# @DESCRIPTION:
-# Wrapper for build phases when only a single build configuraion is used. See `dlang_foreach_config()` for more details.
-dlang_single_config() {
-	debug-print-function ${FUNCNAME} "${@}"
-
-	local MULTIBUILD_VARIANT=$(_dlang_build_configurations)
-
-	_dlang_use_build_vars "${@}"
-}
-
-export DLANG_IMPORT_DIR="usr/include/dlang"
-
-# @FUNCTION: dlang_src_prepare
-# @DESCRIPTION:
-# Create a single copy of the package sources for each enabled D configuration.
-dlang_src_prepare() {
-	debug-print-function ${FUNCNAME} "${@}"
-
-	default_src_prepare
-
-	if [[ "${DLANG_PACKAGE_TYPE}" == "multi" ]]; then
-		local MULTIBUILD_VARIANTS=($(_dlang_build_configurations))
-		multibuild_copy_sources
-	fi
-}
-
-dlang_src_configure() {
-	_dlang_phase_wrapper configure
-}
-
-dlang_src_compile() {
-	_dlang_phase_wrapper compile
-}
-
-dlang_src_test() {
-	_dlang_phase_wrapper test
-}
-
-dlang_src_install() {
-	_dlang_phase_wrapper install
-}
-
-# @FUNCTION: dlang_exec
-# @DESCRIPTION:
-# Run and print a shell command. Aborts the ebuild on error using "die".
-dlang_exec() {
-	echo "${@}"
-	${@} || die
-}
-
-# @FUNCTION: dlang_compile_bin
-# @DESCRIPTION:
-# Compiles a D application. The first argument is the output file name, the
-# other arguments are source files. Additional variables can be set to fine tune
-# the compilation. They will be prepended with the proper flags for each
-# compiler:
-# versions - a list of versions to activate during compilation
-# imports - a list of import paths
-# string_imports - a list of string import paths
-#
-# Aditionally, if the ebuild offers the "debug" use flag, we will automatically
-# raise the debug level to 1 during compilation.
-dlang_compile_bin() {
-	[[ "${DLANG_PACKAGE_TYPE}" == "multi" ]] && die "${FUNCTION} does not work with DLANG_PACKAGE_TYPE=\"multi\" currently."
-
-	local binname="${1}"
-	local sources="${@:2}"
-
-	dlang_exec ${DC} ${DCFLAGS} ${sources} $(_dlang_additional_flags) \
-		${LDFLAGS} ${DLANG_OUTPUT_FLAG}${binname}
-}
-
-# @FUNCTION: dlang_compile_lib_a
-# @DESCRIPTION:
-# Compiles a D static library. The first argument is the output file name, the
-# other arguments are source files. Additional variables and the
-# "debug" use flag will be handled as described in dlang_compile_bin().
-dlang_compile_lib_a() {
-	local libname="${1}"
-	local sources="${@:2}"
-
-	if [[ "${DLANG_VENDOR}" == "GNU" ]]; then
-		die "Static libraries for GDC is not supported yet."
-	fi
-	if [[ "${DLANG_PACKAGE_TYPE}" == "multi" ]]; then
-		DCFLAGS="${DCFLAGS} -m${MODEL}"
-	fi
-	dlang_exec ${DC} ${DCFLAGS} ${sources} $(_dlang_additional_flags) \
-		${LDFLAGS} ${DLANG_A_FLAGS} ${DLANG_OUTPUT_FLAG}${libname}
-}
-
-# @FUNCTION: dlang_compile_lib_so
-# @DESCRIPTION:
-# Compiles a D shared library. The first argument is the output file name, the
-# second argument is the soname (typically file name without patch level
-# suffix), the other arguments are source files. Additional variables and the
-# "debug" use flag will be handled as described in dlang_compile_bin().
-dlang_compile_lib_so() {
-	local libname="${1}"
-	local soname="${2}"
-	local sources="${@:3}"
-
-	dlang_exec ${DC} ${DCFLAGS} -m${MODEL} ${sources} $(_dlang_additional_flags) \
-		${LDFLAGS} ${DLANG_SO_FLAGS} ${DLANG_LINKER_FLAG}-soname=${soname} \
-		${DLANG_OUTPUT_FLAG}${libname}
-}
-
-# @FUNCTION: dlang_convert_ldflags
-# @DESCRIPTION:
-# Makes linker flags meant for GCC understandable for the current D compiler.
-# Basically it replaces -L with what the D compiler uses as linker prefix.
-dlang_convert_ldflags() {
-	if [[ "${DLANG_VENDOR}" == "DigitalMars" ]] || [[ "${DLANG_VENDOR}" == "LDC" ]]; then
-		local set prefix flags=()
-		if [[ is_dmd ]]; then
-			prefix="-L"
-		elif [[ is_ldc ]]; then
-			prefix="-L="
-		fi
-		for set in ${LDFLAGS}; do
-			if [[ "${set:0:4}" == "-Wl," ]]; then
-				set=${set/-Wl,/${prefix}}
-				flags+=(${set//,/ ${prefix}})
-			elif [[ "${set:0:9}" == "-Xlinker " ]]; then
-				flags+=(${set/-Xlinker /${prefix}})
-			elif [[ "${set:0:2}" == "-L" ]]; then
-				flags+=(${set/-L/${prefix}})
-			else
-				flags+=(${set})
-			fi
-		done
-		echo "${flags[@]}"
-	elif [[ "${DLANG_VENDOR}" == "GNU" ]]; then
-		echo "${LDFLAGS}"
-	else
-		die "Set DLANG_VENDOR to DigitalMars, LDC or GNU prior to calling ${FUNCNAME}()."
-	fi
-}
-
-# @FUNCTION: dlang_dmdw_dcflags
-# @DESCRIPTION:
-# Convertes compiler specific $DCFLAGS to something that can be passed to the
-# dmd wrapper of said compiler. Calls `die` if the flags could not be
-# converted.
-dlang_dmdw_dcflags() {
-	if [[ "${DLANG_VENDOR}" == "DigitalMars" ]]; then
-		# There's no translation that needs to be done.
-		echo "${DCFLAGS}"
-	elif [[ "${DLANG_VENDOR}" == "LDC" ]]; then
-		# ldmd2 passes all the arguments that it doesn't understand to ldc2.
-		echo "${DCFLAGS}"
-	elif [[ "${DLANG_VENDOR}" == "GNU" ]]; then
-		# From `gdmd --help`:   -q,arg1,...    pass arg1, arg2, etc. to gdc
-		if [[ "${DCFLAGS}" =~ .*,.* ]]; then
-			eerror "DCFLAGS (${DCFLAGS}) contain a comma and can not be passed to gdmd."
-			eerror "Please remove the comma, use a different compiler, or call gdc directly."
-			die "DCFLAGS contain an unconvertable comma."
-		fi
-
-		local set flags=()
-		for set in ${DCFLAGS}; do
-			flags+=("-q,${set}")
-		done
-		echo "${flags[@]}"
-	else
-		die "Set DLANG_VENDOR to DigitalMars, LDC or GNU prior to calling ${FUNCNAME}()."
-	fi
-}
-
-# @FUNCTION: dlang_system_imports
-# @DESCRIPTION:
-# Returns a list of standard system import paths (one per line) for the current
-# D compiler. This includes druntime and Phobos as well as compiler specific
-# paths.
-dlang_system_imports() {
-	if [[ "${DLANG_VENDOR}" == "DigitalMars" ]]; then
-		echo "/usr/lib/dmd/${DC_VERSION}/import"
-	elif [[ "${DLANG_VENDOR}" == "GNU" ]]; then
-		# gcc's SLOT is its major version component.
-		echo "/usr/lib/gcc/${CHOST_default}/${DC_VERSION}/include/d"
-	elif [[ "${DLANG_VENDOR}" == "LDC" ]]; then
-		echo "/usr/lib/ldc2/${DC_VERSION}/include/d"
-		echo "/usr/lib/ldc2/${DC_VERSION}/include/d/ldc"
-	else
-		die "Could not detect D compiler vendor!"
-	fi
-}
-
-# @FUNCTION: dlang_phobos_level
-# @DESCRIPTION:
-# Succeeds if we are compiling against a version of Phobos that is at least as
-# high as the argument.
-dlang_phobos_level() {
-	if [ -z "$DLANG_VERSION" ]; then
-		[ "$DLANG_PACKAGE_TYPE" != "multi" ] || die "'dlang_phobos_level' needs 'DLANG_PACKAGE_TYPE != multi' when called outside of compiles."
-		local config=`_dlang_build_configurations`
-		local dc="$(echo ${config} | cut -d- -f2)"
-		local dc_version="$(echo ${config} | cut -d- -f3)"
-		local DLANG_VERSION="$(_dlang_compiler_to_dlang_version ${dc} ${dc_version})"
-	fi
-	ver_test "$DLANG_VERSION" -ge "$1"
-}
-
-### Non-public helper functions ###
-
-declare -a _dlang_compiler_iuse
-declare -a _dlang_compiler_iuse_mask
-declare -a _dlang_depends
-
-# @FUNCTION: _dlang_compiler_masked_archs_for_version_range
-# @DESCRIPTION:
-# Given a Dlang compiler represented through an IUSE flag (e.g. "ldc2-1_1")
-# and DEPEND atom (e.g. "dev-lang/ldc2:1.1="), this function tests if the
-# current ebuild can depend and thus be compiled with that compiler on
-# one or more architectures.
-# A compiler that is less stable than the current ebuild for all
-# architectures, is dropped completely. A compiler that disqualifies
-# for only some, but not all architectures, on the other hand, is disabled
-# though REQUIRED_USE (e.g. "!amd64? ( ldc2-1_1? ( dev-lang/ldc2:1.1= ) )").
-# Available compilers are accumulated in the _dlang_compiler_iuse array,
-# which is later turned into the IUSE variable.
-# Partially available compilers are additionally masked out for particular
-# architectures by adding them to the _dlang_compiler_iuse_mask array,
-# which is later appended to REQUIRED_USE.
-# Finally, the _dlang_depends array receives the USE-flag enabled
-# dependencies on Dlang compilers, which is later turned into DEPEND and
-# RDEPEND.
-_dlang_compiler_masked_archs_for_version_range() {
-	local iuse=$1
-	if [[ "$iuse" == gdc* ]]; then
-		local depend="$iuse? ( $2 dev-util/gdmd:${iuse#gdc-} )"
-	else
-		local depend="$iuse? ( $2 )"
-	fi
-	local dlang_version=${3%% *}
-	local compiler_keywords=${3:${#dlang_version}}
-	local compiler_keyword package_keyword arch
-	local -a masked_archs
-
-	# Check the version range
-	if [[ -n "$4" ]]; then
-		[[ $((10#${dlang_version#*.})) -lt $((10#${4#*.})) ]] && return 1
-	fi
-	if [[ -n "$5" ]]; then
-		[[ $((10#${dlang_version#*.})) -gt $((10#${5#*.})) ]] && return 1
-	fi
-
-	# Check the stability requirements
-	local package_stab comp_stab=0 have_one=0
-	for package_keyword in $KEYWORDS; do
-		if [ "${package_keyword:0:1}" == "-" ]; then
-			# Skip "-arch" and "-*"
-			continue
-		elif [ "${package_keyword:0:1}" == "~" ]; then
-			package_stab=1
-			arch=${package_keyword:1}
-		else
-			package_stab=2
-			arch=$package_keyword
-		fi
-
-		comp_stab=0
-		for compiler_keyword in $compiler_keywords; do
-			if [ "$compiler_keyword" == "~$arch" ]; then
-				comp_stab=1
-			elif [ "$compiler_keyword" == "$arch" ]; then
-				comp_stab=2
-			fi
-		done
-		if [ $comp_stab -lt $package_stab ]; then
-			masked_archs+=( $arch )
-		fi
-		if [ $comp_stab -gt 0 ]; then
-			have_one=1
-		fi
-	done
-	[ $have_one -eq 0 ] && return 1
-
-	_dlang_compiler_iuse+=( $iuse )
-	if [ "${#masked_archs[@]}" -ne 0 ]; then
-		for arch in ${masked_archs[@]}; do
-			_dlang_compiler_iuse_mask+=( "${arch}? ( !${iuse} )" )
-			depend="!${arch}? ( ${depend} )"
-		done
-	fi
-	_dlang_depends+=( "$depend" )
-}
-
-# @FUNCTION: _dlang_filter_compilers
-# @DESCRIPTION:
-# Given a range of Dlang front-end version that the current ebuild can be built with, this function goes through each
-# compatible Dlang compilers as provided by the file dlang-compilers.eclass and then calls
-# _dlang_compiler_masked_archs_for_version_range where they will be further scrutinized for architecture stability
-# requirements and then either dropped as option or partially masked.
-_dlang_filter_compilers() {
-	local dc_version mapping iuse depend
-
-	if _dlang_compiler_backend_is_enabled "dmd"; then
-		# filter for DMD (hardcoding support for x86 and amd64 only)
-		for dc_version in "${!_dlang_dmd_frontend[@]}"; do
-			mapping="${_dlang_dmd_frontend[${dc_version}]}"
-			iuse="dmd-$(ver_rs 1- _ $dc_version)"
-			if [ "${DLANG_PACKAGE_TYPE}" == "multi" ]; then
-				depend="[${MULTILIB_USEDEP}]"
-			else
-				depend=""
-			fi
-			depend="dev-lang/dmd:$dc_version=$depend"
-			_dlang_compiler_masked_archs_for_version_range "$iuse" "$depend" "$mapping" "$1" "$2"
-		done
-	fi
-
-	if _dlang_compiler_backend_is_enabled "gdc"; then
-		# GDC (doesn't support sub-slots, to stay compatible with upstream GCC)
-		for dc_version in "${!_dlang_gdc_frontend[@]}"; do
-			mapping="${_dlang_gdc_frontend[${dc_version}]}"
-			iuse="gdc-${dc_version}"
-			depend="sys-devel/gcc:$dc_version[d,-d-bootstrap(-)]"
-			_dlang_compiler_masked_archs_for_version_range "$iuse" "$depend" "$mapping" "$1" "$2"
-		done
-	fi
-
-	if _dlang_compiler_backend_is_enabled "ldc2"; then
-		# filter for LDC2
-		for dc_version in "${!_dlang_ldc2_frontend[@]}"; do
-			mapping="${_dlang_ldc2_frontend[${dc_version}]}"
-			iuse=ldc2-$(ver_rs 1- _ $dc_version)
-			if [ "${DLANG_PACKAGE_TYPE}" == "multi" ]; then
-				depend="[${MULTILIB_USEDEP}]"
-			else
-				depend=""
-			fi
-			depend="dev-lang/ldc2:$dc_version=$depend"
-			_dlang_compiler_masked_archs_for_version_range "$iuse" "$depend" "$mapping" "$1" "$2"
-		done
-	fi
-}
-
-# @FUNCTION: _dlang_filter_versions
-# @DESCRIPTION:
-# This function sets up the preliminary REQUIRED_USE, DEPEND and RDEPEND ebuild
-# variables with compiler requirements for the current ebuild.
-# If DLANG_VERSION_RANGE is set in the ebuild, this variable will be parsed to
-# limit the search on the known compatible Dlang front-end versions.
-# DLANG_PACKAGE_TYPE determines whether the current ebuild can be compiled for
-# multiple Dlang compilers (i.e. is a library to be installed for different
-# versions of dmd, gdc or ldc2) or a single compiler (i.e. is an application).
-_dlang_filter_versions() {
-	local range start stop matches d_version versions do_start
-	local -A valid
-
-	# Use given range to create a positive list of supported D versions
-	if [[ -v DLANG_VERSION_RANGE ]]; then
-		for range in $DLANG_VERSION_RANGE; do
-			# Define start and stop of range
-			if [[ "${range}" == *?- ]]; then
-				start="${range%-}"
-				stop=
-			elif [[ "${range}" == -?* ]]; then
-				start=
-				stop="${range#-}"
-			elif [[ "${range}" == *?-?* ]]; then
-				start="${range%-*}"
-				stop="${range#*-}"
-			else
-				start="${range}"
-				stop="${range}"
-			fi
-			_dlang_filter_compilers "$start" "$stop"
-		done
-	else
-		_dlang_filter_compilers "" ""
-	fi
-
-	[ ${#_dlang_compiler_iuse[@]} -eq 0 ] && die "No Dlang compilers found that satisfy this package's version range: $DLANG_VERSION_RANGE"
-
-	if [ "${DLANG_PACKAGE_TYPE}" != "multi" ]; then
-		REQUIRED_USE="^^"
-	else
-		REQUIRED_USE="||"
-	fi
-	DEPEND="${_dlang_depends[@]}"
-	# DMD, is statically linked and does not have its host compiler as a runtime dependency.
-	if [ "${DLANG_PACKAGE_TYPE}" == "dmd" ]; then
-		IUSE="${_dlang_compiler_iuse[@]} +selfhost"
-		_dlang_compiler_iuse+=( selfhost )
-	else
-		RDEPEND="$DEPEND"
-		IUSE="${_dlang_compiler_iuse[@]}"
-	fi
-	REQUIRED_USE="${REQUIRED_USE} ( ${_dlang_compiler_iuse[@]} ) ${_dlang_compiler_iuse_mask[@]}"
-
-	local -a compiler
-	for compiler in ${_dlang_compiler_iuse[@]}; do
-		DLANG_COMPILER_USE="${DLANG_COMPILER_USE}${compiler}?,"
-	done
-	DLANG_COMPILER_USE="${DLANG_COMPILER_USE:0:-1}"
-}
-
-# @FUNCTION: _dlang_phase_wrapper
-# @DESCRIPTION:
-# A more or less typical ebuild phase wrapper that invokes `d_src_*` phases if defined in an ebuild or calls Portage's
-# default implementation otherwise. when multiple build configurations are provided it also takes care of invoking
-# phases once for each configuration as well as calling `d_src_*_all` if defined after the phase has been run for each
-# individual build configuration.
-_dlang_phase_wrapper() {
-	dlang_phase() {
-		if declare -f d_src_${1} >/dev/null ; then
-			d_src_${1}
-		else
-			default_src_${1}
-		fi
-	}
-
-	if [[ "${DLANG_PACKAGE_TYPE}" == "multi" ]]; then
-		dlang_foreach_config dlang_phase "${1}"
-		# Handle any compiler & arch independent installation steps
-		if declare -f d_src_${1}_all >/dev/null ; then
-			d_src_${1}_all
-		fi
-	else
-		dlang_single_config dlang_phase "${1}"
-	fi
-}
-
-# @FUNCTION: _dlang_compiler_to_dlang_version
-# @DESCRIPTION:
-# Given two arguments, a compiler vendor and a compiler version, this function retrieves the corresponding supported
-# Dlang front-end (language) version. This is used in filtering compilers offering incompatible language versions for
-# some packages. The resulting language version is echo'd.
-_dlang_compiler_to_dlang_version() {
-	local mapping
-	case "$1" in
-		"dmd")
-			mapping="$2"
-		;;
-		"gdc")
-			mapping=`echo ${_dlang_gdc_frontend[$2]} | cut -f 1 -d " "`
-		;;
-		"ldc2")
-			mapping=`echo ${_dlang_ldc2_frontend[$2]} | cut -f 1 -d " "`
-		;;
-	esac
-	[ -n "${mapping}" ] || die "Could not retrieve dlang version for '$1-$2'."
-	echo "${mapping}"
-}
-
-# @FUNCTION: _dlang_build_configurations
-# @DESCRIPTION:
-# Creates a list of all the build configurations we are going to compile. As all Dlang compilers have different ABIs,
-# potentially changing from one release to the next, I decided to distinguish the compiler vendor, compiler version and
-# architecture. An application typically only uses on build configuration, but libraries like GtkD may be installed for
-# many compiler versions as well as in 32-bit and 64-bit at the same time on multilib. The result is echo'd.
-_dlang_build_configurations() {
-	local variants version_component use_flag use_flags
-
-	if [ -z ${DLANG_USE_COMPILER+x} ]; then
-		use_flags="${USE}"
-	else
-		use_flags="${DLANG_USE_COMPILER}"
-	fi
-	for use_flag in $use_flags; do
-		case ${use_flag} in
-			dmd-* | gdc-* | ldc-* | ldc2-*)
-				# On the left are possible $use_flag,
-				# on the right, the correct $version_component:
-				#
-				# dmd-2_088              dmd-2.088
-				# gdc-12                 gdc-12
-				# gdc-11                 gdc-11
-				# ldc-1_29               ldc-1.29
-				# ldc2-1_30              ldc2-1.30
-				#
-				# Note: for ldc2 there is an empty separater betwen the 'c' and the '2'.
-				if [[ "${use_flag}" =~ ldc2-* ]]; then
-					version_component=$(ver_rs 3 . ${use_flag})
-				else
-					version_component=$(ver_rs 2-3 . ${use_flag})
-				fi
-
-				if [ "${DLANG_PACKAGE_TYPE}" == "multi" ]; then
-					for abi in $(multilib_get_enabled_abis); do
-						variants="${variants} ${abi}-${version_component}"
-					done
-				else
-					variants="${DEFAULT_ABI:-default}-${version_component}"
-				fi
-				;;
-			selfhost)
-				if [ "${DLANG_PACKAGE_TYPE}" == "dmd" ]; then
-					variants="default-dmd-selfhost"
-				fi
-				;;
-		esac
-	done
-	if [ -z "${variants}" ]; then
-		die "At least one compiler USE-flag must be selected. This should be checked by REQUIRED_USE in this package."
-	fi
-	echo ${variants}
-}
-
-# @FUNCTION: _dlang_use_build_vars
-# @DESCRIPTION:
-# Sets and exports important environment variables pertaining to the current build configuration.
-# LDFLAGS are also converted into their compiler specific equivalents here.
-_dlang_use_build_vars() {
-	# Now we define some variables and then call the function.
-	# LIBDIR_${ABI} is used by the dolib.* functions, that's why we override it per compiler.
-	# The original value is exported as LIBDIR_HOST.
-	local libdir_var="LIBDIR_${ABI}"
-	export LIBDIR_HOST="${!libdir_var}"
-	# Save the default pkgconfig path
-	if [[ ! -v DLANG_SAVE_PKG_CONFIG_PATH ]]; then
-		# Copy the logic from meson.eclass for setting PKG_CONFIG_PATH
-		export DLANG_SAVE_PKG_CONFIG_PATH="${PKG_CONFIG_PATH}${PKG_CONFIG_PATH:+:}/usr/share/pkgconfig"
-	fi
-	if [[ ! -v DLANG_SAVE_PKG_CONFIG_LIBDIR ]]; then
-		# either save the value or provide a sane default lest other eclasses get confused.
-		# e.g. meson.eclass will set PKG_CONFIG_LIBDIR using $(get_libdir) which won't
-		# work properly since we will overwrite $LIBDIR_$ABI
-		export DLANG_SAVE_PKG_CONFIG_LIBDIR="${PKG_CONFIG_LIBDIR:-/usr/$(get_libdir)/pkgconfig}"
-	fi
-	export ABI="$(echo ${MULTIBUILD_VARIANT} | cut -d- -f1)"
-	export DC="$(echo ${MULTIBUILD_VARIANT} | cut -d- -f2)"
-	export DC_VERSION="$(echo ${MULTIBUILD_VARIANT} | cut -d- -f3)"
-	case "${DC:0:3}" in
-		"dmd") export DLANG_VENDOR="DigitalMars" ;;
-		"gdc") export DLANG_VENDOR="GNU" ;;
-		"ldc") export DLANG_VENDOR="LDC" ;;
-	esac
-	export DLANG_VERSION="$(_dlang_compiler_to_dlang_version ${DC} ${DC_VERSION})"
-	case "${ABI}" in
-		"default") ;;
-		"x86"*)    export MODEL=32 ;;
-		*)         export MODEL=64 ;;
-	esac
-	if [[ "${DLANG_VENDOR}" == "DigitalMars" ]]; then
-		if [ "${DC_VERSION}" != "selfhost" ]; then
-			export DC="/usr/lib/dmd/${DC_VERSION}/bin/dmd"
-			export DMD="${DC}"
-		fi
-		# "lib" on pure x86, "lib{32,64}" on amd64 (and multilib)
-		if has_multilib_profile || [[ "${MODEL}" == "64" ]]; then
-			export LIBDIR_${ABI}="../usr/lib/dmd/${DC_VERSION}/lib${MODEL}"
-		else
-			export LIBDIR_${ABI}="../usr/lib/dmd/${DC_VERSION}/lib"
-		fi
-		export DCFLAGS="${DMDFLAGS}"
-		export DLANG_LINKER_FLAG="-L"
-		export DLANG_A_FLAGS="-lib -fPIC"
-		export DLANG_SO_FLAGS="-shared -defaultlib=libphobos2.so -fPIC"
-		export DLANG_OUTPUT_FLAG="-of"
-		export DLANG_VERSION_FLAG="-version"
-		export DLANG_UNITTEST_FLAG="-unittest"
-	elif [[ "${DLANG_VENDOR}" == "GNU" ]]; then
-		# Note that ldc2 expects the compiler name to be 'gdmd', not 'x86_64-pc-linux-gnu-gdmd'.
-		# gcc's SLOT is its major version component.
-		export DC="/usr/${CHOST_default}/gcc-bin/${DC_VERSION}/${CHOST_default}-gdc"
-		export DMD="/usr/${CHOST_default}/gcc-bin/${DC_VERSION}/gdmd"
-		if [[ ${DLANG_PACKAGE_TYPE} != multi ]]; then
-			# Both single and dmd enter this branch
-			export LIBDIR_${ABI}="lib/gcc/${CHOST_default}/${DC_VERSION}"
-		else
-			if multilib_is_native_abi; then
-				export LIBDIR_${ABI}="lib/gcc/${CHOST_default}/${DC_VERSION}"
-			else
-				export LIBDIR_${ABI}="lib/gcc/${CHOST_default}/${DC_VERSION}/${MODEL}"
-			fi
-		fi
-		export DCFLAGS="${GDCFLAGS} -shared-libphobos"
-		export DLANG_LINKER_FLAG="-Xlinker "
-		export DLANG_SO_FLAGS="-shared -fpic"
-		export DLANG_OUTPUT_FLAG="-o "
-		export DLANG_VERSION_FLAG="-fversion"
-		export DLANG_UNITTEST_FLAG="-funittest"
-	elif [[ "${DLANG_VENDOR}" == "LDC" ]]; then
-		export LIBDIR_${ABI}="../usr/lib/ldc2/${DC_VERSION}/lib${MODEL}"
-		export DMD="/usr/lib/ldc2/${DC_VERSION}/bin/ldmd2"
-		export DC="/usr/lib/ldc2/${DC_VERSION}/bin/ldc2"
-		# To allow separate compilation and avoid object file name collisions,
-		# we append -op (do not strip paths from source file).
-		export DCFLAGS="${LDCFLAGS} -op"
-		export DLANG_LINKER_FLAG="-L="
-		export DLANG_A_FLAGS="-lib -relocation-model=pic"
-		export DLANG_SO_FLAGS="-shared -relocation-model=pic"
-		export DLANG_OUTPUT_FLAG="-of="
-		export DLANG_VERSION_FLAG="-d-version"
-		export DLANG_UNITTEST_FLAG="-unittest"
-	else
-		die "Could not detect D compiler vendor!"
-	fi
-	# We need to convert the LDFLAGS, so they are understood by DMD and LDC.
-	if [[ "${DLANG_VENDOR}" == "DigitalMars" ]]; then
-		# gc-sections breaks executables for some versions of D
-		# It works with the gold linker on the other hand
-		# See: https://issues.dlang.org/show_bug.cgi?id=879
-		[[ "${DLANG_PACKAGE_TYPE}" == "dmd" ]] && local dlang_version=$SLOT || local dlang_version=$DLANG_VERSION
-		if ver_test $dlang_version -lt 2.072; then
-			if ! ld -v | grep -q "^GNU gold"; then
-				filter-flags {-L,-Xlinker,-Wl\,}--gc-sections
-			fi
-		fi
-		# Filter ld.gold ICF flag. (https://issues.dlang.org/show_bug.cgi?id=17515)
-		filter-flags {-L,-Xlinker,-Wl\,}--icf={none,all,safe}
-	fi
-
-	if [[ "${DLANG_VENDOR}" == "DigitalMars" ]] || [[ "${DLANG_VENDOR}" == "GNU" ]]; then
-		# DMD and GDC don't undestand/work with LTO flags
-		filter-ldflags -f{no-,}use-linker-plugin -f{no-,}lto -flto=*
-	fi
-	export LDFLAGS=`dlang_convert_ldflags`
-
-	# Add the compiler specific pkgconfig paths.
-	export PKG_CONFIG_PATH="${DLANG_SAVE_PKG_CONFIG_PATH}:/usr/$(get_libdir)/pkgconfig"
-	# Technically, this value will stay the same so it's enough to export it once
-	# but it's cleaner to keep these 2 variables close together.
-	export PKG_CONFIG_LIBDIR="${DLANG_SAVE_PKG_CONFIG_LIBDIR}"
-
-	"${@}"
-}
-
-# @FUNCTION: _dlang_prefix_words
-# @DESCRIPTION:
-# A simple helper function that prefixes the first argument to all other arguments and echo's the resulting line.
-_dlang_prefix_words() {
-	for arg in ${*:2}; do
-		echo -n " $1$arg"
-	done
-}
-
-# @FUNCTION: _dlang_additional_flags
-# @DESCRIPTION:
-# This function is internally used by the dlang_compile_bin/lib/so functions. When `debug` is among the enabled IUSE
-# flags, this function ensures that a debug build of the Dlang package is produced. It also provides the additional
-# flags for any imports and libraries mentioned in an ebuild in the compiler specific syntax. The resulting flags are
-# echo'd.
-_dlang_additional_flags() {
-	# For info on debug use flags see:
-	# https://wiki.gentoo.org/wiki/Project:Quality_Assurance/Backtraces#debug_USE_flag
-	case "${DLANG_VENDOR}" in
-		"DigitalMars")
-			local import_prefix="-I"
-			local string_import_prefix="-J"
-			local debug_flags="-debug"
-			;;
-		"GNU")
-			local import_prefix="-I"
-			local string_import_prefix="-J"
-			local debug_flags="-fdebug"
-			;;
-		"LDC")
-			local import_prefix="-I="
-			local string_import_prefix="-J="
-			local debug_flags="-d-debug"
-			;;
-	esac
-	echo $(has debug ${IUSE} && use debug && echo ${debug_flags})\
-		$(_dlang_prefix_words "${DLANG_VERSION_FLAG}=" $versions)\
-		$(_dlang_prefix_words $import_prefix $imports)\
-		$(_dlang_prefix_words $string_import_prefix $string_imports)\
-		$(_dlang_prefix_words "${DLANG_LINKER_FLAG}-l" $libs)
-}
-
-# @FUNCTION: _dlang_compiler_backend_is_enabled
-# @USAGE: _dlang_compiler_backend_is_enabled <backend>
-# @RETURN: Truth if the backend is enabled
-# @INTERNAL
-# @DESCRIPTION:
-# Check if the given backend is enabled.
-# Possible values for the backend are: dmd, ldc2 and gdc
-_dlang_compiler_backend_is_enabled() {
-	local disabled_backend
-	for disabled_backend in "${DLANG_COMPILER_DISABLED_BACKENDS[@]}"; do
-		[[ ${disabled_backend} == ${1} ]] && return 1
-	done
-	return 0
-}
-
-# Setting DLANG_USE_COMPILER skips the generation of USE-flags for compilers
-if [ -z ${DLANG_USE_COMPILER+x} ]; then
-	set -f; _dlang_filter_versions; set +f
-fi
-
-fi

diff --git a/eclass/dmd.eclass b/eclass/dmd.eclass
deleted file mode 100644
index 9b4554a..0000000
--- a/eclass/dmd.eclass
+++ /dev/null
@@ -1,422 +0,0 @@
-# @ECLASS: dmd.eclass
-# @MAINTAINER:
-# Marco Leise <marco.leise@gmx.de>
-# @SUPPORTED_EAPIS: 6 7 8
-# @BLURB: Captures most of the logic for installing DMD
-# @DESCRIPTION:
-# Helps with the maintenance of the various DMD versions by capturing common
-# logic.
-
-# @ECLASS_VARIABLE: MAJOR
-# @DESCRIPTION:
-# Major DMD version (usually 2)
-
-# @ECLASS_VARIABLE: MINOR
-# @DESCRIPTION:
-# Minor DMD version without leading zeroes (e.g. 78)
-
-# @ECLASS_VARIABLE: MULTILIB_COMPAT
-# @DESCRIPTION:
-# See Gentoo's multilib-build.eclass
-
-if [[ ${_ECLASS_ONCE_DMD} != "recur -_+^+_- spank" ]] ; then
-_ECLASS_ONCE_DMD="recur -_+^+_- spank"
-
-case ${EAPI:-0} in
-	6) inherit eapi7-ver ;;
-	7|8) ;;
-	*) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;;
-esac
-
-DESCRIPTION="Reference compiler for the D programming language"
-HOMEPAGE="http://dlang.org/"
-HTML_DOCS="html/*"
-
-# DMD supports amd64/x86 exclusively
-MULTILIB_COMPAT=( abi_x86_{32,64} )
-
-inherit desktop edos2unix multilib-build optfeature toolchain-funcs
-
-# @FUNCTION: dmd_eq
-# @DESCRIPTION:
-# Returns `true` if the DMD version we are installing is equal to the one given as the argument.
-dmd_eq() {
-	[[ ${MAJOR} -eq ${1%.*} ]] && [[ ${MINOR} -eq $((10#${1#*.})) ]]
-}
-
-# @FUNCTION: dmd_ge
-# @DESCRIPTION:
-# Returns `true` if the DMD version we are installing is greater or equal to the one given as the argument.
-dmd_ge() {
-	[[ ${MAJOR} -ge ${1%.*} ]] && [[ ${MINOR} -ge $((10#${1#*.})) ]]
-}
-
-# @FUNCTION: dmd_gen_exe_dir
-# @DESCRIPTION:
-# Returns the relative directory that the compiler executable will be found in. This directory is used both for
-# installing the binary as well as setting the compiler during compilation of druntime and Phobos.
-dmd_gen_exe_dir() {
-	if dmd_ge 2.101; then
-		echo generated/linux/release/$(dmd_arch_to_model)
-	elif dmd_ge 2.074; then
-		echo dmd/generated/linux/release/$(dmd_arch_to_model)
-	else
-		echo dmd/src
-	fi
-}
-
-# For reliable download statistics, we don't mirror.
-RESTRICT="mirror"
-LICENSE="Boost-1.0"
-SLOT="$(ver_cut 1-2)"
-MAJOR="$(ver_cut 1)"
-MINOR="$((10#$(ver_cut 2)))"
-PATCH="$(ver_cut 3)"
-VERSION="$(ver_cut 1-3)"
-BETA="$(ver_cut 4)"
-if [ "${KERNEL}" != "FreeBSD" ]; then
-	ARCHIVE="${ARCHIVE-linux.tar.xz}"
-elif [ "${ARCH}" == "x86" ]; then
-	ARCHIVE="${ARCHIVE-freebsd-32.tar.xz}"
-else
-	ARCHIVE="${ARCHIVE-freebsd-64.tar.xz}"
-fi
-SONAME="${SONAME-libphobos2.so.0.${MINOR}.${PATCH}}"
-SONAME_SYM="${SONAME%.*}"
-
-IUSE="doc examples static-libs"
-
-# Self-hosting versions of DMD need a host compiler.
-if dmd_ge 2.068; then
-	DLANG_VERSION_RANGE="${DLANG_VERSION_RANGE-${SLOT}}"
-	DLANG_PACKAGE_TYPE=dmd
-	inherit dlang
-fi
-
-# Call EXPORT_FUNCTIONS after any imports
-EXPORT_FUNCTIONS src_prepare src_compile src_test src_install pkg_postinst pkg_postrm
-
-if [[ -n "${BETA}" ]]; then
-	# We want to convert a Gentoo version string to an upstream one: 2.097.0_rc1 -> 2.097.0-rc.1
-	SRC_URI="http://downloads.dlang.org/pre-releases/${MAJOR}.x/${VERSION}/${PN}.$(ver_rs 3 "-" 4 ".").${ARCHIVE}"
-else
-	# the aws mirrors work for <=dmd-2.100.2
-	if dmd_ge 2.101; then
-		SRC_URI="https://downloads.dlang.org/releases/${YEAR}/${PN}.${PV}.${ARCHIVE}"
-	else
-		SRC_URI="mirror://aws/${YEAR}/${PN}.${PV}.${ARCHIVE}"
-	fi
-fi
-
-COMMON_DEPEND="
-	net-misc/curl[${MULTILIB_USEDEP}]
-	>=app-eselect/eselect-dlang-20140709
-	"
-DEPEND="
-	${COMMON_DEPEND}
-	app-arch/unzip
-	"
-RDEPEND="
-	${COMMON_DEPEND}
-	!dev-lang/dmd-bin
-	"
-
-S="${WORKDIR}/dmd2"
-PREFIX="usr/lib/${PN}/${SLOT}"
-IMPORT_DIR="/${PREFIX}/import"
-
-dmd_src_prepare() {
-	# Reorganize directories
-	mkdir dmd || die "Failed to create directories 'dmd', 'druntime' and 'phobos'"
-	mv src/dmd      dmd/src     || die "Failed to move 'src/dmd' to 'dmd/src'"
-	mv src/VERSION  dmd/VERSION || die "Failed to move 'src/VERSION' to 'dmd/VERSION'"
-	# >=dmd-2.101 expects the version file to be in the same directory as the dmd
-	# folder. i.e. VERSION should be in ${S} not in ${S}/dmd
-	ln -s dmd/VERSION VERSION   || die "Failed to symlink 'src/VERSION' to 'VERSION'"
-	mv src/druntime druntime    || die "Failed to move 'src/druntime' to 'druntime'"
-	mv src/phobos   phobos      || die "Failed to move 'src/phobos' to 'phobos'"
-	# Symlinks used by dmd in the selfhosting case
-	ln -s ../druntime src/druntime || die "Failed to symlink 'druntime' to 'src/druntime'"
-	ln -s ../phobos   src/phobos   || die "Failed to symlink 'phobos' to 'src/phobos'"
-
-	mkdir dmd/generated || die "Could not create output directory"
-
-	# Convert line-endings of file-types that start as cr-lf and are installed later on
-	for file in $( find . -name "*.txt" -o -name "*.html" -o -name "*.d" -o -name "*.di" -o -name "*.ddoc" -type f ); do
-		edos2unix $file || die "Failed to convert DOS line-endings to Unix."
-	done
-
-	# Ebuild patches
-	default
-
-	# Run other preparations
-	declare -f dmd_src_prepare_extra > /dev/null && dmd_src_prepare_extra
-
-	# User patches
-	eapply_user
-}
-
-dmd_src_compile() {
-	# A native build of dmd is used to compile the runtimes for both x86 and amd64
-	# We cannot use multilib-minimal yet, as we have to be sure dmd for amd64
-	# always gets build first.
-
-	# 2.068 used HOST_DC instead of HOST_DMD
-	dmd_eq 2.068 && HOST_DMD="HOST_DC" || HOST_DMD="HOST_DMD"
-	# 2.070 and below used HOST_CC instead of HOST_CXX
-	dmd_ge 2.071 && HOST_CXX="HOST_CXX" || HOST_CXX="HOST_CC"
-	# 2.072 and 2.073 have support for LTO, but would need a Makefile patch.
-	# From 2.088 on, the build fails with it active.
-	dmd_ge 2.074 && ! dmd_ge 2.088 && LTO="ENABLE_LTO=1"
-	# 2.080 and below used RELEASE instead of ENABLE_RELEASE
-	dmd_ge 2.081 && ENABLE_RELEASE="ENABLE_RELEASE" || ENABLE_RELEASE="RELEASE"
-
-	# Special case for self-hosting (i.e. no compiler USE flag selected).
-	local kernel model actual_compiler
-	if [ "${DC_VERSION}" == "selfhost" ]; then
-		case "${KERNEL}" in
-			"linux")   kernel="linux";;
-			"FreeBSD") kernel="freebsd";;
-			*) die "Self-hosting dmd on ${KERNEL} is not currently supported."
-		esac
-		case "${ARCH}" in
-			"x86")   model=32;;
-			"amd64") model=64;;
-			*) die "Self-hosting dmd on ${ARCH} is not currently supported."
-		esac
-		export DMD="${kernel}/bin${model}/dmd"
-		if ! dmd_ge 2.094; then
-			export DMD="../../${DMD}"
-		fi
-		actual_compiler="${S}/${DMD}"
-	else
-		# Not selfhosting, leave the compiler variable unchanged
-		actual_compiler="${DC}"
-	fi
-	if dmd_ge 2.094; then
-		einfo "Building dmd build script..."
-		DC="${actual_compiler}" dlang_compile_bin dmd/generated/build dmd/src/build.d
-		einfo "Building dmd..."
-		env VERBOSE=1 ${HOST_DMD}="${DMD}" CXX="$(tc-getCXX)" ${ENABLE_RELEASE}=1 ${LTO} dmd/generated/build DFLAGS="$(dlang_dmdw_dcflags)" dmd || die
-	else
-		einfo "Building dmd..."
-		emake -C dmd/src -f posix.mak TARGET_CPU=X86 ${HOST_DMD}="${DMD}" ${HOST_CXX}="$(tc-getCXX)" ${ENABLE_RELEASE}=1 ${LTO}
-	fi
-
-	# Don't pick up /etc/dmd.conf when calling $(dmd_gen_exe_dir)/dmd !
-	if [ ! -f "$(dmd_gen_exe_dir)/dmd.conf" ]; then
-		einfo "Creating a dummy dmd.conf"
-		touch "$(dmd_gen_exe_dir)/dmd.conf" || die "Could not create dummy dmd.conf"
-	fi
-
-	compile_libraries() {
-		local mymakeargs=(
-			DMD="../$(dmd_gen_exe_dir)/dmd"
-			MODEL="${MODEL}"
-			PIC=1
-			CC="$(tc-getCC)"
-			DMD_DIR=../dmd
-		)
-		# <2.107 use posix.mak, >=dmd-2.107 use Makefile
-		! dmd_ge 2.107 && mymakeargs+=(-f posix.mak)
-
-		local druntimeMakeArgs=(
-			MANIFEST=
-		)
-		local phobosMakeArgs=(
-			CUSTOM_DRUNTIME=1
-			DRUNTIME_PATH=../druntime
-		)
-		# Let's try to specify the build args to avoid building both
-		# shared+static libraries with !static-libs. Do this only for
-		# >=2.107, if it's useful backport the improvements later.
-		if dmd_ge 2.107; then
-			phobosMakeArgs+=( $(usex static-libs 'lib dll' 'dll') )
-			# druntime's notion of a shared library is a static archive
-			# that is embedded into the phobos shared library.
-			#
-			# Technically there is the dll_so target which is the proper
-			# so file but who's gonna use it? Perhaps if phobos would
-			# not incorporate druntime we could install them as separate
-			# libraries (like ldc2 and gdc).
-			druntimeMakeArgs+=( $(usex static-libs 'lib dll' 'dll') )
-			# Either way, now we no longer build static-libs
-			# indiscriminately.
-		fi
-
-		einfo 'Building druntime...'
-		emake -C druntime "${mymakeargs[@]}" "${druntimeMakeArgs[@]}"
-
-		einfo 'Building Phobos 2...'
-		emake -C phobos "${mymakeargs[@]}" "${phobosMakeArgs[@]}"
-	}
-
-	dmd_foreach_abi compile_libraries
-
-	# Not needed after compilation. Would otherwise be installed as imports.
-	rm -r phobos/etc/c/zlib
-}
-
-dmd_src_test() {
-	test_hello_world() {
-		local phobosDir=phobos/generated/linux/release/"${MODEL}"
-		local commandArgs=(
-			# Copied from below, where dmd.conf is generated
-			-L--export-dynamic
-			-defaultlib=phobos2 # If unspecified, defaults to libphobos2.a
-			-fPIC
-			-L-L"${phobosDir}"
-			-L-rpath="${phobosDir}"
-
-			-conf= # Don't use dmd.conf
-			-m"${MODEL}"
-			-Iphobos
-			-Idruntime/import
-		)
-		"$(dmd_gen_exe_dir)/dmd" "${commandArgs[@]}" samples/d/hello.d \
-			|| die "Failed to build hello.d (${MODEL}-bit)"
-		./hello ${MODEL}-bit || die "Failed to run test sample (${MODEL}-bit)"
-		rm hello.o hello || die "Could not remove temporary files"
-	}
-
-	dmd_foreach_abi test_hello_world
-}
-
-dmd_src_install() {
-	local MODEL=$(dmd_abi_to_model)
-
-	# dmd.conf
-	if has_multilib_profile; then
-		cat > linux/bin${MODEL}/dmd.conf << EOF
-[Environment]
-DFLAGS=-I${IMPORT_DIR} -L--export-dynamic -defaultlib=phobos2 -fPIC
-[Environment32]
-DFLAGS=%DFLAGS% -L-L/${PREFIX}/lib32 -L-rpath=/${PREFIX}/lib32
-[Environment64]
-DFLAGS=%DFLAGS% -L-L/${PREFIX}/lib64 -L-rpath=/${PREFIX}/lib64
-EOF
-	elif [ "${ABI:0:5}" = "amd64" ]; then
-		cat > linux/bin${MODEL}/dmd.conf << EOF
-[Environment]
-DFLAGS=-I${IMPORT_DIR} -L--export-dynamic -defaultlib=phobos2 -fPIC -L-L/${PREFIX}/lib64 -L-rpath=/${PREFIX}/lib64
-EOF
-	else
-		cat > linux/bin${MODEL}/dmd.conf << EOF
-[Environment]
-DFLAGS=-I${IMPORT_DIR} -L--export-dynamic -defaultlib=phobos2 -fPIC -L-L/${PREFIX}/lib -L-rpath=/${PREFIX}/lib
-EOF
-	fi
-	insinto "etc/dmd"
-	newins "linux/bin${MODEL}/dmd.conf" "${SLOT}.conf"
-	dosym "../../../../../etc/dmd/${SLOT}.conf" "${PREFIX}/bin/dmd.conf"
-
-	# DMD
-	einfo "Installing ${PN}..."
-	# From version 2.066 on, dmd will find dmd.conf in the executable directory, if we
-	# call it through a symlink in /usr/bin
-	dmd_ge 2.066 && dosym "../../${PREFIX}/bin/dmd" "/usr/bin/dmd-${SLOT}"
-	into ${PREFIX}
-	dobin "$(dmd_gen_exe_dir)/dmd"
-
-	# druntime
-	einfo 'Installing druntime...'
-	insinto ${PREFIX}
-	doins -r druntime/import
-
-	# Phobos 2
-	einfo 'Installing Phobos 2...'
-	into usr
-	install_phobos_2() {
-		# Copied get_libdir logic from dlang.eclass, so we can install Phobos correctly.
-		if has_multilib_profile || [[ "${MODEL}" == "64" ]]; then
-			local libdir="../${PREFIX}/lib${MODEL}"
-		else
-			local libdir="../${PREFIX}/lib"
-		fi
-
-		# Install shared lib.
-		# dlang.eclass will set LIBDIR_$ABI to the path of the host compiler
-		# library direcory (if not selfhosting). We don't care about that
-		# location, however, and we instead want to have it point
-		# to the path where this package is supposed to install the libraries
-		# to, i.e. the system library directory. We can use $LIBDIR_HOST
-		# to restore that value to the correct one but only if the ABI
-		# this function is running into is the same as the one set
-		# by dlang.eclass. Since dlang.eclass treats dmd as a 'single'
-		# type package, it will only treat the case where $ABI is the
-		# native one.
-		if ! use selfhost && multilib_is_native_abi; then
-			# We aren't going to use LIBDIR_$ABI for this ABI anymore
-			# so just overwrite it, don't bother saving it.
-			export LIBDIR_${ABI}="${LIBDIR_HOST}"
-		fi
-
-		# We are installing the real file into the system libdir.
-		dolib.so phobos/generated/linux/release/${MODEL}/"${SONAME}"
-		dosym "${SONAME}" /usr/"$(get_libdir)"/"${SONAME_SYM}"
-		# We create an additional symlink in this package's specific libdir.
-		dosym ../../../../../usr/"$(get_libdir)"/"${SONAME}" /usr/"${libdir}"/libphobos2.so
-
-		# Install static lib if requested.
-		if use static-libs; then
-			if has_multilib_profile || [[ "${MODEL}" == "64" ]]; then
-				export LIBDIR_${ABI}="../${PREFIX}/lib${MODEL}"
-			else
-				export LIBDIR_${ABI}="../${PREFIX}/lib"
-			fi
-			dolib.a phobos/generated/linux/release/${MODEL}/libphobos2.a
-		fi
-	}
-	dmd_foreach_abi install_phobos_2
-	insinto ${PREFIX}/import
-	doins -r phobos/{etc,std}
-
-	# man pages, docs and samples
-	insinto ${PREFIX}/man/man1
-	doins man/man1/dmd.1
-	insinto ${PREFIX}/man/man5
-	doins man/man5/dmd.conf.5
-	if use doc; then
-		einstalldocs
-		insinto "/usr/share/doc/${PF}/html"
-		doins "${FILESDIR}/dmd-doc.png"
-		make_desktop_entry "xdg-open ${EPREFIX}/usr/share/doc/${PF}/html/d/index.html" "DMD ${PV}" "${EPREFIX}/usr/share/doc/${PF}/html/dmd-doc.png" "Development"
-	fi
-	if use examples; then
-		insinto ${PREFIX}/samples
-		doins -r samples/d/*
-		docompress -x ${PREFIX}/samples/
-	fi
-}
-
-dmd_pkg_postinst() {
-	# Update active dmd
-	"${ROOT%/}"/usr/bin/eselect dlang update dmd
-
-	use examples && elog "Examples can be found in: /${PREFIX}/samples"
-	use doc && elog "HTML documentation is in: /usr/share/doc/${PF}/html"
-
-	optfeature "additional D development tools" "dev-util/dlang-tools"
-}
-
-dmd_pkg_postrm() {
-	"${ROOT%/}"/usr/bin/eselect dlang update dmd
-}
-
-dmd_foreach_abi() {
-	for ABI in $(multilib_get_enabled_abis); do
-		local MODEL=$(dmd_abi_to_model)
-		einfo "  Executing ${1} in ${MODEL}-bit ..."
-		"${@}"
-	done
-}
-
-dmd_arch_to_model() {
-	[[ "${ARCH}" == "amd64" ]] && echo 64 || echo 32
-}
-
-dmd_abi_to_model() {
-	[[ "${ABI:0:5}" == "amd64" ]] && echo 64 || echo 32
-}
-
-fi

diff --git a/profiles/use.desc b/profiles/use.desc
index 5c7bc4a..60bda0f 100644
--- a/profiles/use.desc
+++ b/profiles/use.desc
@@ -31,10 +31,3 @@ dlang_targets_ldc2-1_37 - Build with ldc2 1.37
 dlang_targets_ldc2-1_38 - Build with ldc2 1.38
 dlang_targets_ldc2-1_39 - Build with ldc2 1.39
 dlang_targets_ldc2-1_40 - Build with ldc2 1.40
-
-
-dmd-2_107 - Build for DMD 2.107
-gdc-11 - Build for GCC 11
-gdc-12 - Build for GCC 12
-gdc-13 - Build for GCC 13
-ldc2-1_36 - Build for ldc2 1.36


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2025-08-24 15:47 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-02-06 15:50 [gentoo-commits] repo/user/dlang:master commit in: eclass/, profiles/ Marco Leise
  -- strict thread matches above, loose matches on Subject: below --
2022-10-13 15:56 Marco Leise
2025-05-12  4:01 Horodniceanu Andrei
2025-08-24 15:47 Horodniceanu Andrei

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox