From 8c40be831a49e045a1a2ee7301ecaec455a0407f Mon Sep 17 00:00:00 2001 From: Andreas Herrmann Date: Thu, 9 Feb 2023 15:22:09 +0100 Subject: [PATCH 01/10] Start testing/java module --- testing/java/.bazelrc | 1 + testing/java/BUILD.bazel | 0 testing/java/MODULE.bazel | 12 ++++++++++++ testing/java/WORKSPACE | 6 ++++++ testing/java/WORKSPACE.bzlmod | 0 5 files changed, 19 insertions(+) create mode 120000 testing/java/.bazelrc create mode 100644 testing/java/BUILD.bazel create mode 100644 testing/java/MODULE.bazel create mode 100644 testing/java/WORKSPACE create mode 100644 testing/java/WORKSPACE.bzlmod diff --git a/testing/java/.bazelrc b/testing/java/.bazelrc new file mode 120000 index 00000000..c70ccda0 --- /dev/null +++ b/testing/java/.bazelrc @@ -0,0 +1 @@ +../../.bazelrc \ No newline at end of file diff --git a/testing/java/BUILD.bazel b/testing/java/BUILD.bazel new file mode 100644 index 00000000..e69de29b diff --git a/testing/java/MODULE.bazel b/testing/java/MODULE.bazel new file mode 100644 index 00000000..e7694c09 --- /dev/null +++ b/testing/java/MODULE.bazel @@ -0,0 +1,12 @@ +module(name = "rules_nixpkgs_java_testing") + +bazel_dep(name = "rules_nixpkgs_java") +local_path_override( + module_name = "rules_nixpkgs_java", + path = "../../toolchains/java", +) + +local_path_override( + module_name = "rules_nixpkgs_core", + path = "../../core", +) diff --git a/testing/java/WORKSPACE b/testing/java/WORKSPACE new file mode 100644 index 00000000..f4dd92ef --- /dev/null +++ b/testing/java/WORKSPACE @@ -0,0 +1,6 @@ +workspace(name = "rules_nixpkgs_java_testing") + +local_repository( + name = "rules_nixpkgs_java", + path = "../../toolchains/java", +) diff --git a/testing/java/WORKSPACE.bzlmod b/testing/java/WORKSPACE.bzlmod new file mode 100644 index 00000000..e69de29b From 39e423b9fc970010d8f90b884d85a6c8d7c0de0e Mon Sep 17 00:00:00 2001 From: Andreas Herrmann Date: Thu, 9 Feb 2023 16:11:18 +0100 Subject: [PATCH 02/10] Make Java toolchain registration optional `native.register_toolchains` can no longer be used in repository macros under bzlmod. Instead, toolchain registration has to occur in the MODULE.bazel file. --- README.md | 19 +++++++++++++++++-- toolchains/java/README.md | 19 +++++++++++++++++-- toolchains/java/java.bzl | 9 +++++++-- 3 files changed, 41 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index cc516f12..6fd36d49 100644 --- a/README.md +++ b/README.md @@ -614,7 +614,8 @@ Additional arguments to forward to the underlying repository rule.
 nixpkgs_java_configure(name, attribute_path, java_home_path, repository, repositories, nix_file,
                        nix_file_content, nix_file_deps, nixopts, fail_not_supported, quiet, toolchain,
-                       toolchain_name, toolchain_version, exec_constraints, target_constraints)
+                       register, toolchain_name, toolchain_version, exec_constraints,
+                       target_constraints)
 
Define a Java runtime provided by nixpkgs. @@ -840,7 +841,21 @@ default is False

-Create & register a Bazel toolchain based on the Java runtime. +Create a Bazel toolchain based on the Java runtime. + +

+ + + +register + + +optional. +default is None + +

+ +Register the created toolchain. Requires `toolchain` to be `True`. Defaults to the value of `toolchain`.

diff --git a/toolchains/java/README.md b/toolchains/java/README.md index 5886ee5f..7ee0c053 100644 --- a/toolchains/java/README.md +++ b/toolchains/java/README.md @@ -18,7 +18,8 @@
 nixpkgs_java_configure(name, attribute_path, java_home_path, repository, repositories, nix_file,
                        nix_file_content, nix_file_deps, nixopts, fail_not_supported, quiet, toolchain,
-                       toolchain_name, toolchain_version, exec_constraints, target_constraints)
+                       register, toolchain_name, toolchain_version, exec_constraints,
+                       target_constraints)
 
