Skip to content

Commit

Permalink
Build SDK EE tarball (#9049)
Browse files Browse the repository at this point in the history
* Build SDK EE tarball

This sets up the infrastructure to build an SDK EE tarball and allows
for swapping out all files included in the tarball depending on the
edition. As an example, this includes the JSON API with (partial)
Oracle support in the EE tarball.

This PR does not yet address publishing this artifact to Artifactory.
I’ll tackle that in a separate PR.

changelog_begin
changelog_end

* Build in temp dir because Windows is stupid

changelog_begin
changelog_end

* directories are bad

changelog_begin
changelog_end

* Navigator resources are actually needed

changelog_begin
changelog_end
  • Loading branch information
cocreature committed Mar 8, 2021
1 parent 1bec211 commit 5197374
Show file tree
Hide file tree
Showing 4 changed files with 184 additions and 123 deletions.
87 changes: 52 additions & 35 deletions daml-assistant/daml-sdk/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -7,48 +7,65 @@ load(
"da_scala_library",
)

da_scala_library(
name = "sdk-lib",
deps = [
"//daml-script/runner:script-runner-lib",
"//extractor",
"//language-support/codegen-main:codegen-main-lib",
"//ledger-service/http-json",
"//ledger/sandbox",
"//ledger/sandbox-classic",
"//navigator/backend:navigator-library",
"//triggers/runner:trigger-runner-lib",
"//triggers/service:trigger-service",
"//triggers/service/auth:oauth2-middleware",
"//navigator/backend:backend-resources",
"//navigator/backend:frontend-resources",
]

scala_deps = [
"@maven//:com_typesafe_akka_akka_http_spray_json",
"@maven//:com_typesafe_scala_logging_scala_logging",
"@maven//:io_spray_spray_json",
]

scala_runtime_deps = [
"@maven//:com_typesafe_akka_akka_slf4j",
"@maven//:org_tpolecat_doobie_postgres",
]

runtime_deps = [
"@maven//:ch_qos_logback_logback_classic",
"@maven//:ch_qos_logback_logback_core",
"@maven//:io_grpc_grpc_netty",
"@maven//:org_xerial_sqlite_jdbc",
]

da_scala_binary(
name = "sdk",
srcs = glob(["src/main/scala/**/*.scala"]),
main_class = "com.daml.sdk.SdkMain",
resources = glob(["src/main/resources/**/*"]),
scala_deps = [
"@maven//:com_typesafe_akka_akka_http_spray_json",
"@maven//:com_typesafe_scala_logging_scala_logging",
"@maven//:io_spray_spray_json",
],
scala_runtime_deps = [
"@maven//:com_typesafe_akka_akka_slf4j",
"@maven//:org_tpolecat_doobie_postgres",
],
scala_deps = scala_deps,
scala_runtime_deps = scala_runtime_deps,
# Navigator resources trigger this incorrectly
unused_dependency_checker_mode = "off",
visibility = ["//visibility:public"],
runtime_deps = [
"@maven//:ch_qos_logback_logback_classic",
"@maven//:ch_qos_logback_logback_core",
"@maven//:io_grpc_grpc_netty",
"@maven//:org_xerial_sqlite_jdbc",
],
deps = [
"//daml-script/runner:script-runner-lib",
"//extractor",
"//language-support/codegen-main:codegen-main-lib",
"//ledger-service/http-json",
"//ledger/sandbox",
"//ledger/sandbox-classic",
"//navigator/backend:navigator-library",
"//triggers/runner:trigger-runner-lib",
"//triggers/service:trigger-service",
"//triggers/service/auth:oauth2-middleware",
],
runtime_deps = runtime_deps,
deps = deps,
)

da_scala_binary(
name = "sdk",
name = "sdk_ee",
srcs = glob(["src/main/scala/**/*.scala"]),
main_class = "com.daml.sdk.SdkMain",
tags = ["maven_coordinates=com.daml:sdk:__VERSION__"],
resources = glob(["src/main/resources/**/*"]),
scala_deps = scala_deps,
scala_runtime_deps = scala_runtime_deps,
# Navigator resources trigger this incorrectly
unused_dependency_checker_mode = "off",
visibility = ["//visibility:public"],
deps = [
":sdk-lib",
"//navigator/backend:backend-resources",
"//navigator/backend:frontend-resources",
runtime_deps = runtime_deps + [
"@maven//:com_oracle_database_jdbc_ojdbc8",
],
deps = deps,
)
92 changes: 56 additions & 36 deletions ledger-service/http-json/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -70,53 +70,73 @@ da_scala_library(
],
)

json_scala_deps = [
"@maven//:com_chuusai_shapeless",
"@maven//:com_github_scopt_scopt",
"@maven//:com_lihaoyi_sourcecode",
"@maven//:com_typesafe_akka_akka_http",
"@maven//:com_typesafe_akka_akka_http_core",
"@maven//:com_typesafe_akka_akka_http_spray_json",
"@maven//:com_typesafe_akka_akka_slf4j",
"@maven//:com_typesafe_scala_logging_scala_logging",
"@maven//:io_spray_spray_json",
"@maven//:org_scala_lang_modules_scala_collection_compat",
"@maven//:org_scalaz_scalaz_core",
"@maven//:org_tpolecat_doobie_core",
"@maven//:org_tpolecat_doobie_free",
"@maven//:org_tpolecat_doobie_postgres",
"@maven//:org_typelevel_cats_core",
"@maven//:org_typelevel_cats_effect",
"@maven//:org_typelevel_cats_free",
"@maven//:org_typelevel_cats_kernel",
]

json_deps = [
":http-json",
"//daml-lf/data",
"//daml-lf/interface",
"//daml-lf/transaction",
"//language-support/scala/bindings-akka",
"//ledger-api/rs-grpc-bridge",
"//ledger-service/db-backend",
"//ledger-service/jwt",
"//ledger-service/lf-value-json",
"//ledger-service/utils",
"//ledger/ledger-api-auth",
"//ledger/ledger-api-common",
"//libs-scala/auth-utils",
"//libs-scala/ports",
"//libs-scala/scala-utils",
"@maven//:ch_qos_logback_logback_classic",
]

da_scala_binary(
name = "http-json-binary",
main_class = "com.daml.http.Main",
resources = [":src/main/resources/logback.xml"],
scala_deps = [
"@maven//:com_chuusai_shapeless",
"@maven//:com_github_scopt_scopt",
"@maven//:com_lihaoyi_sourcecode",
"@maven//:com_typesafe_akka_akka_http",
"@maven//:com_typesafe_akka_akka_http_core",
"@maven//:com_typesafe_akka_akka_http_spray_json",
"@maven//:com_typesafe_akka_akka_slf4j",
"@maven//:com_typesafe_scala_logging_scala_logging",
"@maven//:io_spray_spray_json",
"@maven//:org_scala_lang_modules_scala_collection_compat",
"@maven//:org_scalaz_scalaz_core",
"@maven//:org_tpolecat_doobie_core",
"@maven//:org_tpolecat_doobie_free",
"@maven//:org_tpolecat_doobie_postgres",
"@maven//:org_typelevel_cats_core",
"@maven//:org_typelevel_cats_effect",
"@maven//:org_typelevel_cats_free",
"@maven//:org_typelevel_cats_kernel",
scala_deps = json_scala_deps,
scalacopts = hj_scalacopts,
tags = [
"maven_coordinates=com.daml:http-json-deploy:__VERSION__",
"no_scala_version_suffix",
],
visibility = ["//visibility:public"],
deps = json_deps,
)

da_scala_binary(
name = "http-json-binary-ee",
main_class = "com.daml.http.Main",
resources = [":src/main/resources/logback.xml"],
scala_deps = json_scala_deps,
scalacopts = hj_scalacopts,
tags = [
"maven_coordinates=com.daml:http-json-deploy:__VERSION__",
"no_scala_version_suffix",
],
visibility = ["//visibility:public"],
deps = [
":http-json",
"//daml-lf/data",
"//daml-lf/interface",
"//daml-lf/transaction",
"//language-support/scala/bindings-akka",
"//ledger-api/rs-grpc-bridge",
"//ledger-service/db-backend",
"//ledger-service/jwt",
"//ledger-service/lf-value-json",
"//ledger-service/utils",
"//ledger/ledger-api-auth",
"//ledger/ledger-api-common",
"//libs-scala/auth-utils",
"//libs-scala/ports",
"//libs-scala/scala-utils",
"@maven//:ch_qos_logback_logback_classic",
deps = json_deps + [
"@maven//:com_oracle_database_jdbc_ojdbc8",
],
)

Expand Down
4 changes: 3 additions & 1 deletion release/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -67,4 +67,6 @@ protos_zip(
name = "protobufs",
) if not is_windows else None

sdk_tarball("sdk-release-tarball", sdk_version)
sdk_tarball("sdk-release-tarball", sdk_version, "community")

sdk_tarball("sdk-release-tarball-ee", sdk_version, "enterprise")
124 changes: 73 additions & 51 deletions release/util.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -4,85 +4,107 @@
load("//daml-lf/language:daml-lf.bzl", "LF_VERSIONS")
load("@build_environment//:configuration.bzl", "sdk_version")

def sdk_tarball(name, version):
inputs = {
"sdk_config": ":sdk-config.yaml.tmpl",
"install_sh": ":install.sh",
"install_bat": ":install.bat",
"sandbox_logback": "//ledger/sandbox-common:src/main/resources/logback.xml",
"navigator_logback": "//navigator/backend:src/main/resources/logback.xml",
"extractor_logback": "//extractor:src/main/resources/logback.xml",
"http_json_logback": "//ledger-service/http-json:src/main/resources/logback.xml",
"oauth2_middleware_logback": "//triggers/service/auth:release/oauth2-middleware-logback.xml",
"trigger_service_logback": "//triggers/service:release/trigger-service-logback.xml",
"trigger_logback": "//triggers/runner:src/main/resources/logback.xml",
"java_codegen_logback": "//language-support/java/codegen:src/main/resources/logback.xml",
"daml_script_logback": "//daml-script/runner:src/main/resources/logback.xml",
"NOTICES": "//:NOTICES",
"daml_dist": "//daml-assistant:daml-dist",
"daml_helper_dist": "//daml-assistant/daml-helper:daml-helper-dist",
"damlc_dist": "//compiler/damlc:damlc-dist",
"daml_extension": "//compiler/daml-extension:vsix",
"daml2js_dist": "//language-support/ts/codegen:daml2js-dist",
"templates": "//templates:templates-tarball.tar.gz",
"trigger_dars": "//triggers/daml:daml-trigger-dars",
"script_dars": "//daml-script/daml:daml-script-dars",
"sdk_deploy_jar": {
"community": "//daml-assistant/daml-sdk:sdk_deploy.jar",
"enterprise": "//daml-assistant/daml-sdk:sdk_ee_deploy.jar",
},
}

def input_target(config, name):
targets = inputs.get(name)
if type(targets) == "string":
return targets
else:
return targets.get(config)

def sdk_tarball(name, version, config):
kwargs = {name: input_target(config, name) for name in inputs.keys()}
native.genrule(
name = name,
srcs = [
":sdk-config.yaml.tmpl",
":install.sh",
":install.bat",
"//ledger/sandbox-common:src/main/resources/logback.xml",
"//navigator/backend:src/main/resources/logback.xml",
"//extractor:src/main/resources/logback.xml",
"//ledger-service/http-json:src/main/resources/logback.xml",
"//triggers/service/auth:release/oauth2-middleware-logback.xml",
"//triggers/service:release/trigger-service-logback.xml",
"//language-support/java/codegen:src/main/resources/logback.xml",
"//triggers/runner:src/main/resources/logback.xml",
"//daml-script/runner:src/main/resources/logback.xml",
"//:NOTICES",
"//daml-assistant:daml-dist",
"//compiler/damlc:damlc-dist",
"//compiler/daml-extension:vsix",
"//daml-assistant/daml-helper:daml-helper-dist",
"//language-support/ts/codegen:daml2js-dist",
"//templates:templates-tarball.tar.gz",
"//triggers/daml:daml-trigger-dars",
"//daml-script/daml:daml-script-dars",
"//daml-assistant/daml-sdk:sdk_deploy.jar",
],
srcs = [input_target(config, name) for name in inputs.keys()],
outs = ["{}.tar.gz".format(name)],
tools = ["//bazel_tools/sh:mktgz"],
cmd = """
# damlc
VERSION={version}
OUT=sdk-$$VERSION
DIR=$$(mktemp -d)
trap "rm -rf $$DIR" EXIT
OUT=$$DIR/sdk-$$VERSION
mkdir -p $$OUT

cp $(location //:NOTICES) $$OUT/NOTICES
cp $(location {NOTICES}) $$OUT/NOTICES

cp $(location :install.sh) $$OUT/install.sh
cp $(location :install.bat) $$OUT/install.bat
cp $(location {install_sh}) $$OUT/install.sh
cp $(location {install_bat}) $$OUT/install.bat

cp $(location :sdk-config.yaml.tmpl) $$OUT/sdk-config.yaml
cp $(location {sdk_config}) $$OUT/sdk-config.yaml
sed -i "s/__VERSION__/$$VERSION/" $$OUT/sdk-config.yaml

mkdir -p $$OUT/daml
tar xf $(location //daml-assistant:daml-dist) --strip-components=1 -C $$OUT/daml
tar xf $(location {daml_dist}) --strip-components=1 -C $$OUT/daml

mkdir -p $$OUT/damlc
tar xf $(location //compiler/damlc:damlc-dist) --strip-components=1 -C $$OUT/damlc
tar xf $(location {damlc_dist}) --strip-components=1 -C $$OUT/damlc

mkdir -p $$OUT/daml-libs
cp -t $$OUT/daml-libs $(locations //triggers/daml:daml-trigger-dars)
cp -t $$OUT/daml-libs $(locations //daml-script/daml:daml-script-dars)
cp -t $$OUT/daml-libs $(locations {trigger_dars})
cp -t $$OUT/daml-libs $(locations {script_dars})

mkdir -p $$OUT/daml-helper
tar xf $(location //daml-assistant/daml-helper:daml-helper-dist) --strip-components=1 -C $$OUT/daml-helper
tar xf $(location {daml_helper_dist}) --strip-components=1 -C $$OUT/daml-helper

mkdir -p $$OUT/daml2js
tar xf $(location //language-support/ts/codegen:daml2js-dist) --strip-components=1 -C $$OUT/daml2js
tar xf $(location {daml2js_dist}) --strip-components=1 -C $$OUT/daml2js

mkdir -p $$OUT/studio
cp $(location //compiler/daml-extension:vsix) $$OUT/studio/daml-bundled.vsix
cp $(location {daml_extension}) $$OUT/studio/daml-bundled.vsix

mkdir -p $$OUT/templates
tar xf $(location //templates:templates-tarball.tar.gz) --strip-components=1 -C $$OUT/templates
tar xf $(location {templates}) --strip-components=1 -C $$OUT/templates

mkdir -p $$OUT/daml-sdk
cp $(location //daml-assistant/daml-sdk:sdk_deploy.jar) $$OUT/daml-sdk/daml-sdk.jar
cp -L $(location //ledger-service/http-json:src/main/resources/logback.xml) $$OUT/daml-sdk/json-api-logback.xml
cp -L $(location //triggers/service:release/trigger-service-logback.xml) $$OUT/daml-sdk/
cp -L $(location //triggers/service/auth:release/oauth2-middleware-logback.xml) $$OUT/daml-sdk/
cp -L $(location //ledger/sandbox-common:src/main/resources/logback.xml) $$OUT/daml-sdk/sandbox-logback.xml
cp -L $(location //navigator/backend:src/main/resources/logback.xml) $$OUT/daml-sdk/navigator-logback.xml
cp -L $(location //extractor:src/main/resources/logback.xml) $$OUT/daml-sdk/extractor-logback.xml
cp -L $(location //language-support/java/codegen:src/main/resources/logback.xml) $$OUT/daml-sdk/codegen-logback.xml
cp -L $(location //triggers/runner:src/main/resources/logback.xml) $$OUT/daml-sdk/trigger-logback.xml
cp -L $(location //daml-script/runner:src/main/resources/logback.xml) $$OUT/daml-sdk/script-logback.xml

$(execpath //bazel_tools/sh:mktgz) $@ $$OUT
""".format(version = version),
cp $(location {sdk_deploy_jar}) $$OUT/daml-sdk/daml-sdk.jar
cp -L $(location {http_json_logback}) $$OUT/daml-sdk/json-api-logback.xml
cp -L $(location {trigger_service_logback}) $$OUT/daml-sdk/
cp -L $(location {oauth2_middleware_logback}) $$OUT/daml-sdk/
cp -L $(location {sandbox_logback}) $$OUT/daml-sdk/sandbox-logback.xml
cp -L $(location {navigator_logback}) $$OUT/daml-sdk/navigator-logback.xml
cp -L $(location {extractor_logback}) $$OUT/daml-sdk/extractor-logback.xml
cp -L $(location {java_codegen_logback}) $$OUT/daml-sdk/codegen-logback.xml
cp -L $(location {trigger_logback}) $$OUT/daml-sdk/trigger-logback.xml
cp -L $(location {daml_script_logback}) $$OUT/daml-sdk/script-logback.xml

MKTGZ=$$PWD/$(execpath //bazel_tools/sh:mktgz)
OUT_PATH=$$PWD/$@
cd $$DIR

$$MKTGZ $$OUT_PATH $$(basename $$OUT)
""".format(
version = version,
**kwargs
),
visibility = ["//visibility:public"],
)

Expand Down

0 comments on commit 5197374

Please sign in to comment.