From 14dcb2c929304b1c6d9c36ea38f3b0ad72750f4f Mon Sep 17 00:00:00 2001 From: Yves-Stan Le Cornec Date: Mon, 13 Jun 2022 11:35:18 +0200 Subject: [PATCH 1/6] bazel_4: wraps bazel to add default runtime dependencies to PATH Bazel requires basic runtime dependencies in the PATH for repository rules and genrules. When `which` is missing in particular, it can lead to misleading error messages. --- pkgs/development/tools/build-managers/bazel/bazel_4/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/tools/build-managers/bazel/bazel_4/default.nix b/pkgs/development/tools/build-managers/bazel/bazel_4/default.nix index 56a4d5b3b5a0..3b492848fc15 100644 --- a/pkgs/development/tools/build-managers/bazel/bazel_4/default.nix +++ b/pkgs/development/tools/build-managers/bazel/bazel_4/default.nix @@ -591,6 +591,7 @@ stdenv.mkDerivation rec { # The binary _must_ exist with this naming if your project contains a .bazelversion # file. cp ./bazel_src/scripts/packages/bazel.sh $out/bin/bazel + wrapProgram $out/bin/bazel $wrapperfile --suffix PATH : ${defaultShellPath} mv ./bazel_src/output/bazel $out/bin/bazel-${version}-${system}-${arch} mkdir $out/share From aa06cc8b9a038e5913e49801442a2bd2fdf331ec Mon Sep 17 00:00:00 2001 From: Yves-Stan Le Cornec Date: Mon, 13 Jun 2022 11:35:54 +0200 Subject: [PATCH 2/6] bazel_5: wraps bazel to add default runtime dependencies to PATH Bazel requires basic runtime dependencies in the PATH for repository rules and genrules. When `which` is missing in particular, it can lead to misleading error messages. --- pkgs/development/tools/build-managers/bazel/bazel_5/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/tools/build-managers/bazel/bazel_5/default.nix b/pkgs/development/tools/build-managers/bazel/bazel_5/default.nix index d0b71f3760c8..9ca0098575be 100644 --- a/pkgs/development/tools/build-managers/bazel/bazel_5/default.nix +++ b/pkgs/development/tools/build-managers/bazel/bazel_5/default.nix @@ -586,6 +586,7 @@ stdenv.mkDerivation rec { # The binary _must_ exist with this naming if your project contains a .bazelversion # file. cp ./bazel_src/scripts/packages/bazel.sh $out/bin/bazel + wrapProgram $out/bin/bazel $wrapperfile --suffix PATH : ${defaultShellPath} mv ./bazel_src/output/bazel $out/bin/bazel-${version}-${system}-${arch} mkdir $out/share @@ -662,4 +663,3 @@ stdenv.mkDerivation rec { dontStrip = true; dontPatchELF = true; } - From 934ad0d729ba3fbec6cf4d78dc600510ded30fab Mon Sep 17 00:00:00 2001 From: Yves-Stan Le Cornec Date: Fri, 24 Jun 2022 17:23:11 +0200 Subject: [PATCH 3/6] bazel_4: remove unnecessary buildInputs from tests. Now that PATH dependencies are provided via a wrapper, these buildInputs become unnecessary --- pkgs/development/tools/build-managers/bazel/bazel_4/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/tools/build-managers/bazel/bazel_4/default.nix b/pkgs/development/tools/build-managers/bazel/bazel_4/default.nix index 3b492848fc15..0737c71f01df 100644 --- a/pkgs/development/tools/build-managers/bazel/bazel_4/default.nix +++ b/pkgs/development/tools/build-managers/bazel/bazel_4/default.nix @@ -257,7 +257,7 @@ stdenv.mkDerivation rec { runLocal = name: attrs: script: let attrs' = removeAttrs attrs [ "buildInputs" ]; - buildInputs = [ python3 which ] ++ (attrs.buildInputs or []); + buildInputs = attrs.buildInputs or []; in runCommandCC name ({ inherit buildInputs; From ad5f4abb9c9782a4dc9dea01119c1f221f97d0fa Mon Sep 17 00:00:00 2001 From: Yves-Stan Le Cornec Date: Fri, 24 Jun 2022 17:26:05 +0200 Subject: [PATCH 4/6] bazel_5: remove unnecessary buildInputs from tests Now that PATH dependencies are provided via a wrapper, these buildInputs become unnecessary --- pkgs/development/tools/build-managers/bazel/bazel_5/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/tools/build-managers/bazel/bazel_5/default.nix b/pkgs/development/tools/build-managers/bazel/bazel_5/default.nix index 9ca0098575be..b9364812bd3b 100644 --- a/pkgs/development/tools/build-managers/bazel/bazel_5/default.nix +++ b/pkgs/development/tools/build-managers/bazel/bazel_5/default.nix @@ -219,7 +219,7 @@ stdenv.mkDerivation rec { runLocal = name: attrs: script: let attrs' = removeAttrs attrs [ "buildInputs" ]; - buildInputs = [ python3 which ] ++ (attrs.buildInputs or []); + buildInputs = attrs.buildInputs or []; in runCommandCC name ({ inherit buildInputs; From 384035c4cfa09eadc8053fa69a6283752089402c Mon Sep 17 00:00:00 2001 From: Yves-Stan Le Cornec Date: Fri, 24 Jun 2022 17:34:47 +0200 Subject: [PATCH 5/6] bazel_4: use correct bazel version for tests `bazel_self` is the current package. If we do not specify it explicitly when defining tests then Bazel 3 is used by default. --- .../tools/build-managers/bazel/bazel_4/default.nix | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pkgs/development/tools/build-managers/bazel/bazel_4/default.nix b/pkgs/development/tools/build-managers/bazel/bazel_4/default.nix index 0737c71f01df..aa9794b5869c 100644 --- a/pkgs/development/tools/build-managers/bazel/bazel_4/default.nix +++ b/pkgs/development/tools/build-managers/bazel/bazel_4/default.nix @@ -323,13 +323,13 @@ stdenv.mkDerivation rec { in (if !stdenv.hostPlatform.isDarwin then { # `extracted` doesn’t work on darwin - shebang = callPackage ../shebang-test.nix { inherit runLocal extracted bazelTest distDir; }; + shebang = callPackage ../shebang-test.nix { inherit runLocal extracted bazelTest distDir; bazel = bazel_self; }; } else {}) // { - bashTools = callPackage ../bash-tools-test.nix { inherit runLocal bazelTest distDir; }; - cpp = callPackage ../cpp-test.nix { inherit runLocal bazelTest bazel-examples distDir; }; - java = callPackage ../java-test.nix { inherit runLocal bazelTest bazel-examples distDir; }; - protobuf = callPackage ../protobuf-test.nix { inherit runLocal bazelTest distDir; }; - pythonBinPath = callPackage ../python-bin-path-test.nix { inherit runLocal bazelTest distDir; }; + bashTools = callPackage ../bash-tools-test.nix { inherit runLocal bazelTest distDir; bazel = bazel_self; }; + cpp = callPackage ../cpp-test.nix { inherit runLocal bazelTest bazel-examples distDir; bazel = bazel_self; }; + java = callPackage ../java-test.nix { inherit runLocal bazelTest bazel-examples distDir; bazel = bazel_self; }; + protobuf = callPackage ../protobuf-test.nix { inherit runLocal bazelTest distDir; bazel = bazel_self; }; + pythonBinPath = callPackage ../python-bin-path-test.nix { inherit runLocal bazelTest distDir; bazel = bazel_self; }; bashToolsWithNixHacks = callPackage ../bash-tools-test.nix { inherit runLocal bazelTest distDir; bazel = bazelWithNixHacks; }; From c6909daf0e014994c4cb2dd48e2cfc6772249385 Mon Sep 17 00:00:00 2001 From: Yves-Stan Le Cornec Date: Fri, 24 Jun 2022 17:37:20 +0200 Subject: [PATCH 6/6] bazel_5: use correct bazel version for tests `bazel_self` is the current package. If we do not specify it explicitly when defining tests then Bazel 3 is used by default. --- .../tools/build-managers/bazel/bazel_5/default.nix | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pkgs/development/tools/build-managers/bazel/bazel_5/default.nix b/pkgs/development/tools/build-managers/bazel/bazel_5/default.nix index b9364812bd3b..c9c435a0b34d 100644 --- a/pkgs/development/tools/build-managers/bazel/bazel_5/default.nix +++ b/pkgs/development/tools/build-managers/bazel/bazel_5/default.nix @@ -285,13 +285,13 @@ stdenv.mkDerivation rec { in (if !stdenv.hostPlatform.isDarwin then { # `extracted` doesn’t work on darwin - shebang = callPackage ../shebang-test.nix { inherit runLocal extracted bazelTest distDir; }; + shebang = callPackage ../shebang-test.nix { inherit runLocal extracted bazelTest distDir; bazel = bazel_self;}; } else {}) // { - bashTools = callPackage ../bash-tools-test.nix { inherit runLocal bazelTest distDir; }; - cpp = callPackage ../cpp-test.nix { inherit runLocal bazelTest bazel-examples distDir; }; - java = callPackage ../java-test.nix { inherit runLocal bazelTest bazel-examples distDir; }; - protobuf = callPackage ../protobuf-test.nix { inherit runLocal bazelTest distDir; }; - pythonBinPath = callPackage ../python-bin-path-test.nix { inherit runLocal bazelTest distDir; }; + bashTools = callPackage ../bash-tools-test.nix { inherit runLocal bazelTest distDir; bazel = bazel_self;}; + cpp = callPackage ../cpp-test.nix { inherit runLocal bazelTest bazel-examples distDir; bazel = bazel_self;}; + java = callPackage ../java-test.nix { inherit runLocal bazelTest bazel-examples distDir; bazel = bazel_self;}; + protobuf = callPackage ../protobuf-test.nix { inherit runLocal bazelTest distDir; bazel = bazel_self; }; + pythonBinPath = callPackage ../python-bin-path-test.nix { inherit runLocal bazelTest distDir; bazel = bazel_self;}; bashToolsWithNixHacks = callPackage ../bash-tools-test.nix { inherit runLocal bazelTest distDir; bazel = bazelWithNixHacks; };