summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRalph Amissah <ralph.amissah@gmail.com>2025-03-22 12:29:04 -0400
committerRalph Amissah <ralph.amissah@gmail.com>2025-03-22 12:57:03 -0400
commit39b16223937fa3fc8da80495a25d7397712b8bae (patch)
treedff0c37c726c59140abf792a11c3892ff3a2d9c9
parentldc-1.40.1 (based on D 2.110.0) - overlay (diff)
overlay updates (dub-1.39.0, dtools-2.110.0)HEADmain
-rw-r--r--README14
-rw-r--r--flake.lock6
-rw-r--r--flake.nix12
-rw-r--r--nix-overlays/dmd/default.nix6
-rw-r--r--nix-overlays/dmd/generic.nix55
-rw-r--r--nix-overlays/dmd/package.nix5
-rw-r--r--nix-overlays/dtools/default.nix52
-rw-r--r--nix-overlays/dtools/disabled-tests.diff11
-rw-r--r--nix-overlays/dtools/fix-ldc-arm64.diff102
-rw-r--r--nix-overlays/dtools/package.nix49
-rw-r--r--nix-overlays/dub/package.nix22
-rw-r--r--nix-overlays/ldc/bootstrap.nix11
-rw-r--r--nix-overlays/ldc/package.nix101
-rw-r--r--org/dlang-nix-flakes.org452
-rw-r--r--org/nix-develop-dlang-shared.org79
15 files changed, 614 insertions, 363 deletions
diff --git a/README b/README
index bd9cb6c..917aa92 100644
--- a/README
+++ b/README
@@ -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
diff --git a/flake.lock b/flake.lock
index 58ff03b..0f8fa66 100644
--- a/flake.lock
+++ b/flake.lock
@@ -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": {
diff --git a/flake.nix b/flake.nix
index b5d4782..0f00540 100644
--- a/flake.nix
+++ b/flake.nix
@@ -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