mirror of
https://github.com/digital-asset/daml.git
synced 2024-09-20 09:17:43 +03:00
41b8448b17
* LF: Simplify archive reader. - decouple Reader and Decoder - introduce case class to handle hash, proto payload, and version CHANGELOG_BEGIN CHANGELOG_END * Address Moritz' review * cosmetic
207 lines
6.6 KiB
Python
207 lines
6.6 KiB
Python
# Copyright (c) 2021 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")
|
|
load("//bazel_tools:javadoc_library.bzl", "javadoc_library")
|
|
load("//bazel_tools:pom_file.bzl", "pom_file")
|
|
load("//bazel_tools:proto.bzl", "proto_jars")
|
|
load(
|
|
"//bazel_tools:scala.bzl",
|
|
"da_scala_binary",
|
|
"da_scala_library",
|
|
"da_scala_test_suite",
|
|
"lf_scalacopts",
|
|
"silencer_plugin",
|
|
)
|
|
load("//daml-lf/language:daml-lf.bzl", "LF_MAJOR_VERSIONS", "PROTO_LF_VERSIONS", "lf_version_package", "mangle_for_java")
|
|
load(
|
|
"//rules_daml:daml.bzl",
|
|
"daml_compile",
|
|
"daml_compile_with_dalf",
|
|
)
|
|
load("@io_bazel_rules_scala//scala:scala.bzl", "scala_library")
|
|
load("@os_info//:os_info.bzl", "is_windows")
|
|
load("@rules_pkg//:pkg.bzl", "pkg_tar")
|
|
|
|
[
|
|
[
|
|
filegroup(
|
|
name = "daml_lf_%s_archive_proto_srcs" % version,
|
|
srcs = glob([
|
|
"src/main/protobuf/com/{package}/daml_lf_{version}/*.proto".format(
|
|
package = lf_version_package(version),
|
|
version = mangle_for_java(version),
|
|
),
|
|
]),
|
|
),
|
|
proto_jars(
|
|
name = "daml_lf_%s_archive_proto" % version,
|
|
srcs = [":daml_lf_%s_archive_proto_srcs" % version],
|
|
javadoc_root_packages = [
|
|
"com.{package}.daml_lf_{version}".format(
|
|
package = lf_version_package(version),
|
|
version = mangle_for_java(version),
|
|
),
|
|
],
|
|
maven_artifact_prefix = "daml-lf-%s-archive" % version,
|
|
maven_group = "com.daml",
|
|
strip_import_prefix = "src/main/protobuf",
|
|
visibility = ["//visibility:public"],
|
|
),
|
|
]
|
|
for version in PROTO_LF_VERSIONS
|
|
]
|
|
|
|
# FIXME(JM): Clean this up
|
|
genrule(
|
|
name = "daml_lf_dev_archive_haskell_proto_src",
|
|
srcs = ["daml_lf_dev_archive_proto_srcs"],
|
|
outs = ["Com/Daml/DamlLfDev/DamlLf.hs"] +
|
|
["Com/Daml/DamlLfDev/DamlLf%s.hs" % v.title() for v in LF_MAJOR_VERSIONS],
|
|
cmd =
|
|
"\n".join(
|
|
[
|
|
"""
|
|
$(location @proto3_suite//:compile-proto-file) \
|
|
--includeDir daml-lf/archive/src/main/protobuf/ \
|
|
--proto com/daml/daml_lf_dev/daml_lf%s.proto \
|
|
--out $(@D)
|
|
""" % vx
|
|
for vx in [""] + ["_%s" % v for v in LF_MAJOR_VERSIONS]
|
|
],
|
|
),
|
|
tools = [
|
|
"@proto3_suite//:compile-proto-file",
|
|
],
|
|
)
|
|
|
|
da_haskell_library(
|
|
name = "daml_lf_dev_archive_haskell_proto",
|
|
srcs = [":daml_lf_dev_archive_haskell_proto_src"],
|
|
compiler_flags = [
|
|
"-O0",
|
|
], # disable optimization as this is otherwise way too slow to compile.
|
|
hackage_deps = [
|
|
"base",
|
|
"bytestring",
|
|
"containers",
|
|
"deepseq",
|
|
"proto3-suite",
|
|
"proto3-wire",
|
|
"text",
|
|
"vector",
|
|
],
|
|
visibility = ["//visibility:public"],
|
|
)
|
|
|
|
da_scala_library(
|
|
name = "daml_lf_archive_reader",
|
|
srcs = glob(["src/main/scala/**/*.scala"]),
|
|
plugins = [
|
|
silencer_plugin,
|
|
],
|
|
scala_deps = [
|
|
"@maven//:org_scalaz_scalaz_core",
|
|
"@maven//:org_scala_lang_modules_scala_collection_compat",
|
|
],
|
|
scalacopts = lf_scalacopts,
|
|
tags = ["maven_coordinates=com.daml:daml-lf-archive-reader:__VERSION__"],
|
|
visibility = ["//visibility:public"],
|
|
deps = [
|
|
":daml_lf_dev_archive_proto_java",
|
|
"//daml-lf/data",
|
|
"//daml-lf/language",
|
|
"@maven//:com_google_protobuf_protobuf_java",
|
|
],
|
|
)
|
|
|
|
da_scala_test_suite(
|
|
name = "daml_lf_archive_reader_tests",
|
|
size = "small",
|
|
srcs = glob(
|
|
["src/test/scala/**/*.scala"],
|
|
exclude = ["src/test/scala/com/digitalasset/daml/lf/archive/ZipBombDetectionSpec.scala"],
|
|
),
|
|
data = [
|
|
":DarReaderTest.dalf",
|
|
":DarReaderTest.dar",
|
|
":daml_lf_1.11_archive_proto_srcs",
|
|
":daml_lf_1.12_archive_proto_srcs",
|
|
":daml_lf_1.13_archive_proto_srcs",
|
|
":daml_lf_1.14_archive_proto_srcs",
|
|
":daml_lf_1.6_archive_proto_srcs",
|
|
":daml_lf_1.7_archive_proto_srcs",
|
|
":daml_lf_1.8_archive_proto_srcs",
|
|
],
|
|
scala_deps = [
|
|
"@maven//:org_scalacheck_scalacheck",
|
|
"@maven//:org_scalatest_scalatest",
|
|
"@maven//:org_scalatestplus_scalacheck_1_14",
|
|
"@maven//:org_scalaz_scalaz_core",
|
|
"@maven//:org_scalaz_scalaz_scalacheck_binding",
|
|
],
|
|
scalacopts = lf_scalacopts,
|
|
versioned_scala_deps = {
|
|
"2.12": ["@maven//:org_scala_lang_modules_scala_collection_compat"],
|
|
},
|
|
deps = [
|
|
":daml_lf_1.12_archive_proto_java",
|
|
":daml_lf_1.13_archive_proto_java",
|
|
":daml_lf_1.14_archive_proto_java",
|
|
":daml_lf_1.6_archive_proto_java",
|
|
":daml_lf_1.7_archive_proto_java",
|
|
":daml_lf_1.8_archive_proto_java",
|
|
":daml_lf_archive_reader",
|
|
":daml_lf_dev_archive_proto_java",
|
|
"//bazel_tools/runfiles:scala_runfiles",
|
|
"//daml-lf/data",
|
|
"//daml-lf/language",
|
|
"//daml-lf/transaction",
|
|
"//libs-scala/scalatest-utils",
|
|
"@maven//:com_google_protobuf_protobuf_java",
|
|
],
|
|
)
|
|
|
|
da_scala_test_suite(
|
|
name = "daml_lf_archive_reader_zipbomb_tests",
|
|
srcs = ["src/test/scala/com/digitalasset/daml/lf/archive/ZipBombDetectionSpec.scala"],
|
|
data = [
|
|
":DarReaderTest.dar",
|
|
],
|
|
scala_deps = [
|
|
"@maven//:org_scalacheck_scalacheck",
|
|
"@maven//:org_scalatestplus_scalacheck_1_14",
|
|
],
|
|
scalacopts = lf_scalacopts,
|
|
deps = [
|
|
":daml_lf_1.11_archive_proto_java",
|
|
":daml_lf_1.6_archive_proto_java",
|
|
":daml_lf_1.7_archive_proto_java",
|
|
":daml_lf_1.8_archive_proto_java",
|
|
":daml_lf_archive_reader",
|
|
":daml_lf_dev_archive_proto_java",
|
|
"//bazel_tools/runfiles:scala_runfiles",
|
|
"//daml-lf/data",
|
|
"@maven//:com_google_protobuf_protobuf_java",
|
|
],
|
|
)
|
|
|
|
daml_compile_with_dalf(
|
|
name = "DarReaderTest",
|
|
srcs = ["src/test/daml/DarReaderTest.daml"],
|
|
)
|
|
|
|
# An ad-hoc tool for testing, benchmarking and profiling package decoding performance in isolation.
|
|
da_scala_binary(
|
|
name = "decode-tester",
|
|
srcs = ["src/test/scala/com/digitalasset/daml/lf/archive/DecodeMain.scala"],
|
|
main_class = "com.daml.lf.archive.DecodeMain",
|
|
versioned_deps = {"2.13": ["@maven//:com_google_protobuf_protobuf_java"]},
|
|
deps = [
|
|
":daml_lf_archive_reader",
|
|
":daml_lf_dev_archive_proto_java",
|
|
"//daml-lf/data",
|
|
"//daml-lf/language",
|
|
],
|
|
)
|