diff options
Diffstat (limited to 'nix-overlays')
| -rw-r--r-- | nix-overlays/README | 28 | ||||
| -rw-r--r-- | nix-overlays/dmd/binary.nix | 19 | ||||
| -rw-r--r-- | nix-overlays/dmd/default.nix | 6 | ||||
| -rw-r--r-- | nix-overlays/dmd/generic.nix | 74 | ||||
| -rw-r--r-- | nix-overlays/dmd/package.nix | 5 | ||||
| -rw-r--r-- | nix-overlays/dtools/default.nix | 52 | ||||
| -rw-r--r-- | nix-overlays/dtools/disabled-tests.diff | 11 | ||||
| -rw-r--r-- | nix-overlays/dtools/fix-ldc-arm64.diff | 102 | ||||
| -rw-r--r-- | nix-overlays/dtools/package.nix | 49 | ||||
| -rw-r--r-- | nix-overlays/dub/package.nix | 35 | ||||
| -rw-r--r-- | nix-overlays/ldc/bootstrap.nix | 36 | ||||
| -rw-r--r-- | nix-overlays/ldc/package.nix | 139 |
12 files changed, 367 insertions, 189 deletions
diff --git a/nix-overlays/README b/nix-overlays/README index c593dc5..34d4a68 100644 --- a/nix-overlays/README +++ b/nix-overlays/README @@ -4,7 +4,7 @@ #+FILETAGS: :dlang:build:tools: #+AUTHOR: Ralph Amissah #+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] -#+COPYRIGHT: Copyright (C) 2015 - 2025 Ralph Amissah +#+COPYRIGHT: Copyright (C) 2015 (continuously updated, current 2026) Ralph Amissah #+LANGUAGE: en #+STARTUP: content hideblocks hidestars noindent entitiespretty @@ -16,11 +16,11 @@ compiler and build tools: ldc, dub and dtools, than exist in nixpkgs at the time of publishing, in some cases with additional fixes. nix overlays for (updates nixpkgs, more recent versions of): - - ldc ( 1.30.0 -> 1.40.0 ) - - dub ( 1.23.0 -> 1.38.1 ) [for nix versions 1.31.0 ... 1.33.0 broken] - - dtools ( 2.095.1 -> 2.103.1 ) + - ldc ( 1.30.0 -> 1.43.0 ) + - dub ( 1.23.0 -> 1.41.0 ) [for nix versions 1.31.0 ... 1.33.0 broken] + - dtools ( 2.095.1 -> 2.112.1 ) - - dmd ( 2.106.1 -> 2.109.1 ) + - dmd ( 2.106.1 -> 2.112.1 ) - gdc [not yet available] dlang-nix-flakes.org --❯ @@ -47,26 +47,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.40.0 ) +*** ldc OK ✓ ( 1.30.0 -> 1.43.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.40.0.tar.gz + nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.43.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.1 ) +*** dmd OK ✓ ( 2.100.2 -> 2.112.1 ) - https://dlang.org/ - https://wiki.dlang.org/LDC - https://github.com/dlang/dmd - https://github.com/dlang/dmd/tags - nix-prefetch-url --unpack https://github.com/dlang/dmd/archive/refs/tags/v2.109.1.tar.gz + nix-prefetch-url --unpack https://github.com/dlang/dmd/archive/refs/tags/v2.112.1.tar.gz - https://github.com/dlang/dmd/pulls - version in nixpkgs: @@ -88,13 +88,13 @@ not yet provided in nixpkgs with gcc12, no attempt made - https://github.com/D-Programming-GDC/gdc ** build tool -*** dub ( 1.23.0 -> 1.38.1 ) +*** dub ( 1.23.0 -> 1.41.0 ) - https://code.dlang.org/packages/dub - https://github.com/dlang/dub - https://github.com/dlang/dub/releases - nix-prefetch-url --unpack https://github.com/dlang/dub/archive/refs/tags/v1.38.1.tar.gz + nix-prefetch-url --unpack https://github.com/dlang/dub/archive/refs/tags/v1.41.0.tar.gz - https://github.com/dlang/dub/issues - version in nixpkgs: @@ -102,19 +102,19 @@ not yet provided in nixpkgs with gcc12, no attempt made - dub nixpkg overlay is updated and runs most dub tests correctly -- dub OK ✓ ( 1.30.0 -> 1.38.1 ) +- dub OK ✓ ( 1.30.0 -> 1.41.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.112.1 ) - 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.112.1.tar.gz - https://github.com/dlang/tools/issues - version in nixpkgs diff --git a/nix-overlays/dmd/binary.nix b/nix-overlays/dmd/binary.nix index 3a5d6b7..e53ccb4 100644 --- a/nix-overlays/dmd/binary.nix +++ b/nix-overlays/dmd/binary.nix @@ -1,5 +1,15 @@ -{ lib, stdenv, fetchurl, curl, tzdata, autoPatchelfHook, fixDarwinDylibNames, glibc -, version, hashes }: +{ + lib, + stdenv, + fetchurl, + curl, + tzdata, + autoPatchelfHook, + fixDarwinDylibNames, + glibc, + version, + hashes, +}: let inherit (stdenv) hostPlatform; @@ -72,6 +82,9 @@ stdenv.mkDerivation { license = licenses.boost; maintainers = [ maintainers.lionello ]; homepage = "https://dlang.org/"; - platforms = [ "x86_64-darwin" "i686-linux" "x86_64-linux" ]; + platforms = [ + "i686-linux" + "x86_64-linux" + ]; }; } diff --git a/nix-overlays/dmd/default.nix b/nix-overlays/dmd/default.nix index b5268b7..8375c13 100644 --- a/nix-overlays/dmd/default.nix +++ b/nix-overlays/dmd/default.nix @@ -1,5 +1 @@ -import ./generic.nix { - version = "2.109.1"; - dmdHash = "sha256-3nCDPZnb4eQZmhYYxcH6qOmsP8or0KYuzAa5g/C9xdU="; - phobosHash = "sha256-73I0k7tCBwe5tl4K6uMs3/nT2JTZ2SppFYzmokS4W5Y="; -} +import ./package.nix diff --git a/nix-overlays/dmd/generic.nix b/nix-overlays/dmd/generic.nix index 22f7fa8..bfe24b4 100644 --- a/nix-overlays/dmd/generic.nix +++ b/nix-overlays/dmd/generic.nix @@ -1,28 +1,29 @@ -{ 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, + callPackage, + targetPackages, + fetchpatch, + bash, + installShellFiles, + git, + unzip, + dmdBootstrap ? callPackage ./bootstrap.nix { }, + dmdBin ? "${dmdBootstrap}/bin", }: let @@ -30,17 +31,15 @@ let name = "dmd.conf"; text = (lib.generators.toINI { } { Environment = { - DFLAGS = ''-I@out@/include/dmd -L-L@out@/lib -fPIC ${lib.optionalString (!targetPackages.stdenv.cc.isClang) "-L--export-dynamic"}''; + DFLAGS = ''-I@out@/include/dmd -L-L@out@/lib -fPIC ${ + lib.optionalString (!targetPackages.stdenv.cc.isClang) "-L--export-dynamic" + }''; }; }); }; - bits = builtins.toString stdenv.hostPlatform.parsed.cpu.bits; - osname = - if stdenv.hostPlatform.isDarwin then - "osx" - else - stdenv.hostPlatform.parsed.kernel.name; + bits = toString stdenv.hostPlatform.parsed.cpu.bits; + 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,7 +96,6 @@ stdenv.mkDerivation (finalAttrs: { rm dmd/compiler/test/runnable/gdb4149.d rm dmd/compiler/test/runnable/gdb4181.d rm dmd/compiler/test/compilable/ddocYear.d - rm dmd/compiler/test/fail_compilation/needspkgmod.d # Disable tests that rely on objdump whitespace until fixed upstream: # https://issues.dlang.org/show_bug.cgi?id=23317 @@ -109,9 +107,9 @@ stdenv.mkDerivation (finalAttrs: { substituteInPlace dmd/compiler/test/dshell/test6952.d --replace-fail "/usr/bin/env bash" "${bash}/bin/bash" '' + lib.optionalString stdenv.hostPlatform.isLinux '' substituteInPlace phobos/std/socket.d --replace-fail "assert(ih.addrList[0] == 0x7F_00_00_01);" "" - '' + lib.optionalString stdenv.hostPlatform.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 @@ -124,8 +122,6 @@ stdenv.mkDerivation (finalAttrs: { buildInputs = [ curl tzdata - # ] ++ lib.optionals stdenv.hostPlatform.isDarwin [] - # Foundation ]; nativeCheckInputs = [ @@ -176,6 +172,7 @@ stdenv.mkDerivation (finalAttrs: { NIX_ENFORCE_PURITY= \ make -C phobos unittest -j$checkJobs $checkFlags \ + DISABLED_TESTS=std/datetime/timezone \ DFLAGS="-version=TZDatabaseDir -version=LibcurlPath -J$PWD" runHook postCheck @@ -222,7 +219,10 @@ stdenv.mkDerivation (finalAttrs: { license = licenses.boost; mainProgram = "dmd"; maintainers = with maintainers; [ lionello dukc jtbx ]; - platforms = [ "x86_64-linux" "i686-linux" "x86_64-darwin" ]; + platforms = [ + "x86_64-linux" + "i686-linux" + ]; # 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..1813e46 --- /dev/null +++ b/nix-overlays/dmd/package.nix @@ -0,0 +1,5 @@ +import ./generic.nix { + version = "2.112.1"; + dmdHash = "sha256-UqNNUGoGmOV0lGNCGaFk8HbOE01qD55WuJ8NyQzqLJs="; + phobosHash = "sha256-CNvDSlerOXh6Qn060MNaSF1IIcbrcZzljyIxkm+TQQ0="; +} 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..79eb1cb --- /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..1c650a6 --- /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..12f4086 --- /dev/null +++ b/nix-overlays/dtools/package.nix @@ -0,0 +1,49 @@ +{ + lib, + stdenv, + fetchFromGitHub, + ldc, + curl, +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "dtools"; + version = "2.112.1"; + + src = fetchFromGitHub { + owner = "dlang"; + repo = "tools"; + rev = "v${finalAttrs.version}"; + hash = "sha256-WHgV33fu1YhRQCERVatqXKEqmfHlUvZ4IXhga/yOQ3w="; + name = "dtools"; + }; + + patches = [ + # Disable failing tests + ./disabled-tests.diff + # Fix LDC arm64 build + ./fix-ldc-arm64.diff + ]; + + nativeBuildInputs = [ ldc ]; + buildInputs = [ curl ]; + + makeFlags = [ + "CC=${stdenv.cc}/bin/cc" + "DMD=${ldc.out}/bin/ldmd2" + "INSTALL_DIR=$(out)" + ]; + + enableParallelBuilding = true; + + doCheck = true; + checkTarget = "test_rdmd"; + + meta = with lib; { + description = "Ancillary tools for the D programming language"; + homepage = "https://github.com/dlang/tools"; + license = licenses.boost; + maintainers = with maintainers; [ jtbx ]; + platforms = platforms.unix; + }; +}) diff --git a/nix-overlays/dub/package.nix b/nix-overlays/dub/package.nix index f13adec..c10fff5 100644 --- a/nix-overlays/dub/package.nix +++ b/nix-overlays/dub/package.nix @@ -1,18 +1,19 @@ -{ lib -, stdenv -, fetchFromGitHub -, curl -, ldc -, dcompiler ? ldc -, libevent -, rsync +{ + lib, + stdenv, + fetchFromGitHub, + curl, + ldc, + dcompiler ? ldc, + libevent, + rsync, }: assert dcompiler != null; stdenv.mkDerivation (finalAttrs: { pname = "dub"; - version = "1.38.1"; + version = "1.41.0"; enableParallelBuilding = true; @@ -20,14 +21,18 @@ stdenv.mkDerivation (finalAttrs: { owner = "dlang"; repo = "dub"; rev = "v${finalAttrs.version}"; - hash = "sha256-8Lr/0sx4SKwU1aNOxZArta0RXpDM+EWl29ZsPDdPWFo="; + hash = "sha256-86TzaRdu+CFM0Ld2fXxjaUUT9dl37MYPdmsvxE4ZUkE="; }; postPatch = '' patchShebangs test ''; - nativeBuildInputs = [ dcompiler libevent rsync ]; + nativeBuildInputs = [ + dcompiler + libevent + rsync + ]; buildInputs = [ curl ]; preBuild = '' @@ -69,6 +74,7 @@ stdenv.mkDerivation (finalAttrs: { 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 + rm -rf test/issue2698-cimportpaths-broken-with-dmd-ldc # added to build v1.40.0 ./test/run-unittest.sh runHook postCheck @@ -86,6 +92,11 @@ stdenv.mkDerivation (finalAttrs: { license = licenses.mit; mainProgram = "dub"; maintainers = with maintainers; [ jtbx ]; - platforms = [ "x86_64-linux" "i686-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; + platforms = [ + "x86_64-linux" + "i686-linux" + "aarch64-linux" + "aarch64-darwin" + ]; }; }) diff --git a/nix-overlays/ldc/bootstrap.nix b/nix-overlays/ldc/bootstrap.nix index d81e5a4..03e7ad4 100644 --- a/nix-overlays/ldc/bootstrap.nix +++ b/nix-overlays/ldc/bootstrap.nix @@ -1,16 +1,24 @@ -{ lib, stdenv, fetchurl, curl, tzdata, autoPatchelfHook, fixDarwinDylibNames, libxml2 }: +{ + 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"; + version = "1.42.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="; + # Get these from `nix store prefetch-file https://github.com/ldc-developers/ldc/releases/download/v1.42.0/ldc2-1.41.0-osx-x86_64.tar.xz` etc.. + linux-x86_64 = "sha256-p7yclWE49VjK35yWI1L1nUHIDfbrOuP4A58lvhSmkwM="; + linux-aarch64 = "sha256-aHcHw+IP+RBSjrLZLyepjLCWAoTeOwJua/IChKwchRE="; + osx-arm64 = "sha256-emjiHFMFdmp09HNsyJGnlC23hCqSJmIyCVBLyFxwE4I="; }; in stdenv.mkDerivation { pname = "ldc-bootstrap"; @@ -43,8 +51,18 @@ in stdenv.mkDerivation { 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 ]; + license = with licenses; [ + bsd3 + boost + mit + ncsa + gpl2Plus + ]; maintainers = with maintainers; [ lionello ]; - platforms = [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin" ]; + platforms = [ + "x86_64-linux" + "aarch64-linux" + "aarch64-darwin" + ]; }; } diff --git a/nix-overlays/ldc/package.nix b/nix-overlays/ldc/package.nix index c20084c..6554874 100644 --- a/nix-overlays/ldc/package.nix +++ b/nix-overlays/ldc/package.nix @@ -1,26 +1,27 @@ -{ lib -, stdenv -, fetchFromGitHub -, cmake -, ninja -, llvm_19 -, curl -, tzdata -, lit -, gdb -, unzip -, darwin -, callPackage -, makeWrapper -, runCommand -, writeText -, targetPackages - -, ldcBootstrap ? callPackage ./bootstrap.nix { } +{ + lib, + stdenv, + fetchFromGitHub, + callPackage, + makeWrapper, + removeReferencesTo, + runCommand, + writeText, + targetPackages, + cmake, + ninja, + llvm_22, + curl, + tzdata, + lit, + gdb, + unzip, + + ldcBootstrap ? callPackage ./bootstrap.nix { }, }: let - pathConfig = runCommand "ldc-lib-paths" {} '' + pathConfig = runCommand "ldc-lib-paths" { } '' mkdir $out echo ${tzdata}/share/zoneinfo/ > $out/TZDatabaseDirFile echo ${curl.out}/lib/libcurl${stdenv.hostPlatform.extensions.sharedLibrary} > $out/LibcurlPathFile @@ -30,13 +31,13 @@ in stdenv.mkDerivation (finalAttrs: { pname = "ldc"; - version = "1.40.0"; + version = "1.43.0"; src = fetchFromGitHub { owner = "ldc-developers"; repo = "ldc"; rev = "v${finalAttrs.version}"; - hash = "sha256-LT85DlAebecPpBUgZP0ayKTVrTUqN6DMJVEWTatLOxY="; + hash = "sha256-ZMYAg3WTTp09yVRSZEE+eRuVgEJSFUGHYM3u5Hfmo3o="; fetchSubmodules = true; }; @@ -62,9 +63,14 @@ stdenv.mkDerivation (finalAttrs: { ''; nativeBuildInputs = [ - cmake ldcBootstrap lit lit.python llvm_19.dev makeWrapper ninja unzip - ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ - darwin.apple_sdk.frameworks.Foundation + cmake + ldcBootstrap + lit + lit.python + llvm_22.dev + makeWrapper + ninja + unzip ] ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [ # https://github.com/NixOS/nixpkgs/pull/36378#issuecomment-385034818 gdb @@ -106,8 +112,7 @@ stdenv.mkDerivation (finalAttrs: { ''; # https://github.com/ldc-developers/ldc/issues/2497#issuecomment-459633746 - additionalExceptions = lib.optionalString stdenv.hostPlatform.isDarwin - "|druntime-test-shared"; + additionalExceptions = lib.optionalString stdenv.hostPlatform.isDarwin "|druntime-test-shared"; checkPhase = '' # Build default lib test runners @@ -135,46 +140,64 @@ stdenv.mkDerivation (finalAttrs: { --set-default CC ${targetPackages.stdenv.cc}/bin/cc ''; + preFixup = '' + find $out/bin -type f -exec ${removeReferencesTo}/bin/remove-references-to -t ${ldcBootstrap} '{}' + + ''; + + disallowedReferences = [ ldcBootstrap ]; + 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 ]; + 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" ]; + platforms = [ + "x86_64-linux" + "i686-linux" + "aarch64-linux" + "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"]; + 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" ]; + }; }; - }; }) |
