From eee003f2085e9a1422d07fa34d901ba38f0bfc91 Mon Sep 17 00:00:00 2001 From: Simon Stewart Date: Fri, 13 Nov 2020 18:28:14 +0000 Subject: [PATCH 1/3] Introduce a deps and a setup macro This allows us to pull in dependencies that we may need to ensure that rules_jvm_external functions. At present, we use this to make sure we use `rules_java` for our own java targets. --- README.md | 8 ++++++++ WORKSPACE | 16 ++++++++++++---- private/tools/BUILD | 2 ++ private/tools/java/rules/jvm/external/BUILD | 2 ++ private/tools/java/rules/jvm/external/jar/BUILD | 2 ++ .../tools/java/rules/jvm/external/javadoc/BUILD | 2 ++ .../tools/java/rules/jvm/external/maven/BUILD | 2 ++ private/tools/java/rules/jvm/external/zip/BUILD | 2 ++ repositories.bzl | 10 ++++++++++ setup.bzl | 5 +++++ tests/com/jvm/external/BUILD | 2 ++ tests/com/jvm/external/jar/BUILD | 1 + tests/com/jvm/external/javadoc/BUILD | 2 ++ tests/integration/BUILD | 1 + tests/integration/java_export/BUILD | 1 + 15 files changed, 54 insertions(+), 4 deletions(-) create mode 100644 repositories.bzl create mode 100644 setup.bzl diff --git a/README.md b/README.md index 06b7c25c..fb6138eb 100644 --- a/README.md +++ b/README.md @@ -75,6 +75,14 @@ http_archive( url = "https://github.com/bazelbuild/rules_jvm_external/archive/%s.zip" % RULES_JVM_EXTERNAL_TAG, ) +load("@rules_jvm_external//:repositories.bzl", "rules_jvm_external_deps") + +rules_jvm_external_deps() + +load("@rules_jvm_external//:setup.bzl", "rules_jvm_external_setup") + +rules_jvm_external_setup() + load("@rules_jvm_external//:defs.bzl", "maven_install") maven_install( diff --git a/WORKSPACE b/WORKSPACE index 40884510..6677df24 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -51,8 +51,20 @@ http_archive( # dependencies. So, we omit them to keep the WORKSPACE file simpler. # https://skydoc.bazel.build/docs/getting_started_stardoc.html +load("//:repositories.bzl", "rules_jvm_external_deps") + +rules_jvm_external_deps() + +load("//:setup.bzl", "rules_jvm_external_setup") + +rules_jvm_external_setup() + +# Begin test dependencies + load("//:defs.bzl", "maven_install") +load("//:specs.bzl", "maven") + maven_install( name = "outdated", artifacts = [ @@ -63,10 +75,6 @@ maven_install( ], ) -# Begin test dependencies - -load("//:specs.bzl", "maven") - maven_install( artifacts = [ "com.google.guava:guava:27.0-jre", diff --git a/private/tools/BUILD b/private/tools/BUILD index fe6a120d..ebb6409e 100644 --- a/private/tools/BUILD +++ b/private/tools/BUILD @@ -1,3 +1,5 @@ +load("@rules_java//java:defs.bzl", "java_binary") + licenses(["notice"]) java_binary( diff --git a/private/tools/java/rules/jvm/external/BUILD b/private/tools/java/rules/jvm/external/BUILD index fe195205..08ffef58 100644 --- a/private/tools/java/rules/jvm/external/BUILD +++ b/private/tools/java/rules/jvm/external/BUILD @@ -1,3 +1,5 @@ +load("@rules_java//java:defs.bzl", "java_library", "java_test") + java_library( name = "byte-streams", srcs = ["ByteStreams.java"], diff --git a/private/tools/java/rules/jvm/external/jar/BUILD b/private/tools/java/rules/jvm/external/jar/BUILD index c43f2f68..b668cf1d 100644 --- a/private/tools/java/rules/jvm/external/jar/BUILD +++ b/private/tools/java/rules/jvm/external/jar/BUILD @@ -1,3 +1,5 @@ +load("@rules_java//java:defs.bzl", "java_binary") + java_binary( name = "MergeJars", srcs = glob(["*.java"]), diff --git a/private/tools/java/rules/jvm/external/javadoc/BUILD b/private/tools/java/rules/jvm/external/javadoc/BUILD index 1a675fc8..46b9e263 100644 --- a/private/tools/java/rules/jvm/external/javadoc/BUILD +++ b/private/tools/java/rules/jvm/external/javadoc/BUILD @@ -1,3 +1,5 @@ +load("@rules_java//java:defs.bzl", "java_binary") + java_binary( name = "javadoc", srcs = glob(["*.java"]), diff --git a/private/tools/java/rules/jvm/external/maven/BUILD b/private/tools/java/rules/jvm/external/maven/BUILD index f0da2474..51c26b02 100644 --- a/private/tools/java/rules/jvm/external/maven/BUILD +++ b/private/tools/java/rules/jvm/external/maven/BUILD @@ -1,3 +1,5 @@ +load("@rules_java//java:defs.bzl", "java_binary") + java_binary( name = "MavenPublisher", srcs = ["MavenPublisher.java"], diff --git a/private/tools/java/rules/jvm/external/zip/BUILD b/private/tools/java/rules/jvm/external/zip/BUILD index 58778d67..4e1207be 100644 --- a/private/tools/java/rules/jvm/external/zip/BUILD +++ b/private/tools/java/rules/jvm/external/zip/BUILD @@ -1,3 +1,5 @@ +load("@rules_java//java:defs.bzl", "java_library") + java_library( name = "zip", srcs = glob(["*.java"]), diff --git a/repositories.bzl b/repositories.bzl new file mode 100644 index 00000000..ff92f498 --- /dev/null +++ b/repositories.bzl @@ -0,0 +1,10 @@ +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") +load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe") + +def rules_jvm_external_deps(): + maybe( + http_archive, + name = "rules_java", + url = "https://github.com/bazelbuild/rules_java/releases/download/0.1.1/rules_java-0.1.1.tar.gz", + sha256 = "220b87d8cfabd22d1c6d8e3cdb4249abd4c93dcc152e0667db061fb1b957ee68", + ) diff --git a/setup.bzl b/setup.bzl new file mode 100644 index 00000000..07b946b5 --- /dev/null +++ b/setup.bzl @@ -0,0 +1,5 @@ +load("@rules_java//java:repositories.bzl", "rules_java_dependencies", "rules_java_toolchains") + +def rules_jvm_external_setup(): + rules_java_dependencies() + rules_java_toolchains() diff --git a/tests/com/jvm/external/BUILD b/tests/com/jvm/external/BUILD index edb843b8..0d591264 100644 --- a/tests/com/jvm/external/BUILD +++ b/tests/com/jvm/external/BUILD @@ -1,3 +1,5 @@ +load("@rules_java//java:defs.bzl", "java_test") + java_test( name = "ArtifactExclusionsTest", srcs = ["ArtifactExclusionsTest.java"], diff --git a/tests/com/jvm/external/jar/BUILD b/tests/com/jvm/external/jar/BUILD index 72c1d0b6..58ccde31 100644 --- a/tests/com/jvm/external/jar/BUILD +++ b/tests/com/jvm/external/jar/BUILD @@ -1,3 +1,4 @@ +load("@rules_java//java:defs.bzl", "java_test") load("//:defs.bzl", "artifact") java_test( diff --git a/tests/com/jvm/external/javadoc/BUILD b/tests/com/jvm/external/javadoc/BUILD index cd4f0f96..c564032f 100644 --- a/tests/com/jvm/external/javadoc/BUILD +++ b/tests/com/jvm/external/javadoc/BUILD @@ -1,3 +1,5 @@ +load("@rules_java//java:defs.bzl", "java_test") + java_test( name = "VersionTest", srcs = ["VersionTest.java"], diff --git a/tests/integration/BUILD b/tests/integration/BUILD index ae43f7f6..65467d2f 100644 --- a/tests/integration/BUILD +++ b/tests/integration/BUILD @@ -1,4 +1,5 @@ load("@bazel_skylib//rules:diff_test.bzl", "diff_test") +load("@rules_java//java:defs.bzl", "java_import") genquery( name = "testonly-deps", diff --git a/tests/integration/java_export/BUILD b/tests/integration/java_export/BUILD index 18dc8ef7..49117e0c 100644 --- a/tests/integration/java_export/BUILD +++ b/tests/integration/java_export/BUILD @@ -1,3 +1,4 @@ +load("@rules_java//java:defs.bzl", "java_library", "java_test") load("//:defs.bzl", "artifact") load("//private/rules:maven_project_jar.bzl", "maven_project_jar") From b7ffc39222cbc9b5d64beffc9b2a646b6a4350c4 Mon Sep 17 00:00:00 2001 From: Simon Stewart Date: Wed, 18 Nov 2020 13:22:37 +0000 Subject: [PATCH 2/3] Pin empty deps --- private/tools/BUILD | 2 -- private/tools/java/rules/jvm/external/BUILD | 2 -- .../tools/java/rules/jvm/external/jar/BUILD | 2 -- .../java/rules/jvm/external/javadoc/BUILD | 2 -- .../tools/java/rules/jvm/external/maven/BUILD | 2 -- .../tools/java/rules/jvm/external/zip/BUILD | 2 -- repositories.bzl | 18 +++++++++++------- rules_jvm_external_deps_install.json | 9 +++++++++ setup.bzl | 5 ++--- tests/com/jvm/external/BUILD | 2 -- tests/com/jvm/external/jar/BUILD | 1 - tests/com/jvm/external/javadoc/BUILD | 2 -- tests/integration/BUILD | 1 - tests/integration/java_export/BUILD | 1 - 14 files changed, 22 insertions(+), 29 deletions(-) create mode 100644 rules_jvm_external_deps_install.json diff --git a/private/tools/BUILD b/private/tools/BUILD index ebb6409e..fe6a120d 100644 --- a/private/tools/BUILD +++ b/private/tools/BUILD @@ -1,5 +1,3 @@ -load("@rules_java//java:defs.bzl", "java_binary") - licenses(["notice"]) java_binary( diff --git a/private/tools/java/rules/jvm/external/BUILD b/private/tools/java/rules/jvm/external/BUILD index 08ffef58..fe195205 100644 --- a/private/tools/java/rules/jvm/external/BUILD +++ b/private/tools/java/rules/jvm/external/BUILD @@ -1,5 +1,3 @@ -load("@rules_java//java:defs.bzl", "java_library", "java_test") - java_library( name = "byte-streams", srcs = ["ByteStreams.java"], diff --git a/private/tools/java/rules/jvm/external/jar/BUILD b/private/tools/java/rules/jvm/external/jar/BUILD index b668cf1d..c43f2f68 100644 --- a/private/tools/java/rules/jvm/external/jar/BUILD +++ b/private/tools/java/rules/jvm/external/jar/BUILD @@ -1,5 +1,3 @@ -load("@rules_java//java:defs.bzl", "java_binary") - java_binary( name = "MergeJars", srcs = glob(["*.java"]), diff --git a/private/tools/java/rules/jvm/external/javadoc/BUILD b/private/tools/java/rules/jvm/external/javadoc/BUILD index 46b9e263..1a675fc8 100644 --- a/private/tools/java/rules/jvm/external/javadoc/BUILD +++ b/private/tools/java/rules/jvm/external/javadoc/BUILD @@ -1,5 +1,3 @@ -load("@rules_java//java:defs.bzl", "java_binary") - java_binary( name = "javadoc", srcs = glob(["*.java"]), diff --git a/private/tools/java/rules/jvm/external/maven/BUILD b/private/tools/java/rules/jvm/external/maven/BUILD index 51c26b02..f0da2474 100644 --- a/private/tools/java/rules/jvm/external/maven/BUILD +++ b/private/tools/java/rules/jvm/external/maven/BUILD @@ -1,5 +1,3 @@ -load("@rules_java//java:defs.bzl", "java_binary") - java_binary( name = "MavenPublisher", srcs = ["MavenPublisher.java"], diff --git a/private/tools/java/rules/jvm/external/zip/BUILD b/private/tools/java/rules/jvm/external/zip/BUILD index 4e1207be..58778d67 100644 --- a/private/tools/java/rules/jvm/external/zip/BUILD +++ b/private/tools/java/rules/jvm/external/zip/BUILD @@ -1,5 +1,3 @@ -load("@rules_java//java:defs.bzl", "java_library") - java_library( name = "zip", srcs = glob(["*.java"]), diff --git a/repositories.bzl b/repositories.bzl index ff92f498..53840c18 100644 --- a/repositories.bzl +++ b/repositories.bzl @@ -1,10 +1,14 @@ -load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") -load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe") +load("//:defs.bzl", "maven_install") def rules_jvm_external_deps(): - maybe( - http_archive, - name = "rules_java", - url = "https://github.com/bazelbuild/rules_java/releases/download/0.1.1/rules_java-0.1.1.tar.gz", - sha256 = "220b87d8cfabd22d1c6d8e3cdb4249abd4c93dcc152e0667db061fb1b957ee68", + maven_install( + name = "rules_jvm_external_deps", + artifacts = [ + ], + maven_install_json = "@rules_jvm_external//:rules_jvm_external_deps_install.json", + repositories = [ + "https://repo1.maven.org/maven2", + "https://jcenter.bintray.com/", + "https://maven.google.com", + ], ) diff --git a/rules_jvm_external_deps_install.json b/rules_jvm_external_deps_install.json new file mode 100644 index 00000000..642d3e11 --- /dev/null +++ b/rules_jvm_external_deps_install.json @@ -0,0 +1,9 @@ +{ + "dependency_tree": { + "__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": 2914, + "conflict_resolution": {}, + "dependencies": [ + ], + "version": "0.1.0" + } +} diff --git a/setup.bzl b/setup.bzl index 07b946b5..db71070c 100644 --- a/setup.bzl +++ b/setup.bzl @@ -1,5 +1,4 @@ -load("@rules_java//java:repositories.bzl", "rules_java_dependencies", "rules_java_toolchains") +load("@rules_jvm_external_deps//:defs.bzl", "pinned_maven_install") def rules_jvm_external_setup(): - rules_java_dependencies() - rules_java_toolchains() + pinned_maven_install() diff --git a/tests/com/jvm/external/BUILD b/tests/com/jvm/external/BUILD index 0d591264..edb843b8 100644 --- a/tests/com/jvm/external/BUILD +++ b/tests/com/jvm/external/BUILD @@ -1,5 +1,3 @@ -load("@rules_java//java:defs.bzl", "java_test") - java_test( name = "ArtifactExclusionsTest", srcs = ["ArtifactExclusionsTest.java"], diff --git a/tests/com/jvm/external/jar/BUILD b/tests/com/jvm/external/jar/BUILD index 58ccde31..72c1d0b6 100644 --- a/tests/com/jvm/external/jar/BUILD +++ b/tests/com/jvm/external/jar/BUILD @@ -1,4 +1,3 @@ -load("@rules_java//java:defs.bzl", "java_test") load("//:defs.bzl", "artifact") java_test( diff --git a/tests/com/jvm/external/javadoc/BUILD b/tests/com/jvm/external/javadoc/BUILD index c564032f..cd4f0f96 100644 --- a/tests/com/jvm/external/javadoc/BUILD +++ b/tests/com/jvm/external/javadoc/BUILD @@ -1,5 +1,3 @@ -load("@rules_java//java:defs.bzl", "java_test") - java_test( name = "VersionTest", srcs = ["VersionTest.java"], diff --git a/tests/integration/BUILD b/tests/integration/BUILD index 65467d2f..ae43f7f6 100644 --- a/tests/integration/BUILD +++ b/tests/integration/BUILD @@ -1,5 +1,4 @@ load("@bazel_skylib//rules:diff_test.bzl", "diff_test") -load("@rules_java//java:defs.bzl", "java_import") genquery( name = "testonly-deps", diff --git a/tests/integration/java_export/BUILD b/tests/integration/java_export/BUILD index 49117e0c..18dc8ef7 100644 --- a/tests/integration/java_export/BUILD +++ b/tests/integration/java_export/BUILD @@ -1,4 +1,3 @@ -load("@rules_java//java:defs.bzl", "java_library", "java_test") load("//:defs.bzl", "artifact") load("//private/rules:maven_project_jar.bzl", "maven_project_jar") From 7631f36496d120c0c4ec016d51f732691b10d20a Mon Sep 17 00:00:00 2001 From: Simon Stewart Date: Wed, 18 Nov 2020 13:38:04 +0000 Subject: [PATCH 3/3] Allow repositories used by setup to be overridden --- README.md | 8 ++++++++ repositories.bzl | 14 ++++++++------ 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index fb6138eb..01f9e4b1 100644 --- a/README.md +++ b/README.md @@ -106,6 +106,14 @@ or environment variables. See the [Coursier documentation](https://get-coursier.io/docs/other-credentials.html#property-file) for more information. +`rules_jvm_external_setup` uses a default list of maven repositories to download + `rules_jvm_external`'s own dependencies from. Should you wish to change this, + use the `repositories` parameter: + + ```python +rules_jvm_external_setup(repositories = ["https://mycorp.com/artifacts"]) +``` + Next, reference the artifacts in the BUILD file with their versionless label: ```python diff --git a/repositories.bzl b/repositories.bzl index 53840c18..b03bbd34 100644 --- a/repositories.bzl +++ b/repositories.bzl @@ -1,14 +1,16 @@ load("//:defs.bzl", "maven_install") -def rules_jvm_external_deps(): +_DEFAULT_REPOSITORIES = [ + "https://repo1.maven.org/maven2", + "https://jcenter.bintray.com/", + "https://maven.google.com", +] + +def rules_jvm_external_deps(repositories = _DEFAULT_REPOSITORIES): maven_install( name = "rules_jvm_external_deps", artifacts = [ ], maven_install_json = "@rules_jvm_external//:rules_jvm_external_deps_install.json", - repositories = [ - "https://repo1.maven.org/maven2", - "https://jcenter.bintray.com/", - "https://maven.google.com", - ], + repositories = repositories, )