mirror of
https://github.com/digital-asset/daml.git
synced 2024-09-20 01:07:18 +03:00
9976b4cd50
* kvutils: Use ScalaPB to generate a Scala JAR for daml_kvutils.proto. * Bazel: Delete the unused `da_java_binary` rule, and inline `_wrap_rule`. * Bazel: Factor out Java/Scala protobuf class generation into a helper. CHANGELOG_BEGIN CHANGELOG_END * daml-lf/archive: Use `proto_jars`. * Bazel: Remove the visibility modifier from `proto_jars`. It's too confusing. Just make everything public. * daml-lf/archive: Push protobuf source tarballs into `proto_jars`. * Bazel: Add comments to the various parts of `proto_jars`. * daml-assistant: Do unpleasant things with `location` in Bazel.
239 lines
7.9 KiB
Python
239 lines
7.9 KiB
Python
# Copyright (c) 2020 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
||
# SPDX-License-Identifier: Apache-2.0
|
||
load("//bazel_tools:haskell.bzl", "da_haskell_library", "da_haskell_test")
|
||
load("@os_info//:os_info.bzl", "is_windows")
|
||
load("@build_environment//:configuration.bzl", "mvn_version")
|
||
|
||
genrule(
|
||
name = "integration-tests-mvn",
|
||
srcs = [
|
||
"@mvn_dev_env//:mvn",
|
||
"//daml-lf/archive:daml_lf_dev_archive_proto_java",
|
||
"//daml-lf/archive:daml_lf_dev_archive_proto_java_pom",
|
||
"//language-support/java/bindings:libbindings-java.jar",
|
||
"//language-support/java/bindings:bindings-java_pom.xml",
|
||
"//language-support/java/bindings-rxjava:libbindings-rxjava.jar",
|
||
"//language-support/java/bindings-rxjava:bindings-rxjava_pom.xml",
|
||
"//ledger/ledger-api-auth-client:libledger-api-auth-client.jar",
|
||
"//ledger/ledger-api-auth-client:ledger-api-auth-client_pom.xml",
|
||
"//language-support/java/codegen:shaded_binary.jar",
|
||
"//language-support/java/codegen:shaded_binary_pom.xml",
|
||
"//ledger-api/rs-grpc-bridge:librs-grpc-bridge.jar",
|
||
"//ledger-api/rs-grpc-bridge:rs-grpc-bridge_pom.xml",
|
||
"//docs:quickstart-java.tar.gz",
|
||
],
|
||
outs = ["integration-tests-mvn.tar"],
|
||
cmd = """
|
||
set -euo pipefail
|
||
TMP_DIR=$$(mktemp -d)
|
||
MVN_DB="$$TMP_DIR/m2"
|
||
MVN=($(locations @mvn_dev_env//:mvn))
|
||
MVN="$${{MVN[0]}}"
|
||
install_mvn() {{
|
||
"$$MVN" -q install:install-file \\
|
||
-Dmaven.repo.local=$$MVN_DB \\
|
||
"-DgroupId=$$1" \\
|
||
"-DartifactId=$$2" \\
|
||
"-Dfile=$$3" \\
|
||
"-DpomFile=$$4" \\
|
||
-Dpackaging=jar \\
|
||
-Dversion={mvn}
|
||
}}
|
||
tar xf $(location //docs:quickstart-java.tar.gz) -C "$$TMP_DIR"
|
||
install_mvn \\
|
||
"com.daml" "daml-lf-archive" \\
|
||
$$(echo $(locations //daml-lf/archive:daml_lf_dev_archive_proto_java) | xargs -n1 echo | grep -v -- '-src\\.jar$$') \\
|
||
$(location //daml-lf/archive:daml_lf_dev_archive_proto_java_pom)
|
||
install_mvn \\
|
||
"com.daml" "bindings-java" \\
|
||
$(location //language-support/java/bindings:libbindings-java.jar) \\
|
||
$(location //language-support/java/bindings:bindings-java_pom.xml)
|
||
install_mvn \\
|
||
"com.daml" "bindings-rxjava" \\
|
||
$(location //language-support/java/bindings-rxjava:libbindings-rxjava.jar) \\
|
||
$(location //language-support/java/bindings-rxjava:bindings-rxjava_pom.xml)
|
||
install_mvn \\
|
||
"com.daml" "codegen-java" \\
|
||
$(location //language-support/java/codegen:shaded_binary.jar) \\
|
||
$(location //language-support/java/codegen:shaded_binary_pom.xml)
|
||
install_mvn \\
|
||
"com.daml" "rs-grpc-bridge" \\
|
||
$(location //ledger-api/rs-grpc-bridge:librs-grpc-bridge.jar) \\
|
||
$(location //ledger-api/rs-grpc-bridge:rs-grpc-bridge_pom.xml)
|
||
install_mvn \\
|
||
"com.daml" "ledger-api-auth-client" \\
|
||
$(location //ledger/ledger-api-auth-client:libledger-api-auth-client.jar) \\
|
||
$(location //ledger/ledger-api-auth-client:ledger-api-auth-client_pom.xml)
|
||
"$$MVN" -q -Dmaven.repo.local=$$MVN_DB -f "$$TMP_DIR/quickstart-java/pom.xml" dependency:resolve dependency:resolve-plugins
|
||
$(execpath //bazel_tools/sh:mktar) $@ -C $$(dirname $$MVN_DB) $$(basename $$MVN_DB)
|
||
""".format(mvn = mvn_version),
|
||
tools = ["//bazel_tools/sh:mktar"],
|
||
)
|
||
|
||
ts_libraries = [
|
||
"//language-support/ts/daml-types:npm_package",
|
||
"//language-support/ts/daml-ledger:npm_package",
|
||
"//language-support/ts/daml-react:npm_package",
|
||
]
|
||
|
||
create_daml_app_resources = [
|
||
"//templates:create-daml-app-test-resources/messaging.patch",
|
||
"//templates:create-daml-app-test-resources/testDeps.json",
|
||
"//templates:create-daml-app-test-resources/index.test.ts",
|
||
]
|
||
|
||
da_haskell_library(
|
||
name = "integration-test-utils",
|
||
srcs = ["src/DA/Daml/Assistant/IntegrationTestUtils.hs"],
|
||
hackage_deps = [
|
||
"base",
|
||
"conduit",
|
||
"conduit-extra",
|
||
"extra",
|
||
"filepath",
|
||
"tasty",
|
||
"text",
|
||
],
|
||
src_strip_prefix = "src",
|
||
visibility = ["//visibility:public"],
|
||
deps = [
|
||
"//libs-haskell/bazel-runfiles",
|
||
"//libs-haskell/da-hs-base",
|
||
"//libs-haskell/test-utils",
|
||
],
|
||
)
|
||
|
||
da_haskell_test(
|
||
name = "integration-tests",
|
||
timeout = "long",
|
||
srcs = [
|
||
"src/DA/Daml/Assistant/FreePort.hs",
|
||
"src/DA/Daml/Assistant/IntegrationTests.hs",
|
||
],
|
||
args = [
|
||
"$(location //:yarn)",
|
||
],
|
||
data = [
|
||
":integration-tests-mvn",
|
||
"//release:sdk-release-tarball",
|
||
"@local_jdk//:bin/java.exe" if is_windows else "@local_jdk//:bin/java",
|
||
"//:yarn",
|
||
"//compiler/damlc/tests:generate-simple-dalf",
|
||
"@mvn_dev_env//:mvn",
|
||
"@tar_dev_env//:tar",
|
||
] + ([] if is_windows else ts_libraries),
|
||
# I’m sure the mvn stuff will be flaky.
|
||
flaky = True,
|
||
hackage_deps = [
|
||
"aeson",
|
||
"async",
|
||
"base",
|
||
"conduit",
|
||
"conduit-extra",
|
||
"containers",
|
||
"directory",
|
||
"extra",
|
||
"filepath",
|
||
"http-client",
|
||
"http-types",
|
||
"jwt",
|
||
"lens",
|
||
"lens-aeson",
|
||
"network",
|
||
"process",
|
||
"safe",
|
||
"tar",
|
||
"tar-conduit",
|
||
"tasty",
|
||
"tasty-hunit",
|
||
"text",
|
||
"unordered-containers",
|
||
"utf8-string",
|
||
"vector",
|
||
],
|
||
main_function = "DA.Daml.Assistant.IntegrationTests.main",
|
||
visibility = ["//visibility:public"],
|
||
deps = [
|
||
":integration-test-utils",
|
||
"//:sdk-version-hs-lib",
|
||
"//daml-assistant/daml-helper:daml-helper-lib",
|
||
"//language-support/hs/bindings:hs-ledger",
|
||
"//language-support/ts/codegen/tests:daml2js-test-helpers",
|
||
"//libs-haskell/bazel-runfiles",
|
||
"//libs-haskell/da-hs-base",
|
||
"//libs-haskell/test-utils",
|
||
],
|
||
)
|
||
|
||
da_haskell_library(
|
||
name = "create-daml-app-tests-lib",
|
||
srcs = ["src/DA/Daml/Assistant/CreateDamlAppTests.hs"],
|
||
data = [
|
||
"//release:sdk-release-tarball",
|
||
"@local_jdk//:bin/java.exe" if is_windows else "@local_jdk//:bin/java",
|
||
"//:yarn",
|
||
"@patch_dev_env//:patch",
|
||
] + ([] if is_windows else ts_libraries + create_daml_app_resources),
|
||
hackage_deps = [
|
||
"aeson",
|
||
"aeson-extra",
|
||
"base",
|
||
"bytestring",
|
||
"directory",
|
||
"extra",
|
||
"filepath",
|
||
"tagged",
|
||
"tasty",
|
||
"tasty-hunit",
|
||
"unordered-containers",
|
||
],
|
||
visibility = ["//visibility:public"],
|
||
deps = [
|
||
":integration-test-utils",
|
||
"//language-support/ts/codegen/tests:daml2js-test-helpers",
|
||
"//libs-haskell/bazel-runfiles",
|
||
"//libs-haskell/da-hs-base",
|
||
"//libs-haskell/test-utils",
|
||
],
|
||
)
|
||
|
||
da_haskell_test(
|
||
name = "create-daml-app-tests",
|
||
timeout = "long",
|
||
srcs = ["src/DA/Daml/Assistant/CreateDamlAppTestsMain.hs"],
|
||
args = [
|
||
"$(location @nodejs//:npm_bin)",
|
||
"$(location @nodejs//:node_bin)",
|
||
],
|
||
data = [
|
||
"@nodejs//:node_bin",
|
||
"@nodejs//:npm_bin",
|
||
],
|
||
hackage_deps = ["base"],
|
||
main_function = "DA.Daml.Assistant.CreateDamlAppTestsMain.main",
|
||
# Exclusive until we stop hardcoding port numbers in index.test.ts
|
||
tags = ["exclusive"],
|
||
deps = [":create-daml-app-tests-lib"],
|
||
)
|
||
|
||
da_haskell_test(
|
||
name = "create-daml-app-tests-proj-name",
|
||
timeout = "long",
|
||
srcs = ["src/DA/Daml/Assistant/CreateDamlAppTestsMain.hs"],
|
||
args = [
|
||
"$(location @nodejs//:npm_bin)",
|
||
"$(location @nodejs//:node_bin)",
|
||
"--project-name",
|
||
"not-create-daml-app",
|
||
],
|
||
data = [
|
||
"@nodejs//:node_bin",
|
||
"@nodejs//:npm_bin",
|
||
],
|
||
hackage_deps = ["base"],
|
||
main_function = "DA.Daml.Assistant.CreateDamlAppTestsMain.main",
|
||
# Exclusive until we stop hardcoding port numbers in index.test.ts
|
||
tags = ["exclusive"],
|
||
deps = [":create-daml-app-tests-lib"],
|
||
)
|