diff options
-rw-r--r-- | .envrc-nix | 4 | ||||
-rw-r--r-- | README | 28 | ||||
-rw-r--r-- | flake.lock | 40 | ||||
-rw-r--r-- | flake.nix | 53 | ||||
-rw-r--r-- | nix-overlays/dmd/default.nix | 6 | ||||
-rw-r--r-- | nix-overlays/dmd/generic.nix | 76 | ||||
-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/default.nix | 87 | ||||
-rw-r--r-- | nix-overlays/dub/package.nix | 93 | ||||
-rw-r--r-- | nix-overlays/ldc/binary.nix | 43 | ||||
-rw-r--r-- | nix-overlays/ldc/bootstrap.nix | 54 | ||||
-rw-r--r-- | nix-overlays/ldc/default.nix | 5 | ||||
-rw-r--r-- | nix-overlays/ldc/generic.nix | 136 | ||||
-rw-r--r-- | nix-overlays/ldc/package.nix | 181 | ||||
-rw-r--r-- | org/dlang-nix-flakes.org | 1423 | ||||
-rw-r--r-- | org/nix-develop-dlang-shared.org | 711 | ||||
-rwxr-xr-x | shell.nix | 8 |
21 files changed, 1804 insertions, 1363 deletions
@@ -1,7 +1,7 @@ NIX_ENFORCE_PURITY=1 # - https://github.com/nix-community/nix-direnv -NixDirEnvVersion="3.0.4" -NixDirEnvSHA="sha256-DzlYZ33mWF/Gs8DDeyjr8mnVmQGx7ASYqA5WlxwvBG4=" +NixDirEnvVersion="3.0.7" +NixDirEnvSHA="sha256-bn8WANE5a91RusFmRI7kS751ApelG02nMcwRekC/qzc=" if ! has nix_direnv_version || ! nix_direnv_version ${NixDirEnvVersion}; then source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/${NixDirEnvVersion}/direnvrc" "${NixDirEnvSHA}" fi @@ -4,7 +4,7 @@ #+FILETAGS: :dlang:build:tools: #+AUTHOR: Ralph Amissah #+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] -#+COPYRIGHT: Copyright (C) 2022 - 2024 Ralph Amissah +#+COPYRIGHT: Copyright (C) 2022 - 2025 Ralph Amissah #+LANGUAGE: en #+STARTUP: content hideblocks hidestars noindent entitiespretty @@ -35,11 +35,11 @@ nix control files - flake.nix nix overlays for (updates nixpkgs, more recent versions of): - - ldc ( 1.30.0 -> 1.39.0 ) - - dub ( 1.23.0 -> 1.36.0 ) [for nix versions 1.31.0 ... 1.33.0 broken] - - dtools ( 2.095.1 -> 2.103.1 ) + - ldc ( 1.30.0 -> 1.41.0 ) + - 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.109.0 ) + - dmd ( 2.100.2 -> 2.111.0 ) - gdc [not yet available] (updates nixpkgs circa 2023-05-12) @@ -73,26 +73,26 @@ search nixpkgs here: - https://search.nixos.org/packages?channel=unstable&from=0&size=100&sort=relevance&query= ** compilers -*** ldc OK ✓ ( 1.30.0 -> 1.39.0 ) +*** ldc OK ✓ ( 1.30.0 -> 1.41.0 ) - https://wiki.dlang.org/LDC - https://github.com/ldc-developers/ldc - https://github.com/ldc-developers/ldc/releases - nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.39.0.tar.gz + nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.41.0.tar.gz - https://github.com/ldc-developers/ldc/issues - version in nixpkgs: - https://search.nixos.org/packages?channel=unstable&show=ldc&from=0&size=100&sort=relevance&type=packages&query=ldc -*** dmd OK ✓ ( 2.100.2 -> 2.109.0 ) +*** dmd OK ✓ ( 2.100.2 -> 2.111.0 ) - https://dlang.org/ - https://wiki.dlang.org/LDC - https://github.com/dlang/dmd - https://github.com/dlang/dmd/tags - nix-prefetch-url --unpack https://github.com/dlang/dmd/archive/refs/tags/v2.109.0.tar.gz + nix-prefetch-url --unpack https://github.com/dlang/dmd/archive/refs/tags/v2.111.0.tar.gz - https://github.com/dlang/dmd/pulls - version in nixpkgs: @@ -114,13 +114,13 @@ not yet provided in nixpkgs with gcc12, no attempt made - https://github.com/D-Programming-GDC/gdc ** build tool -*** dub ( 1.23.0 -> 1.36.0 ) +*** dub ( 1.23.0 -> 1.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.36.0.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.36.0 ) +- 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 @@ -1,30 +1,12 @@ { "nodes": { - "flake-utils": { - "inputs": { - "systems": "systems" - }, - "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, "nixpkgs": { "locked": { - "lastModified": 1720058333, - "narHash": "sha256-gM2RCi5XkxmcsZ44pUkKIYBiBMfZ6u7MdcZcykmccrs=", + "lastModified": 1749213349, + "narHash": "sha256-UAaWOyQhdp7nXzsbmLVC67fo+QetzoTm9hsPf9X3yr4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6842b061970bf96965d66fcc86a28e1f719aae95", + "rev": "a4ff0e3c64846abea89662bfbacf037ef4b34207", "type": "github" }, "original": { @@ -36,24 +18,8 @@ }, "root": { "inputs": { - "flake-utils": "flake-utils", "nixpkgs": "nixpkgs" } - }, - "systems": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } } }, "root": "root", @@ -1,11 +1,11 @@ { description = "build dummy D package using dub build tool"; inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; - inputs.flake-utils.url = "github:numtide/flake-utils"; + #inputs.flake-utils.url = "github:numtide/flake-utils"; outputs = { self, nixpkgs, - flake-utils, + #flake-utils, ... }@inputs: let pname = "dummy"; @@ -21,10 +21,10 @@ runHook postCheck ''; localOverlay = (final: prev: { - ldc = prev.callPackage ./nix-overlays/ldc { }; # -> ok 1.39.0 - dmd = prev.callPackage ./nix-overlays/dmd { }; # -> ok 2.109.0 - dub = prev.callPackage ./nix-overlays/dub { }; # -> ? 1.36.0 - dtools = prev.callPackage ./nix-overlays/dtools { }; # -> ok 2.103.1 + ldc = prev.callPackage ./nix-overlays/ldc { }; # -> ok 1.41.0 + dmd = prev.callPackage ./nix-overlays/dmd { }; # -> ok 2.111.0 + 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 { @@ -60,17 +60,16 @@ inherit shell; inherit devEnv; buildInputs = [sqlite]; - nativeBuildInputs = [dub ldc gnumake]; # [ dub dmd ]; [ dub ldc ]; [ dub gdc ]; + nativeBuildInputs = [gnumake dub ldc]; + preBuild = '' + export DCn=ldmd2 + export DC=$(type -P $DCn || echo "") + if [ "$DC" == "" ]; then exit "Error: could not find D compiler"; fi + ''; buildPhase = '' runHook preBuild - for DC_ in dmd ldmd2 ldc2 gdc gdmd; do - echo "- check for D compiler $DC_" - DC=$(type -P $DC_ || echo "") - if [ ! "$DC" == "" ]; then break; fi - done - if [ "$DC" == "" ]; then exit "Error: could not find D compiler"; fi - echo "$DC_ used as D compiler to build $pname" - dub build --cache=local --compiler=$DC --build=$DC_ --combined --skip-registry=all + echo "$DCn used as D compiler to build $pname" + dub build --cache=local --compiler=$DC --build=$DCn --combined --skip-registry=all runHook postBuild ''; inherit checkPhase; @@ -86,49 +85,52 @@ in with pkgs-ovl; { dsh-overlay-dtools = mkShell { - name = "overlay - ldc-1.39.0 - dub-1.36.0 - dtools-2.103.1"; + name = "overlay - ldc-1.41.0 - dub-1.39.0 - dtools-2.110.0"; inherit shell; inherit devEnv; packages = [ - gnumake ldc dub dtools + gnumake ]; inherit shellHook; }; dsh-overlay-ldc-dub = mkShell { - name = "overlay - ldc-1.39.0 - dub-1.36.0"; + name = "overlay - ldc-1.41.0 - dub-1.39.0 - dtools-2.110.0"; inherit shell; inherit devEnv; packages = [ - gnumake ldc dub + dtools + gnumake ]; inherit shellHook; }; dsh-overlay-dmd-dub = mkShell { - name = "overlay - dmd-2.109.0 - dub-1.36.0"; + name = "overlay - dmd-2.111.0 - dub-1.39.0 - dtools-2.110.0"; inherit shell; inherit devEnv; packages = [ - gnumake dmd dub + dtools + gnumake ]; inherit shellHook; }; dsh-overlay-dtest-tilix = mkShell { - name = "overlay - ldc-1.39.0 - dub-1.36.0 - tilix - gtkd"; + name = "overlay - ldc-1.41.0 - dub-1.39.0 - tilix - gtkd"; inherit shell; inherit devEnv; packages = [ - gnumake ldc gtkd tilix dub + dtools + gnumake ]; inherit shellHook; }; @@ -137,9 +139,10 @@ # inherit shell; # inherit devEnv; # packages = [ - # gnumake # gdc # dub + # dtools + # gnumake # ]; # inherit shellHook; #}; @@ -150,6 +153,7 @@ packages = with pkgs-nix; [ ldc dub + dtools gnumake ]; inherit shellHook; @@ -161,6 +165,7 @@ packages = with pkgs-nix; [ dmd dub + dtools gnumake ]; inherit shellHook; diff --git a/nix-overlays/dmd/default.nix b/nix-overlays/dmd/default.nix index 155a950..8375c13 100644 --- a/nix-overlays/dmd/default.nix +++ b/nix-overlays/dmd/default.nix @@ -1,5 +1 @@ -import ./generic.nix { - version = "2.109.0"; - dmdHash = "sha256-unAZgyZyT6qomlj6pdlOx4h1SKuDjutl1/0FM9AhBWc="; - phobosHash = "sha256-b91FeluFqhmjHd1wwkyq98QzIlwjE646xNj2n6hP3aM="; -} +import ./package.nix diff --git a/nix-overlays/dmd/generic.nix b/nix-overlays/dmd/generic.nix index 63c2bd1..59a781e 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.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 @@ -97,6 +96,9 @@ stdenv.mkDerivation (finalAttrs: { rm dmd/compiler/test/runnable/gdb4149.d rm dmd/compiler/test/runnable/gdb4181.d rm dmd/compiler/test/compilable/ddocYear.d + rm dmd/compiler/test/compilable/sarif_success_test.d + rm dmd/compiler/test/fail_compilation/sarif_test.d + rm dmd/compiler/test/fail_compilation/sarifmultiple_test.d # Disable tests that rely on objdump whitespace until fixed upstream: # https://issues.dlang.org/show_bug.cgi?id=23317 @@ -106,11 +108,11 @@ stdenv.mkDerivation (finalAttrs: { rm dmd/compiler/test/dshell/test6952.d '' + lib.optionalString (lib.versionAtLeast version "2.092.2") '' substituteInPlace dmd/compiler/test/dshell/test6952.d --replace-fail "/usr/bin/env bash" "${bash}/bin/bash" - '' + lib.optionalString stdenv.isLinux '' + '' + lib.optionalString stdenv.hostPlatform.isLinux '' substituteInPlace phobos/std/socket.d --replace-fail "assert(ih.addrList[0] == 0x7F_00_00_01);" "" - '' + lib.optionalString stdenv.isDarwin '' - substituteInPlace phobos/std/socket.d --replace-fail "foreach (name; names)" "names = []; foreach (name; names)" - ''; + ''; # + lib.optionalString stdenv.hostPlatform.isDarwin '' + # substituteInPlace phobos/std/socket.d --replace-fail "foreach (name; names)" "names = []; foreach (name; names)" + #''; nativeBuildInputs = [ makeWrapper @@ -123,7 +125,7 @@ stdenv.mkDerivation (finalAttrs: { buildInputs = [ curl tzdata - # ] ++ lib.optionals stdenv.isDarwin [ + # ] ++ lib.optionals stdenv.hostPlatform.isDarwin [] # Foundation ]; @@ -208,14 +210,22 @@ stdenv.mkDerivation (finalAttrs: { disallowedReferences = [ dmdBootstrap ]; + passthru = { + inherit dmdBootstrap; + }; + meta = with lib; { description = "Official reference compiler for the D language"; homepage = "https://dlang.org/"; + changelog = "https://dlang.org/changelog/${finalAttrs.version}.html"; # Everything is now Boost licensed, even the backend. # https://github.com/dlang/dmd/pull/6680 license = licenses.boost; mainProgram = "dmd"; maintainers = with maintainers; [ lionello dukc jtbx ]; platforms = [ "x86_64-linux" "i686-linux" "x86_64-darwin" ]; + # ld: section __DATA/__thread_bss has type zero-fill but non-zero file offset file '/private/tmp/nix-build-dmd-2.109.1.drv-0/.rdmd-301/rdmd-build.d-A1CF043A7D87C5E88A58F3C0EF5A0DF7/objs/build.o' for architecture x86_64 + # clang-16: error: linker command failed with exit code 1 (use -v to see invocation) + broken = stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86_64; }; }) diff --git a/nix-overlays/dmd/package.nix b/nix-overlays/dmd/package.nix new file mode 100644 index 0000000..3aa1183 --- /dev/null +++ b/nix-overlays/dmd/package.nix @@ -0,0 +1,5 @@ +import ./generic.nix { + version = "2.111.0"; + dmdHash = "sha256-2bjsGa9nTny818dLRV6LKkes+Ycq8W+PFjwhGVrD5TM="; + phobosHash = "sha256-9jySZbODoL8sULhYKj/l4+c/uiG5xY2dO240k9XQtPk="; +} 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/default.nix b/nix-overlays/dub/default.nix index 819a5e5..8375c13 100644 --- a/nix-overlays/dub/default.nix +++ b/nix-overlays/dub/default.nix @@ -1,86 +1 @@ -{ lib, stdenv, fetchFromGitHub, curl, libevent, rsync, ldc, dcompiler ? ldc }: - -assert dcompiler != null; - -stdenv.mkDerivation rec { - pname = "dub"; - version = "1.36.0"; - - enableParallelBuilding = true; - - src = fetchFromGitHub { - owner = "dlang"; - repo = "dub"; - rev = "v${version}"; - sha256 = "sha256-S8pls9zxbGAQTwqYf4bDT2q7Ow12S8bBsJE5UmsACBs="; - }; - - #postUnpack = '' - # patchShebangs . - #''; - - dubvar = "\\$DUB"; - postPatch = '' - patchShebangs test - - # Can be removed with https://github.com/dlang/dub/pull/1368 - substituteInPlace test/fetchzip.sh \ - --replace "dub remove" "\"${dubvar}\" remove" - ''; - - nativeBuildInputs = [ dcompiler libevent rsync ]; - buildInputs = [ curl ]; - - buildPhase = '' - for DC_ in dmd ldmd2 gdmd; do - echo "... check for D compiler $DC_ ..." - export DC=$(type -P $DC_ || echo "") - if [ ! "$DC" == "" ]; then - break - fi - done - if [ "$DC" == "" ]; then - exit "Error: could not find D compiler" - fi - echo "$DC_ found and used as D compiler in buildPhase for $pname" - $DC ./build.d - ./build - ''; - - doCheck = !stdenv.isDarwin; - - checkPhase = '' - export DUB=$NIX_BUILD_TOP/source/bin/dub - export PATH=$PATH:$NIX_BUILD_TOP/source/bin/ - #export DC=${dcompiler.out}/bin/${if dcompiler.pname=="ldc" then "ldc2" else dcompiler.pname} - if [ "$DC" == "" ]; then - exit "Error: could not find D compiler" - fi - echo "DC out --> $DC" - export HOME=$TMP - - rm -rf test/issue502-root-import - rm -rf test/dpath-variable - #rm test/dpath-variable.sh - rm -rf test/git-dependency - rm -rf test/use-c-sources # added to build v1.33.0 - rm -rf test/pr2642-cache-db # added to build v1.34.0 - rm -rf test/pr2644-describe-artifact-path # added to build v1.36.0 - rm -rf test/pr2647-build-deep # added to build v1.36.0 - - ./test/run-unittest.sh - ''; - - installPhase = '' - mkdir -p $out/bin - cp bin/dub $out/bin - ''; - - meta = with lib; { - description = "Package and build manager for D applications and libraries"; - homepage = "https://code.dlang.org/"; - license = licenses.mit; - maintainers = with maintainers; [ jtbx ]; - platforms = [ "x86_64-linux" "i686-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; - }; -} +import ./package.nix diff --git a/nix-overlays/dub/package.nix b/nix-overlays/dub/package.nix new file mode 100644 index 0000000..b537a43 --- /dev/null +++ b/nix-overlays/dub/package.nix @@ -0,0 +1,93 @@ +{ + lib, + stdenv, + fetchFromGitHub, + curl, + ldc, + dcompiler ? ldc, + libevent, + rsync, +}: + +assert dcompiler != null; + +stdenv.mkDerivation (finalAttrs: { + pname = "dub"; + version = "1.39.0"; + + enableParallelBuilding = true; + + src = fetchFromGitHub { + owner = "dlang"; + repo = "dub"; + rev = "v${finalAttrs.version}"; + hash = "sha256-73b15A9+hClD6IbuxTy9QZKpTKjUFYBuqGOclUyhrnM="; + }; + + postPatch = '' + patchShebangs test + ''; + + nativeBuildInputs = [ dcompiler libevent rsync ]; + buildInputs = [ curl ]; + + preBuild = '' + for DCn in dmd ldmd2 gdmd; do + echo "... check for D compiler $DCn ..." + export DC=$(type -P $DCn || echo "") + if [ ! "$DC" == "" ]; then + break + fi + done + #export DMD=${ldc}/bin/ldmd2 + if [ "$DC" == "" ]; then + exit "Error: could not find D compiler" + fi + echo "$DCn found and used as D compiler in buildPhase for $pname" + ''; + + buildPhase = '' + runHook preBuild + $DC -run ./build.d + runHook postBuild + ''; + + doCheck = !stdenv.hostPlatform.isDarwin; + + checkPhase = '' + runHook preCheck + export DUB=$NIX_BUILD_TOP/source/bin/dub + export PATH=$PATH:$NIX_BUILD_TOP/source/bin/ + if [ "$DC" == "" ]; then + exit "Error: could not find D compiler" + fi + echo "DC out --> $DC" + export HOME=$TMP + + rm -rf test/issue502-root-import + rm -r test/dpath-variable # requires execution of dpath-variable.sh + rm -rf test/git-dependency + rm -rf test/use-c-sources # added to build v1.33.0 + rm -rf test/pr2642-cache-db # added to build v1.34.0 + rm -rf test/pr2644-describe-artifact-path # added to build v1.36.0 + rm -rf test/pr2647-build-deep # added to build v1.36.0 + + ./test/run-unittest.sh + runHook postCheck + ''; + + installPhase = '' + runHook preInstall + install -Dm755 bin/dub $out/bin/dub + runHook postInstall + ''; + + meta = with lib; { + description = "Package and build manager for D programs and libraries"; + homepage = "https://code.dlang.org/"; + license = licenses.mit; + mainProgram = "dub"; + maintainers = with maintainers; [ jtbx ]; + platforms = [ "x86_64-linux" "i686-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; + }; +}) diff --git a/nix-overlays/ldc/binary.nix b/nix-overlays/ldc/binary.nix deleted file mode 100644 index ca7fb4f..0000000 --- a/nix-overlays/ldc/binary.nix +++ /dev/null @@ -1,43 +0,0 @@ -{ lib, stdenv, fetchurl, curl, tzdata, autoPatchelfHook, fixDarwinDylibNames, libxml2 -, version, hashes }: - -let - inherit (stdenv) hostPlatform; - OS = if hostPlatform.isDarwin then "osx" else hostPlatform.parsed.kernel.name; - ARCH = if hostPlatform.isDarwin && hostPlatform.isAarch64 then "arm64" else hostPlatform.parsed.cpu.name; -in stdenv.mkDerivation { - pname = "ldc-bootstrap"; - inherit version; - - src = fetchurl rec { - name = "ldc2-${version}-${OS}-${ARCH}.tar.xz"; - url = "https://github.com/ldc-developers/ldc/releases/download/v${version}/${name}"; - sha256 = hashes."${OS}-${ARCH}" or (throw "missing bootstrap sha256 for ${OS}-${ARCH}"); - }; - - dontConfigure = true; - dontBuild = true; - - nativeBuildInputs = lib.optionals hostPlatform.isLinux [ - autoPatchelfHook - ] ++ lib.optional hostPlatform.isDarwin fixDarwinDylibNames; - - buildInputs = lib.optionals stdenv.hostPlatform.isLinux [ libxml2 stdenv.cc.cc ]; - - propagatedBuildInputs = [ curl tzdata ]; - - installPhase = '' - mkdir -p $out - - mv bin etc import lib LICENSE README $out/ - ''; - - meta = with lib; { - description = "The LLVM-based D Compiler"; - homepage = "https://github.com/ldc-developers/ldc"; - # from https://github.com/ldc-developers/ldc/blob/master/LICENSE - license = with licenses; [ bsd3 boost mit ncsa gpl2Plus ]; - maintainers = with maintainers; [ lionello ]; - platforms = [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin" ]; - }; -} diff --git a/nix-overlays/ldc/bootstrap.nix b/nix-overlays/ldc/bootstrap.nix index 7724cbc..8f76b5b 100644 --- a/nix-overlays/ldc/bootstrap.nix +++ b/nix-overlays/ldc/bootstrap.nix @@ -1,11 +1,59 @@ -{ callPackage }: -callPackage ./binary.nix { +{ + lib, + stdenv, + fetchurl, + curl, + tzdata, + autoPatchelfHook, + fixDarwinDylibNames, + libxml2, +}: + +let + inherit (stdenv) hostPlatform; + OS = if hostPlatform.isDarwin then "osx" else hostPlatform.parsed.kernel.name; + ARCH = if hostPlatform.isDarwin && hostPlatform.isAarch64 then "arm64" else hostPlatform.parsed.cpu.name; version = "1.25.0"; hashes = { - # Get these from `nix-prefetch-url https://github.com/ldc-developers/ldc/releases/download/v1.19.0/ldc2-1.19.0-osx-x86_64.tar.xz` etc.. + # Get these from `nix store prefetch-file https://github.com/ldc-developers/ldc/releases/download/v1.25.0/ldc2-1.25.0-osx-x86_64.tar.xz` etc.. osx-x86_64 = "sha256-6iKnbS+oalLKmyS8qYD/wS21b7+O+VgsWG2iT4PrWPU="; linux-x86_64 = "sha256-sfg47RdlsIpryc3iZvE17OtLweh3Zw6DeuNJYgpuH+o="; linux-aarch64 = "sha256-UDZ43x4flSo+SfsPeE8juZO2Wtk2ZzwySk0ADHnvJBI="; osx-arm64 = "sha256-O/x0vy0wwQFaDc4uWSeMhx+chJKqbQb6e5QNYf+7DCw="; }; +in stdenv.mkDerivation { + pname = "ldc-bootstrap"; + inherit version; + + src = fetchurl rec { + name = "ldc2-${version}-${OS}-${ARCH}.tar.xz"; + url = "https://github.com/ldc-developers/ldc/releases/download/v${version}/${name}"; + hash = hashes."${OS}-${ARCH}" or (throw "missing bootstrap hash for ${OS}-${ARCH}"); + }; + + dontConfigure = true; + dontBuild = true; + + nativeBuildInputs = lib.optionals hostPlatform.isLinux [ + autoPatchelfHook + ] ++ lib.optional hostPlatform.isDarwin fixDarwinDylibNames; + + buildInputs = lib.optionals stdenv.hostPlatform.isLinux [ libxml2 stdenv.cc.cc ]; + + propagatedBuildInputs = [ curl tzdata ]; + + installPhase = '' + mkdir -p $out + + mv bin etc import lib LICENSE README $out/ + ''; + + meta = with lib; { + description = "LLVM-based D Compiler"; + homepage = "https://github.com/ldc-developers/ldc"; + # from https://github.com/ldc-developers/ldc/blob/master/LICENSE + license = with licenses; [ bsd3 boost mit ncsa gpl2Plus ]; + maintainers = with maintainers; [ lionello ]; + platforms = [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin" ]; + }; } diff --git a/nix-overlays/ldc/default.nix b/nix-overlays/ldc/default.nix index 1f18529..8375c13 100644 --- a/nix-overlays/ldc/default.nix +++ b/nix-overlays/ldc/default.nix @@ -1,4 +1 @@ -import ./generic.nix { - version = "1.39.0"; - sha256 = "sha256-g5usNvYHMxjjbwsWN2fgO9vT9X2ZJWuXSUrEObWaRWI="; -} +import ./package.nix diff --git a/nix-overlays/ldc/generic.nix b/nix-overlays/ldc/generic.nix deleted file mode 100644 index bc21974..0000000 --- a/nix-overlays/ldc/generic.nix +++ /dev/null @@ -1,136 +0,0 @@ -{ version, sha256 }: -{ lib, stdenv, fetchurl, cmake, ninja, llvm_18, curl, tzdata -, libconfig, lit, gdb, unzip, darwin, bash -, callPackage, makeWrapper, runCommand, targetPackages -, ldcBootstrap ? callPackage ./bootstrap.nix { } -}: - -let - pathConfig = runCommand "ldc-lib-paths" {} '' - mkdir $out - echo ${tzdata}/share/zoneinfo/ > $out/TZDatabaseDirFile - echo ${curl.out}/lib/libcurl${stdenv.hostPlatform.extensions.sharedLibrary} > $out/LibcurlPathFile - ''; - -in - -stdenv.mkDerivation rec { - pname = "ldc"; - inherit version; - - src = fetchurl { - url = "https://github.com/ldc-developers/ldc/releases/download/v${version}/ldc-${version}-src.tar.gz"; - inherit sha256; - }; - - # https://issues.dlang.org/show_bug.cgi?id=19553 - hardeningDisable = [ "fortify" ]; - - postUnpack = '' - patchShebangs . - '' - + '' - rm ldc-${version}-src/tests/dmd/fail_compilation/mixin_gc.d - rm ldc-${version}-src/tests/dmd/runnable/xtest46_gc.d - rm ldc-${version}-src/tests/dmd/runnable/testptrref_gc.d - - # test depends on current year - rm ldc-${version}-src/tests/dmd/compilable/ddocYear.d - '' - + lib.optionalString stdenv.hostPlatform.isDarwin '' - # https://github.com/NixOS/nixpkgs/issues/34817 - rm -r ldc-${version}-src/tests/plugins/addFuncEntryCall - ''; - - postPatch = '' - # Setting SHELL=$SHELL when dmd testsuite is run doesn't work on Linux somehow - #substituteInPlace tests/dmd/Makefile --replace "SHELL=/bin/bash" "SHELL=${bash}/bin/bash" - '' - + lib.optionalString stdenv.hostPlatform.isLinux '' - substituteInPlace runtime/phobos/std/socket.d --replace "assert(ih.addrList[0] == 0x7F_00_00_01);" "" - '' - + lib.optionalString stdenv.hostPlatform.isDarwin '' - substituteInPlace runtime/phobos/std/socket.d --replace "foreach (name; names)" "names = []; foreach (name; names)" - ''; - - nativeBuildInputs = [ - cmake ldcBootstrap lit lit.python llvm_18.dev makeWrapper ninja unzip - ] - ++ lib.optionals stdenv.hostPlatform.isDarwin [ - darwin.apple_sdk.frameworks.Foundation - ] - ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [ - # https://github.com/NixOS/nixpkgs/pull/36378#issuecomment-385034818 - gdb - ]; - - buildInputs = [ curl tzdata ]; - - cmakeFlags = [ - "-DD_FLAGS=-d-version=TZDatabaseDir;-d-version=LibcurlPath;-J${pathConfig}" - ]; - - postConfigure = '' - export DMD=$PWD/bin/ldmd2 - ''; - - makeFlags = [ "DMD=$DMD" ]; - - fixNames = lib.optionalString stdenv.hostPlatform.isDarwin '' - fixDarwinDylibNames() { - local flags=() - - for fn in "$@"; do - flags+=(-change "$(basename "$fn")" "$fn") - done - - for fn in "$@"; do - if [ -L "$fn" ]; then continue; fi - echo "$fn: fixing dylib" - install_name_tool -id "$fn" "''${flags[@]}" "$fn" - done - } - - fixDarwinDylibNames $(find "$(pwd)/lib" -name "*.dylib") - export DYLD_LIBRARY_PATH=$(pwd)/lib - ''; - - # https://github.com/ldc-developers/ldc/issues/2497#issuecomment-459633746 - additionalExceptions = lib.optionalString stdenv.hostPlatform.isDarwin - "|druntime-test-shared"; - - checkPhase = '' - # Build default lib test runners - ninja -j$NIX_BUILD_CORES all-test-runners - - ${fixNames} - - # Run dmd testsuite - export DMD_TESTSUITE_MAKE_ARGS="-j$NIX_BUILD_CORES DMD=$DMD" - ctest -V -R "dmd-testsuite" - - # Build and run LDC D unittests. - ctest --output-on-failure -R "ldc2-unittest" - - # Run LIT testsuite. - ctest -V -R "lit-tests" - - # Run default lib unittests - ctest -j$NIX_BUILD_CORES --output-on-failure -E "ldc2-unittest|lit-tests|dmd-testsuite${additionalExceptions}" - ''; - - postInstall = '' - wrapProgram $out/bin/ldc2 \ - --prefix PATH ":" "${targetPackages.stdenv.cc}/bin" \ - --set-default CC "${targetPackages.stdenv.cc}/bin/cc" - ''; - - meta = with lib; { - description = "The LLVM-based D compiler"; - homepage = "https://github.com/ldc-developers/ldc"; - # from https://github.com/ldc-developers/ldc/blob/master/LICENSE - license = with licenses; [ bsd3 boost mit ncsa gpl2Plus ]; - maintainers = with maintainers; [ lionello jtbx ]; - platforms = [ "x86_64-linux" "i686-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; - }; -} diff --git a/nix-overlays/ldc/package.nix b/nix-overlays/ldc/package.nix new file mode 100644 index 0000000..ff2089b --- /dev/null +++ b/nix-overlays/ldc/package.nix @@ -0,0 +1,181 @@ +{ + 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" { } '' + mkdir $out + echo ${tzdata}/share/zoneinfo/ > $out/TZDatabaseDirFile + echo ${curl.out}/lib/libcurl${stdenv.hostPlatform.extensions.sharedLibrary} > $out/LibcurlPathFile + ''; + +in + +stdenv.mkDerivation (finalAttrs: { + pname = "ldc"; + version = "1.41.0"; + + src = fetchFromGitHub { + owner = "ldc-developers"; + repo = "ldc"; + rev = "v${finalAttrs.version}"; + hash = "sha256-6LcpY3LSFK4KgEiGrFp/LONu5Vr+/+vI04wEEpF3s+s="; + fetchSubmodules = true; + }; + + # https://issues.dlang.org/show_bug.cgi?id=19553 + hardeningDisable = [ "fortify" ]; + + postPatch = '' + patchShebangs runtime tools tests + + rm tests/dmd/fail_compilation/mixin_gc.d + rm tests/dmd/runnable/xtest46_gc.d + rm tests/dmd/runnable/testptrref_gc.d + + # test depends on current year + rm tests/dmd/compilable/ddocYear.d + '' + lib.optionalString stdenv.hostPlatform.isLinux '' + substituteInPlace runtime/phobos/std/socket.d --replace-fail "assert(ih.addrList[0] == 0x7F_00_00_01);" "" + '' + lib.optionalString stdenv.hostPlatform.isDarwin '' + substituteInPlace runtime/phobos/std/socket.d --replace-fail "foreach (name; names)" "names = []; foreach (name; names)" + + # https://github.com/NixOS/nixpkgs/issues/34817 + rm -r tests/plugins/addFuncEntryCall + ''; + + nativeBuildInputs = [ + cmake ldcBootstrap lit lit.python llvm_19.dev makeWrapper ninja unzip + ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ + darwin.apple_sdk.frameworks.Foundation + ] ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [ + # https://github.com/NixOS/nixpkgs/pull/36378#issuecomment-385034818 + gdb + ]; + + buildInputs = [ curl tzdata ]; + + outputs = [ "out" "include" ]; + outputInclude = "include"; + + cmakeFlags = [ + "-DD_FLAGS=-d-version=TZDatabaseDir;-d-version=LibcurlPath;-J${pathConfig}" + "-DINCLUDE_INSTALL_DIR=${placeholder "include"}/include/d" + ]; + + postConfigure = '' + export DMD=$PWD/bin/ldmd2 + ''; + + makeFlags = [ "DMD=$DMD" ]; + + fixNames = lib.optionalString stdenv.hostPlatform.isDarwin '' + fixDarwinDylibNames() { + local flags=() + + for fn in "$@"; do + flags+=(-change "$(basename "$fn")" "$fn") + done + + for fn in "$@"; do + if [ -L "$fn" ]; then continue; fi + echo "$fn: fixing dylib" + install_name_tool -id "$fn" "''${flags[@]}" "$fn" + done + } + + fixDarwinDylibNames $(find "$(pwd)/lib" -name "*.dylib") + export DYLD_LIBRARY_PATH=$(pwd)/lib + ''; + + # https://github.com/ldc-developers/ldc/issues/2497#issuecomment-459633746 + additionalExceptions = lib.optionalString stdenv.hostPlatform.isDarwin "|druntime-test-shared"; + + checkPhase = '' + # Build default lib test runners + ninja -j$NIX_BUILD_CORES all-test-runners + + ${finalAttrs.fixNames} + + # Run dmd testsuite + export DMD_TESTSUITE_MAKE_ARGS="-j$NIX_BUILD_CORES DMD=$DMD" + ctest -V -R "dmd-testsuite" + + # Build and run LDC D unittests. + ctest --output-on-failure -R "ldc2-unittest" + + # Run LIT testsuite. + ctest -V -R "lit-tests" + + # Run default lib unittests + ctest -j$NIX_BUILD_CORES --output-on-failure -E "ldc2-unittest|lit-tests|dmd-testsuite${finalAttrs.additionalExceptions}" + ''; + + postInstall = '' + wrapProgram $out/bin/ldc2 \ + --prefix PATH : ${targetPackages.stdenv.cc}/bin \ + --set-default CC ${targetPackages.stdenv.cc}/bin/cc + ''; + + meta = with lib; { + description = "LLVM-based D compiler"; + homepage = "https://github.com/ldc-developers/ldc"; + changelog = "https://github.com/ldc-developers/ldc/releases/tag/v${finalAttrs.version}"; + # from https://github.com/ldc-developers/ldc/blob/master/LICENSE + license = with licenses; [ bsd3 boost mit ncsa gpl2Plus ]; + mainProgram = "ldc2"; + maintainers = with maintainers; [ lionello jtbx ]; + platforms = [ "x86_64-linux" "i686-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; + }; + + passthru.ldcBootstrap = ldcBootstrap; + passthru.tests = + let + ldc = finalAttrs.finalPackage; + helloWorld = stdenv.mkDerivation (finalAttrs: { + name = "ldc-hello-world"; + src = writeText "hello_world.d" '' + module hello_world; + import std.stdio; + void main() { + writeln("Hello, world!"); + } + ''; + dontUnpack = true; + buildInputs = [ ldc ]; + dFlags = [ ]; + buildPhase = '' + ldc2 ${lib.escapeShellArgs finalAttrs.dFlags} -of=test $src + ''; + installPhase = '' + mkdir -p $out/bin + mv test $out/bin + ''; + }); + in { + # Without -shared, built binaries should not contain + # references to the compiler binaries. + no-references-to-compiler = helloWorld.overrideAttrs { + disallowedReferences = [ ldc ]; + dFlags = ["-g"]; + }; + }; +}) diff --git a/org/dlang-nix-flakes.org b/org/dlang-nix-flakes.org index 888b2e0..14e5894 100644 --- a/org/dlang-nix-flakes.org +++ b/org/dlang-nix-flakes.org @@ -17,6 +17,17 @@ #+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t * nix ( written to ../ ) +** check updates CHECK + +- https://github.com/nix-community/nix-direnv/releases +- https://github.com/dlang/dmd/tags + https://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 #+HEADER: :tangle "../README" @@ -27,7 +38,7 @@ ,#+FILETAGS: :dlang:build:tools: ,#+AUTHOR: Ralph Amissah ,#+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] -,#+COPYRIGHT: Copyright (C) 2022 - 2024 Ralph Amissah +,#+COPYRIGHT: Copyright (C) 2022 - 2025 Ralph Amissah ,#+LANGUAGE: en ,#+STARTUP: content hideblocks hidestars noindent entitiespretty @@ -214,7 +225,7 @@ nix flake update && nix flake check --show-trace && nix flake info && echo "" && ** .gitignore #+HEADER: :tangle "../.gitignore" -#+BEGIN_SRC sh +#+BEGIN_SRC shell # git ls-files --others --exclude-from=.git/info/exclude # git check-ignore -v flake.lock # git clean -ix @@ -261,17 +272,17 @@ tmp/** #+END_SRC ** .env* -*** .envrc +*** nixDevEnv.sh (.envrc) #+HEADER: :tangle "../nixDevEnv.sh" -#+BEGIN_SRC sh +#+BEGIN_SRC shell if [ -f .envrc ]; then source_env_if_exists .envrc || source .envrc fi #+END_SRC #+HEADER: :tangle "../.envrc" -#+BEGIN_SRC sh +#+BEGIN_SRC shell if [ -f .envrc-local ]; then source_env_if_exists .envrc-local || source .envrc-local fi @@ -283,7 +294,7 @@ fi *** .envrc-local #+HEADER: :tangle "../.envrc-local" -#+BEGIN_SRC sh +#+BEGIN_SRC shell #if [[ !( -f ./nix-flakes.org) && -f ../dlang-nix-flakes.org ]]; then # # for editing purpose link to the .org file that creates ./dlang-nix-flakes/ content # ln -s ../dlang-nix-flakes.org ./nix-flakes.org @@ -298,16 +309,17 @@ fi *** .envrc-nix - https://github.com/nix-community/nix-direnv +- https://github.com/nix-community/nix-direnv/releases - source_url - direnv fetchurl "https://raw.githubusercontent.com/nix-community/nix-direnv/<<direnv-version>>/direnvrc" "<<direnv-sha>>" - ${NixDirEnvVersion} #+HEADER: :tangle "../.envrc-nix" -#+BEGIN_SRC sh +#+BEGIN_SRC shell NIX_ENFORCE_PURITY=1 # - https://github.com/nix-community/nix-direnv -NixDirEnvVersion="<<direnv-version>>" -NixDirEnvSHA="<<direnv-sha>>" +NixDirEnvVersion="<<direnv_version>>" +NixDirEnvSHA="<<direnv_hash>>" if ! has nix_direnv_version || ! nix_direnv_version ${NixDirEnvVersion}; then source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/${NixDirEnvVersion}/direnvrc" "${NixDirEnvSHA}" fi @@ -327,57 +339,6 @@ use flake . #use flake .#default #+END_SRC -*** 3.0.4 - -#+NAME: direnv-version -#+BEGIN_SRC sh -3.0.4 -#+END_SRC - -#+NAME: direnv-sha -#+BEGIN_SRC sh -sha256-DzlYZ33mWF/Gs8DDeyjr8mnVmQGx7ASYqA5WlxwvBG4= -#+END_SRC - -*** 3.0.0 - -#+BEGIN_SRC sh -3.0.0 -#+END_SRC - -#+BEGIN_SRC sh -sha256-21TMnI2xWX7HkSTjFFri2UaohXVj854mgvWapWrxRXg= -#+END_SRC - -*** 2.4.0 - -#+BEGIN_SRC sh -2.4.0 -#+END_SRC - -#+BEGIN_SRC sh -sha256-XQzUAvL6pysIJnRJyR7uVpmUSZfc7LSgWQwq/4mBr1U= -#+END_SRC - -#+BEGIN_SRC sh -2.3.0 -#+END_SRC - -#+BEGIN_SRC sh -sha256-Dmd+j63L84wuzgyjITIfSxSD57Tx7v51DMxVZOsiUD8= -#+END_SRC - -#+NAME: direnv-sha_ -#+BEGIN_SRC sh -sha256-0000000000000000000000000000000000000000000= -#+END_SRC - -#+BEGIN_SRC sh -- 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 @@ -386,11 +347,11 @@ direnv fetchurl https://raw.githubusercontent.com/nix-community/nix-direnv/${Nix { description = "build dummy D package using dub build tool"; inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; - inputs.flake-utils.url = "github:numtide/flake-utils"; + #inputs.flake-utils.url = "github:numtide/flake-utils"; outputs = { self, nixpkgs, - flake-utils, + #flake-utils, ... }@inputs: let pname = "dummy"; @@ -445,17 +406,16 @@ direnv fetchurl https://raw.githubusercontent.com/nix-community/nix-direnv/${Nix inherit shell; inherit devEnv; buildInputs = [sqlite]; - nativeBuildInputs = [dub ldc gnumake]; # [ dub dmd ]; [ dub ldc ]; [ dub gdc ]; + nativeBuildInputs = [gnumake dub ldc]; + preBuild = '' + export DCn=ldmd2 + export DC=$(type -P $DCn || echo "") + if [ "$DC" == "" ]; then exit "Error: could not find D compiler"; fi + ''; buildPhase = '' runHook preBuild - for DC_ in dmd ldmd2 ldc2 gdc gdmd; do - echo "- check for D compiler $DC_" - DC=$(type -P $DC_ || echo "") - if [ ! "$DC" == "" ]; then break; fi - done - if [ "$DC" == "" ]; then exit "Error: could not find D compiler"; fi - echo "$DC_ used as D compiler to build $pname" - dub build --cache=local --compiler=$DC --build=$DC_ --combined --skip-registry=all + echo "$DCn used as D compiler to build $pname" + dub build --cache=local --compiler=$DC --build=$DCn --combined --skip-registry=all runHook postBuild ''; inherit checkPhase; @@ -475,32 +435,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; }; @@ -509,11 +471,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; }; @@ -522,9 +485,10 @@ direnv fetchurl https://raw.githubusercontent.com/nix-community/nix-direnv/${Nix # inherit shell; # inherit devEnv; # packages = [ - # gnumake # gdc # dub + # dtools + # gnumake # ]; # inherit shellHook; #}; @@ -535,6 +499,7 @@ direnv fetchurl https://raw.githubusercontent.com/nix-community/nix-direnv/${Nix packages = with pkgs-nix; [ ldc dub + dtools gnumake ]; inherit shellHook; @@ -546,6 +511,7 @@ direnv fetchurl https://raw.githubusercontent.com/nix-community/nix-direnv/${Nix packages = with pkgs-nix; [ dmd dub + dtools gnumake ]; inherit shellHook; @@ -561,7 +527,6 @@ direnv fetchurl https://raw.githubusercontent.com/nix-community/nix-direnv/${Nix #+HEADER: :tangle "../shell.nix" #+HEADER: :tangle-mode (identity #o755) #+HEADER: :shebang "#!/usr/bin/env -S nix-shell --pure\n#!nix-shell -i bash" -#+HEADER: :noweb yes #+BEGIN_SRC nix {pkgs-nix ? import <nixpkgs> {}}: with pkgs-nix; @@ -570,25 +535,25 @@ with pkgs-nix; # ❯❯❯ nix_related #nix direnv - nixVersions.nix_2_21 #nixVersions.latest #nixVersions.git + nixVersions.latest #nixVersions.latest #nixVersions.git nix-prefetch-git validatePkgConfig nix-output-monitor #nix-tree #nvd jq #gx - #alejandra + #nixfmt-rfc-style git # ❯❯❯ dev gnumake ps # ❯❯❯ d_build_related + # ❯❯ package manager + #dub # ❯❯ compiler #dmd #ldc #rund - # ❯❯ package manager - #dub # ❯❯ linker #lld #mold @@ -641,29 +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 ./generic.nix { - <<ldc_version_info>> -} +import ./package.nix #+END_SRC -**** generic.nix OK ✓ (unaltered) +**** package.nix OK ✓ -#+HEADER: :tangle "../nix-overlays/ldc/generic.nix" +#+HEADER: :tangle "../nix-overlays/ldc/package.nix" #+BEGIN_SRC nix -{ version, sha256 }: -{ lib, stdenv, fetchurl, cmake, ninja, <<ldc_llvm_set>>, curl, tzdata -, libconfig, lit, gdb, unzip, darwin, bash -, callPackage, makeWrapper, runCommand, targetPackages -, 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 @@ -671,60 +649,56 @@ let in -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { pname = "ldc"; - inherit version; + version = "<<ldc_version>>"; - src = fetchurl { - url = "https://github.com/ldc-developers/ldc/releases/download/v${version}/ldc-${version}-src.tar.gz"; - inherit sha256; + src = fetchFromGitHub { + owner = "ldc-developers"; + repo = "ldc"; + rev = "v${finalAttrs.version}"; + hash = "<<ldc_hash>>"; + fetchSubmodules = true; }; # https://issues.dlang.org/show_bug.cgi?id=19553 hardeningDisable = [ "fortify" ]; - postUnpack = '' - patchShebangs . - '' - + '' - rm ldc-${version}-src/tests/dmd/fail_compilation/mixin_gc.d - rm ldc-${version}-src/tests/dmd/runnable/xtest46_gc.d - rm ldc-${version}-src/tests/dmd/runnable/testptrref_gc.d - - # test depends on current year - rm ldc-${version}-src/tests/dmd/compilable/ddocYear.d - '' - + lib.optionalString stdenv.hostPlatform.isDarwin '' - # https://github.com/NixOS/nixpkgs/issues/34817 - rm -r ldc-${version}-src/tests/plugins/addFuncEntryCall - ''; - postPatch = '' - # Setting SHELL=$SHELL when dmd testsuite is run doesn't work on Linux somehow - #substituteInPlace tests/dmd/Makefile --replace "SHELL=/bin/bash" "SHELL=${bash}/bin/bash" - '' - + lib.optionalString stdenv.hostPlatform.isLinux '' - substituteInPlace runtime/phobos/std/socket.d --replace "assert(ih.addrList[0] == 0x7F_00_00_01);" "" - '' - + lib.optionalString stdenv.hostPlatform.isDarwin '' - substituteInPlace runtime/phobos/std/socket.d --replace "foreach (name; names)" "names = []; foreach (name; names)" + patchShebangs runtime tools tests + + rm tests/dmd/fail_compilation/mixin_gc.d + rm tests/dmd/runnable/xtest46_gc.d + rm tests/dmd/runnable/testptrref_gc.d + + # test depends on current year + rm tests/dmd/compilable/ddocYear.d + '' + lib.optionalString stdenv.hostPlatform.isLinux '' + substituteInPlace runtime/phobos/std/socket.d --replace-fail "assert(ih.addrList[0] == 0x7F_00_00_01);" "" + '' + lib.optionalString stdenv.hostPlatform.isDarwin '' + substituteInPlace runtime/phobos/std/socket.d --replace-fail "foreach (name; names)" "names = []; foreach (name; names)" + + # https://github.com/NixOS/nixpkgs/issues/34817 + rm -r tests/plugins/addFuncEntryCall ''; nativeBuildInputs = [ cmake ldcBootstrap lit lit.python <<ldc_llvm_set>>.dev makeWrapper ninja unzip - ] - ++ lib.optionals stdenv.hostPlatform.isDarwin [ + ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ darwin.apple_sdk.frameworks.Foundation - ] - ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [ + ] ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [ # https://github.com/NixOS/nixpkgs/pull/36378#issuecomment-385034818 gdb ]; buildInputs = [ curl tzdata ]; + outputs = [ "out" "include" ]; + outputInclude = "include"; + cmakeFlags = [ "-DD_FLAGS=-d-version=TZDatabaseDir;-d-version=LibcurlPath;-J${pathConfig}" + "-DINCLUDE_INSTALL_DIR=${placeholder "include"}/include/d" ]; postConfigure = '' @@ -733,7 +707,7 @@ stdenv.mkDerivation rec { makeFlags = [ "DMD=$DMD" ]; - fixNames = lib.optionalString stdenv.hostPlatform.isDarwin '' + fixNames = lib.optionalString stdenv.hostPlatform.isDarwin '' fixDarwinDylibNames() { local flags=() @@ -753,14 +727,13 @@ stdenv.mkDerivation rec { ''; # 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 ninja -j$NIX_BUILD_CORES all-test-runners - ${fixNames} + ${finalAttrs.fixNames} # Run dmd testsuite export DMD_TESTSUITE_MAKE_ARGS="-j$NIX_BUILD_CORES DMD=$DMD" @@ -773,90 +746,83 @@ stdenv.mkDerivation rec { ctest -V -R "lit-tests" # Run default lib unittests - ctest -j$NIX_BUILD_CORES --output-on-failure -E "ldc2-unittest|lit-tests|dmd-testsuite${additionalExceptions}" + ctest -j$NIX_BUILD_CORES --output-on-failure -E "ldc2-unittest|lit-tests|dmd-testsuite${finalAttrs.additionalExceptions}" ''; postInstall = '' wrapProgram $out/bin/ldc2 \ - --prefix PATH ":" "${targetPackages.stdenv.cc}/bin" \ - --set-default CC "${targetPackages.stdenv.cc}/bin/cc" - ''; + --prefix PATH : ${targetPackages.stdenv.cc}/bin \ + --set-default CC ${targetPackages.stdenv.cc}/bin/cc + ''; meta = with lib; { - description = "The LLVM-based D compiler"; + description = "LLVM-based D compiler"; homepage = "https://github.com/ldc-developers/ldc"; + changelog = "https://github.com/ldc-developers/ldc/releases/tag/v${finalAttrs.version}"; # from https://github.com/ldc-developers/ldc/blob/master/LICENSE license = with licenses; [ bsd3 boost mit ncsa gpl2Plus ]; + mainProgram = "ldc2"; maintainers = with maintainers; [ lionello jtbx ]; platforms = [ "x86_64-linux" "i686-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; }; -} -#+END_SRC - -**** bootstrap.nix -#+HEADER: :tangle "../nix-overlays/ldc/bootstrap.nix" -#+BEGIN_SRC nix -<<ldc_bootstrap_1-25-0>> -#+END_SRC - -#+NAME: ldc_bootstrap_1-25-0 -#+BEGIN_SRC nix -{ callPackage }: -callPackage ./binary.nix { - version = "1.25.0"; - hashes = { - # Get these from `nix-prefetch-url https://github.com/ldc-developers/ldc/releases/download/v1.19.0/ldc2-1.19.0-osx-x86_64.tar.xz` etc.. - osx-x86_64 = "sha256-6iKnbS+oalLKmyS8qYD/wS21b7+O+VgsWG2iT4PrWPU="; - linux-x86_64 = "sha256-sfg47RdlsIpryc3iZvE17OtLweh3Zw6DeuNJYgpuH+o="; - linux-aarch64 = "sha256-UDZ43x4flSo+SfsPeE8juZO2Wtk2ZzwySk0ADHnvJBI="; - osx-arm64 = "sha256-O/x0vy0wwQFaDc4uWSeMhx+chJKqbQb6e5QNYf+7DCw="; + passthru.ldcBootstrap = ldcBootstrap; + passthru.tests = + let + ldc = finalAttrs.finalPackage; + helloWorld = stdenv.mkDerivation (finalAttrs: { + name = "ldc-hello-world"; + src = writeText "hello_world.d" '' + module hello_world; + import std.stdio; + void main() { + writeln("Hello, world!"); + } + ''; + dontUnpack = true; + buildInputs = [ ldc ]; + dFlags = [ ]; + buildPhase = '' + ldc2 ${lib.escapeShellArgs finalAttrs.dFlags} -of=test $src + ''; + installPhase = '' + mkdir -p $out/bin + mv test $out/bin + ''; + }); + in { + # Without -shared, built binaries should not contain + # references to the compiler binaries. + no-references-to-compiler = helloWorld.overrideAttrs { + disallowedReferences = [ ldc ]; + dFlags = ["-g"]; + }; }; -} +}) #+END_SRC -#+NAME: ldc_bootstrap_1-30-0 -#+BEGIN_SRC nix -{ callPackage }: -callPackage ./binary.nix { - version = "1.30.0"; - hashes = { - # Get these from `nix store prefetch-file https://github.com/ldc-developers/ldc/releases/download/v1.19.0/ldc2-1.19.0-osx-x86_64.tar.xz` etc.. - osx-x86_64 = "sha256-AAWZvxuZC82xvrW6fpYm783TY+H8k3DvqE94ZF1yjmk="; - linux-x86_64 = "sha256-V4TUzEfQhFrwiX07dHOgjdAoGkzausCkhnQIQNAU/eE="; - linux-aarch64 = "sha256-kTeglub75iv/jWWNPCn15aCGAbmck0RQl6L7bFOUu7Y="; - osx-arm64 = "sha256-Nb/owBdIeroB9jLMDvwjo8bvsTC9vFyJPLMTOMsSAd4="; - }; -} -#+END_SRC +**** bootstrap.nix - this is the ldc bootstrap in current use, nixpkgs: +#+HEADER: :tangle "../nix-overlays/ldc/bootstrap.nix" #+BEGIN_SRC nix -{ callPackage }: -callPackage ./binary.nix { - version = "1.30.0"; - hashes = { - # Get these from `nix store prefetch-file https://github.com/ldc-developers/ldc/releases/download/v1.19.0/ldc2-1.19.0-osx-x86_64.tar.xz` etc.. - osx-x86_64 = "sha256-AAWZvxuZC82xvrW6fpYm783TY+H8k3DvqE94ZF1yjmk="; - linux-x86_64 = "sha256-V4TUzEfQhFrwiX07dHOgjdAoGkzausCkhnQIQNAU/eE="; - linux-aarch64 = "sha256-kTeglub75iv/jWWNPCn15aCGAbmck0RQl6L7bFOUu7Y="; - osx-arm64 = "sha256-Nb/owBdIeroB9jLMDvwjo8bvsTC9vFyJPLMTOMsSAd4="; - }; -} -#+END_SRC - -**** binary.nix (unaltered) - -#+HEADER: :tangle "../nix-overlays/ldc/binary.nix" -#+BEGIN_SRC nix -{ lib, stdenv, fetchurl, curl, tzdata, autoPatchelfHook, fixDarwinDylibNames, libxml2 -, version, hashes }: +{ + lib, + stdenv, + fetchurl, + curl, + tzdata, + autoPatchelfHook, + fixDarwinDylibNames, + libxml2, +}: let inherit (stdenv) hostPlatform; OS = if hostPlatform.isDarwin then "osx" else hostPlatform.parsed.kernel.name; ARCH = if hostPlatform.isDarwin && hostPlatform.isAarch64 then "arm64" else hostPlatform.parsed.cpu.name; + <<ldc_bootstrap_1-25-0_hashes>> in stdenv.mkDerivation { pname = "ldc-bootstrap"; inherit version; @@ -864,7 +830,7 @@ in stdenv.mkDerivation { src = fetchurl rec { name = "ldc2-${version}-${OS}-${ARCH}.tar.xz"; url = "https://github.com/ldc-developers/ldc/releases/download/v${version}/${name}"; - sha256 = hashes."${OS}-${ARCH}" or (throw "missing bootstrap sha256 for ${OS}-${ARCH}"); + hash = hashes."${OS}-${ARCH}" or (throw "missing bootstrap hash for ${OS}-${ARCH}"); }; dontConfigure = true; @@ -885,7 +851,7 @@ in stdenv.mkDerivation { ''; meta = with lib; { - description = "The LLVM-based D Compiler"; + description = "LLVM-based D Compiler"; homepage = "https://github.com/ldc-developers/ldc"; # from https://github.com/ldc-developers/ldc/blob/master/LICENSE license = with licenses; [ bsd3 boost mit ncsa gpl2Plus ]; @@ -895,271 +861,33 @@ in stdenv.mkDerivation { } #+END_SRC -*** versions SET -**** selected version SET OK ✓ -***** version & sha256 nix composite - -#+NAME: ldc_version_info -#+BEGIN_SRC nix -version = "<<ldc_version>>"; -sha256 = "<<ldc_hash>>"; -#+END_SRC - -***** select version SET OK ✓ - -#+NAME: ldc_version -#+BEGIN_SRC nix -<<ldc_version_1_39_0>> -#+END_SRC - -#+NAME: ldc_hash -#+BEGIN_SRC nix -<<ldc_hash_1_39_0>> -#+END_SRC - -#+NAME: ldc_llvm_set -#+BEGIN_SRC nix -<<ldc_llvm_set_1_39_0>> -#+END_SRC - -**** 1.39 OK ✓ -***** 1.39.0 OK ✓ - -- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.39.0.tar.gz -- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/releases/download/v${version}/ldc-${version}-src.tar.gz - -#+NAME: ldc_version_1_39_0 -#+BEGIN_SRC nix -1.39.0 -#+END_SRC - -#+NAME: ldc_hash_1_39_0 -#+BEGIN_SRC nix -sha256-g5usNvYHMxjjbwsWN2fgO9vT9X2ZJWuXSUrEObWaRWI= -#+END_SRC - -#+NAME: ldc_llvm_set_1_39_0 -#+BEGIN_SRC nix -llvm_18 -#+END_SRC - -**** 1.38 OK ✓ -***** 1.38.0 OK ✓ +***** bootstrap.nix version SELECT +****** bootstrap.nix ldc2-1.25.0 -- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.38.0.tar.gz -- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/releases/download/v${version}/ldc-${version}-src.tar.gz - -#+NAME: ldc_version_1_38_0 -#+BEGIN_SRC nix -1.38.0 -#+END_SRC - -#+NAME: ldc_hash_1_38_0 -#+BEGIN_SRC nix -sha256-ymI47+Ai40zTB2dB+KBwxqN3GWNRxhlJpIpIyZN5844= -#+END_SRC - -#+NAME: ldc_llvm_set_1_38_0 -#+BEGIN_SRC nix -llvm_18 -#+END_SRC - -**** 1.37 OK ✓ -***** 1.37.0 OK ✓ - -- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.37.0.tar.gz -- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/releases/download/v${version}/ldc-${version}-src.tar.gz - -#+NAME: ldc_version_1_37_0 -#+BEGIN_SRC nix -1.37.0 -#+END_SRC - -#+NAME: ldc_hash_1_37_0 -#+BEGIN_SRC nix -sha256-UOgK48Q2yQY3wsPUDzktwotyH3qrOh48o79PnCjboGQ= -#+END_SRC - -#+NAME: ldc_llvm_set_1_37_0 -#+BEGIN_SRC nix -llvm_17 -#+END_SRC - -**** 1.36 OK ✓ -***** 1.36.0 OK ✓ - -- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.36.0.tar.gz - -#+NAME: ldc_version_1_36_0 -#+BEGIN_SRC nix -1.36.0 -#+END_SRC - -#+NAME: ldc_hash_1_36_0 -#+BEGIN_SRC nix -sha256-oAx5BzEjqIfBf0Rsd4KklVajUSo9Natna31Trhu41u8= -#+END_SRC - -#+NAME: ldc_llvm_set_1_36_0 -#+BEGIN_SRC nix -llvm_17 -#+END_SRC - -**** 1.35 OK ✓ -***** 1.35.0 OK ✓ - -- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.35.0.tar.gz - -#+NAME: ldc_version_1_35_0 -#+BEGIN_SRC nix -1.35.0 -#+END_SRC - -#+NAME: ldc_hash_1_35_0 -#+BEGIN_SRC nix -sha256-bilpk3BsdsCT5gkTmqCz+HBDVfoPN1b2dY141EIm36A= -#+END_SRC - -#+NAME: ldc_llvm_set_1_35_0 -#+BEGIN_SRC nix -llvm_16 -#+END_SRC - -**** 1.34 OK ✓ -***** 1.34.0 OK ✓ - -- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.34.0.tar.gz - -#+NAME: ldc_version_1_34_0 -#+BEGIN_SRC nix -1.34.0 -#+END_SRC - -#+NAME: ldc_hash_1_34_0 -#+BEGIN_SRC nix -sha256-MAXG6ceSWFOMg5eXZnZ6WePXTzy5CsLLDc5ddXO+txk= -#+END_SRC - -#+NAME: ldc_llvm_set_1_34_0 -#+BEGIN_SRC nix -llvm_16 -#+END_SRC - -**** 1.33 OK ✓ -***** 1.33.0 OK ✓ - -- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.33.0.tar.gz - -#+NAME: ldc_version_1_33_0 -#+BEGIN_SRC nix -1.33.0 -#+END_SRC - -#+NAME: ldc_hash_1_33_0 -#+BEGIN_SRC nix -sha256-g0wbCMX1s6mPnvuvhjLw03fRfawcFxDkg8nuaEZYw6g= -#+END_SRC - -#+NAME: ldc_llvm_set_1_33_0 -#+BEGIN_SRC nix -llvm_15 -#+END_SRC - -**** 1.32 -***** 1.32.2 OK ✓ - -- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.32.1.tar.gz - -#+NAME: ldc_version_1_32_2 -#+BEGIN_SRC nix -1.32.2 -#+END_SRC - -#+NAME: ldc_hash_1_32_2 -#+BEGIN_SRC nix -sha256-v6Sq7nQyChJohDyI4inzObLfCVOkvLT87VLr4N2hzZU= -#+END_SRC - -#+NAME: ldc_llvm_set_1_32_2 -#+BEGIN_SRC nix -llvm_15 -#+END_SRC - -***** 1.32.1 - -- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.32.1.tar.gz - -#+NAME: ldc_version_1_32_1 -#+BEGIN_SRC nix -1.32.1 -#+END_SRC - -#+NAME: ldc_hash_1_32_1 -#+BEGIN_SRC nix -sha256-s1U7+qiVJDF+zSHrLGPG6g+acIChYnXkb9p+OrNX6g8= -#+END_SRC - -#+NAME: ldc_llvm_set_1_32_1 -#+BEGIN_SRC nix -llvm_14 -#+END_SRC - -***** 1.32.0 - -- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.32.0.tar.gz - -#+NAME: ldc_version_1_32_0 -#+BEGIN_SRC nix -1.32.0 -#+END_SRC - -#+NAME: ldc_hash_1_32_0 -#+BEGIN_SRC nix -sha256-xO4L+RtBbdVkE1PZsme2pIYAxJnHgr6xEtLkYOMpvqw= -#+END_SRC - -#+NAME: ldc_llvm_set_1_32_0 -#+BEGIN_SRC nix -llvm_14 -#+END_SRC - -**** 1.31 -***** 1.31.0 - -- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.31.0.tar.gz - -#+NAME: ldc_version_1_31_0 +#+NAME: ldc_bootstrap_1-25-0_hashes #+BEGIN_SRC nix -1.31.0 +version = "1.25.0"; +hashes = { + # Get these from `nix store prefetch-file https://github.com/ldc-developers/ldc/releases/download/v1.25.0/ldc2-1.25.0-osx-x86_64.tar.xz` etc.. + osx-x86_64 = "sha256-6iKnbS+oalLKmyS8qYD/wS21b7+O+VgsWG2iT4PrWPU="; + linux-x86_64 = "sha256-sfg47RdlsIpryc3iZvE17OtLweh3Zw6DeuNJYgpuH+o="; + linux-aarch64 = "sha256-UDZ43x4flSo+SfsPeE8juZO2Wtk2ZzwySk0ADHnvJBI="; + osx-arm64 = "sha256-O/x0vy0wwQFaDc4uWSeMhx+chJKqbQb6e5QNYf+7DCw="; +}; #+END_SRC -#+NAME: ldc_hash_1_31_0 -#+BEGIN_SRC nix -sha256-8cjs6eHjWAbDRBvyT75mbN3Y7vN1WSwZzY/uRwHNVFg= -#+END_SRC +****** bootstrap.nix ldc2-1.30.0 -#+NAME: ldc_llvm_set_1_31_0 +#+NAME: ldc_bootstrap_1-30-0_hashes #+BEGIN_SRC nix -llvm_14 -#+END_SRC - -***** 1.30.0 - -- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.30.0.tar.gz - -#+NAME: ldc_version_1_30_0 -#+BEGIN_SRC nix -1.30.0 -#+END_SRC - -#+NAME: ldc_hash_1_30_0 -#+BEGIN_SRC nix -sha256-/bs3bwgkLZF5IqaiKnc5gCF/r6MQBG/F1kWUkK8j2s0= -#+END_SRC - -#+NAME: ldc_llvm_set_1_30_0 -#+BEGIN_SRC nix -llvm_14 +version = "1.30.0"; +hashes = { + # Get these from `nix store prefetch-file https://github.com/ldc-developers/ldc/releases/download/v1.30.0/ldc2-1.30.0-osx-x86_64.tar.xz` etc.. + osx-x86_64 = "sha256-AAWZvxuZC82xvrW6fpYm783TY+H8k3DvqE94ZF1yjmk="; + linux-x86_64 = "sha256-V4TUzEfQhFrwiX07dHOgjdAoGkzausCkhnQIQNAU/eE="; + linux-aarch64 = "sha256-kTeglub75iv/jWWNPCn15aCGAbmck0RQl6L7bFOUu7Y="; + osx-arm64 = "sha256-Nb/owBdIeroB9jLMDvwjo8bvsTC9vFyJPLMTOMsSAd4="; +}; #+END_SRC ** dmd OK ✓ @@ -1184,10 +912,17 @@ llvm_14 *** 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>>"; @@ -1195,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>>"; @@ -1211,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 @@ -1249,11 +985,8 @@ let }; bits = builtins.toString stdenv.hostPlatform.parsed.cpu.bits; - osname = - if stdenv.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 @@ -1310,6 +1043,9 @@ stdenv.mkDerivation (finalAttrs: { rm dmd/compiler/test/runnable/gdb4149.d rm dmd/compiler/test/runnable/gdb4181.d rm dmd/compiler/test/compilable/ddocYear.d + rm dmd/compiler/test/compilable/sarif_success_test.d + rm dmd/compiler/test/fail_compilation/sarif_test.d + rm dmd/compiler/test/fail_compilation/sarifmultiple_test.d # Disable tests that rely on objdump whitespace until fixed upstream: # https://issues.dlang.org/show_bug.cgi?id=23317 @@ -1319,11 +1055,11 @@ stdenv.mkDerivation (finalAttrs: { rm dmd/compiler/test/dshell/test6952.d '' + lib.optionalString (lib.versionAtLeast version "2.092.2") '' substituteInPlace dmd/compiler/test/dshell/test6952.d --replace-fail "/usr/bin/env bash" "${bash}/bin/bash" - '' + lib.optionalString stdenv.isLinux '' + '' + lib.optionalString stdenv.hostPlatform.isLinux '' substituteInPlace phobos/std/socket.d --replace-fail "assert(ih.addrList[0] == 0x7F_00_00_01);" "" - '' + lib.optionalString stdenv.isDarwin '' - substituteInPlace phobos/std/socket.d --replace-fail "foreach (name; names)" "names = []; foreach (name; names)" - ''; + ''; # + lib.optionalString stdenv.hostPlatform.isDarwin '' + # substituteInPlace phobos/std/socket.d --replace-fail "foreach (name; names)" "names = []; foreach (name; names)" + #''; nativeBuildInputs = [ makeWrapper @@ -1336,7 +1072,7 @@ stdenv.mkDerivation (finalAttrs: { buildInputs = [ curl tzdata - # ] ++ lib.optionals stdenv.isDarwin [ + # ] ++ lib.optionals stdenv.hostPlatform.isDarwin [] # Foundation ]; @@ -1421,15 +1157,23 @@ stdenv.mkDerivation (finalAttrs: { disallowedReferences = [ dmdBootstrap ]; + passthru = { + inherit dmdBootstrap; + }; + meta = with lib; { description = "Official reference compiler for the D language"; homepage = "https://dlang.org/"; + changelog = "https://dlang.org/changelog/${finalAttrs.version}.html"; # Everything is now Boost licensed, even the backend. # https://github.com/dlang/dmd/pull/6680 license = licenses.boost; mainProgram = "dmd"; maintainers = with maintainers; [ lionello dukc jtbx ]; platforms = [ "x86_64-linux" "i686-linux" "x86_64-darwin" ]; + # ld: section __DATA/__thread_bss has type zero-fill but non-zero file offset file '/private/tmp/nix-build-dmd-2.109.1.drv-0/.rdmd-301/rdmd-build.d-A1CF043A7D87C5E88A58F3C0EF5A0DF7/objs/build.o' for architecture x86_64 + # clang-16: error: linker command failed with exit code 1 (use -v to see invocation) + broken = stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86_64; }; }) #+END_SRC @@ -1532,169 +1276,6 @@ stdenv.mkDerivation { } #+END_SRC -*** versions SET -**** selected version SET OK ✓ - -#+NAME: dmd_version -#+BEGIN_SRC nix -<<dmd_version_2_109_0>> -#+END_SRC - -#+NAME: dmd_hash -#+BEGIN_SRC nix -<<dmd_hash_2_109_0>> -#+END_SRC - -#+NAME: phobos_hash -#+BEGIN_SRC nix -<<phobos_hash_2_109_0>> -#+END_SRC - -**** 2.109.0 OK ✓ - -- nix-prefetch-url --unpack https://github.com/dlang/dmd/archive/refs/tags/v2.109.0.tar.gz -- nix-prefetch-url --unpack https://github.com/dlang/phobos/archive/refs/tags/v2.109.0.tar.gz - -#+NAME: dmd_version_2_109_0 -#+BEGIN_SRC nix -2.109.0 -#+END_SRC - -#+NAME: dmd_hash_2_109_0 -#+BEGIN_SRC nix -sha256-unAZgyZyT6qomlj6pdlOx4h1SKuDjutl1/0FM9AhBWc= -#+END_SRC - -#+NAME: phobos_hash_2_109_0 -#+BEGIN_SRC nix -sha256-b91FeluFqhmjHd1wwkyq98QzIlwjE646xNj2n6hP3aM= -#+END_SRC - -**** 2.108.0 OK ✓ - -- nix-prefetch-url --unpack https://github.com/dlang/dmd/archive/refs/tags/v2.108.0.tar.gz -- nix-prefetch-url --unpack https://github.com/dlang/phobos/archive/refs/tags/v2.108.0.tar.gz - -#+NAME: dmd_version_2_108_0 -#+BEGIN_SRC nix -2.108.0 -#+END_SRC - -#+NAME: dmd_hash_2_108_0 -#+BEGIN_SRC nix -sha256-tlWcFgKtXzfqMMkOq4ezhZHdYCXFckjN5+m6jO4VH0U= -#+END_SRC - -#+NAME: phobos_hash_2_108_0 -#+BEGIN_SRC nix -sha256-uU8S4rABOfhpKh+MvSbclkbdf0hrsuKF8SIpWMnPpfU= -#+END_SRC - -**** 2.107.0 - skip (asleep here apparently) - -- asleep apparently - -#+NAME: dmd_version_2_107_0 -#+BEGIN_SRC nix -2.107.0 -#+END_SRC - -#+NAME: dmd_hash_2_107_0 -#+BEGIN_SRC nix -<<sha256-blank>> -#+END_SRC - -#+NAME: phobos_hash_2_107_0 -#+BEGIN_SRC nix -<<sha256-blank>> -#+END_SRC - -**** 2.106.1 OK ✓ - -- nix-prefetch-url --unpack https://github.com/dlang/dmd/archive/refs/tags/v2.106.1.tar.gz -- nix-prefetch-url --unpack https://github.com/dlang/phobos/archive/refs/tags/v2.106.1.tar.gz - -#+NAME: dmd_version_2_106_1 -#+BEGIN_SRC nix -2.106.1 -#+END_SRC - -#+NAME: dmd_hash_2_106_1 -#+BEGIN_SRC nix -sha256-vjYa/Pxrz7J2htXT+fa+xaeen/Vxne++lELbHTSXBK8= -#+END_SRC - -#+NAME: phobos_hash_2_106_1 -#+BEGIN_SRC nix -sha256-yRL9ub3u4mREG9PVxBvgQ/LDXD57RadPTZ2h08qyh/s= -#+END_SRC - -**** 2.104.0 KO ✗ - -- nix-prefetch-url --unpack https://github.com/dlang/dmd/archive/refs/tags/v2.104.0.tar.gz -- nix-prefetch-url --unpack https://github.com/dlang/phobos/archive/refs/tags/v2.104.0.tar.gz - -#+NAME: dmd_version_2_104_0 -#+BEGIN_SRC nix -2.104.0 -#+END_SRC - -#+NAME: dmd_hash_2_104_0 -#+BEGIN_SRC nix -sha256-yv+uW6cYAId2HK/YSPxsR9Xt0o3LWa97z8KyzjFik6s= -#+END_SRC - -#+NAME: phobos_hash_2_104_0 -#+BEGIN_SRC nix -sha256-cWp36Gd/lh3gy21bf9z0/RqzlJmf6ypmx72aMeakcec= -#+END_SRC - -**** 2.102.2 KO ✗ - -- nix-prefetch-url --unpack https://github.com/dlang/dmd/archive/refs/tags/v2.102.2.tar.gz -- nix-prefetch-url --unpack https://github.com/dlang/phobos/archive/refs/tags/v2.102.2.tar.gz - -#+NAME: dmd_version_2_102_2 -#+BEGIN_SRC nix -2.102.2 -#+END_SRC - -#+NAME: dmd_hash_2_102_2 -#+BEGIN_SRC nix -sha256-der9nb31hJ+K1aJZdzIgs8+eRgVVsH97QnYEnVbKUws= -#+END_SRC - -#+NAME: phobos_hash_2_102_2 -#+BEGIN_SRC nix -sha256-SracmUm2aY/LDCyDqYuVS39pCbwO8UCL3TSB0CVHpHE= -#+END_SRC - -**** 2.100.2 KO ✗ - -- nix-prefetch-url --unpack https://github.com/dlang/dmd/archive/refs/tags/v2.100.2.tar.gz -- nix-prefetch-url --unpack https://github.com/dlang/druntime/archive/refs/tags/v2.100.2.tar.gz -- nix-prefetch-url --unpack https://github.com/dlang/phobos/archive/refs/tags/v2.100.2.tar.gz - -#+NAME: dmd_version_2_100_2 -#+BEGIN_SRC nix -2.100.2 -#+END_SRC - -#+NAME: dmd_hash_2_100_2 -#+BEGIN_SRC nix -sha256-o4+G3ARXIGObYHtHooYZKr+Al6kHpiwpMIog3i4BlDM= -#+END_SRC - -#+NAME: druntime_hash_2_100_2 -#+BEGIN_SRC nix -sha256-qXvY1ECN4mPwOGgOE1FWwvxoRvlSww3tGLWgBdhzAKo= -#+END_SRC - -#+NAME: phobos_hash_2_100_2 -#+BEGIN_SRC nix -sha256-kTHRaAKG7cAGb4IE/NGHWaZ8t7ZceKj03l6E8wLzJzs= -#+END_SRC - ** dub OK *** info **** links @@ -1722,15 +1303,31 @@ sha256-kTHRaAKG7cAGb4IE/NGHWaZ8t7ZceKj03l6E8wLzJzs= - OK dub == 1.30.0 OK ✓ *** overlays -**** default.nix OK ✓ +**** default.nix #+HEADER: :tangle "../nix-overlays/dub/default.nix" #+BEGIN_SRC nix -{ lib, stdenv, fetchFromGitHub, curl, libevent, rsync, ldc, dcompiler ? ldc }: +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, +}: assert dcompiler != null; -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { pname = "dub"; version = "<<dub_version>>"; @@ -1739,48 +1336,44 @@ stdenv.mkDerivation rec { src = fetchFromGitHub { owner = "dlang"; repo = "dub"; - rev = "v${version}"; - sha256 = "<<dub_hash>>"; + rev = "v${finalAttrs.version}"; + hash = "<<dub_hash>>"; }; - #postUnpack = '' - # patchShebangs . - #''; - - dubvar = "\\$DUB"; postPatch = '' patchShebangs test - - # Can be removed with https://github.com/dlang/dub/pull/1368 - substituteInPlace test/fetchzip.sh \ - --replace "dub remove" "\"${dubvar}\" remove" ''; nativeBuildInputs = [ dcompiler libevent rsync ]; buildInputs = [ curl ]; - buildPhase = '' - for DC_ in dmd ldmd2 gdmd; do - echo "... check for D compiler $DC_ ..." - export DC=$(type -P $DC_ || echo "") + preBuild = '' + for DCn in dmd ldmd2 gdmd; do + echo "... check for D compiler $DCn ..." + export DC=$(type -P $DCn || echo "") if [ ! "$DC" == "" ]; then break fi done + #export DMD=${ldc}/bin/ldmd2 if [ "$DC" == "" ]; then exit "Error: could not find D compiler" fi - echo "$DC_ found and used as D compiler in buildPhase for $pname" - $DC ./build.d - ./build + echo "$DCn found and used as D compiler in buildPhase for $pname" + ''; + + buildPhase = '' + runHook preBuild + $DC -run ./build.d + runHook postBuild ''; - doCheck = !stdenv.isDarwin; + doCheck = !stdenv.hostPlatform.isDarwin; checkPhase = '' + runHook preCheck export DUB=$NIX_BUILD_TOP/source/bin/dub export PATH=$PATH:$NIX_BUILD_TOP/source/bin/ - #export DC=${dcompiler.out}/bin/${if dcompiler.pname=="ldc" then "ldc2" else dcompiler.pname} if [ "$DC" == "" ]; then exit "Error: could not find D compiler" fi @@ -1788,8 +1381,7 @@ stdenv.mkDerivation rec { export HOME=$TMP rm -rf test/issue502-root-import - rm -rf test/dpath-variable - #rm test/dpath-variable.sh + rm -r test/dpath-variable # requires execution of dpath-variable.sh rm -rf test/git-dependency rm -rf test/use-c-sources # added to build v1.33.0 rm -rf test/pr2642-cache-db # added to build v1.34.0 @@ -1797,199 +1389,35 @@ stdenv.mkDerivation rec { rm -rf test/pr2647-build-deep # added to build v1.36.0 ./test/run-unittest.sh + runHook postCheck ''; installPhase = '' - mkdir -p $out/bin - cp bin/dub $out/bin + runHook preInstall + install -Dm755 bin/dub $out/bin/dub + runHook postInstall ''; meta = with lib; { - description = "Package and build manager for D applications and libraries"; + description = "Package and build manager for D programs and libraries"; homepage = "https://code.dlang.org/"; license = licenses.mit; + mainProgram = "dub"; maintainers = with maintainers; [ jtbx ]; platforms = [ "x86_64-linux" "i686-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; }; -} -#+END_SRC - -*** versions SET -**** selected version SET - -#+NAME: dub_version -#+BEGIN_SRC nix -<<dub_version_1_36_0>> -#+END_SRC - -#+NAME: dub_hash -#+BEGIN_SRC nix -<<dub_hash_1_36_0>> -#+END_SRC - -**** 1.36 OK ✓ -***** 1.36.0 - -- nix-prefetch-url --unpack https://github.com/dlang/dub/archive/refs/tags/v1.36.0.tar.gz - -#+NAME: dub_version_1_36_0 -#+BEGIN_SRC nix -1.36.0 -#+END_SRC - -#+NAME: dub_hash_1_36_0 -#+BEGIN_SRC nix -sha256-S8pls9zxbGAQTwqYf4bDT2q7Ow12S8bBsJE5UmsACBs= -#+END_SRC - -**** 1.35 OK ✓ -***** 1.35.0 - -- nix-prefetch-url --unpack https://github.com/dlang/dub/archive/refs/tags/v1.35.0.tar.gz - -#+NAME: dub_version_1_35_0 -#+BEGIN_SRC nix -1.35.0 -#+END_SRC - -#+NAME: dub_hash_1_35_0 -#+BEGIN_SRC nix -sha256-hC46XKE6lLLMLGMGl4vDnLDBQy6P/Z7o3ayDJj0Sois= -#+END_SRC - -**** 1.34 OK ✓ -***** 1.34.0 - -- nix-prefetch-url --unpack https://github.com/dlang/dub/archive/refs/tags/v1.34.0.tar.gz - -#+NAME: dub_version_1_34_0 -#+BEGIN_SRC nix -1.34.0 -#+END_SRC - -#+NAME: dub_hash_1_34_0 -#+BEGIN_SRC nix -sha256-hC46XKE6lLLMLGMGl4vDnLDBQy6P/Z7o3ayDJj0Sois= -#+END_SRC - -**** 1.33 OK ✓ -***** 1.33.1 OK ✓ - -- nix-prefetch-url --unpack https://github.com/dlang/dub/archive/refs/tags/v1.33.1.tar.gz - -#+NAME: dub_version_1_33_1 -#+BEGIN_SRC nix -1.33.1 -#+END_SRC - -#+NAME: dub_hash_1_33_1 -#+BEGIN_SRC nix -sha256-QFgUsO04VRXBDjGI5QQs7u9XrexG7/V34TMgJP1D8yA= -#+END_SRC - -**** 1.33.0 OK ✓ - -- nix-prefetch-url --unpack https://github.com/dlang/dub/archive/refs/tags/v1.33.0.tar.gz - -#+NAME: dub_version_1_33_0 -#+BEGIN_SRC nix -1.33.0 -#+END_SRC - -#+NAME: dub_hash_1_33_0 -#+BEGIN_SRC nix -sha256-4Mha7WF6cg3DIccfpvOnheuvgfziv/7wo8iFsPXO4yY= -#+END_SRC - -**** 1.32.1 OK ✓ - -- nix-prefetch-url --unpack https://github.com/dlang/dub/archive/refs/tags/v1.32.1.tar.gz - -#+NAME: dub_version_1_32_1 -#+BEGIN_SRC nix -1.32.1 -#+END_SRC - -#+NAME: dub_hash_1_32_1 -#+BEGIN_SRC nix -sha256-5pW3Fu3PQ1ZLJnsuh7fPpEBNbVQgGfFyiuMrAVOJKQA= -#+END_SRC - -- ISSUES from 1.31.0 continuing - -**** 1.31.1 OK ✓ - -- nix-prefetch-url --unpack https://github.com/dlang/dub/archive/refs/tags/v1.31.1.tar.gz - -#+NAME: dub_version_1_31_1 -#+BEGIN_SRC nix -1.31.1 -#+END_SRC - -#+NAME: dub_hash_1_31_1 -#+BEGIN_SRC nix -sha256-dp64D51ypowXS1+EYKRXh5hpa3rMmiotvKO2FW+i92w= -#+END_SRC - -- ISSUES from 1.31.0 continuing - -**** 1.31.0 OK ✓ NOTE - -- nix-prefetch-url --unpack https://github.com/dlang/dub/archive/refs/tags/v1.31.0.tar.gz - -behavior change in dub requiring the setting of pwd in buildPhase - -#+NAME: dub_version_1_31_0 -#+BEGIN_SRC nix -1.31.0 -#+END_SRC - -#+NAME: dub_hash_1_31_0 -#+BEGIN_SRC nix -sha256-Ki8HJOfWFM1tF86s7Ng3STgC/uu5acVTP0Dj87M0l54= -#+END_SRC - -- ISSUES from 1.31.0 continuing -**** 1.30.0 OK ✓ - -- nix-prefetch-url --unpack https://github.com/dlang/dub/archive/refs/tags/v1.30.0.tar.gz - -#+NAME: dub_version_1_30_0 -#+BEGIN_SRC nix -1.30.0 -#+END_SRC - -#+NAME: dub_hash_1_30_0 -#+BEGIN_SRC nix -sha256-iVl7bjblvIxvrUX7Phq6h4AIAmZjNVkGYYFA1hhsE7c= -#+END_SRC - -**** 1.29.1 - -- nix-prefetch-url --unpack https://github.com/dlang/dub/archive/refs/tags/v1.29.1.tar.gz - -#+NAME: dub_version_1_29_1 -#+BEGIN_SRC nix -1.29.1 -#+END_SRC - -#+NAME: dub_hash_1_29_1 -#+BEGIN_SRC nix -sha256-XDV9p1bDhRL6gX+nizzjoErNJm8NnQK5O8wNnizloss= +}) #+END_SRC -**** 1.28.0 - -- nix-prefetch-url --unpack https://github.com/dlang/dub/archive/refs/tags/v1.28.0.tar.gz +*** dcompiler -#+NAME: dub_version_1_28_0 +#+NAME: dcompiler #+BEGIN_SRC nix -1.28.0 +ldc #+END_SRC -#+NAME: dub_hash_1_28_0 #+BEGIN_SRC nix -sha256-GOeaQyu8Y/DxZEAJPdlGH9ie/ZRTqvAw2jjvM3dESbg= +dmd #+END_SRC ** dtools OK ✓ @@ -2015,130 +1443,283 @@ sha256-GOeaQyu8Y/DxZEAJPdlGH9ie/ZRTqvAw2jjvM3dESbg= #+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 -*** versions SET +#+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 GET +*** direnv +***** select version + +#+NAME: direnv_version +#+HEADER: :noweb yes +#+BEGIN_SRC emacs-lisp +<<./nix-develop-dlang-shared.org:direnv-version()>> +#+END_SRC -- https://github.com/dlang/tools +#+NAME: direnv_hash +#+BEGIN_SRC emacs-lisp +<<./nix-develop-dlang-shared.org:direnv-hash()>> +#+END_SRC -**** selected version SET OK ✓ +*** ldc +***** version & sha256 nix composite -#+NAME: dtools_version -#+BEGIN_SRC nix -<<dtools_version_2_103_1>> +#+NAME: ldc_version_info +#+BEGIN_SRC emacs-lisp +<<./nix-develop-dlang-shared.org:ldc-version-info()>> #+END_SRC -#+NAME: dtools_hash -#+BEGIN_SRC nix -<<dtools_hash_2_103_1>> +***** selected version + +#+NAME: ldc_version +#+HEADER: :noweb yes +#+BEGIN_SRC emacs-lisp +<<./nix-develop-dlang-shared.org:ldc-version()>> #+END_SRC -**** 2.103.1 OK ✓ +#+NAME: ldc_hash +#+BEGIN_SRC emacs-lisp +<<./nix-develop-dlang-shared.org:ldc-hash()>> +#+END_SRC -- https://github.com/dlang/tools/releases/tag/v2.103.1 +#+NAME: ldc_llvm_set +#+BEGIN_SRC emacs-lisp +<<./nix-develop-dlang-shared.org:ldc-llvm-set()>> +#+END_SRC -#+NAME: dtools_version_2_103_1 -#+BEGIN_SRC nix -2.103.1 +*** dmd +**** selected version + +#+NAME: dmd_version +#+HEADER: :noweb yes +#+BEGIN_SRC emacs-lisp +<<./nix-develop-dlang-shared.org:dmd-version()>> #+END_SRC -#+NAME: dtools_hash_2_103_1 -#+BEGIN_SRC nix -sha256-XM4gUxcarQCOBR8W/o0iWAI54PyLDkH6CsDce22Cnu4= +#+NAME: dmd_hash +#+BEGIN_SRC org +<<./nix-develop-dlang-shared.org:dmd-hash()>> #+END_SRC -**** 2.102.2 +#+NAME: phobos_hash +#+BEGIN_SRC org +<<./nix-develop-dlang-shared.org:phobos-hash()>> +#+END_SRC -- https://github.com/dlang/tools/releases/tag/v2.102.2 +*** dub +**** selected version -#+NAME: dtools_version_2_102_2 -#+BEGIN_SRC nix -2.102.2 +#+NAME: dub_version +#+HEADER: :noweb yes +#+BEGIN_SRC emacs-lisp +<<./nix-develop-dlang-shared.org:dub-version()>> #+END_SRC -#+NAME: dtools_hash_2_102_2 +#+NAME: dub_hash #+BEGIN_SRC nix -sha256-XM4gUxcarQCOBR8W/o0iWAI54PyLDkH6CsDce22Cnu4= +<<./nix-develop-dlang-shared.org:dub-hash()>> #+END_SRC -**** 2.095.1 current nixpkgs 20-03-17 OK ✓ +*** dtools +**** selected version -- https://github.com/dlang/tools/releases/tag/v2.095.1 - -#+NAME: dtools_version_2_095_1 -#+BEGIN_SRC nix -2.095.1 +#+NAME: dtools_version +#+HEADER: :noweb yes +#+BEGIN_SRC emacs-lisp +<<./nix-develop-dlang-shared.org:dtools-version()>> #+END_SRC -#+NAME: dtools_hash_2_095_1 -#+BEGIN_SRC nix -sha256:0rdfk3mh3fjrb0h8pr8skwlq6ac9hdl1fkrkdl7n1fa2806b740b +#+NAME: dtools_hash +#+BEGIN_SRC emacs-lisp +<<./nix-develop-dlang-shared.org:dtools-hash()>> #+END_SRC ** sha256 blank_hash #+NAME: sha256-blank #+BEGIN_SRC nix -sha256-0000000000000000000000000000000000000000000= +<<./nix-develop-dlang-shared.org:sha256-blank()>> #+END_SRC #+NAME: blank_hash #+BEGIN_SRC nix -sha256-0000000000000000000000000000000000000000000= +<<./nix-develop-dlang-shared.org:sha256-blank()>> #+END_SRC -#+NAME: assumed_hash -#+BEGIN_SRC nix -sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= -#+END_SRC +* __END__ diff --git a/org/nix-develop-dlang-shared.org b/org/nix-develop-dlang-shared.org new file mode 100644 index 0000000..b7f4f79 --- /dev/null +++ b/org/nix-develop-dlang-shared.org @@ -0,0 +1,711 @@ +-*- mode: org -*- +#+TITLE: dlang related shared versions +#+DESCRIPTION: dlang +#+FILETAGS: :dlang:develop:shared: +#+AUTHOR: Ralph Amissah +#+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] +#+COPYRIGHT: Copyright (C) 2015 - 2025 Ralph Amissah +#+LANGUAGE: en +#+STARTUP: content hideblocks hidestars noindent entitiespretty +#+PROPERTY: header-args :noweb yes +#+PROPERTY: header-args+ :exports code +#+PROPERTY: header-args+ :results no +#+PROPERTY: header-args+ :cache no +#+PROPERTY: header-args+ :padline no +#+PROPERTY: header-args+ :mkdirp yes +#+OPTIONS: H:3 num:nil toc:t \n:t ::t |:t ^:nil -:t f:t *:t + +* nix +** direnv +*** NOTES to update direnv in .envrc-nix + +- https://github.com/nix-community/nix-direnv + +check for latest version: + +- https://github.com/nix-community/nix-direnv/releases + +update direnv version and sha hash: +- emacs org/nix-develop-dlang-shared.org + +re-tangle file: + +- emacs dlang-nix-flakes.org + updates: .envrc-nix + +update flake.lock: +- nix flake update && nix flake check && nix flake show + +*** version SET + +#+NAME: direnv-version +#+BEGIN_SRC org +<<direnv_version_3_0_7>> +#+END_SRC + +#+NAME: direnv-hash +#+BEGIN_SRC org +<<direnv_hash_3_0_7>> +#+END_SRC + +*** versions + +**** 3.0.7 + +#+NAME: direnv_version_3_0_7 +#+BEGIN_SRC org +3.0.7 +#+END_SRC + +#+NAME: direnv_hash_3_0_7 +#+BEGIN_SRC org +sha256-bn8WANE5a91RusFmRI7kS751ApelG02nMcwRekC/qzc= +#+END_SRC + +**** 3.0.6 + +#+NAME: direnv_version_3_0_6 +#+BEGIN_SRC org +3.0.6 +#+END_SRC + +#+NAME: direnv_hash_3_0_6 +#+BEGIN_SRC org +sha256-RYcUJaRMf8oF5LznDrlCXbkOQrywm0HDv1VjYGaJGdM= +#+END_SRC + +**** 3.0.4 + +#+NAME: direnv_version_3_0_4 +#+BEGIN_SRC org +3.0.4 +#+END_SRC + +#+NAME: direnv_hash_3_0_4 +#+BEGIN_SRC org +sha256-DzlYZ33mWF/Gs8DDeyjr8mnVmQGx7ASYqA5WlxwvBG4= +#+END_SRC + +**** 3.0.0 + +#+NAME: direnv_version_3_0_0 +#+BEGIN_SRC org +3.0.0 +#+END_SRC + +#+NAME: direnv_hash_3_0_0 +#+BEGIN_SRC org +sha256-21TMnI2xWX7HkSTjFFri2UaohXVj854mgvWapWrxRXg= +#+END_SRC + +**** 2.4.0 + +#+NAME: direnv_version_2_4_0 +#+BEGIN_SRC org +2.4.0 +#+END_SRC + +#+NAME: direnv_hash_2_4_0 +#+BEGIN_SRC org +sha256-XQzUAvL6pysIJnRJyR7uVpmUSZfc7LSgWQwq/4mBr1U= +#+END_SRC + +* dlang +** ldc +*** NOTES to update ldc + +check for latest version: + +update ldc version and sha hash: +- emacs ./org/nix-develop-dlang-shared.org + +re-tangle files: +- emacs dlang-nix-flakes.org + updates: nix-overlays/ldc/package.nix + updates: flake.nix + updates: .envrc-nix + +update flake.lock: +- nix flake update && nix flake check && nix flake show + +build: +- nix build ".#spine-overlay-ldc" --print-build-logs + +adjust nix overlay if required (to get started): +- git clone --depth 1 https://github.com/NixOS/nixpkgs +- find ./nixpkgs/pkgs/ -type d -name "ldc" + ./nixpkgs/pkgs/by-name/ld/ldc +- compare with overlay: + ./nix-overlays/ldc +- overlay is tangled from: + emacs ./org/nixpkgs_overlays_d_related.org + +*** version SET +**** version & sha256 nix composite + +#+NAME: ldc-version-info +#+BEGIN_SRC org +version = "<<ldc-version>>"; +sha256 = "<<ldc-hash>>"; +#+END_SRC + +**** select version SET OK ✓ + +#+NAME: ldc-version +#+BEGIN_SRC org +<<ldc_version_1_41_0>> +#+END_SRC + +#+NAME: ldc-hash +#+BEGIN_SRC org +<<ldc_hash_1_41_0>> +#+END_SRC + +#+NAME: ldc-llvm-set +#+BEGIN_SRC org +<<ldc_llvm_set_1_41_0>> +#+END_SRC + +*** versions +**** 1.41 OK ✓ +***** 1.41.0 OK ✓ + + - nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.41.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_41_0 +#+BEGIN_SRC nix +1.41.0 +#+END_SRC + +#+NAME: ldc_hash_1_41_0 +#+BEGIN_SRC nix +sha256-6LcpY3LSFK4KgEiGrFp/LONu5Vr+/+vI04wEEpF3s+s= +#+END_SRC + +#+NAME: ldc_llvm_set_1_41_0 +#+BEGIN_SRC nix +llvm_19 +#+END_SRC + +**** 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.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 +#+BEGIN_SRC nix +1.40.0 +#+END_SRC + +#+NAME: ldc_hash_1_40_0 +#+BEGIN_SRC nix +sha256-LT85DlAebecPpBUgZP0ayKTVrTUqN6DMJVEWTatLOxY= +#+END_SRC + +#+NAME: ldc_llvm_set_1_40_0 +#+BEGIN_SRC nix +llvm_19 +#+END_SRC + +**** 1.39 OK ✓ +***** 1.39.0 OK ✓ + +- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.39.0.tar.gz +- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/releases/download/v${version}/ldc-${version}-src.tar.gz + +#+NAME: ldc_version_1_39_0 +#+BEGIN_SRC nix +1.39.0 +#+END_SRC + +#+NAME: ldc_hash_1_39_0 +#+BEGIN_SRC nix +sha256-ZiG0ATsY6Asu2nus3Y404fvqIwtKYoHl1JRUDU5A6mo= +#+END_SRC + +#+NAME: ldc_llvm_set_1_39_0 +#+BEGIN_SRC nix +llvm_18 +#+END_SRC + +**** =< 1.32 +***** 1.32.2 + +- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.32.1.tar.gz + +#+NAME: ldc_version_1_32_2 +#+BEGIN_SRC nix +1.32.2 +#+END_SRC + +#+NAME: ldc_hash_1_32_2 +#+BEGIN_SRC nix +sha256-v6Sq7nQyChJohDyI4inzObLfCVOkvLT87VLr4N2hzZU= +#+END_SRC + +***** 1.32.1 + +- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.32.1.tar.gz + +#+NAME: ldc_version_1_32_1 +#+BEGIN_SRC nix +1.32.1 +#+END_SRC + +#+NAME: ldc_hash_1_32_1 +#+BEGIN_SRC nix +sha256-s1U7+qiVJDF+zSHrLGPG6g+acIChYnXkb9p+OrNX6g8= +#+END_SRC + +***** 1.32.0 + +- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.32.0.tar.gz + +#+NAME: ldc_version_1_32_0 +#+BEGIN_SRC nix +1.32.0 +#+END_SRC + +#+NAME: ldc_hash_1_32_0 +#+BEGIN_SRC nix +sha256-xO4L+RtBbdVkE1PZsme2pIYAxJnHgr6xEtLkYOMpvqw= +#+END_SRC + +***** 1.31.0 + +- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.31.0.tar.gz + +#+NAME: ldc_version_1_31_0 +#+BEGIN_SRC nix +1.31.0 +#+END_SRC + +#+NAME: ldc_hash_1_31_0 +#+BEGIN_SRC nix +sha256-8cjs6eHjWAbDRBvyT75mbN3Y7vN1WSwZzY/uRwHNVFg= +#+END_SRC + +***** 1.30.0 + +- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.30.0.tar.gz + +#+NAME: ldc_version_1_30_0 +#+BEGIN_SRC nix +1.30.0 +#+END_SRC + +#+NAME: ldc_hash_1_30_0 +#+BEGIN_SRC nix +sha256-/bs3bwgkLZF5IqaiKnc5gCF/r6MQBG/F1kWUkK8j2s0= +#+END_SRC + +** dmd + +- https://github.com/dlang/dmd/tags + +*** version SET + +#+NAME: dmd-version +#+BEGIN_SRC org +<<dmd_version_2_111_0>> +#+END_SRC + +#+NAME: dmd-hash +#+BEGIN_SRC org +<<dmd_hash_2_111_0>> +#+END_SRC + +#+NAME: phobos-hash +#+BEGIN_SRC org +<<phobos_hash_2_111_0>> +#+END_SRC + +*** versions +**** 2.111.0 OK ✓ + +- nix-prefetch-url --unpack https://github.com/dlang/dmd/archive/refs/tags/v2.111.0.tar.gz +- nix-prefetch-url --unpack https://github.com/dlang/phobos/archive/refs/tags/v2.111.0.tar.gz + +#+NAME: dmd_version_2_111_0 +#+BEGIN_SRC nix +2.111.0 +#+END_SRC + +#+NAME: phobos_hash_2_111_0 +#+BEGIN_SRC nix +sha256-9jySZbODoL8sULhYKj/l4+c/uiG5xY2dO240k9XQtPk= +#+END_SRC + +#+NAME: dmd_hash_2_111_0 +#+BEGIN_SRC nix +sha256-2bjsGa9nTny818dLRV6LKkes+Ycq8W+PFjwhGVrD5TM= +#+END_SRC + +**** 2.110.0 OK ✓ + +- nix-prefetch-url --unpack https://github.com/dlang/dmd/archive/refs/tags/v2.110.0.tar.gz +- nix-prefetch-url --unpack https://github.com/dlang/phobos/archive/refs/tags/v2.110.0.tar.gz + +#+NAME: dmd_version_2_110_0 +#+BEGIN_SRC nix +2.110.0 +#+END_SRC + +#+NAME: phobos_hash_2_110_0 +#+BEGIN_SRC nix +sha256-CmJpcHM+sIsaYBlpALCFoQFG+93s8gUyWmM0tYqjXkk= +#+END_SRC + +#+NAME: dmd_hash_2_110_0 +#+BEGIN_SRC nix +sha256-icXp9xWF2AI2gp7z/lQFAChmXfQePe9b5pbpQ9Mn19Y= +#+END_SRC + +**** 2.109.1 OK ✓ + +- nix-prefetch-url --unpack https://github.com/dlang/dmd/archive/refs/tags/v2.109.1.tar.gz +- nix-prefetch-url --unpack https://github.com/dlang/phobos/archive/refs/tags/v2.109.1.tar.gz + +#+NAME: dmd_version_2_109_1 +#+BEGIN_SRC nix +2.109.1 +#+END_SRC + +#+NAME: phobos_hash_2_109_1 +#+BEGIN_SRC nix +sha256-73I0k7tCBwe5tl4K6uMs3/nT2JTZ2SppFYzmokS4W5Y= +#+END_SRC + +#+NAME: dmd_hash_2_109_1 +#+BEGIN_SRC nix +sha256-3nCDPZnb4eQZmhYYxcH6qOmsP8or0KYuzAa5g/C9xdU= +#+END_SRC + +**** 2.109.0 OK ✓ + +- nix-prefetch-url --unpack https://github.com/dlang/dmd/archive/refs/tags/v2.109.0.tar.gz +- nix-prefetch-url --unpack https://github.com/dlang/phobos/archive/refs/tags/v2.109.0.tar.gz + +#+NAME: dmd_version_2_109_0 +#+BEGIN_SRC nix +2.109.0 +#+END_SRC + +#+NAME: dmd_hash_2_109_0 +#+BEGIN_SRC nix +sha256-unAZgyZyT6qomlj6pdlOx4h1SKuDjutl1/0FM9AhBWc= +#+END_SRC + +#+NAME: phobos_hash_2_109_0 +#+BEGIN_SRC nix +sha256-b91FeluFqhmjHd1wwkyq98QzIlwjE646xNj2n6hP3aM= +#+END_SRC + +**** 2.108.0 OK ✓ + +- nix-prefetch-url --unpack https://github.com/dlang/dmd/archive/refs/tags/v2.108.0.tar.gz +- nix-prefetch-url --unpack https://github.com/dlang/phobos/archive/refs/tags/v2.108.0.tar.gz + +#+NAME: dmd_version_2_108_0 +#+BEGIN_SRC nix +2.108.0 +#+END_SRC + +#+NAME: dmd_hash_2_108_0 +#+BEGIN_SRC nix +sha256-tlWcFgKtXzfqMMkOq4ezhZHdYCXFckjN5+m6jO4VH0U= +#+END_SRC + +#+NAME: phobos_hash_2_108_0 +#+BEGIN_SRC nix +sha256-uU8S4rABOfhpKh+MvSbclkbdf0hrsuKF8SIpWMnPpfU= +#+END_SRC + +**** 2.107.0 OK ✓ + +- nix-prefetch-url --unpack https://github.com/dlang/dmd/archive/refs/tags/v2.107.0.tar.gz +- nix-prefetch-url --unpack https://github.com/dlang/phobos/archive/refs/tags/v2.107.0.tar.gz + +#+NAME: dmd_version_2_107_0 +#+BEGIN_SRC nix +2.107.0 +#+END_SRC + +#+NAME: dmd_hash_2_107_0 +#+BEGIN_SRC nix +<<sha256-blank>> +#+END_SRC + +#+NAME: phobos_hash_2_107_0 +#+BEGIN_SRC nix +<<sha256-blank>> +#+END_SRC + +**** 2.106.1 OK ✓ + +- nix-prefetch-url --unpack https://github.com/dlang/dmd/archive/refs/tags/v2.106.1.tar.gz +- nix-prefetch-url --unpack https://github.com/dlang/phobos/archive/refs/tags/v2.106.1.tar.gz + +#+NAME: dmd_version_2_106_1 +#+BEGIN_SRC nix +2.106.1 +#+END_SRC + +#+NAME: dmd_hash_2_106_1 +#+BEGIN_SRC nix +sha256-vjYa/Pxrz7J2htXT+fa+xaeen/Vxne++lELbHTSXBK8= +#+END_SRC + +#+NAME: phobos_hash_2_106_1 +#+BEGIN_SRC nix +sha256-yRL9ub3u4mREG9PVxBvgQ/LDXD57RadPTZ2h08qyh/s= +#+END_SRC + +#+NAME: dmd_version +#+BEGIN_SRC nix +<<dmd_version_2_104_0>> +#+END_SRC + +#+NAME: dmd_hash +#+BEGIN_SRC nix +<<dmd_hash_2_104_0>> +#+END_SRC + +#+NAME: phobos_hash +#+BEGIN_SRC nix +<<phobos_hash_2_104_0>> +#+END_SRC + +** dub +*** version SET + +#+NAME: dub-version +#+HEADER: :noweb yes +#+BEGIN_SRC org +<<dub_version_1_39_0>> +#+END_SRC + +#+NAME: dub-hash +#+BEGIN_SRC org +<<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 + +- nix-prefetch-url --unpack https://github.com/dlang/dub/archive/refs/tags/v1.38.1.tar.gz + +#+NAME: dub_version_1_38_1 +#+BEGIN_SRC nix +1.38.1 +#+END_SRC + +#+NAME: dub_hash_1_38_1 +#+BEGIN_SRC nix +sha256-8Lr/0sx4SKwU1aNOxZArta0RXpDM+EWl29ZsPDdPWFo= +#+END_SRC + +**** 1.36 OK ✓ +***** 1.36.0 + +- nix-prefetch-url --unpack https://github.com/dlang/dub/archive/refs/tags/v1.36.0.tar.gz + +#+NAME: dub_version_1_36_0 +#+BEGIN_SRC nix +1.36.0 +#+END_SRC + +#+NAME: dub_hash_1_36_0 +#+BEGIN_SRC nix +sha256-S8pls9zxbGAQTwqYf4bDT2q7Ow12S8bBsJE5UmsACBs= +#+END_SRC + +**** 1.35 OK ✓ +***** 1.35.0 + +- nix-prefetch-url --unpack https://github.com/dlang/dub/archive/refs/tags/v1.35.0.tar.gz + +#+NAME: dub_version_1_35_0 +#+BEGIN_SRC nix +1.35.0 +#+END_SRC + +#+NAME: dub_hash_1_35_0 +#+BEGIN_SRC nix +sha256-hC46XKE6lLLMLGMGl4vDnLDBQy6P/Z7o3ayDJj0Sois= +#+END_SRC + +**** 1.34 OK ✓ +***** 1.34.0 + +- nix-prefetch-url --unpack https://github.com/dlang/dub/archive/refs/tags/v1.34.0.tar.gz + +#+NAME: dub_version_1_34_0 +#+BEGIN_SRC nix +1.34.0 +#+END_SRC + +#+NAME: dub_hash_1_34_0 +#+BEGIN_SRC nix +sha256-hC46XKE6lLLMLGMGl4vDnLDBQy6P/Z7o3ayDJj0Sois= +#+END_SRC + +**** 1.33 OK ✓ +***** 1.33.1 + +- nix-prefetch-url --unpack https://github.com/dlang/dub/archive/refs/tags/v1.33.1.tar.gz + +#+NAME: dub_version_1_33_1 +#+BEGIN_SRC nix +1.33.1 +#+END_SRC + +#+NAME: dub_hash_1_33_1 +#+BEGIN_SRC nix +sha256-QFgUsO04VRXBDjGI5QQs7u9XrexG7/V34TMgJP1D8yA= +#+END_SRC + +***** 1.33.0 + +- nix-prefetch-url --unpack https://github.com/dlang/dub/archive/refs/tags/v1.33.0.tar.gz + +#+NAME: dub_version_1_33_0 +#+BEGIN_SRC nix +1.33.0 +#+END_SRC + +#+NAME: dub_hash_1_33_0 +#+BEGIN_SRC nix +sha256-4Mha7WF6cg3DIccfpvOnheuvgfziv/7wo8iFsPXO4yY= +#+END_SRC + +**** 1.32 OK ✓ +***** 1.32.1 + +- nix-prefetch-url --unpack https://github.com/dlang/dub/archive/refs/tags/v1.32.1.tar.gz + +#+NAME: dub_version_1_32_1 +#+BEGIN_SRC nix +1.32.1 +#+END_SRC + +#+NAME: dub_hash_1_32_1 +#+BEGIN_SRC nix +sha256-5pW3Fu3PQ1ZLJnsuh7fPpEBNbVQgGfFyiuMrAVOJKQA= +#+END_SRC + +** dtools + +- https://github.com/dlang/tools + +*** version SET + +#+NAME: dtools-version +#+BEGIN_SRC org +<<dtools_version_2_110_0>> +#+END_SRC + +#+NAME: dtools-hash +#+BEGIN_SRC org +<<dtools_hash_2_110_0>> +#+END_SRC + +*** versions +**** 2.110.0 OK ✓ + +- https://github.com/dlang/tools/releases/tag/v2.110.0 + +#+NAME: dtools_version_2_110_0 +#+BEGIN_SRC nix +2.110.0 +#+END_SRC + +#+NAME: dtools_hash_2_110_0 +#+BEGIN_SRC nix +sha256-xMEHnrstL5hAkhp8+/z1I2KZWZ7eztWZnUGLTKCfbBI= +#+END_SRC + +**** 2.109.1 OK ✓ + +- https://github.com/dlang/tools/releases/tag/v2.109.1 + +#+NAME: dtools_version_2_109_1 +#+BEGIN_SRC nix +2.109.1 +#+END_SRC + +#+NAME: dtools_hash_2_109_1 +#+BEGIN_SRC nix +sha256-Pfj8Kwf5AlcrHhLs5A/0vIFWLZaNR3ro+esbs7oWN9I= +#+END_SRC + +**** 2.104.1 OK ✓ + +- https://github.com/dlang/tools/releases/tag/v2.104.2 + +#+NAME: dtools_version_2_104_2 +#+BEGIN_SRC nix +2.104.2 +#+END_SRC + +#+NAME: dtools_hash_2_104_2 +#+BEGIN_SRC nix +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 + +#+NAME: assumed_hash +#+BEGIN_SRC nix +sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= +#+END_SRC + +* __END__ @@ -7,25 +7,25 @@ with pkgs-nix; # ❯❯❯ nix_related #nix direnv - nixVersions.nix_2_21 #nixVersions.latest #nixVersions.git + nixVersions.latest #nixVersions.latest #nixVersions.git nix-prefetch-git validatePkgConfig nix-output-monitor #nix-tree #nvd jq #gx - #alejandra + #nixfmt-rfc-style git # ❯❯❯ dev gnumake ps # ❯❯❯ d_build_related + # ❯❯ package manager + #dub # ❯❯ compiler #dmd #ldc #rund - # ❯❯ package manager - #dub # ❯❯ linker #lld #mold |