diff options
| -rw-r--r-- | nix-overlays/README | 20 | ||||
| -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 | 21 | ||||
| -rw-r--r-- | nix-overlays/ldc/bootstrap.nix | 11 | ||||
| -rw-r--r-- | nix-overlays/ldc/package.nix | 105 | ||||
| -rw-r--r-- | org/nix-develop-dlang-shared.org | 112 | ||||
| -rw-r--r-- | org/nixpkgs_overlays_d_related.org | 430 | 
13 files changed, 659 insertions, 320 deletions
diff --git a/nix-overlays/README b/nix-overlays/README index f69d2a5..e871693 100644 --- a/nix-overlays/README +++ b/nix-overlays/README @@ -16,9 +16,9 @@ compiler and build tools: ldc, dub and dtools, than exist in nixpkgs at the time  of publishing, in some cases with additional fixes.  nix overlays for (updates nixpkgs, more recent versions of): -  - ldc     ( 1.30.0 -> 1.40.0 ) -  - dub     ( 1.23.0 -> 1.38.1 ) [for nix versions 1.31.0 ... 1.33.0 broken] -  - dtools  ( 2.095.1 -> 2.103.1 ) +  - ldc     ( 1.30.0 -> 1.40.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.106.1 -> 2.110.0 )    - gdc     [not yet available] @@ -47,13 +47,13 @@ search nixpkgs here:  - https://search.nixos.org/packages?channel=unstable&from=0&size=100&sort=relevance&query=  ** compilers -*** ldc OK ✓ ( 1.30.0 -> 1.40.0 ) +*** ldc OK ✓ ( 1.30.0 -> 1.40.1 )  - 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.40.0.tar.gz +    nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.40.1.tar.gz    - https://github.com/ldc-developers/ldc/issues  - 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.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: @@ -102,19 +102,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 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..1ac054c 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 = '' 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 c20084c..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 @@ -30,13 +31,13 @@ in  stdenv.mkDerivation (finalAttrs: {    pname = "ldc"; -  version = "1.40.0"; +  version = "1.40.1";    src = fetchFromGitHub {      owner = "ldc-developers";      repo = "ldc";      rev = "v${finalAttrs.version}"; -    hash = "sha256-LT85DlAebecPpBUgZP0ayKTVrTUqN6DMJVEWTatLOxY="; +    hash = "sha256-WdnwdH25A5oMNNY3uWG2hxnaAT+S1hNuP7LElH3uuuk=";      fetchSubmodules = true;    }; @@ -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/nix-develop-dlang-shared.org b/org/nix-develop-dlang-shared.org index b1611a4..f0a7aac 100644 --- a/org/nix-develop-dlang-shared.org +++ b/org/nix-develop-dlang-shared.org @@ -94,24 +94,44 @@ sha256 = "<<ldc-hash>>";  #+NAME: ldc-version  #+BEGIN_SRC org -<<ldc_version_1_40_0>> +<<ldc_version_1_40_1>>  #+END_SRC  #+NAME: ldc-hash  #+BEGIN_SRC org -<<ldc_hash_1_40_0>> +<<ldc_hash_1_40_1>>  #+END_SRC  #+NAME: ldc-llvm-set  #+BEGIN_SRC org -<<ldc_llvm_set_1_40_0>> +<<ldc_llvm_set_1_40_1>>  #+END_SRC  *** versions  **** 1.40 OK ✓ +***** 1.40.1 OK ✓ + + - nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.40.1.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_40_1 +#+BEGIN_SRC nix +1.40.1 +#+END_SRC + +#+NAME: ldc_hash_1_40_1 +#+BEGIN_SRC nix +sha256-WdnwdH25A5oMNNY3uWG2hxnaAT+S1hNuP7LElH3uuuk= +#+END_SRC + +#+NAME: ldc_llvm_set_1_40_1 +#+BEGIN_SRC nix +llvm_19 +#+END_SRC +  ***** 1.40.0 OK ✓ - - nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.40.0-beta6.tar.gz + - nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.40.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_40_0 @@ -240,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 @@ -381,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 @@ -502,61 +557,66 @@ 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  #+NAME: blank_hash  #+BEGIN_SRC nix +<<sha256-blank>> +#+END_SRC + +#+NAME: sha256-blank +#+BEGIN_SRC nix  sha256-0000000000000000000000000000000000000000000=  #+END_SRC diff --git a/org/nixpkgs_overlays_d_related.org b/org/nixpkgs_overlays_d_related.org index c4e39f4..1d20dd0 100644 --- a/org/nixpkgs_overlays_d_related.org +++ b/org/nixpkgs_overlays_d_related.org @@ -285,12 +285,6 @@ use flake .  #use flake .#default  #+END_SRC -#+BEGIN_SRC shell -- https://github.com/nix-community/nix-direnv -NixDirEnvSHA="sha256-0000000000000000000000000000000000000000000=" -direnv fetchurl https://raw.githubusercontent.com/nix-community/nix-direnv/${NixDirEnvVersion}/direnvrc -#+END_SRC -  ** .nix  *** flake.nix @@ -350,32 +344,34 @@ direnv fetchurl https://raw.githubusercontent.com/nix-community/nix-direnv/${Nix            inherit shell;            inherit devEnv;            packages = [ -            gnumake              ldc              dub              dtools +            gnumake            ];            inherit shellHook;          };          dsh-overlay-ldc-dub = mkShell { -          name = "overlay - ldc-<<ldc_version>> - dub-<<dub_version>>"; +          name = "overlay - ldc-<<ldc_version>> - dub-<<dub_version>> - dtools-<<dtools_version>>";            inherit shell;            inherit devEnv;            packages = [ -            gnumake              ldc              dub +            dtools +            gnumake            ];            inherit shellHook;          };          dsh-overlay-dmd-dub = mkShell { -          name = "overlay - dmd-<<dmd_version>> - dub-<<dub_version>>"; +          name = "overlay - dmd-<<dmd_version>> - dub-<<dub_version>> - dtools-<<dtools_version>>";            inherit shell;            inherit devEnv;            packages = [ -            gnumake              dmd              dub +            dtools +            gnumake            ];            inherit shellHook;          }; @@ -384,11 +380,12 @@ direnv fetchurl https://raw.githubusercontent.com/nix-community/nix-direnv/${Nix            inherit shell;            inherit devEnv;            packages = [ -            gnumake              ldc              gtkd              tilix              dub +            dtools +            gnumake            ];            inherit shellHook;          }; @@ -397,9 +394,10 @@ direnv fetchurl https://raw.githubusercontent.com/nix-community/nix-direnv/${Nix          #  inherit shell;          #  inherit devEnv;          #  packages = [ -        #    gnumake          #    gdc          #    dub +        #    dtools +        #    gnumake          #  ];          #  inherit shellHook;          #}; @@ -410,6 +408,7 @@ direnv fetchurl https://raw.githubusercontent.com/nix-community/nix-direnv/${Nix            packages = with pkgs-nix; [              ldc              dub +            dtools              gnumake            ];            inherit shellHook; @@ -421,6 +420,7 @@ direnv fetchurl https://raw.githubusercontent.com/nix-community/nix-direnv/${Nix            packages = with pkgs-nix; [              dmd              dub +            dtools              gnumake            ];            inherit shellHook; @@ -501,41 +501,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 @@ -621,8 +622,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 @@ -662,34 +662,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"];      };    };  }) @@ -701,7 +702,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; @@ -797,10 +807,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>>"; @@ -808,10 +825,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>>"; @@ -824,31 +840,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 @@ -862,11 +880,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 @@ -1181,23 +1196,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; @@ -1317,57 +1335,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 + +#+HEADER: :tangle "../nix-overlays/dtools/package.nix" +#+BEGIN_SRC nix +{ +  lib, +  stdenv, +  fetchFromGitHub, +  ldc, +  curl, +}: -stdenv.mkDerivation rec { +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 @@ -1455,4 +1599,16 @@ stdenv.mkDerivation rec {  <<./nix-develop-dlang-shared.org:dtools-hash()>>  #+END_SRC +** sha256 blank_hash + +#+NAME: sha256-blank +#+BEGIN_SRC nix +<<./nix-develop-dlang-shared.org:sha256-blank()>> +#+END_SRC + +#+NAME: blank_hash +#+BEGIN_SRC nix +<<./nix-develop-dlang-shared.org:sha256-blank()>> +#+END_SRC +  * __END__  | 
