diff --git a/.gitignore b/.gitignore index 72ed83afd..97c7c57a6 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ bazel-* *.pyc .ijwb /.bazelrc.user +MODULE.bazel.lock diff --git a/MODULE.bazel b/MODULE.bazel new file mode 100644 index 000000000..b354e361c --- /dev/null +++ b/MODULE.bazel @@ -0,0 +1,189 @@ +module( + name = "copybara", + version = "0", + compatibility_level = 0, +) + +bazel_dep(name = "bazel_skylib", version = "1.5.0") +bazel_dep(name = "buildifier_prebuilt", version = "6.4.0") +bazel_dep(name = "platforms", version = "0.0.8") +bazel_dep(name = "rules_java", version = "7.5.0") +bazel_dep(name = "rules_jvm_external", version = "6.0") +bazel_dep(name = "rules_license", version = "0.0.8") +bazel_dep(name = "rules_pkg", version = "0.10.1") +bazel_dep(name = "rules_python", version = "0.31.0") + +non_module_deps = use_extension("//:repositories.bzl", "non_module_deps") +use_repo(non_module_deps, "JCommander", "io_bazel") + +maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven") +maven.install( + name = "copybara_maven", + artifacts = [ + "com.github.stephenc.jcip:jcip-annotations:1.0-1", + "com.google.auto.service:auto-service-annotations:1.1.1", + "com.google.auto.service:auto-service:1.1.1", + "com.google.auto.value:auto-value-annotations:1.10.2", + "com.google.auto.value:auto-value:1.10.2", + "com.google.auto:auto-common:1.2.2", + "com.google.code.findbugs:jsr305:3.0.2", + "com.google.code.gson:gson:2.10.1", + "com.google.errorprone:error_prone_type_annotations:2.20.0", + "com.google.flogger:flogger-system-backend:0.7.4", + "com.google.flogger:flogger:0.7.4", + "com.google.flogger:google-extensions:0.7.4", + "com.google.guava:failureaccess:1.0.1", + "com.google.guava:guava-testlib:33.0.0-jre", + "com.google.guava:guava:33.0.0-jre", + "com.google.http-client:google-http-client-gson:1.43.3", + "com.google.http-client:google-http-client-test:1.43.3", + "com.google.http-client:google-http-client:1.43.3", + "com.google.jimfs:jimfs:1.2", + "com.google.re2j:re2j:1.7", + "com.google.testparameterinjector:test-parameter-injector:1.8", + "com.google.truth.extensions:truth-java8-extension:1.3.0", + "com.google.truth:truth:1.3.0", + "com.googlecode.java-diff-utils:diffutils:1.3.0", + "com.ryanharter.auto.value:auto-value-gson-extension:1.3.1", + "com.ryanharter.auto.value:auto-value-gson-factory:1.3.1", + "com.ryanharter.auto.value:auto-value-gson-runtime:1.3.1", + "com.sun.mail:javax.mail:1.5.6", + "commons-codec:commons-codec:1.16.0", + "junit:junit:4.13.2", + "net.bytebuddy:byte-buddy-agent:1.14.5", + "net.bytebuddy:byte-buddy:1.14.5", + "org.apache.commons:commons-compress:1.25.0", + "org.apache.tomcat:tomcat-annotations-api:8.0.5", + "org.apache.velocity:velocity:1.7", + "org.jsoup:jsoup:1.16.1", + "org.mockito:mockito-core:4.5.1", + "org.objenesis:objenesis:1.0", + "org.tomlj:tomlj:1.1.1", + ], + fail_if_repin_required = True, + repositories = [ + "https://repo1.maven.org/maven2", + "https://maven.google.com", + ], +) +use_repo(maven, "copybara_maven") + +# Copied from bazelbuild/bazel/MODULE.bazel, has to be kept in sync +maven.install( + artifacts = [ + "com.beust:jcommander:1.82", + "com.github.ben-manes.caffeine:caffeine:3.0.5", + "com.github.kevinstern:software-and-algorithms:1.0", + "com.github.stephenc.jcip:jcip-annotations:1.0-1", + "com.google.api-client:google-api-client-gson:1.35.2", + "com.google.api-client:google-api-client:1.35.2", + "com.google.auth:google-auth-library-credentials:1.6.0", + "com.google.auth:google-auth-library-oauth2-http:1.6.0", + "com.google.auto.service:auto-service-annotations:1.0.1", + "com.google.auto.service:auto-service:1.0", + "com.google.auto.value:auto-value-annotations:1.9", + "com.google.auto.value:auto-value:1.8.2", + "com.google.auto:auto-common:1.2.1", + "com.google.code.findbugs:jsr305:3.0.2", + "com.google.code.gson:gson:2.9.0", + "com.google.code.java-allocation-instrumenter:java-allocation-instrumenter:3.3.0", + "com.google.errorprone:error_prone_annotation:2.23.0", + "com.google.errorprone:error_prone_annotations:2.23.0", + "com.google.errorprone:error_prone_check_api:2.23.0", + "com.google.errorprone:error_prone_core:2.23.0", + "com.google.errorprone:error_prone_type_annotations:2.23.0", + "com.google.flogger:flogger-system-backend:0.5.1", + "com.google.flogger:flogger:0.5.1", + "com.google.flogger:google-extensions:0.5.1", + "com.google.guava:failureaccess:1.0.1", + "com.google.guava:guava:33.0.0-jre", + "com.google.http-client:google-http-client-gson:1.42.0", + "com.google.http-client:google-http-client:1.42.0", + "com.google.j2objc:j2objc-annotations:1.3", + "com.google.turbine:turbine:0.5.0", + "com.ryanharter.auto.value:auto-value-gson-extension:1.3.1", + "com.ryanharter.auto.value:auto-value-gson-runtime:1.3.1", + "com.ryanharter.auto.value:auto-value-gson-factory:1.3.1", + "com.squareup:javapoet:1.12.0", + "commons-collections:commons-collections:3.2.2", + "commons-lang:commons-lang:2.6", + "io.github.java-diff-utils:java-diff-utils:4.12", + "io.grpc:grpc-api:1.48.1", + "io.grpc:grpc-auth:1.48.1", + "io.grpc:grpc-context:1.48.1", + "io.grpc:grpc-core:1.48.1", + "io.grpc:grpc-netty:1.48.1", + "io.grpc:grpc-protobuf-lite:1.48.1", + "io.grpc:grpc-protobuf:1.48.1", + "io.grpc:grpc-stub:1.48.1", + "io.netty:netty-buffer:4.1.93.Final", + "io.netty:netty-codec-http2:4.1.93.Final", + "io.netty:netty-codec-http:4.1.93.Final", + "io.netty:netty-codec:4.1.93.Final", + "io.netty:netty-common:4.1.93.Final", + "io.netty:netty-handler-proxy:4.1.93.Final", + "io.netty:netty-handler:4.1.93.Final", + "io.netty:netty-resolver-dns:4.1.93.Final", + "io.netty:netty-resolver:4.1.93.Final", + "io.netty:netty-tcnative-boringssl-static:jar:linux-aarch_64:2.0.56.Final", + "io.netty:netty-tcnative-boringssl-static:jar:linux-x86_64:2.0.56.Final", + "io.netty:netty-tcnative-boringssl-static:jar:osx-aarch_64:2.0.56.Final", + "io.netty:netty-tcnative-boringssl-static:jar:osx-x86_64:2.0.56.Final", + "io.netty:netty-tcnative-boringssl-static:jar:windows-x86_64:2.0.56.Final", + "io.netty:netty-tcnative-classes:2.0.56.Final", + "io.netty:netty-transport-classes-epoll:4.1.93.Final", + "io.netty:netty-transport-classes-kqueue:4.1.93.Final", + "io.netty:netty-transport-native-epoll:jar:linux-aarch_64:4.1.93.Final", + "io.netty:netty-transport-native-epoll:jar:linux-x86_64:4.1.93.Final", + "io.netty:netty-transport-native-kqueue:jar:osx-aarch_64:4.1.93.Final", + "io.netty:netty-transport-native-kqueue:jar:osx-x86_64:4.1.93.Final", + "io.netty:netty-transport-native-unix-common:4.1.93.Final", + "io.netty:netty-transport-native-unix-common:jar:linux-aarch_64:4.1.93.Final", + "io.netty:netty-transport-native-unix-common:jar:linux-x86_64:4.1.93.Final", + "io.netty:netty-transport-native-unix-common:jar:osx-aarch_64:4.1.93.Final", + "io.netty:netty-transport-native-unix-common:jar:osx-x86_64:4.1.93.Final", + "io.netty:netty-transport:4.1.93.Final", + "io.reactivex.rxjava3:rxjava:3.1.2", + "it.unimi.dsi:fastutil:7.2.1", + "javax.activation:javax.activation-api:1.2.0", + "javax.annotation:javax.annotation-api:1.3.2", + "javax.inject:javax.inject:1", + "net.bytebuddy:byte-buddy-agent:1.14.5", + "net.bytebuddy:byte-buddy:1.14.5", + "org.apache.commons:commons-compress:1.20", + "org.apache.commons:commons-pool2:2.8.0", + "org.apache.tomcat:tomcat-annotations-api:8.0.5", + "org.apache.velocity:velocity:1.7", + "org.checkerframework:checker-qual:3.19.0", + "org.ow2.asm:asm-analysis:9.2", + "org.ow2.asm:asm-commons:9.2", + "org.ow2.asm:asm-tree:9.2", + "org.ow2.asm:asm-util:9.2", + "org.ow2.asm:asm:9.2", + "org.pcollections:pcollections:3.1.4", + "org.threeten:threeten-extra:1.5.0", + "org.tukaani:xz:1.9", + "org.yaml:snakeyaml:1.28", + "tools.profiler:async-profiler:3.0", + # The following jars are for testing. + # junit is not test only due to //src/java_tools/junitrunner/java/com/google/testing/junit/junit4:runner, + # and hamcrest is a dependency of junit. + "junit:junit:4.13.2", + "org.hamcrest:hamcrest-core:1.3", + ], + excluded_artifacts = [ + # org.apache.httpcomponents and org.eclipse.jgit:org.eclipse.jgit + # require java.security.jgss module to be embedded in the Bazel binary. + "org.apache.httpcomponents:httpclient", + "org.apache.httpcomponents:httpcore", + "org.eclipse.jgit:org.eclipse.jgit", + # We build protobuf Java library from source, exclude protobuf jars to be safe. + "com.google.protobuf:protobuf-java", + "com.google.protobuf:protobuf-javalite", + ], + repositories = [ + "https://repo1.maven.org/maven2", + ], + strict_visibility = True, +) +use_repo(maven, "maven") diff --git a/WORKSPACE b/WORKSPACE index c2d38a891..eeefd30fa 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -25,3 +25,11 @@ copybara_maven_repositories() load("//:repositories.go.bzl", "copybara_go_repositories") copybara_go_repositories() + +load("@buildifier_prebuilt//:deps.bzl", "buildifier_prebuilt_deps") + +buildifier_prebuilt_deps() + +load("@buildifier_prebuilt//:defs.bzl", "buildifier_prebuilt_register_toolchains") + +buildifier_prebuilt_register_toolchains() diff --git a/WORKSPACE.bzlmod b/WORKSPACE.bzlmod new file mode 100644 index 000000000..de26d58bd --- /dev/null +++ b/WORKSPACE.bzlmod @@ -0,0 +1 @@ +# When bzlmod is enabled this makes sure nothing from the legacy WORKSPACE is loaded diff --git a/java/com/google/copybara/buildozer/testing/BUILD b/java/com/google/copybara/buildozer/testing/BUILD index 77f4bda9e..fd1612285 100644 --- a/java/com/google/copybara/buildozer/testing/BUILD +++ b/java/com/google/copybara/buildozer/testing/BUILD @@ -21,7 +21,7 @@ licenses(["notice"]) genrule( name = "normalised_buildozer", testonly = 1, - srcs = ["@buildtools//buildozer"], + srcs = ["@buildifier_prebuilt//:buildozer"], outs = ["buildozer"], cmd = "cp $(SRCS) $@", ) @@ -29,7 +29,7 @@ genrule( genrule( name = "normalised_buildifier", testonly = 1, - srcs = ["@buildtools//buildifier"], + srcs = ["@buildifier_prebuilt//:buildifier"], outs = ["buildifier"], cmd = "cp $(SRCS) $@", ) diff --git a/javatests/com/google/copybara/format/BUILD b/javatests/com/google/copybara/format/BUILD index 8bb1772ec..22d1461ed 100644 --- a/javatests/com/google/copybara/format/BUILD +++ b/javatests/com/google/copybara/format/BUILD @@ -21,7 +21,7 @@ licenses(["notice"]) genrule( name = "normalised_buildifier", testonly = 1, - srcs = ["@buildtools//buildifier"], + srcs = ["@buildifier_prebuilt//:buildifier"], outs = ["buildifier"], cmd = "cp $(SRCS) $@", ) diff --git a/javatests/com/google/copybara/onboard/BUILD b/javatests/com/google/copybara/onboard/BUILD index ee650260d..c55e8f29e 100644 --- a/javatests/com/google/copybara/onboard/BUILD +++ b/javatests/com/google/copybara/onboard/BUILD @@ -23,7 +23,7 @@ licenses(["notice"]) genrule( name = "normalised_buildifier", testonly = 1, - srcs = ["@buildtools//buildifier"], + srcs = ["@buildifier_prebuilt//:buildifier"], outs = ["buildifier"], cmd = "cp $(SRCS) $@", ) diff --git a/repositories.bzl b/repositories.bzl index 4840101b2..465328d80 100644 --- a/repositories.bzl +++ b/repositories.bzl @@ -15,7 +15,6 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe") load("//third_party:bazel.bzl", "bazel_sha256", "bazel_version") -load("//third_party:bazel_buildtools.bzl", "buildtools_sha256", "buildtools_version") load("//third_party:bazel_skylib.bzl", "skylib_sha256", "skylib_version") def copybara_repositories(): @@ -39,27 +38,6 @@ def copybara_repositories(): sha256 = RULES_JVM_EXTERNAL_SHA, strip_prefix = "rules_jvm_external-%s" % RULES_JVM_EXTERNAL_TAG, url = "https://github.com/bazelbuild/rules_jvm_external/archive/%s.zip" % RULES_JVM_EXTERNAL_TAG, - patches = ["@io_bazel//third_party:rules_jvm_external_6.0.patch"], - patch_args = ["-p1"], - ) - - # LICENSE: The Apache Software License, Version 2.0 - maybe( - http_archive, - name = "io_bazel", - sha256 = bazel_sha256, - strip_prefix = "bazel-" + bazel_version, - url = "https://github.com/bazelbuild/bazel/archive/" + bazel_version + ".zip", - ) - - # LICENSE: The Apache Software License, Version 2.0 - # Buildifier and friends: - maybe( - http_archive, - name = "buildtools", - sha256 = buildtools_sha256, - strip_prefix = "buildtools-" + buildtools_version, - url = "https://github.com/bazelbuild/buildtools/archive/" + buildtools_version + ".zip", ) # LICENSE: The Apache Software License, Version 2.0 @@ -173,3 +151,29 @@ def copybara_repositories(): ], ) + # LICENSE: MIT + maybe( + http_archive, + name = "buildifier_prebuilt", + sha256 = "8ada9d88e51ebf5a1fdff37d75ed41d51f5e677cdbeafb0a22dda54747d6e07e", + strip_prefix = "buildifier-prebuilt-6.4.0", + urls = [ + "http://github.com/keith/buildifier-prebuilt/archive/6.4.0.tar.gz", + ], + ) + + _non_module_deps(None) + +def _non_module_deps(_): + # LICENSE: The Apache Software License, Version 2.0 + maybe( + http_archive, + name = "io_bazel", + sha256 = bazel_sha256, + strip_prefix = "bazel-" + bazel_version, + url = "https://github.com/bazelbuild/bazel/archive/" + bazel_version + ".zip", + ) + + +non_module_deps = module_extension(implementation = _non_module_deps) + diff --git a/repositories.maven.bzl b/repositories.maven.bzl index 9391127d7..c52808dff 100644 --- a/repositories.maven.bzl +++ b/repositories.maven.bzl @@ -12,9 +12,9 @@ # See the License for the specific language governing permissions and # limitations under the License. -load("@rules_jvm_external//:defs.bzl", "DEFAULT_REPOSITORY_NAME", "maven_install") -load("@rules_jvm_external//:specs.bzl", "maven") load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe") +load("@rules_jvm_external//:defs.bzl", "maven_install") +load("@rules_jvm_external//:specs.bzl", "maven") COPYBARA_MAVEN_ARTIFACTS = [ maven.artifact("com.github.stephenc.jcip", "jcip-annotations", "1.0-1"), @@ -66,7 +66,13 @@ COPYBARA_MAVEN_ARTIFACT_ADDITIONAL_REPOSITORIES = [ def copybara_maven_repositories(): maybe( maven_install, - name = DEFAULT_REPOSITORY_NAME, + name = "copybara_maven", + artifacts = COPYBARA_MAVEN_ARTIFACTS, + repositories = COPYBARA_MAVEN_ARTIFACT_ADDITIONAL_REPOSITORIES + ["https://repo1.maven.org/maven2"], + ) + maybe( + maven_install, + name = "maven", artifacts = COPYBARA_MAVEN_ARTIFACTS, repositories = COPYBARA_MAVEN_ARTIFACT_ADDITIONAL_REPOSITORIES + ["https://repo1.maven.org/maven2"], ) diff --git a/third_party/BUILD b/third_party/BUILD index b5ac1bd13..e481125c0 100644 --- a/third_party/BUILD +++ b/third_party/BUILD @@ -15,8 +15,8 @@ package( java_library( name = "guava", exports = [ - "@maven//:com_google_guava_failureaccess", - "@maven//:com_google_guava_guava", + "@copybara_maven//:com_google_guava_failureaccess", + "@copybara_maven//:com_google_guava_guava", ], ) @@ -24,21 +24,21 @@ java_library( name = "guava_testlib", testonly = 1, exports = [ - "@maven//:com_google_guava_guava_testlib", + "@copybara_maven//:com_google_guava_guava_testlib", ], ) java_library( name = "apache_commons_compress", exports = [ - "@maven//:org_apache_commons_commons_compress", + "@copybara_maven//:org_apache_commons_commons_compress", ], ) java_library( name = "autocommon", exports = [ - "@maven//:com_google_auto_auto_common", + "@copybara_maven//:com_google_auto_auto_common", ], ) @@ -46,8 +46,8 @@ java_plugin( name = "autovalue_plugin", processor_class = "com.google.auto.value.processor.AutoValueProcessor", deps = [ - "@maven//:com_google_auto_value_auto_value", - "@maven//:com_google_auto_value_auto_value_annotations", + "@copybara_maven//:com_google_auto_value_auto_value", + "@copybara_maven//:com_google_auto_value_auto_value_annotations", ], ) @@ -59,8 +59,8 @@ java_library( # TODO(matvore): What to export to give access to @AutoValue annotation # without depending on the processor at runtime? exports = [ - "@maven//:com_google_auto_value_auto_value", - "@maven//:com_google_auto_value_auto_value_annotations", + "@copybara_maven//:com_google_auto_value_auto_value", + "@copybara_maven//:com_google_auto_value_auto_value_annotations", ], ) @@ -74,7 +74,7 @@ java_library( java_library( name = "jimfs", exports = [ - "@maven//:com_google_jimfs_jimfs", + "@copybara_maven//:com_google_jimfs_jimfs", ], ) @@ -82,7 +82,7 @@ java_library( name = "junit", testonly = 1, exports = [ - "@maven//:junit_junit", + "@copybara_maven//:junit_junit", ], ) @@ -90,14 +90,14 @@ java_library( name = "testparameterinjector", testonly = 1, exports = [ - "@maven//:com_google_testparameterinjector_test_parameter_injector", + "@copybara_maven//:com_google_testparameterinjector_test_parameter_injector", ], ) java_library( name = "re2j", exports = [ - "@maven//:com_google_re2j_re2j", + "@copybara_maven//:com_google_re2j_re2j", ], ) @@ -112,16 +112,16 @@ java_library( name = "truth", testonly = 1, exports = [ - "@maven//:com_google_truth_extensions_truth_java8_extension", - "@maven//:com_google_truth_truth", - "@maven//:com_googlecode_java_diff_utils_diffutils", + "@copybara_maven//:com_google_truth_extensions_truth_java8_extension", + "@copybara_maven//:com_google_truth_truth", + "@copybara_maven//:com_googlecode_java_diff_utils_diffutils", ], ) java_library( name = "google_code_gson", exports = [ - "@maven//:com_google_code_gson_gson", + "@copybara_maven//:com_google_code_gson_gson", ], ) @@ -129,9 +129,9 @@ java_library( name = "google_http_client", exports = [ ":google_code_gson", - "@maven//:com_google_http_client_google_http_client", - "@maven//:com_google_http_client_google_http_client_gson", - "@maven//:commons_codec_commons_codec", + "@copybara_maven//:com_google_http_client_google_http_client", + "@copybara_maven//:com_google_http_client_google_http_client_gson", + "@copybara_maven//:commons_codec_commons_codec", ], ) @@ -139,7 +139,7 @@ java_library( name = "google_http_client_test", testonly = 1, exports = [ - "@maven//:com_google_http_client_google_http_client_test", + "@copybara_maven//:com_google_http_client_google_http_client_test", ], ) @@ -147,19 +147,19 @@ java_library( name = "mockito", testonly = 1, exports = [ - "@maven//:org_mockito_mockito_core", + "@copybara_maven//:org_mockito_mockito_core", ], runtime_deps = [ - "@maven//:net_bytebuddy_byte_buddy", - "@maven//:net_bytebuddy_byte_buddy_agent", - "@maven//:org_objenesis_objenesis", + "@copybara_maven//:net_bytebuddy_byte_buddy", + "@copybara_maven//:net_bytebuddy_byte_buddy_agent", + "@copybara_maven//:org_objenesis_objenesis", ], ) java_library( name = "jsr305", exports = [ - "@maven//:com_google_code_findbugs_jsr305", + "@copybara_maven//:com_google_code_findbugs_jsr305", ], ) @@ -176,10 +176,10 @@ java_library( java_library( name = "flogger", exports = [ - "@maven//:com_google_flogger_flogger", + "@copybara_maven//:com_google_flogger_flogger", ], runtime_deps = [ - "@maven//:com_google_flogger_flogger_system_backend", + "@copybara_maven//:com_google_flogger_flogger_system_backend", ], ) @@ -201,28 +201,28 @@ java_library( java_library( name = "tomlj", exports = [ - "@maven//:org_tomlj_tomlj", + "@copybara_maven//:org_tomlj_tomlj", ], ) java_library( name = "jsoup", exports = [ - "@maven//:org_jsoup_jsoup", + "@copybara_maven//:org_jsoup_jsoup", ], ) java_library( name = "sun_mail", exports = [ - "@maven//:com_sun_mail_javax_mail", + "@copybara_maven//:com_sun_mail_javax_mail", ], ) java_library( name = "protobuf_lite", exports = [ - "@maven//:com_google_protobuf_protobuf_lite", + "@copybara_maven//:com_google_protobuf_protobuf_lite", ], ) diff --git a/third_party/bazel/BUILD b/third_party/bazel/BUILD index 12b3cf499..0a19ed091 100644 --- a/third_party/bazel/BUILD +++ b/third_party/bazel/BUILD @@ -9,5 +9,5 @@ package( java_library( name = "shell", srcs = glob(["main/**/*.java"]), - deps = ["@maven//:com_google_guava_guava"], + deps = ["@copybara_maven//:com_google_guava_guava"], )