diff options
Diffstat (limited to 'nix-overlays')
-rw-r--r-- | nix-overlays/README | 14 | ||||
-rw-r--r-- | nix-overlays/dmd/default.nix | 6 | ||||
-rw-r--r-- | nix-overlays/dmd/generic.nix | 17 | ||||
-rw-r--r-- | nix-overlays/dub/default.nix | 5 | ||||
-rw-r--r-- | nix-overlays/ldc/binary.nix | 43 | ||||
-rw-r--r-- | nix-overlays/ldc/bootstrap.nix | 45 | ||||
-rw-r--r-- | nix-overlays/ldc/default.nix | 5 | ||||
-rw-r--r-- | nix-overlays/ldc/generic.nix | 136 | ||||
-rw-r--r-- | nix-overlays/ldc/package.nix | 180 |
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"]; + }; + }; +}) |