daml/daml-lf/archive/BUILD.bazel
nickchapman-da 67d4011fcd
Fix NonUnitStatements in daml-lf code (#11145)
* build daml-lf/* with lf_scalacopts_stricter; and fix NonUnitStatements

fix daml-lf/archive

CHANGELOG_BEGIN
CHANGELOG_END

fix daml-lf/data/

fix daml-lf/engine

fixes for scala 2.12

data-scalacheck, interface, kv-transaction-support: switch on; nothing to do

* daml-lf/parser -- switch on; nothing to do

* daml-lf/validation : switch on lf_scalacopts_stricter & fix wartremover:NonUnitStatements

* lf_scalacopts_stricter in daml-lf/transaction-test-lib

* lf_scalacopts_stricter in daml-lf/scenario-interpreter
2021-10-11 14:54:33 +01:00

217 lines
7.0 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",
"lf_scalacopts_stricter",
"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/{directory}/protobuf/com/{package}/daml_lf_{version}/*.proto".format(
package = package,
version = mangled_version,
directory = directory,
),
]),
),
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 = package,
version = mangled_version,
),
],
maven_artifact_prefix = "daml-lf-%s-archive" % version,
maven_group = "com.daml",
strip_import_prefix = "src/%s/protobuf" % directory,
visibility = ["//visibility:public"],
),
]
for version in PROTO_LF_VERSIONS
for package in [lf_version_package(version)]
for mangled_version in [mangle_for_java(version)]
for directory in ["main" if version == "dev" else "stable"]
]
# 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_stricter,
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",
"//libs-scala/nameof",
"//libs-scala/scala-utils",
"@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_core",
"@maven//:org_scalatest_scalatest_flatspec",
"@maven//:org_scalatest_scalatest_matchers_core",
"@maven//:org_scalatest_scalatest_shouldmatchers",
"@maven//:org_scalatestplus_scalacheck_1_15",
"@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.11_archive_proto_java",
":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",
"@maven//:org_scalatest_scalatest_compatible",
],
)
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_15",
],
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",
deps = [
":daml_lf_archive_reader",
"//daml-lf/data",
"//daml-lf/language",
],
)