aboutsummaryrefslogtreecommitdiffhomepage
path: root/nix-overlays
diff options
context:
space:
mode:
Diffstat (limited to 'nix-overlays')
-rw-r--r--nix-overlays/README14
-rw-r--r--nix-overlays/dmd/default.nix6
-rw-r--r--nix-overlays/dmd/generic.nix17
-rw-r--r--nix-overlays/dub/default.nix5
-rw-r--r--nix-overlays/ldc/binary.nix43
-rw-r--r--nix-overlays/ldc/bootstrap.nix45
-rw-r--r--nix-overlays/ldc/default.nix5
-rw-r--r--nix-overlays/ldc/generic.nix136
-rw-r--r--nix-overlays/ldc/package.nix180
9 files changed, 249 insertions, 202 deletions
diff --git a/nix-overlays/README b/nix-overlays/README
index 44e76b6..ff0b5bb 100644
--- a/nix-overlays/README
+++ b/nix-overlays/README
@@ -17,10 +17,10 @@ of publishing, in some cases with additional fixes.
nix overlays for (updates nixpkgs, more recent versions of):
- ldc ( 1.30.0 -> 1.39.0 )
- - dub ( 1.23.0 -> 1.36.0 ) [for nix versions 1.31.0 ... 1.33.0 broken]
+ - dub ( 1.23.0 -> 1.38.1 ) [for nix versions 1.31.0 ... 1.33.0 broken]
- dtools ( 2.095.1 -> 2.103.1 )
- - dmd ( 2.106.1 -> 2.109.0 )
+ - dmd ( 2.106.1 -> 2.109.1 )
- gdc [not yet available]
dlang-nix-flakes.org --❯
@@ -59,14 +59,14 @@ search nixpkgs here:
- version in nixpkgs:
- https://search.nixos.org/packages?channel=unstable&show=ldc&from=0&size=100&sort=relevance&type=packages&query=ldc
-*** dmd OK ✓ ( 2.100.2 -> 2.109.0 )
+*** dmd OK ✓ ( 2.100.2 -> 2.109.1 )
- https://dlang.org/
- https://wiki.dlang.org/LDC
- https://github.com/dlang/dmd
- https://github.com/dlang/dmd/tags
- nix-prefetch-url --unpack https://github.com/dlang/dmd/archive/refs/tags/v2.109.0.tar.gz
+ nix-prefetch-url --unpack https://github.com/dlang/dmd/archive/refs/tags/v2.109.1.tar.gz
- https://github.com/dlang/dmd/pulls
- version in nixpkgs:
@@ -88,13 +88,13 @@ not yet provided in nixpkgs with gcc12, no attempt made
- https://github.com/D-Programming-GDC/gdc
** build tool
-*** dub ( 1.23.0 -> 1.36.0 )
+*** dub ( 1.23.0 -> 1.38.1 )
- https://code.dlang.org/packages/dub
- https://github.com/dlang/dub
- https://github.com/dlang/dub/releases
- nix-prefetch-url --unpack https://github.com/dlang/dub/archive/refs/tags/v1.36.0.tar.gz
+ nix-prefetch-url --unpack https://github.com/dlang/dub/archive/refs/tags/v1.38.1.tar.gz
- https://github.com/dlang/dub/issues
- version in nixpkgs:
@@ -102,7 +102,7 @@ not yet provided in nixpkgs with gcc12, no attempt made
- dub nixpkg overlay is updated and runs most dub tests correctly
-- dub OK ✓ ( 1.30.0 -> 1.36.0 )
+- dub OK ✓ ( 1.30.0 -> 1.38.1 )
from v1.31.0 requires seeting of pwd in buildPhase else fails to build
packages with nix tools that previous version of dub built;
diff --git a/nix-overlays/dmd/default.nix b/nix-overlays/dmd/default.nix
index 155a950..b5268b7 100644
--- a/nix-overlays/dmd/default.nix
+++ b/nix-overlays/dmd/default.nix
@@ -1,5 +1,5 @@
import ./generic.nix {
- version = "2.109.0";
- dmdHash = "sha256-unAZgyZyT6qomlj6pdlOx4h1SKuDjutl1/0FM9AhBWc=";
- phobosHash = "sha256-b91FeluFqhmjHd1wwkyq98QzIlwjE646xNj2n6hP3aM=";
+ version = "2.109.1";
+ dmdHash = "sha256-3nCDPZnb4eQZmhYYxcH6qOmsP8or0KYuzAa5g/C9xdU=";
+ phobosHash = "sha256-73I0k7tCBwe5tl4K6uMs3/nT2JTZ2SppFYzmokS4W5Y=";
}
diff --git a/nix-overlays/dmd/generic.nix b/nix-overlays/dmd/generic.nix
index 63c2bd1..22f7fa8 100644
--- a/nix-overlays/dmd/generic.nix
+++ b/nix-overlays/dmd/generic.nix
@@ -37,7 +37,7 @@ let
bits = builtins.toString stdenv.hostPlatform.parsed.cpu.bits;
osname =
- if stdenv.isDarwin then
+ if stdenv.hostPlatform.isDarwin then
"osx"
else
stdenv.hostPlatform.parsed.kernel.name;
@@ -97,6 +97,7 @@ stdenv.mkDerivation (finalAttrs: {
rm dmd/compiler/test/runnable/gdb4149.d
rm dmd/compiler/test/runnable/gdb4181.d
rm dmd/compiler/test/compilable/ddocYear.d
+ rm dmd/compiler/test/fail_compilation/needspkgmod.d
# Disable tests that rely on objdump whitespace until fixed upstream:
# https://issues.dlang.org/show_bug.cgi?id=23317
@@ -106,9 +107,9 @@ stdenv.mkDerivation (finalAttrs: {
rm dmd/compiler/test/dshell/test6952.d
'' + lib.optionalString (lib.versionAtLeast version "2.092.2") ''
substituteInPlace dmd/compiler/test/dshell/test6952.d --replace-fail "/usr/bin/env bash" "${bash}/bin/bash"
- '' + lib.optionalString stdenv.isLinux ''
+ '' + lib.optionalString stdenv.hostPlatform.isLinux ''
substituteInPlace phobos/std/socket.d --replace-fail "assert(ih.addrList[0] == 0x7F_00_00_01);" ""
- '' + lib.optionalString stdenv.isDarwin ''
+ '' + lib.optionalString stdenv.hostPlatform.isDarwin ''
substituteInPlace phobos/std/socket.d --replace-fail "foreach (name; names)" "names = []; foreach (name; names)"
'';
@@ -123,7 +124,7 @@ stdenv.mkDerivation (finalAttrs: {
buildInputs = [
curl
tzdata
- # ] ++ lib.optionals stdenv.isDarwin [
+ # ] ++ lib.optionals stdenv.hostPlatform.isDarwin []
# Foundation
];
@@ -208,14 +209,22 @@ stdenv.mkDerivation (finalAttrs: {
disallowedReferences = [ dmdBootstrap ];
+ passthru = {
+ inherit dmdBootstrap;
+ };
+
meta = with lib; {
description = "Official reference compiler for the D language";
homepage = "https://dlang.org/";
+ changelog = "https://dlang.org/changelog/${finalAttrs.version}.html";
# Everything is now Boost licensed, even the backend.
# https://github.com/dlang/dmd/pull/6680
license = licenses.boost;
mainProgram = "dmd";
maintainers = with maintainers; [ lionello dukc jtbx ];
platforms = [ "x86_64-linux" "i686-linux" "x86_64-darwin" ];
+ # ld: section __DATA/__thread_bss has type zero-fill but non-zero file offset file '/private/tmp/nix-build-dmd-2.109.1.drv-0/.rdmd-301/rdmd-build.d-A1CF043A7D87C5E88A58F3C0EF5A0DF7/objs/build.o' for architecture x86_64
+ # clang-16: error: linker command failed with exit code 1 (use -v to see invocation)
+ broken = stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86_64;
};
})
diff --git a/nix-overlays/dub/default.nix b/nix-overlays/dub/default.nix
index 819a5e5..b2a2283 100644
--- a/nix-overlays/dub/default.nix
+++ b/nix-overlays/dub/default.nix
@@ -4,7 +4,7 @@ assert dcompiler != null;
stdenv.mkDerivation rec {
pname = "dub";
- version = "1.36.0";
+ version = "1.38.1";
enableParallelBuilding = true;
@@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
owner = "dlang";
repo = "dub";
rev = "v${version}";
- sha256 = "sha256-S8pls9zxbGAQTwqYf4bDT2q7Ow12S8bBsJE5UmsACBs=";
+ sha256 = "sha256-8Lr/0sx4SKwU1aNOxZArta0RXpDM+EWl29ZsPDdPWFo=";
};
#postUnpack = ''
@@ -80,6 +80,7 @@ stdenv.mkDerivation rec {
description = "Package and build manager for D applications and libraries";
homepage = "https://code.dlang.org/";
license = licenses.mit;
+ mainProgram = "dub";
maintainers = with maintainers; [ jtbx ];
platforms = [ "x86_64-linux" "i686-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ];
};
diff --git a/nix-overlays/ldc/binary.nix b/nix-overlays/ldc/binary.nix
deleted file mode 100644
index ca7fb4f..0000000
--- a/nix-overlays/ldc/binary.nix
+++ /dev/null
@@ -1,43 +0,0 @@
-{ lib, stdenv, fetchurl, curl, tzdata, autoPatchelfHook, fixDarwinDylibNames, libxml2
-, version, hashes }:
-
-let
- inherit (stdenv) hostPlatform;
- OS = if hostPlatform.isDarwin then "osx" else hostPlatform.parsed.kernel.name;
- ARCH = if hostPlatform.isDarwin && hostPlatform.isAarch64 then "arm64" else hostPlatform.parsed.cpu.name;
-in stdenv.mkDerivation {
- pname = "ldc-bootstrap";
- inherit version;
-
- src = fetchurl rec {
- name = "ldc2-${version}-${OS}-${ARCH}.tar.xz";
- url = "https://github.com/ldc-developers/ldc/releases/download/v${version}/${name}";
- sha256 = hashes."${OS}-${ARCH}" or (throw "missing bootstrap sha256 for ${OS}-${ARCH}");
- };
-
- dontConfigure = true;
- dontBuild = true;
-
- nativeBuildInputs = lib.optionals hostPlatform.isLinux [
- autoPatchelfHook
- ] ++ lib.optional hostPlatform.isDarwin fixDarwinDylibNames;
-
- buildInputs = lib.optionals stdenv.hostPlatform.isLinux [ libxml2 stdenv.cc.cc ];
-
- propagatedBuildInputs = [ curl tzdata ];
-
- installPhase = ''
- mkdir -p $out
-
- mv bin etc import lib LICENSE README $out/
- '';
-
- meta = with lib; {
- description = "The LLVM-based D Compiler";
- homepage = "https://github.com/ldc-developers/ldc";
- # from https://github.com/ldc-developers/ldc/blob/master/LICENSE
- license = with licenses; [ bsd3 boost mit ncsa gpl2Plus ];
- maintainers = with maintainers; [ lionello ];
- platforms = [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin" ];
- };
-}
diff --git a/nix-overlays/ldc/bootstrap.nix b/nix-overlays/ldc/bootstrap.nix
index 7724cbc..d81e5a4 100644
--- a/nix-overlays/ldc/bootstrap.nix
+++ b/nix-overlays/ldc/bootstrap.nix
@@ -1,11 +1,50 @@
-{ callPackage }:
-callPackage ./binary.nix {
+{ lib, stdenv, fetchurl, curl, tzdata, autoPatchelfHook, fixDarwinDylibNames, libxml2 }:
+
+let
+ inherit (stdenv) hostPlatform;
+ OS = if hostPlatform.isDarwin then "osx" else hostPlatform.parsed.kernel.name;
+ ARCH = if hostPlatform.isDarwin && hostPlatform.isAarch64 then "arm64" else hostPlatform.parsed.cpu.name;
version = "1.25.0";
hashes = {
- # Get these from `nix-prefetch-url https://github.com/ldc-developers/ldc/releases/download/v1.19.0/ldc2-1.19.0-osx-x86_64.tar.xz` etc..
+ # Get these from `nix store prefetch-file https://github.com/ldc-developers/ldc/releases/download/v1.25.0/ldc2-1.25.0-osx-x86_64.tar.xz` etc..
osx-x86_64 = "sha256-6iKnbS+oalLKmyS8qYD/wS21b7+O+VgsWG2iT4PrWPU=";
linux-x86_64 = "sha256-sfg47RdlsIpryc3iZvE17OtLweh3Zw6DeuNJYgpuH+o=";
linux-aarch64 = "sha256-UDZ43x4flSo+SfsPeE8juZO2Wtk2ZzwySk0ADHnvJBI=";
osx-arm64 = "sha256-O/x0vy0wwQFaDc4uWSeMhx+chJKqbQb6e5QNYf+7DCw=";
};
+in stdenv.mkDerivation {
+ pname = "ldc-bootstrap";
+ inherit version;
+
+ src = fetchurl rec {
+ name = "ldc2-${version}-${OS}-${ARCH}.tar.xz";
+ url = "https://github.com/ldc-developers/ldc/releases/download/v${version}/${name}";
+ hash = hashes."${OS}-${ARCH}" or (throw "missing bootstrap hash for ${OS}-${ARCH}");
+ };
+
+ dontConfigure = true;
+ dontBuild = true;
+
+ nativeBuildInputs = lib.optionals hostPlatform.isLinux [
+ autoPatchelfHook
+ ] ++ lib.optional hostPlatform.isDarwin fixDarwinDylibNames;
+
+ buildInputs = lib.optionals stdenv.hostPlatform.isLinux [ libxml2 stdenv.cc.cc ];
+
+ propagatedBuildInputs = [ curl tzdata ];
+
+ installPhase = ''
+ mkdir -p $out
+
+ mv bin etc import lib LICENSE README $out/
+ '';
+
+ meta = with lib; {
+ description = "LLVM-based D Compiler";
+ homepage = "https://github.com/ldc-developers/ldc";
+ # from https://github.com/ldc-developers/ldc/blob/master/LICENSE
+ license = with licenses; [ bsd3 boost mit ncsa gpl2Plus ];
+ maintainers = with maintainers; [ lionello ];
+ platforms = [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin" ];
+ };
}
diff --git a/nix-overlays/ldc/default.nix b/nix-overlays/ldc/default.nix
index 1f18529..8375c13 100644
--- a/nix-overlays/ldc/default.nix
+++ b/nix-overlays/ldc/default.nix
@@ -1,4 +1 @@
-import ./generic.nix {
- version = "1.39.0";
- sha256 = "sha256-g5usNvYHMxjjbwsWN2fgO9vT9X2ZJWuXSUrEObWaRWI=";
-}
+import ./package.nix
diff --git a/nix-overlays/ldc/generic.nix b/nix-overlays/ldc/generic.nix
deleted file mode 100644
index bc21974..0000000
--- a/nix-overlays/ldc/generic.nix
+++ /dev/null
@@ -1,136 +0,0 @@
-{ version, sha256 }:
-{ lib, stdenv, fetchurl, cmake, ninja, llvm_18, curl, tzdata
-, libconfig, lit, gdb, unzip, darwin, bash
-, callPackage, makeWrapper, runCommand, targetPackages
-, ldcBootstrap ? callPackage ./bootstrap.nix { }
-}:
-
-let
- pathConfig = runCommand "ldc-lib-paths" {} ''
- mkdir $out
- echo ${tzdata}/share/zoneinfo/ > $out/TZDatabaseDirFile
- echo ${curl.out}/lib/libcurl${stdenv.hostPlatform.extensions.sharedLibrary} > $out/LibcurlPathFile
- '';
-
-in
-
-stdenv.mkDerivation rec {
- pname = "ldc";
- inherit version;
-
- src = fetchurl {
- url = "https://github.com/ldc-developers/ldc/releases/download/v${version}/ldc-${version}-src.tar.gz";
- inherit sha256;
- };
-
- # https://issues.dlang.org/show_bug.cgi?id=19553
- hardeningDisable = [ "fortify" ];
-
- postUnpack = ''
- patchShebangs .
- ''
- + ''
- rm ldc-${version}-src/tests/dmd/fail_compilation/mixin_gc.d
- rm ldc-${version}-src/tests/dmd/runnable/xtest46_gc.d
- rm ldc-${version}-src/tests/dmd/runnable/testptrref_gc.d
-
- # test depends on current year
- rm ldc-${version}-src/tests/dmd/compilable/ddocYear.d
- ''
- + lib.optionalString stdenv.hostPlatform.isDarwin ''
- # https://github.com/NixOS/nixpkgs/issues/34817
- rm -r ldc-${version}-src/tests/plugins/addFuncEntryCall
- '';
-
- postPatch = ''
- # Setting SHELL=$SHELL when dmd testsuite is run doesn't work on Linux somehow
- #substituteInPlace tests/dmd/Makefile --replace "SHELL=/bin/bash" "SHELL=${bash}/bin/bash"
- ''
- + lib.optionalString stdenv.hostPlatform.isLinux ''
- substituteInPlace runtime/phobos/std/socket.d --replace "assert(ih.addrList[0] == 0x7F_00_00_01);" ""
- ''
- + lib.optionalString stdenv.hostPlatform.isDarwin ''
- substituteInPlace runtime/phobos/std/socket.d --replace "foreach (name; names)" "names = []; foreach (name; names)"
- '';
-
- nativeBuildInputs = [
- cmake ldcBootstrap lit lit.python llvm_18.dev makeWrapper ninja unzip
- ]
- ++ lib.optionals stdenv.hostPlatform.isDarwin [
- darwin.apple_sdk.frameworks.Foundation
- ]
- ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [
- # https://github.com/NixOS/nixpkgs/pull/36378#issuecomment-385034818
- gdb
- ];
-
- buildInputs = [ curl tzdata ];
-
- cmakeFlags = [
- "-DD_FLAGS=-d-version=TZDatabaseDir;-d-version=LibcurlPath;-J${pathConfig}"
- ];
-
- postConfigure = ''
- export DMD=$PWD/bin/ldmd2
- '';
-
- makeFlags = [ "DMD=$DMD" ];
-
- fixNames = lib.optionalString stdenv.hostPlatform.isDarwin ''
- fixDarwinDylibNames() {
- local flags=()
-
- for fn in "$@"; do
- flags+=(-change "$(basename "$fn")" "$fn")
- done
-
- for fn in "$@"; do
- if [ -L "$fn" ]; then continue; fi
- echo "$fn: fixing dylib"
- install_name_tool -id "$fn" "''${flags[@]}" "$fn"
- done
- }
-
- fixDarwinDylibNames $(find "$(pwd)/lib" -name "*.dylib")
- export DYLD_LIBRARY_PATH=$(pwd)/lib
- '';
-
- # https://github.com/ldc-developers/ldc/issues/2497#issuecomment-459633746
- additionalExceptions = lib.optionalString stdenv.hostPlatform.isDarwin
- "|druntime-test-shared";
-
- checkPhase = ''
- # Build default lib test runners
- ninja -j$NIX_BUILD_CORES all-test-runners
-
- ${fixNames}
-
- # Run dmd testsuite
- export DMD_TESTSUITE_MAKE_ARGS="-j$NIX_BUILD_CORES DMD=$DMD"
- ctest -V -R "dmd-testsuite"
-
- # Build and run LDC D unittests.
- ctest --output-on-failure -R "ldc2-unittest"
-
- # Run LIT testsuite.
- ctest -V -R "lit-tests"
-
- # Run default lib unittests
- ctest -j$NIX_BUILD_CORES --output-on-failure -E "ldc2-unittest|lit-tests|dmd-testsuite${additionalExceptions}"
- '';
-
- postInstall = ''
- wrapProgram $out/bin/ldc2 \
- --prefix PATH ":" "${targetPackages.stdenv.cc}/bin" \
- --set-default CC "${targetPackages.stdenv.cc}/bin/cc"
- '';
-
- meta = with lib; {
- description = "The LLVM-based D compiler";
- homepage = "https://github.com/ldc-developers/ldc";
- # from https://github.com/ldc-developers/ldc/blob/master/LICENSE
- license = with licenses; [ bsd3 boost mit ncsa gpl2Plus ];
- maintainers = with maintainers; [ lionello jtbx ];
- platforms = [ "x86_64-linux" "i686-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ];
- };
-}
diff --git a/nix-overlays/ldc/package.nix b/nix-overlays/ldc/package.nix
new file mode 100644
index 0000000..112a9ee
--- /dev/null
+++ b/nix-overlays/ldc/package.nix
@@ -0,0 +1,180 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, cmake
+, ninja
+, llvm_18
+, curl
+, tzdata
+, lit
+, gdb
+, unzip
+, darwin
+, callPackage
+, makeWrapper
+, runCommand
+, writeText
+, targetPackages
+
+, ldcBootstrap ? callPackage ./bootstrap.nix { }
+}:
+
+let
+ pathConfig = runCommand "ldc-lib-paths" {} ''
+ mkdir $out
+ echo ${tzdata}/share/zoneinfo/ > $out/TZDatabaseDirFile
+ echo ${curl.out}/lib/libcurl${stdenv.hostPlatform.extensions.sharedLibrary} > $out/LibcurlPathFile
+ '';
+
+in
+
+stdenv.mkDerivation (finalAttrs: {
+ pname = "ldc";
+ version = "1.39.0";
+
+ src = fetchFromGitHub {
+ owner = "ldc-developers";
+ repo = "ldc";
+ rev = "v${finalAttrs.version}";
+ hash = "sha256-ZiG0ATsY6Asu2nus3Y404fvqIwtKYoHl1JRUDU5A6mo=";
+ fetchSubmodules = true;
+ };
+
+ # https://issues.dlang.org/show_bug.cgi?id=19553
+ hardeningDisable = [ "fortify" ];
+
+ postPatch = ''
+ patchShebangs runtime tools tests
+
+ rm tests/dmd/fail_compilation/mixin_gc.d
+ rm tests/dmd/runnable/xtest46_gc.d
+ rm tests/dmd/runnable/testptrref_gc.d
+
+ # test depends on current year
+ rm tests/dmd/compilable/ddocYear.d
+ '' + lib.optionalString stdenv.hostPlatform.isLinux ''
+ substituteInPlace runtime/phobos/std/socket.d --replace-fail "assert(ih.addrList[0] == 0x7F_00_00_01);" ""
+ '' + lib.optionalString stdenv.hostPlatform.isDarwin ''
+ substituteInPlace runtime/phobos/std/socket.d --replace-fail "foreach (name; names)" "names = []; foreach (name; names)"
+
+ # https://github.com/NixOS/nixpkgs/issues/34817
+ rm -r tests/plugins/addFuncEntryCall
+ '';
+
+ nativeBuildInputs = [
+ cmake ldcBootstrap lit lit.python llvm_18.dev makeWrapper ninja unzip
+ ] ++ lib.optionals stdenv.hostPlatform.isDarwin [
+ darwin.apple_sdk.frameworks.Foundation
+ ] ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [
+ # https://github.com/NixOS/nixpkgs/pull/36378#issuecomment-385034818
+ gdb
+ ];
+
+ buildInputs = [ curl tzdata ];
+
+ outputs = [ "out" "include" ];
+ outputInclude = "include";
+
+ cmakeFlags = [
+ "-DD_FLAGS=-d-version=TZDatabaseDir;-d-version=LibcurlPath;-J${pathConfig}"
+ "-DINCLUDE_INSTALL_DIR=${placeholder "include"}/include/d"
+ ];
+
+ postConfigure = ''
+ export DMD=$PWD/bin/ldmd2
+ '';
+
+ makeFlags = [ "DMD=$DMD" ];
+
+ fixNames = lib.optionalString stdenv.hostPlatform.isDarwin ''
+ fixDarwinDylibNames() {
+ local flags=()
+
+ for fn in "$@"; do
+ flags+=(-change "$(basename "$fn")" "$fn")
+ done
+
+ for fn in "$@"; do
+ if [ -L "$fn" ]; then continue; fi
+ echo "$fn: fixing dylib"
+ install_name_tool -id "$fn" "''${flags[@]}" "$fn"
+ done
+ }
+
+ fixDarwinDylibNames $(find "$(pwd)/lib" -name "*.dylib")
+ export DYLD_LIBRARY_PATH=$(pwd)/lib
+ '';
+
+ # https://github.com/ldc-developers/ldc/issues/2497#issuecomment-459633746
+ additionalExceptions = lib.optionalString stdenv.hostPlatform.isDarwin
+ "|druntime-test-shared";
+
+ checkPhase = ''
+ # Build default lib test runners
+ ninja -j$NIX_BUILD_CORES all-test-runners
+
+ ${finalAttrs.fixNames}
+
+ # Run dmd testsuite
+ export DMD_TESTSUITE_MAKE_ARGS="-j$NIX_BUILD_CORES DMD=$DMD"
+ ctest -V -R "dmd-testsuite"
+
+ # Build and run LDC D unittests.
+ ctest --output-on-failure -R "ldc2-unittest"
+
+ # Run LIT testsuite.
+ ctest -V -R "lit-tests"
+
+ # Run default lib unittests
+ ctest -j$NIX_BUILD_CORES --output-on-failure -E "ldc2-unittest|lit-tests|dmd-testsuite${finalAttrs.additionalExceptions}"
+ '';
+
+ postInstall = ''
+ wrapProgram $out/bin/ldc2 \
+ --prefix PATH : ${targetPackages.stdenv.cc}/bin \
+ --set-default CC ${targetPackages.stdenv.cc}/bin/cc
+ '';
+
+ meta = with lib; {
+ description = "LLVM-based D compiler";
+ homepage = "https://github.com/ldc-developers/ldc";
+ changelog = "https://github.com/ldc-developers/ldc/releases/tag/v${finalAttrs.version}";
+ # from https://github.com/ldc-developers/ldc/blob/master/LICENSE
+ license = with licenses; [ bsd3 boost mit ncsa gpl2Plus ];
+ mainProgram = "ldc2";
+ maintainers = with maintainers; [ lionello jtbx ];
+ platforms = [ "x86_64-linux" "i686-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ];
+ };
+
+ passthru.ldcBootstrap = ldcBootstrap;
+ passthru.tests = let
+ ldc = finalAttrs.finalPackage;
+ helloWorld = stdenv.mkDerivation (finalAttrs: {
+ name = "ldc-hello-world";
+ src = writeText "hello_world.d" ''
+ module hello_world;
+ import std.stdio;
+ void main() {
+ writeln("Hello, world!");
+ }
+ '';
+ dontUnpack = true;
+ buildInputs = [ ldc ];
+ dFlags = [];
+ buildPhase = ''
+ ldc2 ${lib.escapeShellArgs finalAttrs.dFlags} -of=test $src
+ '';
+ installPhase = ''
+ mkdir -p $out/bin
+ mv test $out/bin
+ '';
+ });
+ in {
+ # Without -shared, built binaries should not contain
+ # references to the compiler binaries.
+ no-references-to-compiler = helloWorld.overrideAttrs {
+ disallowedReferences = [ ldc ];
+ dFlags = ["-g"];
+ };
+ };
+})