Define a Java runtime provided by nixpkgs. @@ -244,7 +245,21 @@ default is False

-Create & register a Bazel toolchain based on the Java runtime. +Create a Bazel toolchain based on the Java runtime. + +

+ + + +register + + +optional. +default is None + +

+ +Register the created toolchain. Requires `toolchain` to be `True`. Defaults to the value of `toolchain`.

diff --git a/toolchains/java/java.bzl b/toolchains/java/java.bzl index ed583881..3231b55e 100644 --- a/toolchains/java/java.bzl +++ b/toolchains/java/java.bzl @@ -114,6 +114,7 @@ def nixpkgs_java_configure( fail_not_supported = True, quiet = False, toolchain = False, + register = None, toolchain_name = None, toolchain_version = None, exec_constraints = None, @@ -181,7 +182,8 @@ def nixpkgs_java_configure( nixopts: See [`nixpkgs_package`](#nixpkgs_package-nixopts). fail_not_supported: See [`nixpkgs_package`](#nixpkgs_package-fail_not_supported). quiet: See [`nixpkgs_package`](#nixpkgs_package-quiet). - toolchain: Create & register a Bazel toolchain based on the Java runtime. + toolchain: Create a Bazel toolchain based on the Java runtime. + register: Register the created toolchain. Requires `toolchain` to be `True`. Defaults to the value of `toolchain`. toolchain_name: The name of the toolchain that can be used in --java_runtime_version. toolchain_version: The version of the toolchain that can be used in --java_runtime_version. exec_constraints: Constraints for the execution platform. @@ -233,4 +235,7 @@ def nixpkgs_java_configure( exec_constraints = exec_constraints, target_constraints = target_constraints, ) - native.register_toolchains("@{}_toolchain//:all".format(name)) + if register or register == None: + native.register_toolchains("@{}_toolchain//:all".format(name)) + elif register: + fail("toolchain must be True if register is set to True.") From 1872d56361f08c3fb371a9dddb2f8b950fea26f4 Mon Sep 17 00:00:00 2001 From: Andreas Herrmann Date: Thu, 9 Feb 2023 16:15:50 +0100 Subject: [PATCH 03/10] Enable java_test Configures a nixpkgs provided Java toolchain in both WORKSPACE and bzlmod mode. In bzlmod mode we need to import a range of transitive dependencies, like rules_java, platforms, or even remote_java_tools, because the Java toolchain is defined in an ad-hoc local module extension. These should no longer be needed at the use-site once nixpkgs_java_configure is a module extension in rules_nixpkgs_java. --- testing/java/MODULE.bazel | 14 +++++++++++ testing/java/WORKSPACE | 27 +++++++++++++++++++++ testing/java/flake.lock | 1 + testing/java/nixpkgs.nix | 1 + testing/java/non_module_deps.bzl | 11 +++++++++ testing/java/tests/BUILD.bazel | 16 ++++++++++++ testing/java/tests/JavaTest.java | 14 +++++++++++ testing/java/tests/nixpkgs_repositories.bzl | 27 +++++++++++++++++++++ 8 files changed, 111 insertions(+) create mode 120000 testing/java/flake.lock create mode 120000 testing/java/nixpkgs.nix create mode 100644 testing/java/non_module_deps.bzl create mode 100644 testing/java/tests/BUILD.bazel create mode 100644 testing/java/tests/JavaTest.java create mode 100644 testing/java/tests/nixpkgs_repositories.bzl diff --git a/testing/java/MODULE.bazel b/testing/java/MODULE.bazel index e7694c09..e05c5ac8 100644 --- a/testing/java/MODULE.bazel +++ b/testing/java/MODULE.bazel @@ -6,7 +6,21 @@ local_path_override( path = "../../toolchains/java", ) +bazel_dep(name = "rules_nixpkgs_core") local_path_override( module_name = "rules_nixpkgs_core", path = "../../core", ) + +# TODO[AH] Remove these transitive dependencies once nixpkgs_java_configure has +# become a module extension in rules_nixpkgs_java. +bazel_dep(name = "platforms", version = "0.0.4") +bazel_dep(name = "rules_java", version = "4.0.0") + +java_toolchains = use_extension("@rules_java//java:extensions.bzl", "toolchains") +use_repo(java_toolchains, "remote_java_tools") + +non_module_deps = use_extension("//:non_module_deps.bzl", "non_module_deps") +use_repo(non_module_deps, "nixpkgs") +use_repo(non_module_deps, "nixpkgs_java_runtime_toolchain") +register_toolchains("@nixpkgs_java_runtime_toolchain//:all") diff --git a/testing/java/WORKSPACE b/testing/java/WORKSPACE index f4dd92ef..1c5b52a6 100644 --- a/testing/java/WORKSPACE +++ b/testing/java/WORKSPACE @@ -4,3 +4,30 @@ local_repository( name = "rules_nixpkgs_java", path = "../../toolchains/java", ) + +local_repository( + name = "rules_nixpkgs_core", + path = "../../core", +) + +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") + +http_archive( + name = "bazel_skylib", + sha256 = "f24ab666394232f834f74d19e2ff142b0af17466ea0c69a3f4c276ee75f6efce", + urls = [ + "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.4.0/bazel-skylib-1.4.0.tar.gz", + "https://github.com/bazelbuild/bazel-skylib/releases/download/1.4.0/bazel-skylib-1.4.0.tar.gz", + ], +) + +load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace") + +bazel_skylib_workspace() + +load( + "//tests:nixpkgs_repositories.bzl", + "nixpkgs_repositories", +) + +nixpkgs_repositories(bzlmod = False) diff --git a/testing/java/flake.lock b/testing/java/flake.lock new file mode 120000 index 00000000..23b0a9b5 --- /dev/null +++ b/testing/java/flake.lock @@ -0,0 +1 @@ +../../flake.lock \ No newline at end of file diff --git a/testing/java/nixpkgs.nix b/testing/java/nixpkgs.nix new file mode 120000 index 00000000..ead0b005 --- /dev/null +++ b/testing/java/nixpkgs.nix @@ -0,0 +1 @@ +../../docs/nixpkgs.nix \ No newline at end of file diff --git a/testing/java/non_module_deps.bzl b/testing/java/non_module_deps.bzl new file mode 100644 index 00000000..1e758095 --- /dev/null +++ b/testing/java/non_module_deps.bzl @@ -0,0 +1,11 @@ +load( + "//tests:nixpkgs_repositories.bzl", + "nixpkgs_repositories", +) + +def _non_module_deps_impl(ctx): + nixpkgs_repositories(bzlmod = True) + +non_module_deps = module_extension( + implementation = _non_module_deps_impl, +) diff --git a/testing/java/tests/BUILD.bazel b/testing/java/tests/BUILD.bazel new file mode 100644 index 00000000..c695babd --- /dev/null +++ b/testing/java/tests/BUILD.bazel @@ -0,0 +1,16 @@ +load("@rules_java//java:defs.bzl", "java_test") +#load(":java-test.bzl", "java_runtime_test") + +package(default_testonly = 1) + +# Test nixpkgs_java_configure() by building some Java code. +java_test( + name = "java-test", + srcs = ["JavaTest.java"], + test_class = "JavaTest", +) + +# Test that nixpkgs_java_runtime is selected. +#java_runtime_test( +# name = "java-runtime", +#) diff --git a/testing/java/tests/JavaTest.java b/testing/java/tests/JavaTest.java new file mode 100644 index 00000000..ad5af5ba --- /dev/null +++ b/testing/java/tests/JavaTest.java @@ -0,0 +1,14 @@ +import static org.junit.Assert.assertEquals; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +@RunWith(JUnit4.class) +public final class JavaTest { + @Test + public void testHello() throws Exception { + System.out.println("Hello Java!"); + } +} diff --git a/testing/java/tests/nixpkgs_repositories.bzl b/testing/java/tests/nixpkgs_repositories.bzl new file mode 100644 index 00000000..5ce6d707 --- /dev/null +++ b/testing/java/tests/nixpkgs_repositories.bzl @@ -0,0 +1,27 @@ +load( + "@rules_nixpkgs_core//:nixpkgs.bzl", + "nixpkgs_git_repository", + "nixpkgs_local_repository", + "nixpkgs_package", +) +load( + "@rules_nixpkgs_java//:java.bzl", + "nixpkgs_java_configure", +) + +def nixpkgs_repositories(*, bzlmod): + nixpkgs_local_repository( + name = "nixpkgs", + nix_file = "//:nixpkgs.nix", + nix_file_deps = ["//:flake.lock"], + ) + + nixpkgs_java_configure( + name = "nixpkgs_java_runtime", + attribute_path = "jdk11.home", + repository = "@nixpkgs", + toolchain = True, + register = not bzlmod, + toolchain_name = "nixpkgs_java", + toolchain_version = "11", + ) From f774d595c7c1f31d2818e91e1d4e8a0ce29aab70 Mon Sep 17 00:00:00 2001 From: Andreas Herrmann Date: Thu, 9 Feb 2023 16:27:55 +0100 Subject: [PATCH 04/10] Enable java-runtime-test --- testing/java/MODULE.bazel | 3 +++ testing/java/tests/BUILD.bazel | 8 +++--- testing/java/tests/java-test.bzl | 46 ++++++++++++++++++++++++++++++++ 3 files changed, 53 insertions(+), 4 deletions(-) create mode 100644 testing/java/tests/java-test.bzl diff --git a/testing/java/MODULE.bazel b/testing/java/MODULE.bazel index e05c5ac8..92818dde 100644 --- a/testing/java/MODULE.bazel +++ b/testing/java/MODULE.bazel @@ -12,6 +12,8 @@ local_path_override( path = "../../core", ) +bazel_dep(name = "bazel_skylib", version = "1.0.3") + # TODO[AH] Remove these transitive dependencies once nixpkgs_java_configure has # become a module extension in rules_nixpkgs_java. bazel_dep(name = "platforms", version = "0.0.4") @@ -22,5 +24,6 @@ use_repo(java_toolchains, "remote_java_tools") non_module_deps = use_extension("//:non_module_deps.bzl", "non_module_deps") use_repo(non_module_deps, "nixpkgs") +use_repo(non_module_deps, "nixpkgs_java_runtime") use_repo(non_module_deps, "nixpkgs_java_runtime_toolchain") register_toolchains("@nixpkgs_java_runtime_toolchain//:all") diff --git a/testing/java/tests/BUILD.bazel b/testing/java/tests/BUILD.bazel index c695babd..c79a31c2 100644 --- a/testing/java/tests/BUILD.bazel +++ b/testing/java/tests/BUILD.bazel @@ -1,5 +1,5 @@ load("@rules_java//java:defs.bzl", "java_test") -#load(":java-test.bzl", "java_runtime_test") +load(":java-test.bzl", "java_runtime_test") package(default_testonly = 1) @@ -11,6 +11,6 @@ java_test( ) # Test that nixpkgs_java_runtime is selected. -#java_runtime_test( -# name = "java-runtime", -#) +java_runtime_test( + name = "java-runtime", +) diff --git a/testing/java/tests/java-test.bzl b/testing/java/tests/java-test.bzl new file mode 100644 index 00000000..c3b43fd3 --- /dev/null +++ b/testing/java/tests/java-test.bzl @@ -0,0 +1,46 @@ +load("@bazel_skylib//lib:unittest.bzl", "asserts", "unittest") + +def _java_runtime_test_impl(ctx): + env = unittest.begin(ctx) + + nixpkgs_java_runtime = ctx.attr._nixpkgs_java_runtime[platform_common.ToolchainInfo].java_runtime + + java_runtime = ctx.attr._java_runtime[java_common.JavaRuntimeInfo] + + asserts.equals( + env, + expected = nixpkgs_java_runtime.java_home, + actual = java_runtime.java_home, + msg = "Expected selected Java runtime JAVA_HOME to equal Nix provided JAVA_HOME.", + ) + asserts.equals( + env, + expected = nixpkgs_java_runtime.java_executable_exec_path, + actual = java_runtime.java_executable_exec_path, + msg = "Expected selected Java runtime java binary to equal Nix provided java.", + ) + + host_java_runtime = ctx.attr._host_java_runtime[java_common.JavaRuntimeInfo] + asserts.equals( + env, + expected = nixpkgs_java_runtime.java_home, + actual = host_java_runtime.java_home, + msg = "Expected selected host Java runtime JAVA_HOME to equal Nix provided JAVA_HOME.", + ) + asserts.equals( + env, + expected = nixpkgs_java_runtime.java_executable_exec_path, + actual = host_java_runtime.java_executable_exec_path, + msg = "Expected selected host Java runtime java binary to equal Nix provided java.", + ) + + return unittest.end(env) + +java_runtime_test = unittest.make( + _java_runtime_test_impl, + attrs = { + "_nixpkgs_java_runtime": attr.label(default = Label("@nixpkgs_java_runtime//:runtime")), + "_java_runtime": attr.label(default = Label("@bazel_tools//tools/jdk:current_java_runtime")), + "_host_java_runtime": attr.label(default = Label("@bazel_tools//tools/jdk:current_host_java_runtime")), + }, +) From 28d3f371ee5e71fee177f2c8091827b62c7a08f5 Mon Sep 17 00:00:00 2001 From: Andreas Herrmann Date: Thu, 9 Feb 2023 16:45:53 +0100 Subject: [PATCH 05/10] Remove duplicate Java tests --- toolchains/java/MODULE.bazel | 1 + toolchains/java/WORKSPACE | 8 ----- toolchains/java/tests/BUILD.bazel | 16 ---------- toolchains/java/tests/JavaTest.java | 14 --------- toolchains/java/tests/java-test.bzl | 46 ----------------------------- 5 files changed, 1 insertion(+), 84 deletions(-) delete mode 100644 toolchains/java/tests/BUILD.bazel delete mode 100644 toolchains/java/tests/JavaTest.java delete mode 100644 toolchains/java/tests/java-test.bzl diff --git a/toolchains/java/MODULE.bazel b/toolchains/java/MODULE.bazel index 934cee67..008d8f60 100644 --- a/toolchains/java/MODULE.bazel +++ b/toolchains/java/MODULE.bazel @@ -5,3 +5,4 @@ module( bazel_dep(name = "rules_nixpkgs_core", version = "0.9.0") bazel_dep(name = "rules_java", version = "4.0.0") +bazel_dep(name = "bazel_skylib", version = "1.0.3") diff --git a/toolchains/java/WORKSPACE b/toolchains/java/WORKSPACE index fd9f1d79..ccc6b774 100644 --- a/toolchains/java/WORKSPACE +++ b/toolchains/java/WORKSPACE @@ -28,11 +28,3 @@ load("@rules_nixpkgs_docs//:dependencies_2.bzl", "docs_dependencies_2") docs_dependencies_2() ### end generic dependencies for rendering documentation - -### dependencies for tests - -load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace") - -bazel_skylib_workspace() - -### end dependencies for tests diff --git a/toolchains/java/tests/BUILD.bazel b/toolchains/java/tests/BUILD.bazel deleted file mode 100644 index c79a31c2..00000000 --- a/toolchains/java/tests/BUILD.bazel +++ /dev/null @@ -1,16 +0,0 @@ -load("@rules_java//java:defs.bzl", "java_test") -load(":java-test.bzl", "java_runtime_test") - -package(default_testonly = 1) - -# Test nixpkgs_java_configure() by building some Java code. -java_test( - name = "java-test", - srcs = ["JavaTest.java"], - test_class = "JavaTest", -) - -# Test that nixpkgs_java_runtime is selected. -java_runtime_test( - name = "java-runtime", -) diff --git a/toolchains/java/tests/JavaTest.java b/toolchains/java/tests/JavaTest.java deleted file mode 100644 index ad5af5ba..00000000 --- a/toolchains/java/tests/JavaTest.java +++ /dev/null @@ -1,14 +0,0 @@ -import static org.junit.Assert.assertEquals; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - -@RunWith(JUnit4.class) -public final class JavaTest { - @Test - public void testHello() throws Exception { - System.out.println("Hello Java!"); - } -} diff --git a/toolchains/java/tests/java-test.bzl b/toolchains/java/tests/java-test.bzl deleted file mode 100644 index c3b43fd3..00000000 --- a/toolchains/java/tests/java-test.bzl +++ /dev/null @@ -1,46 +0,0 @@ -load("@bazel_skylib//lib:unittest.bzl", "asserts", "unittest") - -def _java_runtime_test_impl(ctx): - env = unittest.begin(ctx) - - nixpkgs_java_runtime = ctx.attr._nixpkgs_java_runtime[platform_common.ToolchainInfo].java_runtime - - java_runtime = ctx.attr._java_runtime[java_common.JavaRuntimeInfo] - - asserts.equals( - env, - expected = nixpkgs_java_runtime.java_home, - actual = java_runtime.java_home, - msg = "Expected selected Java runtime JAVA_HOME to equal Nix provided JAVA_HOME.", - ) - asserts.equals( - env, - expected = nixpkgs_java_runtime.java_executable_exec_path, - actual = java_runtime.java_executable_exec_path, - msg = "Expected selected Java runtime java binary to equal Nix provided java.", - ) - - host_java_runtime = ctx.attr._host_java_runtime[java_common.JavaRuntimeInfo] - asserts.equals( - env, - expected = nixpkgs_java_runtime.java_home, - actual = host_java_runtime.java_home, - msg = "Expected selected host Java runtime JAVA_HOME to equal Nix provided JAVA_HOME.", - ) - asserts.equals( - env, - expected = nixpkgs_java_runtime.java_executable_exec_path, - actual = host_java_runtime.java_executable_exec_path, - msg = "Expected selected host Java runtime java binary to equal Nix provided java.", - ) - - return unittest.end(env) - -java_runtime_test = unittest.make( - _java_runtime_test_impl, - attrs = { - "_nixpkgs_java_runtime": attr.label(default = Label("@nixpkgs_java_runtime//:runtime")), - "_java_runtime": attr.label(default = Label("@bazel_tools//tools/jdk:current_java_runtime")), - "_host_java_runtime": attr.label(default = Label("@bazel_tools//tools/jdk:current_host_java_runtime")), - }, -) From cdd88df4d416a0d2ccf0c500104dad00750ad3dc Mon Sep 17 00:00:00 2001 From: Andreas Herrmann Date: Thu, 9 Feb 2023 16:58:43 +0100 Subject: [PATCH 06/10] Capture java and testing/java on CI w/&w/o bzlmod --- .github/build-and-test | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/.github/build-and-test b/.github/build-and-test index ba65899c..19705dfb 100755 --- a/.github/build-and-test +++ b/.github/build-and-test @@ -27,12 +27,17 @@ trap on_exit EXIT if [[ ${BZLMOD_ENABLED-} = true ]]; then declare -ra build_dirs=( core + toolchains/java ) declare -ra test_dirs=( testing/core + testing/java ) + # Skip docs directories in bzlmod mode. + # Stardoc is not yet bzlmod compatible. declare -ra extra_flags=( --enable_bzlmod + --deleted_packages=docs ) else declare -ra build_dirs=( @@ -48,6 +53,7 @@ else toolchains/rust toolchains/nodejs testing/core + testing/java ) declare -ra extra_flags=( ) @@ -59,8 +65,17 @@ run_command() { echo "::group::Running \`bazel $1\` in $dir" + if [[ $dir != core ]]; then + declare -ra override_flags=( + --override_module=rules_nixpkgs_core=$SCRIPT_DIR/../core + ) + else + declare -ra override_flags=( + ) + fi + pushd $dir >/dev/null - if ! bazel $1 //... "${extra_flags[@]}" ; then + if ! bazel $1 //... "${extra_flags[@]}" "${override_flags[@]}"; then FAILURES+=( "$dir" ) fi bazel shutdown From 1c85f5739a4571526f76a82c93456c93942a58f5 Mon Sep 17 00:00:00 2001 From: Andreas Herrmann Date: Thu, 9 Feb 2023 17:29:45 +0100 Subject: [PATCH 07/10] Create a local registry for sub-modules --- .github/build-and-test | 13 +++---------- registry/README.md | 10 ++++++++++ registry/bazel_registry.json | 4 ++++ .../modules/rules_nixpkgs_core/0.9.0/MODULE.bazel | 1 + .../modules/rules_nixpkgs_core/0.9.0/source.json | 4 ++++ registry/modules/rules_nixpkgs_core/metadata.json | 6 ++++++ 6 files changed, 28 insertions(+), 10 deletions(-) create mode 100644 registry/README.md create mode 100644 registry/bazel_registry.json create mode 120000 registry/modules/rules_nixpkgs_core/0.9.0/MODULE.bazel create mode 100644 registry/modules/rules_nixpkgs_core/0.9.0/source.json create mode 100644 registry/modules/rules_nixpkgs_core/metadata.json diff --git a/.github/build-and-test b/.github/build-and-test index 19705dfb..33474af7 100755 --- a/.github/build-and-test +++ b/.github/build-and-test @@ -37,6 +37,8 @@ if [[ ${BZLMOD_ENABLED-} = true ]]; then # Stardoc is not yet bzlmod compatible. declare -ra extra_flags=( --enable_bzlmod + --registry=file://$SCRIPT_DIR/../registry + --registry=https://bcr.bazel.build --deleted_packages=docs ) else @@ -65,17 +67,8 @@ run_command() { echo "::group::Running \`bazel $1\` in $dir" - if [[ $dir != core ]]; then - declare -ra override_flags=( - --override_module=rules_nixpkgs_core=$SCRIPT_DIR/../core - ) - else - declare -ra override_flags=( - ) - fi - pushd $dir >/dev/null - if ! bazel $1 //... "${extra_flags[@]}" "${override_flags[@]}"; then + if ! bazel $1 //... "${extra_flags[@]}" ; then FAILURES+=( "$dir" ) fi bazel shutdown diff --git a/registry/README.md b/registry/README.md new file mode 100644 index 00000000..9f96eb9c --- /dev/null +++ b/registry/README.md @@ -0,0 +1,10 @@ +# Local Bazel Registry for rules\_nixpkgs modules + +This [local Bazel registry][registry] is only intended for testing and local +development purposes. The rules\_nixpkgs is split into multiple Bazel modules +that may depend on each other. Unfortunately, overrides such as +`local_path_override` are only allowed in the main module, and command-line +configuration like `--override_module` is difficult to configure correctly +since it does not support relative paths. Instead, we use a local registry. + +[registry]: https://bazel.build/external/registry diff --git a/registry/bazel_registry.json b/registry/bazel_registry.json new file mode 100644 index 00000000..dae3ff27 --- /dev/null +++ b/registry/bazel_registry.json @@ -0,0 +1,4 @@ +{ + "mirrors": [], + "module_base_path": ".." +} diff --git a/registry/modules/rules_nixpkgs_core/0.9.0/MODULE.bazel b/registry/modules/rules_nixpkgs_core/0.9.0/MODULE.bazel new file mode 120000 index 00000000..cdee8c79 --- /dev/null +++ b/registry/modules/rules_nixpkgs_core/0.9.0/MODULE.bazel @@ -0,0 +1 @@ +../../../../core/MODULE.bazel \ No newline at end of file diff --git a/registry/modules/rules_nixpkgs_core/0.9.0/source.json b/registry/modules/rules_nixpkgs_core/0.9.0/source.json new file mode 100644 index 00000000..d6f6ebe5 --- /dev/null +++ b/registry/modules/rules_nixpkgs_core/0.9.0/source.json @@ -0,0 +1,4 @@ +{ + "type": "local_path", + "path": "core" +} diff --git a/registry/modules/rules_nixpkgs_core/metadata.json b/registry/modules/rules_nixpkgs_core/metadata.json new file mode 100644 index 00000000..fede241d --- /dev/null +++ b/registry/modules/rules_nixpkgs_core/metadata.json @@ -0,0 +1,6 @@ +{ + "homepage": "", + "maintainers": [], + "versions": ["0.9.0"], + "yanked_versions": [] +} From a9847b790df43e7ca50b70c56d1ed3d269069aca Mon Sep 17 00:00:00 2001 From: Andreas Herrmann Date: Thu, 9 Feb 2023 18:01:01 +0100 Subject: [PATCH 08/10] Configure bzlmod in .bazelrc --- .bazelrc | 2 ++ .github/build-and-test | 7 +------ core/.bazelrc | 2 ++ toolchains/java/.bazelrc | 6 ++++++ 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/.bazelrc b/.bazelrc index 566dbb3c..3455684b 100644 --- a/.bazelrc +++ b/.bazelrc @@ -1,3 +1,5 @@ +build:bzlmod --enable_bzlmod + build --host_platform=@rules_nixpkgs_core//platforms:host # Using toolchain resolution can lead to spurious dependencies on diff --git a/.github/build-and-test b/.github/build-and-test index 33474af7..f1c867d8 100755 --- a/.github/build-and-test +++ b/.github/build-and-test @@ -33,13 +33,8 @@ if [[ ${BZLMOD_ENABLED-} = true ]]; then testing/core testing/java ) - # Skip docs directories in bzlmod mode. - # Stardoc is not yet bzlmod compatible. declare -ra extra_flags=( - --enable_bzlmod - --registry=file://$SCRIPT_DIR/../registry - --registry=https://bcr.bazel.build - --deleted_packages=docs + --config=bzlmod ) else declare -ra build_dirs=( diff --git a/core/.bazelrc b/core/.bazelrc index e488a9ab..cc17469b 100644 --- a/core/.bazelrc +++ b/core/.bazelrc @@ -1,3 +1,5 @@ +build:bzlmod --enable_bzlmod + build --host_platform=@rules_nixpkgs_core//platforms:host # User Configuration diff --git a/toolchains/java/.bazelrc b/toolchains/java/.bazelrc index 566dbb3c..a3a707ee 100644 --- a/toolchains/java/.bazelrc +++ b/toolchains/java/.bazelrc @@ -1,3 +1,9 @@ +build:bzlmod --enable_bzlmod +build:bzlmod --registry=file://%workspace%/../../registry +build:bzlmod --registry=https://bcr.bazel.build +# Skip docs directories in bzlmod mode. Stardoc is not yet bzlmod compatible. +build:bzlmod --deleted_packages=docs + build --host_platform=@rules_nixpkgs_core//platforms:host # Using toolchain resolution can lead to spurious dependencies on From c0b7523e9be96ddff74849339fce0cc1867cb926 Mon Sep 17 00:00:00 2001 From: Andreas Herrmann Date: Fri, 10 Feb 2023 11:11:05 +0100 Subject: [PATCH 09/10] Remove redundant imports --- testing/java/tests/nixpkgs_repositories.bzl | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/testing/java/tests/nixpkgs_repositories.bzl b/testing/java/tests/nixpkgs_repositories.bzl index 5ce6d707..ad5a4429 100644 --- a/testing/java/tests/nixpkgs_repositories.bzl +++ b/testing/java/tests/nixpkgs_repositories.bzl @@ -1,13 +1,5 @@ -load( - "@rules_nixpkgs_core//:nixpkgs.bzl", - "nixpkgs_git_repository", - "nixpkgs_local_repository", - "nixpkgs_package", -) -load( - "@rules_nixpkgs_java//:java.bzl", - "nixpkgs_java_configure", -) +load("@rules_nixpkgs_core//:nixpkgs.bzl", "nixpkgs_local_repository") +load("@rules_nixpkgs_java//:java.bzl", "nixpkgs_java_configure") def nixpkgs_repositories(*, bzlmod): nixpkgs_local_repository( From cfa77c9051f522bfb612ede69b99bb3d32e1c1d0 Mon Sep 17 00:00:00 2001 From: Andreas Herrmann Date: Mon, 13 Feb 2023 16:39:38 +0100 Subject: [PATCH 10/10] Fix missing word in registry readme --- registry/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/registry/README.md b/registry/README.md index 9f96eb9c..f6904729 100644 --- a/registry/README.md +++ b/registry/README.md @@ -1,8 +1,8 @@ # Local Bazel Registry for rules\_nixpkgs modules This [local Bazel registry][registry] is only intended for testing and local -development purposes. The rules\_nixpkgs is split into multiple Bazel modules -that may depend on each other. Unfortunately, overrides such as +development purposes. The rules\_nixpkgs repository is split into multiple +Bazel modules that may depend on each other. Unfortunately, overrides such as `local_path_override` are only allowed in the main module, and command-line configuration like `--override_module` is difficult to configure correctly since it does not support relative paths. Instead, we use a local registry.