diff options
| author | Ralph Amissah <ralph.amissah@gmail.com> | 2025-03-22 12:29:04 -0400 | 
|---|---|---|
| committer | Ralph Amissah <ralph.amissah@gmail.com> | 2025-03-22 12:57:03 -0400 | 
| commit | 39b16223937fa3fc8da80495a25d7397712b8bae (patch) | |
| tree | dff0c37c726c59140abf792a11c3892ff3a2d9c9 | |
| parent | ldc-1.40.1 (based on D 2.110.0) - overlay (diff) | |
overlay updates (dub-1.39.0, dtools-2.110.0)
| -rw-r--r-- | README | 14 | ||||
| -rw-r--r-- | flake.lock | 6 | ||||
| -rw-r--r-- | flake.nix | 12 | ||||
| -rw-r--r-- | nix-overlays/dmd/default.nix | 6 | ||||
| -rw-r--r-- | nix-overlays/dmd/generic.nix | 55 | ||||
| -rw-r--r-- | nix-overlays/dmd/package.nix | 5 | ||||
| -rw-r--r-- | nix-overlays/dtools/default.nix | 52 | ||||
| -rw-r--r-- | nix-overlays/dtools/disabled-tests.diff | 11 | ||||
| -rw-r--r-- | nix-overlays/dtools/fix-ldc-arm64.diff | 102 | ||||
| -rw-r--r-- | nix-overlays/dtools/package.nix | 49 | ||||
| -rw-r--r-- | nix-overlays/dub/package.nix | 22 | ||||
| -rw-r--r-- | nix-overlays/ldc/bootstrap.nix | 11 | ||||
| -rw-r--r-- | nix-overlays/ldc/package.nix | 101 | ||||
| -rw-r--r-- | org/dlang-nix-flakes.org | 452 | ||||
| -rw-r--r-- | org/nix-develop-dlang-shared.org | 79 | 
15 files changed, 614 insertions, 363 deletions
@@ -36,8 +36,8 @@ nix control files  nix overlays for (updates nixpkgs, more recent versions of):    - ldc     ( 1.30.0 -> 1.40.1 ) -  - dub     ( 1.23.0 -> 1.38.1 ) [for nix versions 1.31.0 ... 1.33.0 broken] -  - dtools  ( 2.095.1 -> 2.103.1 ) +  - dub     ( 1.23.0 -> 1.39.0 ) [for nix versions 1.31.0 ... 1.33.0 broken] +  - dtools  ( 2.095.1 -> 2.110.0 )    - dmd     ( 2.100.2 -> 2.110.0 )    - gdc     [not yet available] @@ -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.38.1 ) +*** dub ( 1.23.0 -> 1.39.0 )  - 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.38.1.tar.gz +    nix-prefetch-url --unpack https://github.com/dlang/dub/archive/refs/tags/v1.39.0.tar.gz    - https://github.com/dlang/dub/issues  - version in nixpkgs: @@ -128,19 +128,19 @@ 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.38.1 ) +- dub OK ✓ ( 1.30.0 -> 1.39.0 )    from v1.31.0 requires seeting of pwd in buildPhase else fails to build    packages with nix tools that previous version of dub built;  ** tools -*** dtools OK ✓ ( 2.095.1 -> 2.103.1 ) +*** dtools OK ✓ ( 2.095.1 -> 2.110.0 )  - https://code.dlang.org/packages/dtools  - https://github.com/dlang/tools    - https://github.com/dlang/tools/tags -    nix-prefetch --unpack https://github.com/dlang/tools/archive/refs/tags/v2.103.1.tar.gz +    nix-prefetch --unpack https://github.com/dlang/tools/archive/refs/tags/v2.110.0.tar.gz    - https://github.com/dlang/tools/issues  - version in nixpkgs @@ -2,11 +2,11 @@    "nodes": {      "nixpkgs": {        "locked": { -        "lastModified": 1742456341, -        "narHash": "sha256-yvdnTnROddjHxoQqrakUQWDZSzVchczfsuuMOxg476c=", +        "lastModified": 1742578646, +        "narHash": "sha256-GiQ40ndXRnmmbDZvuv762vS+gew1uDpFwOfgJ8tLiEs=",          "owner": "NixOS",          "repo": "nixpkgs", -        "rev": "7344a3b78128f7b1765dba89060b015fb75431a7", +        "rev": "94c4dbe77c0740ebba36c173672ca15a7926c993",          "type": "github"        },        "original": { @@ -23,8 +23,8 @@      localOverlay = (final: prev: {        ldc = prev.callPackage ./nix-overlays/ldc {  };       # -> ok 1.40.1        dmd = prev.callPackage ./nix-overlays/dmd {  };       # -> ok 2.110.0 -      dub = prev.callPackage ./nix-overlays/dub {  };       # -> ? 1.38.1 -      dtools = prev.callPackage ./nix-overlays/dtools {  }; # -> ok 2.103.1 +      dub = prev.callPackage ./nix-overlays/dub {  };       # -> ? 1.39.0 +      dtools = prev.callPackage ./nix-overlays/dtools {  }; # -> ok 2.110.0        #gdc = prev.callPackage ./nix-overlays/gdc {  };      # empty      });      pkgsForSystem = system: import nixpkgs { @@ -85,7 +85,7 @@      in        with pkgs-ovl; {          dsh-overlay-dtools = mkShell { -          name = "overlay - ldc-1.40.1 - dub-1.38.1 - dtools-2.103.1"; +          name = "overlay - ldc-1.40.1 - dub-1.39.0 - dtools-2.110.0";            inherit shell;            inherit devEnv;            packages = [ @@ -97,7 +97,7 @@            inherit shellHook;          };          dsh-overlay-ldc-dub = mkShell { -          name = "overlay - ldc-1.40.1 - dub-1.38.1 - dtools-2.103.1"; +          name = "overlay - ldc-1.40.1 - dub-1.39.0 - dtools-2.110.0";            inherit shell;            inherit devEnv;            packages = [ @@ -109,7 +109,7 @@            inherit shellHook;          };          dsh-overlay-dmd-dub = mkShell { -          name = "overlay - dmd-2.110.0 - dub-1.38.1 - dtools-2.103.1"; +          name = "overlay - dmd-2.110.0 - dub-1.39.0 - dtools-2.110.0";            inherit shell;            inherit devEnv;            packages = [ @@ -121,7 +121,7 @@            inherit shellHook;          };          dsh-overlay-dtest-tilix = mkShell { -          name = "overlay - ldc-1.40.1 - dub-1.38.1 - tilix - gtkd"; +          name = "overlay - ldc-1.40.1 - dub-1.39.0 - tilix - gtkd";            inherit shell;            inherit devEnv;            packages = [ diff --git a/nix-overlays/dmd/default.nix b/nix-overlays/dmd/default.nix index 69a9f75..8375c13 100644 --- a/nix-overlays/dmd/default.nix +++ b/nix-overlays/dmd/default.nix @@ -1,5 +1 @@ -import ./generic.nix { -  version = "2.110.0"; -  dmdHash = "sha256-icXp9xWF2AI2gp7z/lQFAChmXfQePe9b5pbpQ9Mn19Y="; -  phobosHash = "sha256-CmJpcHM+sIsaYBlpALCFoQFG+93s8gUyWmM0tYqjXkk="; -} +import ./package.nix diff --git a/nix-overlays/dmd/generic.nix b/nix-overlays/dmd/generic.nix index 22f7fa8..e130d69 100644 --- a/nix-overlays/dmd/generic.nix +++ b/nix-overlays/dmd/generic.nix @@ -1,28 +1,30 @@ -{ version -, dmdHash -, phobosHash +{ +  version, +  dmdHash, +  phobosHash,  }: -{ stdenv -, lib -, fetchFromGitHub -, removeReferencesTo -, makeWrapper -, which -, writeTextFile -, curl -, tzdata -, gdb -#, Foundation -, callPackage -, targetPackages -, fetchpatch -, bash -, installShellFiles -, git -, unzip -, dmdBootstrap ? callPackage ./bootstrap.nix { } -, dmdBin ? "${dmdBootstrap}/bin" +{ +  stdenv, +  lib, +  fetchFromGitHub, +  removeReferencesTo, +  makeWrapper, +  which, +  writeTextFile, +  curl, +  tzdata, +  gdb, +  # Foundation, +  callPackage, +  targetPackages, +  fetchpatch, +  bash, +  installShellFiles, +  git, +  unzip, +  dmdBootstrap ? callPackage ./bootstrap.nix { }, +  dmdBin ? "${dmdBootstrap}/bin",  }:  let @@ -36,11 +38,8 @@ let    };    bits = builtins.toString stdenv.hostPlatform.parsed.cpu.bits; -  osname = -    if stdenv.hostPlatform.isDarwin then -      "osx" -    else -      stdenv.hostPlatform.parsed.kernel.name; +  osname = if stdenv.hostPlatform.isDarwin then "osx" +    else stdenv.hostPlatform.parsed.kernel.name;    pathToDmd = "\${NIX_BUILD_TOP}/dmd/generated/${osname}/release/${bits}/dmd";  in diff --git a/nix-overlays/dmd/package.nix b/nix-overlays/dmd/package.nix new file mode 100644 index 0000000..69a9f75 --- /dev/null +++ b/nix-overlays/dmd/package.nix @@ -0,0 +1,5 @@ +import ./generic.nix { +  version = "2.110.0"; +  dmdHash = "sha256-icXp9xWF2AI2gp7z/lQFAChmXfQePe9b5pbpQ9Mn19Y="; +  phobosHash = "sha256-CmJpcHM+sIsaYBlpALCFoQFG+93s8gUyWmM0tYqjXkk="; +} diff --git a/nix-overlays/dtools/default.nix b/nix-overlays/dtools/default.nix index d605e4d..8375c13 100644 --- a/nix-overlays/dtools/default.nix +++ b/nix-overlays/dtools/default.nix @@ -1,51 +1 @@ -{ stdenv, lib, fetchFromGitHub, fetchpatch, ldc, curl, gnumake42 }: - -stdenv.mkDerivation rec { -  pname = "dtools"; -  version = "2.103.1"; - -  src = fetchFromGitHub { -    owner = "dlang"; -    repo = "tools"; -    rev = "v${version}"; -    sha256 = "sha256-XM4gUxcarQCOBR8W/o0iWAI54PyLDkH6CsDce22Cnu4="; -    name = "dtools"; -  }; - -  patches = [ -    (fetchpatch { -      # part of https://github.com/dlang/tools/pull/441 -      url = "https://github.com/dlang/tools/commit/6c6a042d1b08e3ec1790bd07a7f69424625ee866.patch"; # Fix LDC arm64 build -      sha256 = "sha256-x6EclTYN1Y5FG57KLhbBK0BZicSYcZoWO7MTVcP4T18="; -    }) -  ]; - -  nativeBuildInputs = [ ldc gnumake42 ]; # fails with make 4.4 -  buildInputs = [ curl ]; - -  makeCmd = '' -    make -f posix.mak all DMD_DIR=dmd DMD=${ldc.out}/bin/ldmd2 CC=${stdenv.cc}/bin/cc -  ''; - -  buildPhase = '' -    $makeCmd -  ''; - -  doCheck = true; - -  checkPhase = '' -      $makeCmd test_rdmd -    ''; - -  installPhase = '' -      $makeCmd INSTALL_DIR=$out install -  ''; - -  meta = with lib; { -    description = "Ancillary tools for the D programming language compiler"; -    homepage = "https://github.com/dlang/tools"; -    license = lib.licenses.boost; -    maintainers = with maintainers; [ ThomasMader ]; -    platforms = lib.platforms.unix; -  }; -} +import ./package.nix diff --git a/nix-overlays/dtools/disabled-tests.diff b/nix-overlays/dtools/disabled-tests.diff new file mode 100644 index 0000000..a22825a --- /dev/null +++ b/nix-overlays/dtools/disabled-tests.diff @@ -0,0 +1,11 @@ +--- a/rdmd_test.d ++++ b/rdmd_test.d +@@ -616,7 +616,7 @@ void runTests(string rdmdApp, string compiler, string model) +         enforce(res.status == 1, res.output); +     } +  +-    version (Posix) ++    version (none) +     { +         import std.conv : to; +         auto makeVersion = execute(["make", "--version"]).output.splitLines()[0]; diff --git a/nix-overlays/dtools/fix-ldc-arm64.diff b/nix-overlays/dtools/fix-ldc-arm64.diff new file mode 100644 index 0000000..66eaa22 --- /dev/null +++ b/nix-overlays/dtools/fix-ldc-arm64.diff @@ -0,0 +1,102 @@ +Adapted from https://github.com/dlang/tools/commit/6c6a042d1b08e3ec1790bd07a7f69424625ee866.patch +--- /dev/null ++++ b/osmodel.mak +@@ -0,0 +1,75 @@ ++#   osmodel.mak ++# ++# Detects and sets the macros: ++# ++#   OS         = one of {osx,linux,freebsd,openbsd,netbsd,dragonflybsd,solaris} ++#   MODEL      = one of { 32, 64 } ++#   MODEL_FLAG = one of { -m32, -m64 } ++#   ARCH       = one of { x86, x86_64, aarch64 } ++# ++# Note: ++#   Keep this file in sync between druntime, phobos, and dmd repositories! ++# Source: https://github.com/dlang/dmd/blob/master/src/osmodel.mak ++ ++ ++ifeq (,$(OS)) ++  uname_S:=$(shell uname -s) ++  ifeq (Darwin,$(uname_S)) ++    OS:=osx ++  endif ++  ifeq (Linux,$(uname_S)) ++    OS:=linux ++  endif ++  ifeq (FreeBSD,$(uname_S)) ++    OS:=freebsd ++  endif ++  ifeq (OpenBSD,$(uname_S)) ++    OS:=openbsd ++  endif ++  ifeq (NetBSD,$(uname_S)) ++    OS:=netbsd ++  endif ++  ifeq (DragonFly,$(uname_S)) ++    OS:=dragonflybsd ++  endif ++  ifeq (Solaris,$(uname_S)) ++    OS:=solaris ++  endif ++  ifeq (SunOS,$(uname_S)) ++    OS:=solaris ++  endif ++  ifeq (,$(OS)) ++    $(error Unrecognized or unsupported OS for uname: $(uname_S)) ++  endif ++endif ++ ++# When running make from XCode it may set environment var OS=MACOS. ++# Adjust it here: ++ifeq (MACOS,$(OS)) ++  OS:=osx ++endif ++ ++ifeq (,$(MODEL)) ++  ifeq ($(OS), solaris) ++    uname_M:=$(shell isainfo -n) ++  else ++    uname_M:=$(shell uname -m) ++  endif ++  ifneq (,$(findstring $(uname_M),x86_64 amd64)) ++    MODEL:=64 ++    ARCH:=x86_64 ++  endif ++  ifneq (,$(findstring $(uname_M),aarch64 arm64)) ++    MODEL:=64 ++    ARCH:=aarch64 ++  endif ++  ifneq (,$(findstring $(uname_M),i386 i586 i686)) ++    MODEL:=32 ++    ARCH:=x86 ++  endif ++  ifeq (,$(MODEL)) ++    $(error Cannot figure 32/64 model and arch from uname -m: $(uname_M)) ++  endif ++endif ++ ++MODEL_FLAG:=-m$(MODEL) +--- a/Makefile ++++ b/Makefile +@@ -9,9 +9,8 @@ DUB=dub + WITH_DOC = no + DOC = ../dlang.org +  +-# Load operating system $(OS) (e.g. linux, osx, ...) and $(MODEL) (e.g. 32, 64) detection Makefile from dmd +-$(shell [ ! -d $(DMD_DIR) ] && git clone --depth=1 https://github.com/dlang/dmd $(DMD_DIR)) +-include $(DMD_DIR)/compiler/src/osmodel.mak ++# Load operating system $(OS) (e.g. linux, osx, ...) and $(MODEL) (e.g. 32, 64) detection Makefile ++include osmodel.mak +  + ifeq (windows,$(OS)) +     DOTEXE:=.exe +@@ -30,7 +29,7 @@ DFLAGS = $(MODEL_FLAG) $(if $(findstring windows,$(OS)),,-fPIC) -preview=dip1000 + DFLAGS += $(WARNINGS) +  + # Default DUB flags (DUB uses a different architecture format) +-DUBFLAGS = --arch=$(subst 32,x86,$(subst 64,x86_64,$(MODEL))) ++DUBFLAGS = --arch=$(ARCH) +  + TOOLS = \ +     $(ROOT)/catdoc$(DOTEXE) \ diff --git a/nix-overlays/dtools/package.nix b/nix-overlays/dtools/package.nix new file mode 100644 index 0000000..2e72b44 --- /dev/null +++ b/nix-overlays/dtools/package.nix @@ -0,0 +1,49 @@ +{ +  lib, +  stdenv, +  fetchFromGitHub, +  ldc, +  curl, +}: + +stdenv.mkDerivation (finalAttrs: { +  pname = "dtools"; +  version = "2.110.0"; + +  src = fetchFromGitHub { +    owner = "dlang"; +    repo = "tools"; +    rev = "v${finalAttrs.version}"; +    hash = "sha256-xMEHnrstL5hAkhp8+/z1I2KZWZ7eztWZnUGLTKCfbBI="; +    name = "dtools"; +  }; + +  patches = [ +    # Disable failing tests +    ./disabled-tests.diff +    # Fix LDC arm64 build +    ./fix-ldc-arm64.diff +  ]; + +  nativeBuildInputs = [ ldc ]; +  buildInputs = [ curl ]; + +  makeFlags = [ +    "CC=${stdenv.cc}/bin/cc" +    "DMD=${ldc.out}/bin/ldmd2" +    "INSTALL_DIR=$(out)" +  ]; + +  enableParallelBuilding = true; + +  doCheck = true; +  checkTarget = "test_rdmd"; + +  meta = with lib; { +    description = "Ancillary tools for the D programming language"; +    homepage = "https://github.com/dlang/tools"; +    license = licenses.boost; +    maintainers = with maintainers; [ jtbx ]; +    platforms = platforms.unix; +  }; +}) diff --git a/nix-overlays/dub/package.nix b/nix-overlays/dub/package.nix index f13adec..b537a43 100644 --- a/nix-overlays/dub/package.nix +++ b/nix-overlays/dub/package.nix @@ -1,18 +1,19 @@ -{ lib -, stdenv -, fetchFromGitHub -, curl -, ldc -, dcompiler ? ldc -, libevent -, rsync +{ +  lib, +  stdenv, +  fetchFromGitHub, +  curl, +  ldc, +  dcompiler ? ldc, +  libevent, +  rsync,  }:  assert dcompiler != null;  stdenv.mkDerivation (finalAttrs: {    pname = "dub"; -  version = "1.38.1"; +  version = "1.39.0";    enableParallelBuilding = true; @@ -20,7 +21,7 @@ stdenv.mkDerivation (finalAttrs: {      owner = "dlang";      repo = "dub";      rev = "v${finalAttrs.version}"; -    hash = "sha256-8Lr/0sx4SKwU1aNOxZArta0RXpDM+EWl29ZsPDdPWFo="; +    hash = "sha256-73b15A9+hClD6IbuxTy9QZKpTKjUFYBuqGOclUyhrnM=";    };    postPatch = '' @@ -38,6 +39,7 @@ stdenv.mkDerivation (finalAttrs: {          break        fi      done +    #export DMD=${ldc}/bin/ldmd2      if [ "$DC" == "" ]; then        exit "Error: could not find D compiler"      fi diff --git a/nix-overlays/ldc/bootstrap.nix b/nix-overlays/ldc/bootstrap.nix index d81e5a4..8f76b5b 100644 --- a/nix-overlays/ldc/bootstrap.nix +++ b/nix-overlays/ldc/bootstrap.nix @@ -1,4 +1,13 @@ -{ lib, stdenv, fetchurl, curl, tzdata, autoPatchelfHook, fixDarwinDylibNames, libxml2 }: +{ +  lib, +  stdenv, +  fetchurl, +  curl, +  tzdata, +  autoPatchelfHook, +  fixDarwinDylibNames, +  libxml2, +}:  let    inherit (stdenv) hostPlatform; diff --git a/nix-overlays/ldc/package.nix b/nix-overlays/ldc/package.nix index 69a6457..39b510a 100644 --- a/nix-overlays/ldc/package.nix +++ b/nix-overlays/ldc/package.nix @@ -1,26 +1,27 @@ -{ lib -, stdenv -, fetchFromGitHub -, cmake -, ninja -, llvm_19 -, curl -, tzdata -, lit -, gdb -, unzip -, darwin -, callPackage -, makeWrapper -, runCommand -, writeText -, targetPackages - -, ldcBootstrap ? callPackage ./bootstrap.nix { } +{ +  lib, +  stdenv, +  fetchFromGitHub, +  cmake, +  ninja, +  llvm_19, +  curl, +  tzdata, +  lit, +  gdb, +  unzip, +  darwin, +  callPackage, +  makeWrapper, +  runCommand, +  writeText, +  targetPackages, + +  ldcBootstrap ? callPackage ./bootstrap.nix { },  }:  let -  pathConfig = runCommand "ldc-lib-paths" {} '' +  pathConfig = runCommand "ldc-lib-paths" { } ''      mkdir $out      echo ${tzdata}/share/zoneinfo/ > $out/TZDatabaseDirFile      echo ${curl.out}/lib/libcurl${stdenv.hostPlatform.extensions.sharedLibrary} > $out/LibcurlPathFile @@ -106,8 +107,7 @@ stdenv.mkDerivation (finalAttrs: {    '';    # https://github.com/ldc-developers/ldc/issues/2497#issuecomment-459633746 -  additionalExceptions = lib.optionalString stdenv.hostPlatform.isDarwin -    "|druntime-test-shared"; +  additionalExceptions = lib.optionalString stdenv.hostPlatform.isDarwin "|druntime-test-shared";    checkPhase = ''      # Build default lib test runners @@ -147,34 +147,35 @@ stdenv.mkDerivation (finalAttrs: {    };    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"]; +  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 d975188..8318729 100644 --- a/org/dlang-nix-flakes.org +++ b/org/dlang-nix-flakes.org @@ -21,9 +21,12 @@  - https://github.com/nix-community/nix-direnv/releases  - https://github.com/dlang/dmd/tags +  https://code.dlang.org/packages/dmd  - https://github.com/ldc-developers/ldc/releases  - https://github.com/dlang/dub/releases +  https://code.dlang.org/packages/dub  - https://github.com/dlang/tools/tags +  https://code.dlang.org/packages/dtools  ** README @@ -603,41 +606,42 @@ pkgs.callPackage ./shell.nix {}  - OK ldc 1.32.2 tested -*** overlays -**** default.nix OK ✓ +*** overlays OK ✓ +**** default.nix  #+HEADER: :tangle "../nix-overlays/ldc/default.nix"  #+BEGIN_SRC nix  import ./package.nix  #+END_SRC -**** package.nix OK ✓ (unaltered) +**** package.nix OK ✓  #+HEADER: :tangle "../nix-overlays/ldc/package.nix"  #+BEGIN_SRC nix -{ lib -, stdenv -, fetchFromGitHub -, cmake -, ninja -, <<ldc_llvm_set>> -, curl -, tzdata -, lit -, gdb -, unzip -, darwin -, callPackage -, makeWrapper -, runCommand -, writeText -, targetPackages - -, ldcBootstrap ? callPackage ./bootstrap.nix { } +{ +  lib, +  stdenv, +  fetchFromGitHub, +  cmake, +  ninja, +  <<ldc_llvm_set>>, +  curl, +  tzdata, +  lit, +  gdb, +  unzip, +  darwin, +  callPackage, +  makeWrapper, +  runCommand, +  writeText, +  targetPackages, + +  ldcBootstrap ? callPackage ./bootstrap.nix { },  }:  let -  pathConfig = runCommand "ldc-lib-paths" {} '' +  pathConfig = runCommand "ldc-lib-paths" { } ''      mkdir $out      echo ${tzdata}/share/zoneinfo/ > $out/TZDatabaseDirFile      echo ${curl.out}/lib/libcurl${stdenv.hostPlatform.extensions.sharedLibrary} > $out/LibcurlPathFile @@ -723,8 +727,7 @@ stdenv.mkDerivation (finalAttrs: {    '';    # https://github.com/ldc-developers/ldc/issues/2497#issuecomment-459633746 -  additionalExceptions = lib.optionalString stdenv.hostPlatform.isDarwin -    "|druntime-test-shared"; +  additionalExceptions = lib.optionalString stdenv.hostPlatform.isDarwin "|druntime-test-shared";    checkPhase = ''      # Build default lib test runners @@ -764,34 +767,35 @@ stdenv.mkDerivation (finalAttrs: {    };    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"]; +  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"];      };    };  }) @@ -803,7 +807,16 @@ stdenv.mkDerivation (finalAttrs: {  #+HEADER: :tangle "../nix-overlays/ldc/bootstrap.nix"  #+BEGIN_SRC nix -{ lib, stdenv, fetchurl, curl, tzdata, autoPatchelfHook, fixDarwinDylibNames, libxml2 }: +{ +  lib, +  stdenv, +  fetchurl, +  curl, +  tzdata, +  autoPatchelfHook, +  fixDarwinDylibNames, +  libxml2, +}:  let    inherit (stdenv) hostPlatform; @@ -899,10 +912,17 @@ hashes = {  *** overlays  **** default.nix -***** default.nix  >=2.108.0)  #+HEADER: :tangle "../nix-overlays/dmd/default.nix"  #+BEGIN_SRC nix +import ./package.nix +#+END_SRC + +**** package.nix OK ✓ +***** package.nix  >=2.108.0) + +#+HEADER: :tangle "../nix-overlays/dmd/package.nix" +#+BEGIN_SRC nix  import ./generic.nix {    version = "<<dmd_version>>";    dmdHash = "<<dmd_hash>>"; @@ -910,10 +930,9 @@ import ./generic.nix {  }  #+END_SRC -***** default.nix  < 2.108.0) - +***** package.nix  < 2.108.0) -#+HEADER: :tangle-NO "../nix-overlays/dmd/default.nix" +#+HEADER: :tangle-NO "../nix-overlays/dmd/package.nix"  #+BEGIN_SRC nix  import ./generic.nix {    version = "<<dmd_version>>"; @@ -926,31 +945,33 @@ import ./generic.nix {  #+HEADER: :tangle "../nix-overlays/dmd/generic.nix"  #+BEGIN_SRC nix -{ version -, dmdHash -, phobosHash +{ +  version, +  dmdHash, +  phobosHash,  }: -{ stdenv -, lib -, fetchFromGitHub -, removeReferencesTo -, makeWrapper -, which -, writeTextFile -, curl -, tzdata -, gdb -#, Foundation -, callPackage -, targetPackages -, fetchpatch -, bash -, installShellFiles -, git -, unzip -, dmdBootstrap ? callPackage ./bootstrap.nix { } -, dmdBin ? "${dmdBootstrap}/bin" +{ +  stdenv, +  lib, +  fetchFromGitHub, +  removeReferencesTo, +  makeWrapper, +  which, +  writeTextFile, +  curl, +  tzdata, +  gdb, +  # Foundation, +  callPackage, +  targetPackages, +  fetchpatch, +  bash, +  installShellFiles, +  git, +  unzip, +  dmdBootstrap ? callPackage ./bootstrap.nix { }, +  dmdBin ? "${dmdBootstrap}/bin",  }:  let @@ -964,11 +985,8 @@ let    };    bits = builtins.toString stdenv.hostPlatform.parsed.cpu.bits; -  osname = -    if stdenv.hostPlatform.isDarwin then -      "osx" -    else -      stdenv.hostPlatform.parsed.kernel.name; +  osname = if stdenv.hostPlatform.isDarwin then "osx" +    else stdenv.hostPlatform.parsed.kernel.name;    pathToDmd = "\${NIX_BUILD_TOP}/dmd/generated/${osname}/release/${bits}/dmd";  in @@ -1283,23 +1301,26 @@ stdenv.mkDerivation {  - OK dub == 1.30.0 OK ✓  *** overlays -**** default.nix OK ✓ +**** default.nix  #+HEADER: :tangle "../nix-overlays/dub/default.nix"  #+BEGIN_SRC nix  import ./package.nix  #+END_SRC +**** package.nix OK ✓ +  #+HEADER: :tangle "../nix-overlays/dub/package.nix"  #+BEGIN_SRC nix -{ lib -, stdenv -, fetchFromGitHub -, curl -, <<dcompiler>> -, dcompiler ? <<dcompiler>> -, libevent -, rsync +{ +  lib, +  stdenv, +  fetchFromGitHub, +  curl, +  <<dcompiler>>, +  dcompiler ? <<dcompiler>>, +  libevent, +  rsync,  }:  assert dcompiler != null; @@ -1332,6 +1353,7 @@ stdenv.mkDerivation (finalAttrs: {          break        fi      done +    #export DMD=${ldc}/bin/ldmd2      if [ "$DC" == "" ]; then        exit "Error: could not find D compiler"      fi @@ -1419,57 +1441,183 @@ dmd  #+HEADER: :tangle "../nix-overlays/dtools/default.nix"  #+BEGIN_SRC nix -{ stdenv, lib, fetchFromGitHub, fetchpatch, ldc, curl, gnumake42 }: +import ./package.nix +#+END_SRC + +**** package.nix -stdenv.mkDerivation rec { +#+HEADER: :tangle "../nix-overlays/dtools/package.nix" +#+BEGIN_SRC nix +{ +  lib, +  stdenv, +  fetchFromGitHub, +  ldc, +  curl, +}: + +stdenv.mkDerivation (finalAttrs: {    pname = "dtools";    version = "<<dtools_version>>";    src = fetchFromGitHub {      owner = "dlang";      repo = "tools"; -    rev = "v${version}"; -    sha256 = "<<dtools_hash>>"; +    rev = "v${finalAttrs.version}"; +    hash = "<<dtools_hash>>";      name = "dtools";    };    patches = [ -    (fetchpatch { -      # part of https://github.com/dlang/tools/pull/441 -      url = "https://github.com/dlang/tools/commit/6c6a042d1b08e3ec1790bd07a7f69424625ee866.patch"; # Fix LDC arm64 build -      sha256 = "sha256-x6EclTYN1Y5FG57KLhbBK0BZicSYcZoWO7MTVcP4T18="; -    }) +    # Disable failing tests +    ./disabled-tests.diff +    # Fix LDC arm64 build +    ./fix-ldc-arm64.diff    ]; -  nativeBuildInputs = [ ldc gnumake42 ]; # fails with make 4.4 +  nativeBuildInputs = [ ldc ];    buildInputs = [ curl ]; -  makeCmd = '' -    make -f posix.mak all DMD_DIR=dmd DMD=${ldc.out}/bin/ldmd2 CC=${stdenv.cc}/bin/cc -  ''; +  makeFlags = [ +    "CC=${stdenv.cc}/bin/cc" +    "DMD=${ldc.out}/bin/ldmd2" +    "INSTALL_DIR=$(out)" +  ]; -  buildPhase = '' -    $makeCmd -  ''; +  enableParallelBuilding = true;    doCheck = true; - -  checkPhase = '' -      $makeCmd test_rdmd -    ''; - -  installPhase = '' -      $makeCmd INSTALL_DIR=$out install -  ''; +  checkTarget = "test_rdmd";    meta = with lib; { -    description = "Ancillary tools for the D programming language compiler"; +    description = "Ancillary tools for the D programming language";      homepage = "https://github.com/dlang/tools"; -    license = lib.licenses.boost; -    maintainers = with maintainers; [ ThomasMader ]; -    platforms = lib.platforms.unix; +    license = licenses.boost; +    maintainers = with maintainers; [ jtbx ]; +    platforms = platforms.unix;    }; -} +}) +#+END_SRC + +#+HEADER: :tangle "../nix-overlays/dtools/disabled-tests.diff" +#+BEGIN_SRC diff +--- a/rdmd_test.d ++++ b/rdmd_test.d +@@ -616,7 +616,7 @@ void runTests(string rdmdApp, string compiler, string model) +         enforce(res.status == 1, res.output); +     } +  +-    version (Posix) ++    version (none) +     { +         import std.conv : to; +         auto makeVersion = execute(["make", "--version"]).output.splitLines()[0]; +#+END_SRC + +#+HEADER: :tangle "../nix-overlays/dtools/fix-ldc-arm64.diff" +#+BEGIN_SRC diff +Adapted from https://github.com/dlang/tools/commit/6c6a042d1b08e3ec1790bd07a7f69424625ee866.patch +--- /dev/null ++++ b/osmodel.mak +@@ -0,0 +1,75 @@ ++#   osmodel.mak ++# ++# Detects and sets the macros: ++# ++#   OS         = one of {osx,linux,freebsd,openbsd,netbsd,dragonflybsd,solaris} ++#   MODEL      = one of { 32, 64 } ++#   MODEL_FLAG = one of { -m32, -m64 } ++#   ARCH       = one of { x86, x86_64, aarch64 } ++# ++# Note: ++#   Keep this file in sync between druntime, phobos, and dmd repositories! ++# Source: https://github.com/dlang/dmd/blob/master/src/osmodel.mak ++ ++ ++ifeq (,$(OS)) ++  uname_S:=$(shell uname -s) ++  ifeq (Darwin,$(uname_S)) ++    OS:=osx ++  endif ++  ifeq (Linux,$(uname_S)) ++    OS:=linux ++  endif ++  ifeq (FreeBSD,$(uname_S)) ++    OS:=freebsd ++  endif ++  ifeq (OpenBSD,$(uname_S)) ++    OS:=openbsd ++  endif ++  ifeq (NetBSD,$(uname_S)) ++    OS:=netbsd ++  endif ++  ifeq (DragonFly,$(uname_S)) ++    OS:=dragonflybsd ++  endif ++  ifeq (Solaris,$(uname_S)) ++    OS:=solaris ++  endif ++  ifeq (SunOS,$(uname_S)) ++    OS:=solaris ++  endif ++  ifeq (,$(OS)) ++    $(error Unrecognized or unsupported OS for uname: $(uname_S)) ++  endif ++endif ++ ++# When running make from XCode it may set environment var OS=MACOS. ++# Adjust it here: ++ifeq (MACOS,$(OS)) ++  OS:=osx ++endif ++ ++ifeq (,$(MODEL)) ++  ifeq ($(OS), solaris) ++    uname_M:=$(shell isainfo -n) ++  else ++    uname_M:=$(shell uname -m) ++  endif ++  ifneq (,$(findstring $(uname_M),x86_64 amd64)) ++    MODEL:=64 ++    ARCH:=x86_64 ++  endif ++  ifneq (,$(findstring $(uname_M),aarch64 arm64)) ++    MODEL:=64 ++    ARCH:=aarch64 ++  endif ++  ifneq (,$(findstring $(uname_M),i386 i586 i686)) ++    MODEL:=32 ++    ARCH:=x86 ++  endif ++  ifeq (,$(MODEL)) ++    $(error Cannot figure 32/64 model and arch from uname -m: $(uname_M)) ++  endif ++endif ++ ++MODEL_FLAG:=-m$(MODEL) +--- a/Makefile ++++ b/Makefile +@@ -9,9 +9,8 @@ DUB=dub + WITH_DOC = no + DOC = ../dlang.org +  +-# Load operating system $(OS) (e.g. linux, osx, ...) and $(MODEL) (e.g. 32, 64) detection Makefile from dmd +-$(shell [ ! -d $(DMD_DIR) ] && git clone --depth=1 https://github.com/dlang/dmd $(DMD_DIR)) +-include $(DMD_DIR)/compiler/src/osmodel.mak ++# Load operating system $(OS) (e.g. linux, osx, ...) and $(MODEL) (e.g. 32, 64) detection Makefile ++include osmodel.mak +  + ifeq (windows,$(OS)) +     DOTEXE:=.exe +@@ -30,7 +29,7 @@ DFLAGS = $(MODEL_FLAG) $(if $(findstring windows,$(OS)),,-fPIC) -preview=dip1000 + DFLAGS += $(WARNINGS) +  + # Default DUB flags (DUB uses a different architecture format) +-DUBFLAGS = --arch=$(subst 32,x86,$(subst 64,x86_64,$(MODEL))) ++DUBFLAGS = --arch=$(ARCH) +  + TOOLS = \ +     $(ROOT)/catdoc$(DOTEXE) \  #+END_SRC  ** versions SET @@ -1557,62 +1705,6 @@ stdenv.mkDerivation rec {  <<./nix-develop-dlang-shared.org:dtools-hash()>>  #+END_SRC -- https://github.com/dlang/tools - -**** selected version SET OK ✓ - -#+NAME: dtools_version -#+BEGIN_SRC nix -<<dtools_version_2_103_1>> -#+END_SRC - -#+NAME: dtools_hash -#+BEGIN_SRC nix -<<dtools_hash_2_103_1>> -#+END_SRC - -**** 2.103.1 OK ✓ - -- https://github.com/dlang/tools/releases/tag/v2.103.1 - -#+NAME: dtools_version_2_103_1 -#+BEGIN_SRC nix -2.103.1 -#+END_SRC - -#+NAME: dtools_hash_2_103_1 -#+BEGIN_SRC nix -sha256-XM4gUxcarQCOBR8W/o0iWAI54PyLDkH6CsDce22Cnu4= -#+END_SRC - -**** 2.102.2 - -- https://github.com/dlang/tools/releases/tag/v2.102.2 - -#+NAME: dtools_version_2_102_2 -#+BEGIN_SRC nix -2.102.2 -#+END_SRC - -#+NAME: dtools_hash_2_102_2 -#+BEGIN_SRC nix -sha256-XM4gUxcarQCOBR8W/o0iWAI54PyLDkH6CsDce22Cnu4= -#+END_SRC - -**** 2.095.1 current nixpkgs 20-03-17 OK ✓ - -- https://github.com/dlang/tools/releases/tag/v2.095.1 - -#+NAME: dtools_version_2_095_1 -#+BEGIN_SRC nix -2.095.1 -#+END_SRC - -#+NAME: dtools_hash_2_095_1 -#+BEGIN_SRC nix -sha256:0rdfk3mh3fjrb0h8pr8skwlq6ac9hdl1fkrkdl7n1fa2806b740b -#+END_SRC -  ** sha256 blank_hash  #+NAME: sha256-blank diff --git a/org/nix-develop-dlang-shared.org b/org/nix-develop-dlang-shared.org index 04a0e82..f0a7aac 100644 --- a/org/nix-develop-dlang-shared.org +++ b/org/nix-develop-dlang-shared.org @@ -260,6 +260,26 @@ sha256-/bs3bwgkLZF5IqaiKnc5gCF/r6MQBG/F1kWUkK8j2s0=  #+END_SRC  *** versions +**** 2.111.0 OK ✓ + +- nix-prefetch-url --unpack https://github.com/dlang/dmd/archive/refs/tags/v2.111.0-beta.1.tar.gz +- nix-prefetch-url --unpack https://github.com/dlang/phobos/archive/refs/tags/v2.111.0-beta.1.tar.gz + +#+NAME: dmd_version_2_111_0 +#+BEGIN_SRC nix +2.111.0-beta.1 +#+END_SRC + +#+NAME: phobos_hash_2_111_0 +#+BEGIN_SRC nix +sha256-yPmstS52J0BboR++9nYaeUq2mAJrFuUjxxi2BGgGCUY= +#+END_SRC + +#+NAME: dmd_hash_2_111_0 +#+BEGIN_SRC nix +sha256-MfGcno6o+GXZTWyWZ0kGYtMcMPuj2VgQd5I+nPKz1I4= +#+END_SRC +  **** 2.110.0 OK ✓  - nix-prefetch-url --unpack https://github.com/dlang/dmd/archive/refs/tags/v2.110.0.tar.gz @@ -401,15 +421,30 @@ sha256-yRL9ub3u4mREG9PVxBvgQ/LDXD57RadPTZ2h08qyh/s=  #+NAME: dub-version  #+HEADER: :noweb yes  #+BEGIN_SRC org -<<dub_version_1_38_1>> +<<dub_version_1_39_0>>  #+END_SRC  #+NAME: dub-hash  #+BEGIN_SRC org -<<dub_hash_1_38_1>> +<<dub_hash_1_39_0>>  #+END_SRC  *** versions +**** 1.39 OK ✓ +***** 1.39.0 + +- nix-prefetch-url --unpack https://github.com/dlang/dub/archive/refs/tags/v1.39.0.tar.gz + +#+NAME: dub_version_1_39_0 +#+BEGIN_SRC nix +1.39.0 +#+END_SRC + +#+NAME: dub_hash_1_39_0 +#+BEGIN_SRC nix +sha256-73b15A9+hClD6IbuxTy9QZKpTKjUFYBuqGOclUyhrnM= +#+END_SRC +  **** 1.38 OK ✓  ***** 1.38.1 @@ -522,55 +557,55 @@ sha256-5pW3Fu3PQ1ZLJnsuh7fPpEBNbVQgGfFyiuMrAVOJKQA=  #+NAME: dtools-version  #+BEGIN_SRC org -<<dtools_version_2_103_1>> +<<dtools_version_2_110_0>>  #+END_SRC  #+NAME: dtools-hash  #+BEGIN_SRC org -<<dtools_hash_2_103_1>> +<<dtools_hash_2_110_0>>  #+END_SRC  *** versions -**** 2.103.1 OK ✓ +**** 2.110.0 OK ✓ -- https://github.com/dlang/tools/releases/tag/v2.103.1 +- https://github.com/dlang/tools/releases/tag/v2.110.0 -#+NAME: dtools_version_2_103_1 +#+NAME: dtools_version_2_110_0  #+BEGIN_SRC nix -2.103.1 +2.110.0  #+END_SRC -#+NAME: dtools_hash_2_103_1 +#+NAME: dtools_hash_2_110_0  #+BEGIN_SRC nix -sha256-XM4gUxcarQCOBR8W/o0iWAI54PyLDkH6CsDce22Cnu4= +sha256-xMEHnrstL5hAkhp8+/z1I2KZWZ7eztWZnUGLTKCfbBI=  #+END_SRC -**** 2.102.2 +**** 2.109.1 OK ✓ -- https://github.com/dlang/tools/releases/tag/v2.102.2 +- https://github.com/dlang/tools/releases/tag/v2.109.1 -#+NAME: dtools_version_2_102_2 +#+NAME: dtools_version_2_109_1  #+BEGIN_SRC nix -2.102.2 +2.109.1  #+END_SRC -#+NAME: dtools_hash_2_102_2 +#+NAME: dtools_hash_2_109_1  #+BEGIN_SRC nix -sha256-XM4gUxcarQCOBR8W/o0iWAI54PyLDkH6CsDce22Cnu4= +sha256-Pfj8Kwf5AlcrHhLs5A/0vIFWLZaNR3ro+esbs7oWN9I=  #+END_SRC -**** 2.095.1 +**** 2.104.1 OK ✓ -- https://github.com/dlang/tools/releases/tag/v2.095.1 +- https://github.com/dlang/tools/releases/tag/v2.104.2 -#+NAME: dtools_version_2_095_1 +#+NAME: dtools_version_2_104_2  #+BEGIN_SRC nix -2.095.1 +2.104.2  #+END_SRC -#+NAME: dtools_hash_2_095_1 +#+NAME: dtools_hash_2_104_2  #+BEGIN_SRC nix -sha256:0rdfk3mh3fjrb0h8pr8skwlq6ac9hdl1fkrkdl7n1fa2806b740b +sha256-Pfj8Kwf5AlcrHhLs5A/0vIFWLZaNR3ro+esbs7oWN9I=  #+END_SRC  ** sha256 blank_hash  | 
