diff --git a/.bazelignore b/.bazelignore new file mode 100644 index 00000000..4beab30f --- /dev/null +++ b/.bazelignore @@ -0,0 +1,10 @@ +target +caliper/target +caliper-api/target +caliper-core/target +caliper-examples/target +caliper-runner/target +caliper-util/target +caliper-worker/target +caliper-worker-android/target +caliper-worker-jvm/target diff --git a/.bazelversion b/.bazelversion new file mode 100644 index 00000000..e5b82034 --- /dev/null +++ b/.bazelversion @@ -0,0 +1 @@ +3.5.0 \ No newline at end of file diff --git a/.gitignore b/.gitignore index 35f28953..18d94c5d 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,8 @@ out/ .factorypath .project .settings/ + +# Bazel +bazel-* +.aswb +.ijwb diff --git a/.travis.yml b/.travis.yml index 43637922..3377cb91 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,24 +1,31 @@ sudo: false -language: java - +language: android +android: + components: + - build-tools-26.0.2 + - android-26 jdk: - openjdk8 before_install: # Travis sets this and it causes issues with workers. - unset _JAVA_OPTIONS - # Not actually used since we aren't building/testing the Android version, but - # Maven still needs an absolute path or it complains. - - export ANDROID_HOME=/ -install: mvn -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn install -U -DskipTests=true -am -pl caliper +install: + - wget https://github.com/bazelbuild/bazelisk/releases/download/v1.6.1/bazelisk-linux-amd64 + - install bazelisk-linux-amd64 ${HOME}/bin/bazel + - mvn -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn install -U -DskipTests=true -am -pl caliper -script: mvn -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn clean verify -U -Dmaven.javadoc.skip=true -am -pl caliper +script: + - mvn -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn clean verify -U -Dmaven.javadoc.skip=true -am -pl caliper + - ${HOME}/bin/bazel build //... + - ${HOME}/bin/bazel test //... cache: directories: - $HOME/.m2 + - $HOME/.cache/bazel branches: only: diff --git a/BUILD.bazel b/BUILD.bazel new file mode 100644 index 00000000..e69de29b diff --git a/WORKSPACE b/WORKSPACE new file mode 100644 index 00000000..18d36a6f --- /dev/null +++ b/WORKSPACE @@ -0,0 +1,29 @@ +workspace(name = "caliper") + +load("//:maven_artifacts.bzl", "MAVEN_ARTIFACTS") +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") + +MAVEN_REPOSITORY_RULES_VERSION = "2.0.0-alpha-4" + +MAVEN_REPOSITORY_RULES_SHA = "a6484fec8d1aebd4affff7ae1ee9b59141858b2c636222bdb619526ccd8b3358" + +http_archive( + name = "maven_repository_rules", + sha256 = MAVEN_REPOSITORY_RULES_SHA, + strip_prefix = "bazel_maven_repository-%s" % MAVEN_REPOSITORY_RULES_VERSION, + type = "zip", + urls = ["https://github.com/square/bazel_maven_repository/archive/%s.zip" % MAVEN_REPOSITORY_RULES_VERSION], +) + +# Setup maven repository handling. +load("@maven_repository_rules//maven:maven.bzl", "maven_repository_specification") + +maven_repository_specification( + name = "maven", + artifacts = MAVEN_ARTIFACTS, + dependency_target_substitutes = { + "com.google.dagger": {"@maven//com/google/dagger:dagger": "@maven//com/google/dagger:dagger-api"}, + }, +) + +android_sdk_repository(name = "androidsdk") diff --git a/caliper-api/BUILD.bazel b/caliper-api/BUILD.bazel new file mode 100644 index 00000000..08e49bcd --- /dev/null +++ b/caliper-api/BUILD.bazel @@ -0,0 +1,9 @@ +java_library( + name = "caliper-api", + srcs = glob(["src/main/**/*.java"]), + deps = [ + "@maven//com/google/guava", + "@maven//joda-time", + ], + visibility = ["//:__subpackages__"], +) \ No newline at end of file diff --git a/caliper-api/src/test/java/com/google/caliper/model/BUILD.bazel b/caliper-api/src/test/java/com/google/caliper/model/BUILD.bazel new file mode 100644 index 00000000..cae2d89d --- /dev/null +++ b/caliper-api/src/test/java/com/google/caliper/model/BUILD.bazel @@ -0,0 +1,12 @@ +java_test( + name = "HostTest", + srcs = ["HostTest.java"], + deps = [ + "//caliper-api", + "//caliper-util", + "@maven//com/google/code/gson", + "@maven//com/google/dagger", + "@maven//com/google/truth", + "@maven//junit", + ], +) diff --git a/caliper-core/BUILD.bazel b/caliper-core/BUILD.bazel new file mode 100644 index 00000000..d203d2ac --- /dev/null +++ b/caliper-core/BUILD.bazel @@ -0,0 +1,22 @@ +java_library( + name = "caliper-core", + srcs = glob(["src/main/java/**/*.java"]), + deps = [ + "//caliper-api", + "//caliper-util", + "@maven//com/google/code/findbugs:jsr305", + "@maven//com/google/auto/value", + "@maven//com/google/dagger", + "@maven//com/google/guava", + "@maven//com/squareup/okhttp", + "@maven//joda-time", + ], + resources = glob(["src/main/resources/**"]), + visibility = ["//:__subpackages__"] +) + +filegroup( + name = "test_resources", + srcs = glob(["src/test/resources/**"]), + visibility = ["//:__subpackages__"], +) \ No newline at end of file diff --git a/caliper-core/src/test/java/com/google/caliper/bridge/BUILD.bazel b/caliper-core/src/test/java/com/google/caliper/bridge/BUILD.bazel new file mode 100644 index 00000000..499be88b --- /dev/null +++ b/caliper-core/src/test/java/com/google/caliper/bridge/BUILD.bazel @@ -0,0 +1,14 @@ +java_test( + name = "LogMessageParserTest", + srcs = [ + "GcLogMessageGenerator.java", + "LogMessageParserTest.java" + ], + deps = [ + "//caliper-core", + "//caliper-util", + "@maven//com/google/truth", + "@maven//junit", + ], + resources = ["//caliper-core:test_resources"], +) diff --git a/caliper-core/src/test/java/com/google/caliper/memory/BUILD.bazel b/caliper-core/src/test/java/com/google/caliper/memory/BUILD.bazel new file mode 100644 index 00000000..283f533d --- /dev/null +++ b/caliper-core/src/test/java/com/google/caliper/memory/BUILD.bazel @@ -0,0 +1,9 @@ +java_test( + name = "ObjectGraphMeasurerTest", + srcs = ["ObjectGraphMeasurerTest.java"], + deps = [ + "//caliper-core", + "@maven//com/google/truth", + "@maven//junit", + ], +) diff --git a/caliper-examples/BUILD.bazel b/caliper-examples/BUILD.bazel new file mode 100644 index 00000000..9290067e --- /dev/null +++ b/caliper-examples/BUILD.bazel @@ -0,0 +1,10 @@ +java_library( + name = "caliper-examples", + srcs = glob(["src/main/**/*.java"]), + visibility = ["//:__subpackages__"], + deps = [ + "//caliper:caliper-lib", + "//caliper-api", + "//caliper-util", + ], +) diff --git a/caliper-runner/BUILD.bazel b/caliper-runner/BUILD.bazel new file mode 100644 index 00000000..27f02393 --- /dev/null +++ b/caliper-runner/BUILD.bazel @@ -0,0 +1,18 @@ +java_library( + name = "caliper-runner", + srcs = glob(["src/main/**/*.java"]), + deps = [ + "//caliper-api", + "//caliper-core", + "//caliper-util", + "@maven//com/google/code/findbugs:jsr305", + "@maven//com/google/auto/value", + "@maven//com/google/dagger", + "@maven//com/google/dagger:dagger-producers", + "@maven//com/google/code/gson", + "@maven//com/google/guava", + "@maven//com/squareup/okhttp", + "@maven//joda-time", + ], + visibility = ["//:__subpackages__"] +) diff --git a/caliper-runner/src/test/java/com/google/caliper/runner/config/BUILD.bazel b/caliper-runner/src/test/java/com/google/caliper/runner/config/BUILD.bazel new file mode 100644 index 00000000..465e370d --- /dev/null +++ b/caliper-runner/src/test/java/com/google/caliper/runner/config/BUILD.bazel @@ -0,0 +1,12 @@ +java_test( + name = "LoggingConfigLoaderTest", + srcs = ["LoggingConfigLoaderTest.java"], + deps = [ + "//caliper-api", + "//caliper-runner", + "@maven//com/google/truth", + "@maven//joda-time", + "@maven//junit", + "@maven//org/mockito:mockito-all", + ], +) diff --git a/caliper-runner/src/test/java/com/google/caliper/runner/experiment/BUILD.bazel b/caliper-runner/src/test/java/com/google/caliper/runner/experiment/BUILD.bazel new file mode 100644 index 00000000..5a6e045f --- /dev/null +++ b/caliper-runner/src/test/java/com/google/caliper/runner/experiment/BUILD.bazel @@ -0,0 +1,12 @@ +java_test( + name = "ExperimentTest", + srcs = ["ExperimentTest.java"], + deps = [ + "//caliper-api", + "//caliper-core", + "//caliper-runner", + "//caliper-util", + "@maven//com/google/truth", + "@maven//junit", + ], +) diff --git a/caliper-runner/src/test/java/com/google/caliper/runner/instrument/BUILD.bazel b/caliper-runner/src/test/java/com/google/caliper/runner/instrument/BUILD.bazel new file mode 100644 index 00000000..cc0be896 --- /dev/null +++ b/caliper-runner/src/test/java/com/google/caliper/runner/instrument/BUILD.bazel @@ -0,0 +1,12 @@ +java_test( + name = "InstrumentModuleTest", + srcs = ["InstrumentModuleTest.java"], + deps = [ + "//caliper-api", + "//caliper-core", + "//caliper-runner", + "@maven//com/google/truth", + "@maven//junit", + "@maven//org/mockito:mockito-all", + ], +) diff --git a/caliper-runner/src/test/java/com/google/caliper/runner/options/BUILD.bazel b/caliper-runner/src/test/java/com/google/caliper/runner/options/BUILD.bazel new file mode 100644 index 00000000..449882f9 --- /dev/null +++ b/caliper-runner/src/test/java/com/google/caliper/runner/options/BUILD.bazel @@ -0,0 +1,10 @@ +java_test( + name = "ParsedOptionsTest", + srcs = ["ParsedOptionsTest.java"], + deps = [ + "//caliper-runner", + "//caliper-util", + "@maven//com/google/truth", + "@maven//junit", + ], +) diff --git a/caliper-runner/src/test/java/com/google/caliper/runner/resultprocessor/BUILD.bazel b/caliper-runner/src/test/java/com/google/caliper/runner/resultprocessor/BUILD.bazel new file mode 100644 index 00000000..a9968525 --- /dev/null +++ b/caliper-runner/src/test/java/com/google/caliper/runner/resultprocessor/BUILD.bazel @@ -0,0 +1,11 @@ +java_test( + name = "ResultProcessorCreatorTest", + srcs = ["ResultProcessorCreatorTest.java"], + deps = [ + "//caliper-api", + "//caliper-core", + "//caliper-runner", + "@maven//com/google/truth", + "@maven//junit", + ], +) diff --git a/caliper-runner/src/test/java/com/google/caliper/runner/server/BUILD.bazel b/caliper-runner/src/test/java/com/google/caliper/runner/server/BUILD.bazel new file mode 100644 index 00000000..c2468969 --- /dev/null +++ b/caliper-runner/src/test/java/com/google/caliper/runner/server/BUILD.bazel @@ -0,0 +1,12 @@ +java_test( + name = "ServerSocketServiceTest", + srcs = ["ServerSocketServiceTest.java"], + deps = [ + "//caliper-core", + "//caliper-runner", + "//caliper-util", + "@maven//com/google/truth", + "@maven//junit", + "@maven//org/mockito:mockito-all", + ], +) diff --git a/caliper-util/BUILD.bazel b/caliper-util/BUILD.bazel new file mode 100644 index 00000000..90e8d868 --- /dev/null +++ b/caliper-util/BUILD.bazel @@ -0,0 +1,13 @@ +java_library( + name = "caliper-util", + srcs = glob(["src/main/**/*.java"]), + deps = [ + "@maven//com/google/code/findbugs:jsr305", # provided + "@maven//com/google/guava", + "@maven//javax/inject:javax_inject", + "@maven//joda-time", + "@maven//com/google/dagger", + "@maven//com/google/code/gson", + ], + visibility = ["//:__subpackages__"], +) \ No newline at end of file diff --git a/caliper-util/src/test/java/com/google/caliper/util/BUILD.bazel b/caliper-util/src/test/java/com/google/caliper/util/BUILD.bazel new file mode 100644 index 00000000..47064f50 --- /dev/null +++ b/caliper-util/src/test/java/com/google/caliper/util/BUILD.bazel @@ -0,0 +1,19 @@ +java_test( + name = "ShortDurationTest", + srcs = ["ShortDurationTest.java"], + deps = [ + "//caliper-util", + "@maven//com/google/truth", + "@maven//junit", + ], +) + +java_test( + name = "UuidsTest", + srcs = ["UuidsTest.java"], + deps = [ + "//caliper-util", + "@maven//com/google/truth", + "@maven//junit", + ], +) \ No newline at end of file diff --git a/caliper-worker-android/BUILD.bazel b/caliper-worker-android/BUILD.bazel new file mode 100644 index 00000000..a3554361 --- /dev/null +++ b/caliper-worker-android/BUILD.bazel @@ -0,0 +1,18 @@ +java_library( + name = "caliper-worker-android", + srcs = glob(["src/main/java/**/*.java"]), + deps = [ + ":androidsdk", + "//caliper-core", + "//caliper-util", + "//caliper-worker", + "@maven//com/google/dagger", + "@maven//com/google/guava", + ], +) + +java_import( + name = "androidsdk", + jars = ["@bazel_tools//tools/android:android_jar"], + neverlink = True, +) diff --git a/caliper-worker-jvm/BUILD.bazel b/caliper-worker-jvm/BUILD.bazel new file mode 100644 index 00000000..39732c2d --- /dev/null +++ b/caliper-worker-jvm/BUILD.bazel @@ -0,0 +1,16 @@ +java_library( + name = "caliper-worker-jvm", + srcs = glob(["src/main/**/*.java"]), + deps = [ + "//caliper-api", + "//caliper-core", + "//caliper-util", + "//caliper-worker", + "@maven//com/google/code/findbugs:jsr305", + "@maven//com/google/code/java-allocation-instrumenter:java-allocation-instrumenter", + "@maven//com/sun/jersey:jersey-client", + "@maven//com/google/dagger", + "@maven//com/google/guava", + ], + visibility = ["//:__subpackages__"] +) \ No newline at end of file diff --git a/caliper-worker-jvm/pom.xml b/caliper-worker-jvm/pom.xml index 2d78aa1b..79a81d57 100644 --- a/caliper-worker-jvm/pom.xml +++ b/caliper-worker-jvm/pom.xml @@ -62,21 +62,5 @@ com.google.code.java-allocation-instrumenter java-allocation-instrumenter - - junit - junit - test - - - com.google.truth - truth - test - - - org.mockito - mockito-all - test - - diff --git a/caliper-worker/BUILD.bazel b/caliper-worker/BUILD.bazel new file mode 100644 index 00000000..b6922dc5 --- /dev/null +++ b/caliper-worker/BUILD.bazel @@ -0,0 +1,15 @@ +java_library( + name = "caliper-worker", + srcs = glob(["src/main/**/*.java"]), + deps = [ + "//caliper-api", + "//caliper-core", + "//caliper-util", + "@maven//com/google/code/findbugs:jsr305", + "@maven//com/google/dagger", + "@maven//com/google/guava", + "@maven//com/squareup/okhttp", + "@maven//joda-time", + ], + visibility = ["//:__subpackages__"] +) \ No newline at end of file diff --git a/caliper-worker/src/test/java/com/google/caliper/worker/instrument/BUILD.bazel b/caliper-worker/src/test/java/com/google/caliper/worker/instrument/BUILD.bazel new file mode 100644 index 00000000..e9373a10 --- /dev/null +++ b/caliper-worker/src/test/java/com/google/caliper/worker/instrument/BUILD.bazel @@ -0,0 +1,22 @@ +java_test( + name = "BenchmarkCreatorTest", + srcs = ["BenchmarkCreatorTest.java"], + deps = [ + "//caliper-api", + "//caliper-core", + "//caliper-worker", + "@maven//com/google/truth", + "@maven//junit", + ], +) + +java_test( + name = "RuntimeWorkerInstrumentTest", + srcs = ["RuntimeWorkerInstrumentTest.java"], + deps = [ + "//caliper-util", + "//caliper-worker", + "@maven//com/google/truth", + "@maven//junit", + ], +) diff --git a/caliper/BUILD.bazel b/caliper/BUILD.bazel new file mode 100644 index 00000000..26dff0dd --- /dev/null +++ b/caliper/BUILD.bazel @@ -0,0 +1,39 @@ +java_library( + name = "caliper-lib", + srcs = glob(["src/main/java/**/*.java"]), + visibility = ["//:__subpackages__"], + deps = [ + "//caliper-api", + "//caliper-core", + "//caliper-runner", + "//caliper-util", + "//caliper-worker-jvm", + "@maven//com/google/code/findbugs:jsr305", + "@maven//com/google/code/java-allocation-instrumenter", + "@maven//com/google/dagger", + "@maven//com/google/guava", + "@maven//com/sun/jersey:jersey-client", + ], + resources = glob(["src/main/resources/**"]), +) + +java_binary( + name = "caliper-bin", + main_class = "com.google.caliper.runner.CaliperMain", + runtime_deps = [":caliper-lib"], + deploy_manifest_lines = [ + "Premain-Class: com.google.monitoring.runtime.instrumentation.AllocationInstrumenter", + "Can-Redefine-Classes: true", + "Can-Retransform-Classes: true", + ] +) + +genrule( + name = "caliper", + srcs = [ + "//tools:java-exec-prefix", + "//caliper:caliper-bin_deploy.jar", + ], + outs = ["caliper"], + cmd_bash = "cat $(location //tools:java-exec-prefix) $(location //caliper:caliper-bin_deploy.jar) > $@", +) diff --git a/caliper/src/test/java/com/google/caliper/runner/BUILD.bazel b/caliper/src/test/java/com/google/caliper/runner/BUILD.bazel new file mode 100644 index 00000000..d6043b4b --- /dev/null +++ b/caliper/src/test/java/com/google/caliper/runner/BUILD.bazel @@ -0,0 +1,41 @@ +java_test( + name = "BadUserCodeTest", + srcs = ["BadUserCodeTest.java"], + deps = [ + "//caliper:caliper-lib", + "//caliper-api", + "//caliper-core", + "//caliper-runner", + "//caliper-util", + "//caliper/src/test/java/com/google/caliper/runner/testing", + "@maven//com/google/truth", + "@maven//junit", + "@maven//org/mockito:mockito-all", + ], +) + +java_test( + name = "CaliperMainTest", + srcs = ["CaliperMainTest.java"], + deps = [ + "//caliper:caliper-lib", + "@maven//com/google/truth", + "@maven//junit", + "@maven//org/mockito:mockito-all", + ], +) + +java_test( + name = "MalformedBenchmarksTest", + srcs = ["MalformedBenchmarksTest.java"], + deps = [ + "//caliper:caliper-lib", + "//caliper-api", + "//caliper-core", + "//caliper-runner", + "//caliper-util", + "@maven//com/google/truth", + "@maven//junit", + "@maven//org/mockito:mockito-all", + ], +) diff --git a/caliper/src/test/java/com/google/caliper/runner/config/BUILD.bazel b/caliper/src/test/java/com/google/caliper/runner/config/BUILD.bazel new file mode 100644 index 00000000..6cb787c6 --- /dev/null +++ b/caliper/src/test/java/com/google/caliper/runner/config/BUILD.bazel @@ -0,0 +1,23 @@ +java_test( + name = "CaliperConfigModuleTest", + srcs = ["CaliperConfigModuleTest.java"], + deps = [ + "//caliper:caliper-lib", + "//caliper-runner", + "@maven//com/google/truth", + "@maven//junit", + "@maven//org/mockito:mockito-all", + ], +) + +java_test( + name = "CaliperConfigTest", + srcs = ["CaliperConfigTest.java"], + deps = [ + "//caliper:caliper-lib", + "//caliper-api", + "//caliper-runner", + "@maven//com/google/truth", + "@maven//junit", + ], +) diff --git a/caliper/src/test/java/com/google/caliper/runner/instrument/BUILD.bazel b/caliper/src/test/java/com/google/caliper/runner/instrument/BUILD.bazel new file mode 100644 index 00000000..3b713c00 --- /dev/null +++ b/caliper/src/test/java/com/google/caliper/runner/instrument/BUILD.bazel @@ -0,0 +1,39 @@ +java_test( + name = "AllocationInstrumentTest", + srcs = ["AllocationInstrumentTest.java"], + deps = [ + "//caliper:caliper-lib", + "//caliper-api", + "//caliper-runner", + "//caliper/src/test/java/com/google/caliper/runner/testing", + "@maven//com/google/truth", + "@maven//junit", + ], +) + +java_test( + name = "ArbitraryMeasurmentInstrumentTest", + srcs = ["ArbitraryMeasurmentInstrumentTest.java"], + deps = [ + "//caliper:caliper-lib", + "//caliper-api", + "//caliper/src/test/java/com/google/caliper/runner/testing", + "@maven//com/google/truth", + "@maven//junit", + ], +) + +java_test( + name = "RuntimeInstrumentTest", + srcs = ["RuntimeInstrumentTest.java"], + deps = [ + "//caliper:caliper-lib", + "//caliper-api", + "//caliper-core", + "//caliper-runner", + "//caliper-util", + "//caliper/src/test/java/com/google/caliper/runner/testing", + "@maven//com/google/truth", + "@maven//junit", + ], +) diff --git a/caliper/src/test/java/com/google/caliper/runner/testing/BUILD.bazel b/caliper/src/test/java/com/google/caliper/runner/testing/BUILD.bazel new file mode 100644 index 00000000..4caabd8f --- /dev/null +++ b/caliper/src/test/java/com/google/caliper/runner/testing/BUILD.bazel @@ -0,0 +1,17 @@ +java_library( + name = "testing", + testonly = True, + srcs = glob(["*.java"]), + visibility = ["//caliper/src/test/java:__subpackages__"], + deps = [ + "//caliper:caliper-lib", + "//caliper-api", + "//caliper-core", + "//caliper-runner", + "//caliper-util", + "@maven//com/google/code/findbugs:jsr305", + "@maven//com/google/dagger", + "@maven//com/google/guava", + "@maven//junit", + ], +) diff --git a/caliper/src/test/java/com/google/caliper/runner/worker/BUILD.bazel b/caliper/src/test/java/com/google/caliper/runner/worker/BUILD.bazel new file mode 100644 index 00000000..4485bf7b --- /dev/null +++ b/caliper/src/test/java/com/google/caliper/runner/worker/BUILD.bazel @@ -0,0 +1,13 @@ +java_test( + name = "WorkerTest", + srcs = ["WorkerTest.java"], + deps = [ + "//caliper:caliper-lib", + "//caliper-core", + "//caliper-runner", + "//caliper-util", + "//caliper/src/test/java/com/google/caliper/runner/testing", + "@maven//com/google/truth", + "@maven//junit", + ], +) diff --git a/maven_artifacts.bzl b/maven_artifacts.bzl new file mode 100644 index 00000000..cf750842 --- /dev/null +++ b/maven_artifacts.bzl @@ -0,0 +1,120 @@ +load("//tools:utils.bzl", "index_artifacts") + +_DAGGER_SNIPPET = """ +java_library( + name = "dagger", + exports = [ + ":dagger-api", + "@maven//javax/inject:javax_inject", + ], + exported_plugins = [":plugin"], + visibility = ["//visibility:public"], +) + +raw_jvm_import( + name = "dagger-api", + jar = "@com_google_dagger_dagger//maven", + visibility = ["//visibility:public"], + deps = [ + "@maven//javax/inject:javax_inject", + ], +) + +java_plugin( + name = "plugin", + processor_class = "dagger.internal.codegen.ComponentProcessor", + generates_api = True, + deps = [":dagger-compiler"], +) +""" + +_AUTO_VALUE_SNIPPET = """ +java_library( + name = "value", + exports = [ + ":auto-value-annotations", + ], + exported_plugins = [":plugin"], + visibility = ["//visibility:public"], +) + +raw_jvm_import( + name = "auto-value", + jar = "@com_google_auto_value_auto_value//maven", + visibility = ["@maven//com/ryanharter/auto/value:__subpackages__"], +) + +java_plugin( + name = "plugin", + processor_class = "com.google.auto.value.processor.AutoValueProcessor", + generates_api = True, + deps = [ + ":auto-value", + "@maven//com/google/auto:auto-common", + ], +) +""" + +_JSR305_SNIPPET = """ +raw_jvm_import( + name = "jsr305", + jar = "@com_google_code_findbugs_jsr305//maven", + visibility = ["//visibility:public"], + neverlink = True, +) +""" + +MAVEN_ARTIFACTS = { + "com.google.auto:auto-common:0.11": {"insecure": True}, + "com.google.auto.value:auto-value-annotations:1.6.3": {"insecure": True}, + "com.google.auto.value:auto-value:1.6.3": {"insecure": True, "build_snippet": _AUTO_VALUE_SNIPPET}, + "com.google.code.findbugs:jsr305:1.3.9": {"insecure": True, "build_snippet": _JSR305_SNIPPET}, + "com.google.code.gson:gson:2.8.6": {"insecure": True}, + "com.google.code.java-allocation-instrumenter:java-allocation-instrumenter:3.3.0": {"insecure": True}, + "com.google.dagger:dagger:2.29.1": {"insecure": True, "build_snippet": _DAGGER_SNIPPET}, + "com.google.dagger:dagger-compiler:2.29.1": {"insecure": True}, + "com.google.dagger:dagger-producers:2.29.1": {"insecure": True}, + "com.google.dagger:dagger-spi:2.29.1": {"insecure": True}, + "com.google.errorprone:error_prone_annotations:2.3.2": {"insecure": True}, + "com.google.errorprone:javac-shaded:9-dev-r4023-3": {"insecure": True}, + "com.google.guava:guava:29.0-jre": {"insecure": True}, + "com.google.guava:failureaccess:1.0.1": {"insecure": True}, + "com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava": {"insecure": True}, + "com.google.googlejavaformat:google-java-format:1.5": {"insecure": True}, + "com.google.j2objc:j2objc-annotations:1.3": {"insecure": True}, + "com.google.truth:truth:1.0": {"insecure": True}, + "com.googlecode.java-diff-utils:diffutils:1.3.0": {"insecure": True}, + "com.squareup:javapoet:1.11.1": {"insecure": True}, + "com.squareup.okhttp:okhttp:2.5.0": {"insecure": True}, + "com.squareup.okio:okio:1.6.0": {"insecure": True}, + "com.sun.jersey:jersey-client:1.11": {"insecure": True}, + "com.sun.jersey:jersey-core:1.11": {"insecure": True}, + "javax.annotation:javax.annotation-api:1.3.2": {"insecure": True}, + "javax.annotation:jsr250-api:1.0": {"insecure": True}, + "javax.inject:javax.inject:1": {"insecure": True}, + "joda-time:joda-time:2.10.6": {"insecure": True}, + "junit:junit:4.13": {"insecure": True}, + "net.ltgt.gradle.incap:incap:0.2": {"insecure": True}, + "org.checkerframework:checker-compat-qual:2.5.5": {"insecure": True}, + "org.checkerframework:checker-qual:2.8.1": {"insecure": True}, + "org.codehaus.mojo:animal-sniffer-annotations:1.18": {"insecure": True}, + "org.hamcrest:hamcrest-core:1.3": {"insecure": True}, + "org.jetbrains:annotations:13.0": {"insecure": True}, + "org.jetbrains.kotlinx:kotlinx-metadata-jvm:0.1.0": {"insecure": True}, + "org.jetbrains.kotlin:kotlin-stdlib:1.3.72": {"insecure": True}, + "org.jetbrains.kotlin:kotlin-stdlib-common:1.3.72": {"insecure": True}, + "org.mockito:mockito-all:1.9.5": {"insecure": True}, + "org.ow2.asm:asm-analysis:7.2": {"insecure": True}, + "org.ow2.asm:asm-commons:7.2": {"insecure": True}, + "org.ow2.asm:asm-tree:7.2": {"insecure": True}, + "org.ow2.asm:asm-util:7.2": {"insecure": True}, + "org.ow2.asm:asm:7.2": {"insecure": True}, + "org.pantsbuild:jarjar:1.7.2": { + "insecure": True, + "exclude": ["org.apache.ant:ant", "org.apache.maven:maven-plugin-api"], + }, +} + + + +ARTIFACT_VERSIONS = index_artifacts(MAVEN_ARTIFACTS) diff --git a/tools/BUILD.bazel b/tools/BUILD.bazel new file mode 100644 index 00000000..c7e197c1 --- /dev/null +++ b/tools/BUILD.bazel @@ -0,0 +1,8 @@ +exports_files(["java-exec-prefix"]) + +java_binary( + name = "jarjar_runner", + main_class = "org.pantsbuild.jarjar.Main", + visibility = ["//:__subpackages__"], + runtime_deps = ["@maven//org/pantsbuild:jarjar"], +) diff --git a/tools/jarjar.bzl b/tools/jarjar.bzl new file mode 100644 index 00000000..4cc93ce8 --- /dev/null +++ b/tools/jarjar.bzl @@ -0,0 +1,46 @@ +def jarjar_action(actions, label, rules, input, output, jarjar): + actions.run( + inputs = [rules, input], + outputs = [output], + executable = jarjar, + progress_message = "jarjar %s" % label, + arguments = ["process", rules.path, input.path, output.path], + ) + return output + +def _jar_jar_impl(ctx): + jar = jarjar_action( + actions = ctx.actions, + label = ctx.label, + rules = ctx.file.rules, + input = ctx.file.input_jar, + output = ctx.outputs.jar, + jarjar = ctx.executable.jarjar_runner, + ) + return [ + DefaultInfo( + files = depset([jar]), + runfiles = ctx.runfiles(files = [jar]), + ), + JavaInfo( + output_jar = jar, + compile_jar = jar, + ), + ] + +jar_jar = rule( + implementation = _jar_jar_impl, + attrs = { + "input_jar": attr.label(allow_single_file = True), + "rules": attr.label(allow_single_file = True), + "jarjar_runner": attr.label( + executable = True, + cfg = "host", + default = Label("@bazel_tools//third_party/jarjar:jarjar_bin"), + ), + }, + outputs = { + "jar": "%{name}.jar", + }, + provides = [JavaInfo], +) diff --git a/tools/java-exec-prefix b/tools/java-exec-prefix new file mode 100644 index 00000000..8efda6db --- /dev/null +++ b/tools/java-exec-prefix @@ -0,0 +1,22 @@ +#!/bin/sh +# +# Copyright (c) 2015 Google, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +MYSELF=$(which "$0" 2>/dev/null) +[ $? -gt 0 ] && [ -f "$0" ] && MYSELF="./$0" +JAVA_CMD=java +[ -n "$JAVA_HOME" ] && JAVA_CMD="$JAVA_HOME/bin/java" +exec "$JAVA_CMD" $JAVA_ARGS -jar "$MYSELF" "$@" +exit 1 diff --git a/tools/utils.bzl b/tools/utils.bzl new file mode 100644 index 00000000..74c68f56 --- /dev/null +++ b/tools/utils.bzl @@ -0,0 +1,6 @@ +def index_artifacts(artifacts): + artifactMap = {} + for artifact in artifacts: + (group_id, artifact_id, version) = artifact.split(":") + artifactMap["%s:%s" % (group_id, artifact_id)] = version + return artifactMap