summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--.envrc-nix4
-rw-r--r--README20
-rw-r--r--flake.lock12
-rw-r--r--flake.nix14
-rw-r--r--nix-overlays/dmd/default.nix6
-rw-r--r--nix-overlays/dmd/generic.nix17
-rw-r--r--nix-overlays/dub/default.nix4
-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
-rw-r--r--org/dlang-nix-flakes.org563
-rwxr-xr-xshell.nix8
14 files changed, 494 insertions, 563 deletions
diff --git a/.envrc-nix b/.envrc-nix
index 0da58f8..8d55e85 100644
--- a/.envrc-nix
+++ b/.envrc-nix
@@ -1,7 +1,7 @@
NIX_ENFORCE_PURITY=1
# - https://github.com/nix-community/nix-direnv
-NixDirEnvVersion="3.0.4"
-NixDirEnvSHA="sha256-DzlYZ33mWF/Gs8DDeyjr8mnVmQGx7ASYqA5WlxwvBG4="
+NixDirEnvVersion="3.0.6"
+NixDirEnvSHA="sha256-RYcUJaRMf8oF5LznDrlCXbkOQrywm0HDv1VjYGaJGdM="
if ! has nix_direnv_version || ! nix_direnv_version ${NixDirEnvVersion}; then
source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/${NixDirEnvVersion}/direnvrc" "${NixDirEnvSHA}"
fi
diff --git a/README b/README
index 4227609..01cd446 100644
--- a/README
+++ b/README
@@ -35,11 +35,11 @@ nix control files
- flake.nix
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]
+ - ldc ( 1.30.0 -> 1.40.0-beta5 )
+ - 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.100.2 -> 2.109.0 )
+ - dmd ( 2.100.2 -> 2.109.1 )
- gdc [not yet available]
(updates nixpkgs circa 2023-05-12)
@@ -73,26 +73,26 @@ search nixpkgs here:
- https://search.nixos.org/packages?channel=unstable&from=0&size=100&sort=relevance&query=
** compilers
-*** ldc OK ✓ ( 1.30.0 -> 1.39.0 )
+*** ldc OK ✓ ( 1.30.0 -> 1.40.0-beta5 )
- https://wiki.dlang.org/LDC
- https://github.com/ldc-developers/ldc
- https://github.com/ldc-developers/ldc/releases
- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.39.0.tar.gz
+ nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.40.0-beta5.tar.gz
- https://github.com/ldc-developers/ldc/issues
- 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:
@@ -114,13 +114,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:
@@ -128,7 +128,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/flake.lock b/flake.lock
index 24d4009..ad0a993 100644
--- a/flake.lock
+++ b/flake.lock
@@ -5,11 +5,11 @@
"systems": "systems"
},
"locked": {
- "lastModified": 1710146030,
- "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
+ "lastModified": 1731533236,
+ "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
- "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
+ "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
@@ -20,11 +20,11 @@
},
"nixpkgs": {
"locked": {
- "lastModified": 1720058333,
- "narHash": "sha256-gM2RCi5XkxmcsZ44pUkKIYBiBMfZ6u7MdcZcykmccrs=",
+ "lastModified": 1733097829,
+ "narHash": "sha256-9hbb1rqGelllb4kVUCZ307G2k3/UhmA8PPGBoyuWaSw=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "6842b061970bf96965d66fcc86a28e1f719aae95",
+ "rev": "2c15aa59df0017ca140d9ba302412298ab4bf22a",
"type": "github"
},
"original": {
diff --git a/flake.nix b/flake.nix
index 7d8baa2..5ad88af 100644
--- a/flake.nix
+++ b/flake.nix
@@ -21,9 +21,9 @@
runHook postCheck
'';
localOverlay = (final: prev: {
- ldc = prev.callPackage ./nix-overlays/ldc { }; # -> ok 1.39.0
- dmd = prev.callPackage ./nix-overlays/dmd { }; # -> ok 2.109.0
- dub = prev.callPackage ./nix-overlays/dub { }; # -> ? 1.36.0
+ ldc = prev.callPackage ./nix-overlays/ldc { }; # -> ok 1.40.0-beta5
+ dmd = prev.callPackage ./nix-overlays/dmd { }; # -> ok 2.109.1
+ dub = prev.callPackage ./nix-overlays/dub { }; # -> ? 1.38.1
dtools = prev.callPackage ./nix-overlays/dtools { }; # -> ok 2.103.1
#gdc = prev.callPackage ./nix-overlays/gdc { }; # empty
});
@@ -86,7 +86,7 @@
in
with pkgs-ovl; {
dsh-overlay-dtools = mkShell {
- name = "overlay - ldc-1.39.0 - dub-1.36.0 - dtools-2.103.1";
+ name = "overlay - ldc-1.40.0-beta5 - dub-1.38.1 - dtools-2.103.1";
inherit shell;
inherit devEnv;
packages = [
@@ -98,7 +98,7 @@
inherit shellHook;
};
dsh-overlay-ldc-dub = mkShell {
- name = "overlay - ldc-1.39.0 - dub-1.36.0";
+ name = "overlay - ldc-1.40.0-beta5 - dub-1.38.1";
inherit shell;
inherit devEnv;
packages = [
@@ -109,7 +109,7 @@
inherit shellHook;
};
dsh-overlay-dmd-dub = mkShell {
- name = "overlay - dmd-2.109.0 - dub-1.36.0";
+ name = "overlay - dmd-2.109.1 - dub-1.38.1";
inherit shell;
inherit devEnv;
packages = [
@@ -120,7 +120,7 @@
inherit shellHook;
};
dsh-overlay-dtest-tilix = mkShell {
- name = "overlay - ldc-1.39.0 - dub-1.36.0 - tilix - gtkd";
+ name = "overlay - ldc-1.40.0-beta5 - dub-1.38.1 - tilix - gtkd";
inherit shell;
inherit devEnv;
packages = [
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..0eec437 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 = ''
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..64c66db
--- /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.40.0-beta5";
+
+ src = fetchFromGitHub {
+ owner = "ldc-developers";
+ repo = "ldc";
+ rev = "v${finalAttrs.version}";
+ hash = "sha256-AaH5xw4hA0LHVx9SU3E+CIZKUHyjJ4TiPaoJnmQZJx4=";
+ 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"];
+ };
+ };
+})
diff --git a/org/dlang-nix-flakes.org b/org/dlang-nix-flakes.org
index 888b2e0..9e12692 100644
--- a/org/dlang-nix-flakes.org
+++ b/org/dlang-nix-flakes.org
@@ -17,6 +17,14 @@
#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
* nix ( written to ../ )
+** check updates CHECK
+
+- https://github.com/nix-community/nix-direnv/releases
+- https://github.com/dlang/dmd/tags
+- https://github.com/ldc-developers/ldc/releases
+- https://github.com/dlang/dub/releases
+- https://github.com/dlang/tools/tags
+
** README
#+HEADER: :tangle "../README"
@@ -261,7 +269,7 @@ tmp/**
#+END_SRC
** .env*
-*** .envrc
+*** nixDevEnv.sh (.envrc)
#+HEADER: :tangle "../nixDevEnv.sh"
#+BEGIN_SRC sh
@@ -298,6 +306,7 @@ fi
*** .envrc-nix
- https://github.com/nix-community/nix-direnv
+- https://github.com/nix-community/nix-direnv/releases
- source_url
- direnv fetchurl "https://raw.githubusercontent.com/nix-community/nix-direnv/<<direnv-version>>/direnvrc" "<<direnv-sha>>"
- ${NixDirEnvVersion}
@@ -327,15 +336,25 @@ use flake .
#use flake .#default
#+END_SRC
-*** 3.0.4
+*** 3.0.6
#+NAME: direnv-version
#+BEGIN_SRC sh
-3.0.4
+3.0.6
#+END_SRC
#+NAME: direnv-sha
#+BEGIN_SRC sh
+sha256-RYcUJaRMf8oF5LznDrlCXbkOQrywm0HDv1VjYGaJGdM=
+#+END_SRC
+
+*** 3.0.4
+
+#+BEGIN_SRC sh
+3.0.4
+#+END_SRC
+
+#+BEGIN_SRC sh
sha256-DzlYZ33mWF/Gs8DDeyjr8mnVmQGx7ASYqA5WlxwvBG4=
#+END_SRC
@@ -570,25 +589,25 @@ with pkgs-nix;
# ❯❯❯ nix_related
#nix
direnv
- nixVersions.nix_2_21 #nixVersions.latest #nixVersions.git
+ nixVersions.latest #nixVersions.latest #nixVersions.git
nix-prefetch-git
validatePkgConfig
nix-output-monitor
#nix-tree
#nvd
jq #gx
- #alejandra
+ #nixfmt-rfc-style
git
# ❯❯❯ dev
gnumake
ps
# ❯❯❯ d_build_related
+ # ❯❯ package manager
+ #dub
# ❯❯ compiler
#dmd
#ldc
#rund
- # ❯❯ package manager
- #dub
# ❯❯ linker
#lld
#mold
@@ -646,19 +665,31 @@ pkgs.callPackage ./shell.nix {}
#+HEADER: :tangle "../nix-overlays/ldc/default.nix"
#+BEGIN_SRC nix
-import ./generic.nix {
- <<ldc_version_info>>
-}
+import ./package.nix
#+END_SRC
-**** generic.nix OK ✓ (unaltered)
+**** package.nix OK ✓ (unaltered)
-#+HEADER: :tangle "../nix-overlays/ldc/generic.nix"
+#+HEADER: :tangle "../nix-overlays/ldc/package.nix"
#+BEGIN_SRC nix
-{ version, sha256 }:
-{ lib, stdenv, fetchurl, cmake, ninja, <<ldc_llvm_set>>, curl, tzdata
-, libconfig, lit, gdb, unzip, darwin, bash
-, callPackage, makeWrapper, runCommand, targetPackages
+{ lib
+, stdenv
+, fetchFromGitHub
+, cmake
+, ninja
+, <<ldc_llvm_set>>
+, curl
+, tzdata
+, lit
+, gdb
+, unzip
+, darwin
+, callPackage
+, makeWrapper
+, runCommand
+, writeText
+, targetPackages
+
, ldcBootstrap ? callPackage ./bootstrap.nix { }
}:
@@ -671,60 +702,56 @@ let
in
-stdenv.mkDerivation rec {
+stdenv.mkDerivation (finalAttrs: {
pname = "ldc";
- inherit version;
+ version = "<<ldc_version>>";
- src = fetchurl {
- url = "https://github.com/ldc-developers/ldc/releases/download/v${version}/ldc-${version}-src.tar.gz";
- inherit sha256;
+ src = fetchFromGitHub {
+ owner = "ldc-developers";
+ repo = "ldc";
+ rev = "v${finalAttrs.version}";
+ hash = "<<ldc_hash>>";
+ fetchSubmodules = true;
};
# 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)"
+ 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 <<ldc_llvm_set>>.dev makeWrapper ninja unzip
- ]
- ++ lib.optionals stdenv.hostPlatform.isDarwin [
+ ] ++ lib.optionals stdenv.hostPlatform.isDarwin [
darwin.apple_sdk.frameworks.Foundation
- ]
- ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [
+ ] ++ 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 = ''
@@ -733,7 +760,7 @@ stdenv.mkDerivation rec {
makeFlags = [ "DMD=$DMD" ];
- fixNames = lib.optionalString stdenv.hostPlatform.isDarwin ''
+ fixNames = lib.optionalString stdenv.hostPlatform.isDarwin ''
fixDarwinDylibNames() {
local flags=()
@@ -760,7 +787,7 @@ stdenv.mkDerivation rec {
# Build default lib test runners
ninja -j$NIX_BUILD_CORES all-test-runners
- ${fixNames}
+ ${finalAttrs.fixNames}
# Run dmd testsuite
export DMD_TESTSUITE_MAKE_ARGS="-j$NIX_BUILD_CORES DMD=$DMD"
@@ -773,90 +800,73 @@ stdenv.mkDerivation rec {
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}"
+ 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"
- '';
+ --prefix PATH : ${targetPackages.stdenv.cc}/bin \
+ --set-default CC ${targetPackages.stdenv.cc}/bin/cc
+ '';
meta = with lib; {
- description = "The LLVM-based D compiler";
+ 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" ];
};
-}
-#+END_SRC
-
-**** bootstrap.nix
-
-#+HEADER: :tangle "../nix-overlays/ldc/bootstrap.nix"
-#+BEGIN_SRC nix
-<<ldc_bootstrap_1-25-0>>
-#+END_SRC
-#+NAME: ldc_bootstrap_1-25-0
-#+BEGIN_SRC nix
-{ callPackage }:
-callPackage ./binary.nix {
- 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..
- 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=";
+ 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"];
+ };
};
-}
+})
#+END_SRC
-#+NAME: ldc_bootstrap_1-30-0
-#+BEGIN_SRC nix
-{ callPackage }:
-callPackage ./binary.nix {
- version = "1.30.0";
- hashes = {
- # Get these from `nix store prefetch-file https://github.com/ldc-developers/ldc/releases/download/v1.19.0/ldc2-1.19.0-osx-x86_64.tar.xz` etc..
- osx-x86_64 = "sha256-AAWZvxuZC82xvrW6fpYm783TY+H8k3DvqE94ZF1yjmk=";
- linux-x86_64 = "sha256-V4TUzEfQhFrwiX07dHOgjdAoGkzausCkhnQIQNAU/eE=";
- linux-aarch64 = "sha256-kTeglub75iv/jWWNPCn15aCGAbmck0RQl6L7bFOUu7Y=";
- osx-arm64 = "sha256-Nb/owBdIeroB9jLMDvwjo8bvsTC9vFyJPLMTOMsSAd4=";
- };
-}
-#+END_SRC
+**** bootstrap.nix
- this is the ldc bootstrap in current use, nixpkgs:
+#+HEADER: :tangle "../nix-overlays/ldc/bootstrap.nix"
#+BEGIN_SRC nix
-{ callPackage }:
-callPackage ./binary.nix {
- version = "1.30.0";
- hashes = {
- # Get these from `nix store prefetch-file https://github.com/ldc-developers/ldc/releases/download/v1.19.0/ldc2-1.19.0-osx-x86_64.tar.xz` etc..
- osx-x86_64 = "sha256-AAWZvxuZC82xvrW6fpYm783TY+H8k3DvqE94ZF1yjmk=";
- linux-x86_64 = "sha256-V4TUzEfQhFrwiX07dHOgjdAoGkzausCkhnQIQNAU/eE=";
- linux-aarch64 = "sha256-kTeglub75iv/jWWNPCn15aCGAbmck0RQl6L7bFOUu7Y=";
- osx-arm64 = "sha256-Nb/owBdIeroB9jLMDvwjo8bvsTC9vFyJPLMTOMsSAd4=";
- };
-}
-#+END_SRC
-
-**** binary.nix (unaltered)
-
-#+HEADER: :tangle "../nix-overlays/ldc/binary.nix"
-#+BEGIN_SRC nix
-{ lib, stdenv, fetchurl, curl, tzdata, autoPatchelfHook, fixDarwinDylibNames, libxml2
-, version, hashes }:
+{ 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;
+ <<ldc_bootstrap_1-25-0_hashes>>
in stdenv.mkDerivation {
pname = "ldc-bootstrap";
inherit version;
@@ -864,7 +874,7 @@ in stdenv.mkDerivation {
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}");
+ hash = hashes."${OS}-${ARCH}" or (throw "missing bootstrap hash for ${OS}-${ARCH}");
};
dontConfigure = true;
@@ -885,7 +895,7 @@ in stdenv.mkDerivation {
'';
meta = with lib; {
- description = "The LLVM-based D Compiler";
+ 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 ];
@@ -895,6 +905,35 @@ in stdenv.mkDerivation {
}
#+END_SRC
+***** bootstrap.nix version SELECT
+****** bootstrap.nix ldc2-1.25.0
+
+#+NAME: ldc_bootstrap_1-25-0_hashes
+#+BEGIN_SRC nix
+version = "1.25.0";
+hashes = {
+ # 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=";
+};
+#+END_SRC
+
+****** bootstrap.nix ldc2-1.30.0
+
+#+NAME: ldc_bootstrap_1-30-0_hashes
+#+BEGIN_SRC nix
+version = "1.30.0";
+hashes = {
+ # Get these from `nix store prefetch-file https://github.com/ldc-developers/ldc/releases/download/v1.30.0/ldc2-1.30.0-osx-x86_64.tar.xz` etc..
+ osx-x86_64 = "sha256-AAWZvxuZC82xvrW6fpYm783TY+H8k3DvqE94ZF1yjmk=";
+ linux-x86_64 = "sha256-V4TUzEfQhFrwiX07dHOgjdAoGkzausCkhnQIQNAU/eE=";
+ linux-aarch64 = "sha256-kTeglub75iv/jWWNPCn15aCGAbmck0RQl6L7bFOUu7Y=";
+ osx-arm64 = "sha256-Nb/owBdIeroB9jLMDvwjo8bvsTC9vFyJPLMTOMsSAd4=";
+};
+#+END_SRC
+
*** versions SET
**** selected version SET OK ✓
***** version & sha256 nix composite
@@ -909,259 +948,61 @@ sha256 = "<<ldc_hash>>";
#+NAME: ldc_version
#+BEGIN_SRC nix
-<<ldc_version_1_39_0>>
+<<ldc_version_1_40_0>>
#+END_SRC
#+NAME: ldc_hash
#+BEGIN_SRC nix
-<<ldc_hash_1_39_0>>
+<<ldc_hash_1_40_0>>
#+END_SRC
#+NAME: ldc_llvm_set
#+BEGIN_SRC nix
-<<ldc_llvm_set_1_39_0>>
+<<ldc_llvm_set_1_40_0>>
#+END_SRC
-**** 1.39 OK ✓
-***** 1.39.0 OK ✓
+**** 1.40 OK ✓
+***** 1.40.0 OK ✓
-- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.39.0.tar.gz
-- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/releases/download/v${version}/ldc-${version}-src.tar.gz
+ - nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.40.0-beta5.tar.gz
+ - nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/releases/download/v${version}/ldc-${version}-src.tar.gz
-#+NAME: ldc_version_1_39_0
+#+NAME: ldc_version_1_40_0
#+BEGIN_SRC nix
-1.39.0
+1.40.0-beta5
#+END_SRC
-#+NAME: ldc_hash_1_39_0
+#+NAME: ldc_hash_1_40_0
#+BEGIN_SRC nix
-sha256-g5usNvYHMxjjbwsWN2fgO9vT9X2ZJWuXSUrEObWaRWI=
+sha256-AaH5xw4hA0LHVx9SU3E+CIZKUHyjJ4TiPaoJnmQZJx4=
#+END_SRC
-#+NAME: ldc_llvm_set_1_39_0
+#+NAME: ldc_llvm_set_1_40_0
#+BEGIN_SRC nix
llvm_18
#+END_SRC
-**** 1.38 OK ✓
-***** 1.38.0 OK ✓
+**** 1.39 OK ✓
+***** 1.39.0 OK ✓
-- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.38.0.tar.gz
+- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.39.0.tar.gz
- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/releases/download/v${version}/ldc-${version}-src.tar.gz
-#+NAME: ldc_version_1_38_0
+#+NAME: ldc_version_1_39_0
#+BEGIN_SRC nix
-1.38.0
+1.39.0
#+END_SRC
-#+NAME: ldc_hash_1_38_0
+#+NAME: ldc_hash_1_39_0
#+BEGIN_SRC nix
-sha256-ymI47+Ai40zTB2dB+KBwxqN3GWNRxhlJpIpIyZN5844=
+sha256-ZiG0ATsY6Asu2nus3Y404fvqIwtKYoHl1JRUDU5A6mo=
#+END_SRC
-#+NAME: ldc_llvm_set_1_38_0
+#+NAME: ldc_llvm_set_1_39_0
#+BEGIN_SRC nix
llvm_18
#+END_SRC
-**** 1.37 OK ✓
-***** 1.37.0 OK ✓
-
-- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.37.0.tar.gz
-- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/releases/download/v${version}/ldc-${version}-src.tar.gz
-
-#+NAME: ldc_version_1_37_0
-#+BEGIN_SRC nix
-1.37.0
-#+END_SRC
-
-#+NAME: ldc_hash_1_37_0
-#+BEGIN_SRC nix
-sha256-UOgK48Q2yQY3wsPUDzktwotyH3qrOh48o79PnCjboGQ=
-#+END_SRC
-
-#+NAME: ldc_llvm_set_1_37_0
-#+BEGIN_SRC nix
-llvm_17
-#+END_SRC
-
-**** 1.36 OK ✓
-***** 1.36.0 OK ✓
-
-- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.36.0.tar.gz
-
-#+NAME: ldc_version_1_36_0
-#+BEGIN_SRC nix
-1.36.0
-#+END_SRC
-
-#+NAME: ldc_hash_1_36_0
-#+BEGIN_SRC nix
-sha256-oAx5BzEjqIfBf0Rsd4KklVajUSo9Natna31Trhu41u8=
-#+END_SRC
-
-#+NAME: ldc_llvm_set_1_36_0
-#+BEGIN_SRC nix
-llvm_17
-#+END_SRC
-
-**** 1.35 OK ✓
-***** 1.35.0 OK ✓
-
-- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.35.0.tar.gz
-
-#+NAME: ldc_version_1_35_0
-#+BEGIN_SRC nix
-1.35.0
-#+END_SRC
-
-#+NAME: ldc_hash_1_35_0
-#+BEGIN_SRC nix
-sha256-bilpk3BsdsCT5gkTmqCz+HBDVfoPN1b2dY141EIm36A=
-#+END_SRC
-
-#+NAME: ldc_llvm_set_1_35_0
-#+BEGIN_SRC nix
-llvm_16
-#+END_SRC
-
-**** 1.34 OK ✓
-***** 1.34.0 OK ✓
-
-- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.34.0.tar.gz
-
-#+NAME: ldc_version_1_34_0
-#+BEGIN_SRC nix
-1.34.0
-#+END_SRC
-
-#+NAME: ldc_hash_1_34_0
-#+BEGIN_SRC nix
-sha256-MAXG6ceSWFOMg5eXZnZ6WePXTzy5CsLLDc5ddXO+txk=
-#+END_SRC
-
-#+NAME: ldc_llvm_set_1_34_0
-#+BEGIN_SRC nix
-llvm_16
-#+END_SRC
-
-**** 1.33 OK ✓
-***** 1.33.0 OK ✓
-
-- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.33.0.tar.gz
-
-#+NAME: ldc_version_1_33_0
-#+BEGIN_SRC nix
-1.33.0
-#+END_SRC
-
-#+NAME: ldc_hash_1_33_0
-#+BEGIN_SRC nix
-sha256-g0wbCMX1s6mPnvuvhjLw03fRfawcFxDkg8nuaEZYw6g=
-#+END_SRC
-
-#+NAME: ldc_llvm_set_1_33_0
-#+BEGIN_SRC nix
-llvm_15
-#+END_SRC
-
-**** 1.32
-***** 1.32.2 OK ✓
-
-- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.32.1.tar.gz
-
-#+NAME: ldc_version_1_32_2
-#+BEGIN_SRC nix
-1.32.2
-#+END_SRC
-
-#+NAME: ldc_hash_1_32_2
-#+BEGIN_SRC nix
-sha256-v6Sq7nQyChJohDyI4inzObLfCVOkvLT87VLr4N2hzZU=
-#+END_SRC
-
-#+NAME: ldc_llvm_set_1_32_2
-#+BEGIN_SRC nix
-llvm_15
-#+END_SRC
-
-***** 1.32.1
-
-- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.32.1.tar.gz
-
-#+NAME: ldc_version_1_32_1
-#+BEGIN_SRC nix
-1.32.1
-#+END_SRC
-
-#+NAME: ldc_hash_1_32_1
-#+BEGIN_SRC nix
-sha256-s1U7+qiVJDF+zSHrLGPG6g+acIChYnXkb9p+OrNX6g8=
-#+END_SRC
-
-#+NAME: ldc_llvm_set_1_32_1
-#+BEGIN_SRC nix
-llvm_14
-#+END_SRC
-
-***** 1.32.0
-
-- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.32.0.tar.gz
-
-#+NAME: ldc_version_1_32_0
-#+BEGIN_SRC nix
-1.32.0
-#+END_SRC
-
-#+NAME: ldc_hash_1_32_0
-#+BEGIN_SRC nix
-sha256-xO4L+RtBbdVkE1PZsme2pIYAxJnHgr6xEtLkYOMpvqw=
-#+END_SRC
-
-#+NAME: ldc_llvm_set_1_32_0
-#+BEGIN_SRC nix
-llvm_14
-#+END_SRC
-
-**** 1.31
-***** 1.31.0
-
-- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.31.0.tar.gz
-
-#+NAME: ldc_version_1_31_0
-#+BEGIN_SRC nix
-1.31.0
-#+END_SRC
-
-#+NAME: ldc_hash_1_31_0
-#+BEGIN_SRC nix
-sha256-8cjs6eHjWAbDRBvyT75mbN3Y7vN1WSwZzY/uRwHNVFg=
-#+END_SRC
-
-#+NAME: ldc_llvm_set_1_31_0
-#+BEGIN_SRC nix
-llvm_14
-#+END_SRC
-
-***** 1.30.0
-
-- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.30.0.tar.gz
-
-#+NAME: ldc_version_1_30_0
-#+BEGIN_SRC nix
-1.30.0
-#+END_SRC
-
-#+NAME: ldc_hash_1_30_0
-#+BEGIN_SRC nix
-sha256-/bs3bwgkLZF5IqaiKnc5gCF/r6MQBG/F1kWUkK8j2s0=
-#+END_SRC
-
-#+NAME: ldc_llvm_set_1_30_0
-#+BEGIN_SRC nix
-llvm_14
-#+END_SRC
-
** dmd OK ✓
*** info
**** links
@@ -1250,7 +1091,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;
@@ -1310,6 +1151,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
@@ -1319,9 +1161,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)"
'';
@@ -1336,7 +1178,7 @@ stdenv.mkDerivation (finalAttrs: {
buildInputs = [
curl
tzdata
- # ] ++ lib.optionals stdenv.isDarwin [
+ # ] ++ lib.optionals stdenv.hostPlatform.isDarwin []
# Foundation
];
@@ -1421,15 +1263,23 @@ 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;
};
})
#+END_SRC
@@ -1537,17 +1387,37 @@ stdenv.mkDerivation {
#+NAME: dmd_version
#+BEGIN_SRC nix
-<<dmd_version_2_109_0>>
+<<dmd_version_2_109_1>>
#+END_SRC
#+NAME: dmd_hash
#+BEGIN_SRC nix
-<<dmd_hash_2_109_0>>
+<<dmd_hash_2_109_1>>
#+END_SRC
#+NAME: phobos_hash
#+BEGIN_SRC nix
-<<phobos_hash_2_109_0>>
+<<phobos_hash_2_109_1>>
+#+END_SRC
+
+**** 2.109.1 OK ✓
+
+- nix-prefetch-url --unpack https://github.com/dlang/dmd/archive/refs/tags/v2.109.1.tar.gz
+- nix-prefetch-url --unpack https://github.com/dlang/phobos/archive/refs/tags/v2.109.1.tar.gz
+
+#+NAME: dmd_version_2_109_1
+#+BEGIN_SRC nix
+2.109.1
+#+END_SRC
+
+#+NAME: phobos_hash_2_109_1
+#+BEGIN_SRC nix
+sha256-73I0k7tCBwe5tl4K6uMs3/nT2JTZ2SppFYzmokS4W5Y=
+#+END_SRC
+
+#+NAME: dmd_hash_2_109_1
+#+BEGIN_SRC nix
+sha256-3nCDPZnb4eQZmhYYxcH6qOmsP8or0KYuzAa5g/C9xdU=
#+END_SRC
**** 2.109.0 OK ✓
@@ -1819,12 +1689,27 @@ stdenv.mkDerivation rec {
#+NAME: dub_version
#+BEGIN_SRC nix
-<<dub_version_1_36_0>>
+<<dub_version_1_38_1>>
#+END_SRC
#+NAME: dub_hash
#+BEGIN_SRC nix
-<<dub_hash_1_36_0>>
+<<dub_hash_1_38_1>>
+#+END_SRC
+
+**** 1.38 OK ✓
+***** 1.38.1
+
+- nix-prefetch-url --unpack https://github.com/dlang/dub/archive/refs/tags/v1.38.1.tar.gz
+
+#+NAME: dub_version_1_38_1
+#+BEGIN_SRC nix
+1.38.1
+#+END_SRC
+
+#+NAME: dub_hash_1_38_1
+#+BEGIN_SRC nix
+sha256-8Lr/0sx4SKwU1aNOxZArta0RXpDM+EWl29ZsPDdPWFo=
#+END_SRC
**** 1.36 OK ✓
diff --git a/shell.nix b/shell.nix
index 50575eb..8e5bf10 100755
--- a/shell.nix
+++ b/shell.nix
@@ -7,25 +7,25 @@ with pkgs-nix;
# ❯❯❯ nix_related
#nix
direnv
- nixVersions.nix_2_21 #nixVersions.latest #nixVersions.git
+ nixVersions.latest #nixVersions.latest #nixVersions.git
nix-prefetch-git
validatePkgConfig
nix-output-monitor
#nix-tree
#nvd
jq #gx
- #alejandra
+ #nixfmt-rfc-style
git
# ❯❯❯ dev
gnumake
ps
# ❯❯❯ d_build_related
+ # ❯❯ package manager
+ #dub
# ❯❯ compiler
#dmd
#ldc
#rund
- # ❯❯ package manager
- #dub
# ❯❯ linker
#lld
#mold