From 975f709a08807cd40c92209615ed4e62b39d499d Mon Sep 17 00:00:00 2001 From: Pavel Sobolev Date: Sun, 24 Sep 2023 15:45:09 +0300 Subject: [PATCH 1/4] mold: refactor --- pkgs/development/tools/mold/default.nix | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/pkgs/development/tools/mold/default.nix b/pkgs/development/tools/mold/default.nix index 84a7509c528c..97f9be38885b 100644 --- a/pkgs/development/tools/mold/default.nix +++ b/pkgs/development/tools/mold/default.nix @@ -1,18 +1,20 @@ { lib , stdenv , fetchFromGitHub +, nix-update-script + , cmake , mimalloc , ninja , openssl , zlib -, testers -, mold -, nix-update-script -, runCommandCC -, mold-wrapped -, hello + , buildPackages +, hello +, mold +, mold-wrapped +, runCommandCC +, testers , useMoldLinker }: @@ -22,8 +24,8 @@ stdenv.mkDerivation rec { src = fetchFromGitHub { owner = "rui314"; - repo = pname; - rev = "refs/tags/v${version}"; + repo = "mold"; + rev = "v${version}"; hash = "sha256-4W6quVSkxS2I6KEy3fVyBTypD0fg4EecgeEVM0Yw58s="; }; @@ -103,8 +105,8 @@ stdenv.mkDerivation rec { homepage = "https://github.com/rui314/mold"; changelog = "https://github.com/rui314/mold/releases/tag/v${version}"; license = licenses.mit; - maintainers = with maintainers; [ azahi nitsky paveloom ]; - mainProgram = "mold"; platforms = platforms.unix; + mainProgram = "mold"; + maintainers = with maintainers; [ azahi nitsky paveloom ]; }; } From 68e0cf87a3c67242a8531c3368e3966cf4440d9f Mon Sep 17 00:00:00 2001 From: Pavel Sobolev Date: Sun, 24 Sep 2023 15:51:04 +0300 Subject: [PATCH 2/4] mold: 2.1.0 -> 2.2.0 --- pkgs/development/tools/mold/default.nix | 6 ++---- pkgs/top-level/all-packages.nix | 4 +++- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pkgs/development/tools/mold/default.nix b/pkgs/development/tools/mold/default.nix index 97f9be38885b..6c236fabd3f7 100644 --- a/pkgs/development/tools/mold/default.nix +++ b/pkgs/development/tools/mold/default.nix @@ -6,7 +6,6 @@ , cmake , mimalloc , ninja -, openssl , zlib , buildPackages @@ -20,13 +19,13 @@ stdenv.mkDerivation rec { pname = "mold"; - version = "2.1.0"; + version = "2.2.0"; src = fetchFromGitHub { owner = "rui314"; repo = "mold"; rev = "v${version}"; - hash = "sha256-4W6quVSkxS2I6KEy3fVyBTypD0fg4EecgeEVM0Yw58s="; + hash = "sha256-ePX80hzzIzSJdGUX96GyxYWcdbXxXyuyNQqj5RDSkKU="; }; nativeBuildInputs = [ @@ -35,7 +34,6 @@ stdenv.mkDerivation rec { ]; buildInputs = [ - openssl zlib ] ++ lib.optionals (!stdenv.isDarwin) [ mimalloc diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index a0f111bcf7e3..b37015321bcd 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -19647,7 +19647,9 @@ with pkgs; modd = callPackage ../development/tools/modd { }; - mold = callPackage ../development/tools/mold { }; + mold = callPackage ../development/tools/mold { + stdenv = if stdenv.isDarwin then darwin.apple_sdk_11_0.llvmPackages_13.stdenv else stdenv; + }; mold-wrapped = wrapBintoolsWith { bintools = mold; From 3fce3b9d135b7ccd7672ee077bfc07f5b32fb0fb Mon Sep 17 00:00:00 2001 From: Pavel Sobolev Date: Mon, 25 Sep 2023 13:34:55 +0300 Subject: [PATCH 3/4] mold: use system libraries where possible --- pkgs/development/tools/mold/default.nix | 5 +++++ pkgs/top-level/all-packages.nix | 1 + 2 files changed, 6 insertions(+) diff --git a/pkgs/development/tools/mold/default.nix b/pkgs/development/tools/mold/default.nix index 6c236fabd3f7..2cbc016a2933 100644 --- a/pkgs/development/tools/mold/default.nix +++ b/pkgs/development/tools/mold/default.nix @@ -6,7 +6,9 @@ , cmake , mimalloc , ninja +, tbb , zlib +, zstd , buildPackages , hello @@ -34,13 +36,16 @@ stdenv.mkDerivation rec { ]; buildInputs = [ + tbb zlib + zstd ] ++ lib.optionals (!stdenv.isDarwin) [ mimalloc ]; cmakeFlags = [ "-DMOLD_USE_SYSTEM_MIMALLOC:BOOL=ON" + "-DMOLD_USE_SYSTEM_TBB:BOOL=ON" ]; env.NIX_CFLAGS_COMPILE = toString (lib.optionals stdenv.isDarwin [ diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b37015321bcd..76ff983a5ad4 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -19649,6 +19649,7 @@ with pkgs; mold = callPackage ../development/tools/mold { stdenv = if stdenv.isDarwin then darwin.apple_sdk_11_0.llvmPackages_13.stdenv else stdenv; + tbb = tbb_2021_8; }; mold-wrapped = wrapBintoolsWith { From e64d24fff4042d8ee1def320fee2eb1fd4253532 Mon Sep 17 00:00:00 2001 From: Artturin Date: Tue, 3 Oct 2023 08:36:22 +0300 Subject: [PATCH 4/4] stdenvAdapters.useMoldLinker: automatically add `allowedRequisites` Co-Authored-By: Pavel Sobolev --- pkgs/stdenv/adapters.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pkgs/stdenv/adapters.nix b/pkgs/stdenv/adapters.nix index 9b4ee16a003d..1024bf2ce4d8 100644 --- a/pkgs/stdenv/adapters.nix +++ b/pkgs/stdenv/adapters.nix @@ -201,7 +201,10 @@ rec { inherit bintools; }; allowedRequisites = - lib.mapNullable (rs: rs ++ [ bintools pkgs.mold (lib.getLib pkgs.mimalloc) (lib.getLib pkgs.openssl) ]) (stdenv.allowedRequisites or null); + (lib.optional (stdenv.allowedRequisites or null != null) stdenv.allowedRequisites) + ++ [ bintools pkgs.mold ] + # need to `outputSpecified = false` to make getLib work + ++ (builtins.map (p: lib.getLib (p // { outputSpecified = false; })) pkgs.mold.buildInputs); # gcc >12.1.0 supports '-fuse-ld=mold' # the wrap ld above in bintools supports gcc <12.1.0 and shouldn't harm >12.1.0 # https://github.com/rui314/mold#how-to-use