daml/deps.bzl

353 lines
16 KiB
Python
Raw Normal View History

# Copyright (c) 2020 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
2019-04-04 11:33:38 +03:00
# SPDX-License-Identifier: Apache-2.0
#
# The dependencies of the daml workspace.
# This allows using the daml workspace externally
# from another bazel workspace.
#
# For example, another Bazel project can depend on
# targets in the daml repository by doing:
# ---
# local_repository(
# name = "com_github_digital_asset_daml",
# path = "/path/to/daml"
# )
# load("@com_github_digital_asset_daml//:deps.bzl", "daml_deps")
# daml_deps()
# ---
#
# A 3rd-party consumer would also need to register relevant
# toolchains and repositories in order to build targets.
# That is, copy some setup calls from WORKSPACE into the
# other WORKSPACE.
#
# Make sure to reference repository local files with the full
# prefix: @com_github_digital_asset_daml//..., as these won't
# be resolvable from external workspaces otherwise.
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive", "http_file")
2019-04-04 11:33:38 +03:00
load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")
load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe")
2019-04-04 11:33:38 +03:00
rules_scala_version = "152715b05547f160a512bae9b3d9e77a4888e243"
rules_scala_sha256 = "9b117bf591780b5665a8271d83c2530943330f06e2dd99574ca9cf538009d09d"
rules_haskell_version = "eb16a5401770098a801775ea3a893b09cafe054c"
rules_haskell_sha256 = "2fcab6b01a184435359f6bcbb9403f0457c2a4e0f1b1a4572b9d7f89d2fc5431"
Update Bazel 2.1.0 --> 3.3.1 (#6761) * Upgrade nixpkgs revision * Remove unused minio It used to be used as a gateway to push the Nix cache to GCS, but has since been replaced by nix-store-gcs-proxy. * Update Bazel on Windows changelog_begin changelog_end * Fix hlint warnings The nixpkgs update implied an hlint update which enabled new warnings. * Fix "Error applying patch" Since Bazel 2.2.0 the order of generating `WORKSPACE` and `BUILD` files and applying patches has been reversed. The allows users to define patches to these files that will not be immediately overwritten. However, it also means that patches on another repository's original `WORKSPACE` file will likely become invalid. * https://github.com/bazelbuild/bazel/commit/a948eb7255b8418f0bba1c819a58972066577d6f * https://github.com/bazelbuild/bazel/issues/10681 Hint: If you're generating a patch with `git` then you can use the following command to exclude the `WORKSPACE` file. ``` git diff ':(exclude)WORKSPACE' ``` * Update rules_nixpkgs * nixpkgs location expansion escaping * Drop --noincompatible_windows_native_test_wrapper * client_server_test using sh_inline_test client_server_test used to produce an executable shell script in form of a text file output. However, since the removal of `--noincompatible_windows_native_test_wrapper` this no longer works on Windows since `.sh` files are not directly executable on Windows. This change fixes the issue by producing the script file in a dedicated rule and then wrapping it in a `sh_test` rule which also works on Windows. * daml_test using sh_inline_test * daml_doc_test using sh_inline_test * _daml_validate_test using sh_inline_test * damlc_compile_test using sh_inline_test * client_server_test find .exe on Windows * Bump Windows cache for Bazel update Remove `clean --expunge` after merge. Co-authored-by: Andreas Herrmann <andreas.herrmann@tweag.io>
2020-07-23 10:46:04 +03:00
rules_nixpkgs_version = "659cf9db456f5a3c1a5a27747116fc50b709cdab"
rules_nixpkgs_sha256 = "6a76b8004ad94daa9ce7e95d902c790646f8abd598ae9f1b1978fb74a95e9ebd"
buildifier_version = "3.3.0"
buildifier_sha256 = "f11fc80da0681a6d64632a850346ed2d4e5cbb0908306d9a2a2915f707048a10"
zlib_version = "1.2.11"
zlib_sha256 = "629380c90a77b964d896ed37163f5c3a34f6e6d897311f1df2a7016355c45eff"
rules_nodejs_version = "2.0.1"
rules_nodejs_sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3"
rules_jvm_external_version = "3.3"
rules_jvm_external_sha256 = "d85951a92c0908c80bd8551002d66cb23c3434409c814179c0ff026b53544dab"
rules_go_version = "0.23.6"
rules_go_sha256 = "8663604808d2738dc615a2c3eb70eba54a9a982089dd09f6ffe5d0e75771bc4f"
# Recent davl.
davl_version = "f2d7480d118f32626533d6a150a8ee7552cc0222" # 2020-03-23, "Deploy upgrade to DAML SDK 0.13.56-snapshot.20200318",https://github.com/digital-asset/davl/pull/233/commits.
davl_sha256 = "3e8ae2a05724093e33b7f0363381e81a7e8e9655ccb3aa47ad540ea87e814321"
# Pinned davl relied on by damlc packaging tests.
davl_v3_version = "51d3977be2ab22f7f4434fd4692ca2e17a7cce23"
davl_v3_sha256 = "e8e76e21b50fb3adab36df26045b1e8c3ee12814abc60f137d39b864d2eae166"
# daml cheat sheet
daml_cheat_sheet_version = "9d44b550de6c5d23096116da37ccb2fb4a90f7af" # 2020-06-30
daml_cheat_sheet_sha256 = "6429b73e33a7a937048c3d1316182bff0cb34b6aed30e2915875da698ee4d5c9"
2019-04-04 11:33:38 +03:00
def daml_deps():
if "rules_haskell" not in native.existing_rules():
http_archive(
name = "rules_haskell",
strip_prefix = "rules_haskell-%s" % rules_haskell_version,
urls = ["https://github.com/tweag/rules_haskell/archive/%s.tar.gz" % rules_haskell_version],
patches = [
# Update and remove this patch once this is upstreamed.
# See https://github.com/tweag/rules_haskell/pull/1281
"@com_github_digital_asset_daml//bazel_tools:haskell-strict-source-names.patch",
# The fake libs issue should be fixed in upstream rules_haskell
# or GHC. Remove this patch once that's available.
"@com_github_digital_asset_daml//bazel_tools:haskell-windows-remove-fake-libs.patch",
# This is a daml specific patch and not upstreamable.
"@com_github_digital_asset_daml//bazel_tools:haskell-windows-extra-libraries.patch",
# This fixes a ghc-lib specific build issue and is not upstreamable.
# This might also be fixed by using `stack_snapshot` in the future.
"@com_github_digital_asset_daml//bazel_tools:haskell-no-isystem.patch",
# This should be made configurable in rules_haskell.
# Remove this patch once that's available.
"@com_github_digital_asset_daml//bazel_tools:haskell-opt.patch",
],
patch_args = ["-p1"],
sha256 = rules_haskell_sha256,
)
2019-04-04 11:33:38 +03:00
if "io_tweag_rules_nixpkgs" not in native.existing_rules():
http_archive(
name = "io_tweag_rules_nixpkgs",
strip_prefix = "rules_nixpkgs-%s" % rules_nixpkgs_version,
urls = ["https://github.com/tweag/rules_nixpkgs/archive/%s.tar.gz" % rules_nixpkgs_version],
sha256 = rules_nixpkgs_sha256,
patches = [
# Remove once https://github.com/tweag/rules_nixpkgs/pull/128
# has been merged
"@com_github_digital_asset_daml//bazel_tools:nixpkgs-hermetic-cc-toolchain.patch",
# On CI and locally we observe occasional segmantation faults
# of nix. A known issue since Nix 2.2.2 is that HTTP2 support
# can cause such segmentation faults. Since Nix 2.3.2 it is
# possible to disable HTTP2 via a command-line flag, which
# reportedly solves the issue. See
# https://github.com/NixOS/nix/issues/2733#issuecomment-518324335
"@com_github_digital_asset_daml//bazel_tools:nixpkgs-disable-http2.patch",
],
patch_args = ["-p1"],
)
2019-04-04 11:33:38 +03:00
if "com_github_madler_zlib" not in native.existing_rules():
http_archive(
name = "com_github_madler_zlib",
build_file = "@com_github_digital_asset_daml//3rdparty/c:zlib.BUILD",
strip_prefix = "zlib-{}".format(zlib_version),
urls = ["https://github.com/madler/zlib/archive/v{}.tar.gz".format(zlib_version)],
sha256 = zlib_sha256,
)
2019-04-04 11:33:38 +03:00
if "io_bazel_rules_go" not in native.existing_rules():
http_archive(
name = "io_bazel_rules_go",
urls = [
"https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v{version}/rules_go-v{version}.tar.gz".format(version = rules_go_version),
"https://github.com/bazelbuild/rules_go/releases/download/v{version}/rules_go-v{version}.tar.gz".format(version = rules_go_version),
],
sha256 = rules_go_sha256,
)
2019-04-04 11:33:38 +03:00
if "rules_jvm_external" not in native.existing_rules():
http_archive(
name = "rules_jvm_external",
strip_prefix = "rules_jvm_external-{}".format(rules_jvm_external_version),
sha256 = rules_jvm_external_sha256,
url = "https://github.com/bazelbuild/rules_jvm_external/archive/{}.zip".format(rules_jvm_external_version),
)
if "io_bazel_rules_scala" not in native.existing_rules():
http_archive(
name = "io_bazel_rules_scala",
url = "https://github.com/bazelbuild/rules_scala/archive/%s.zip" % rules_scala_version,
type = "zip",
strip_prefix = "rules_scala-%s" % rules_scala_version,
sha256 = rules_scala_sha256,
patches = [
"@com_github_digital_asset_daml//bazel_tools:scala-escape-jvmflags.patch",
# Upstream PR at https://github.com/bazelbuild/rules_scala/pull/1082
# Without this patch, rootpath resolves to the JAR
# and not the binary wrapper.
"@com_github_digital_asset_daml//bazel_tools:scala-binary-rootpath.patch",
],
patch_args = ["-p1"],
)
2019-04-04 11:33:38 +03:00
if "io_bazel_rules_docker" not in native.existing_rules():
http_archive(
name = "io_bazel_rules_docker",
url = "https://github.com/bazelbuild/rules_docker/releases/download/v0.14.3/rules_docker-v0.14.3.tar.gz",
strip_prefix = "rules_docker-0.14.3",
sha256 = "6287241e033d247e9da5ff705dd6ef526bac39ae82f3d17de1b69f8cb313f9cd",
)
if "com_google_protobuf" not in native.existing_rules():
http_archive(
name = "com_google_protobuf",
Update netty and iogrpc version (#6063) * io.grpc:grpc-xxxx to 1.29.0 (from 1.22.1) io.netty:netty-xxxx to .1.50.Final (from 4.1.37.Final) io.nett.netty-tcp-native-boringssl-static to 2.0.30.Final (from 2.0.25.Final) To resolve open vulnerabilities with these versions netty-4.1.37.Final vulnerabilities BDSA-2018-4022 (Medium) BDSA-2019-2610 (Medium) BDSA-2019-3119 (CVE-2019-16869) (Medium) BDSA-2020-0130 (Medium) BDSA BDSA-2019-4230 (CVE-2019-20445) (Low) BDSA BDSA-2019-4231 (CVE-2019-20444) (Low) BDSA BDSA-2020-0666 (CVE-2020-11612) (Low) BDSA BDSA-2019-2642 (Low) BDSA BDSA-2019-2649 (Low) BDSA BDSA-2019-2643 (Low) CHANGELOG_BEGIN Upgrade io.grpc:grpc-xxxxx and io.netty:netty-xxx version to latest released to avoid exposure to reported security vulnerabilities in currently used versions CHANGELOG_END – * Update spray versions to address vulnerabilities CVE-2018-18853 and CVE-2018-18854 CHANGELOG_BEGIN Upgrade io.grpc:grpc-xxxxx and io.netty:netty-xxx version to latest released to avoid exposure to reported security vulnerabilities in currently used versions CHANGELOG_END * do not change io.grpc version since reflection seems to be misbehaving * Clarify how to bump grpc/netty/protobuf versions Also "downgrade" netty to 4.1.48, according to https://github.com/grpc/grpc-java/blob/master/SECURITY.md#netty CHANGELOG_BEGIN CHANGELOG_END * Load protobuf deps after haskell deps to avoid loading an older version of rules_cc * Upgrade protoc and protobuf-java to 3.11.0 * buildifier reformat * regen unique int after rebase * remove commented patch Co-authored-by: Gerolf Seitz <gerolf.seitz@daml.com>
2020-05-27 20:44:34 +03:00
sha256 = "60d2012e3922e429294d3a4ac31f336016514a91e5a63fd33f35743ccfe1bd7d",
# changing this version needs to be in sync with protobuf-java and grpc dependencies in bazel-java-deps.bzl
strip_prefix = "protobuf-3.11.0",
urls = ["https://github.com/google/protobuf/archive/v3.11.0.zip"],
patches = [
],
patch_args = ["-p1"],
)
2019-04-04 11:33:38 +03:00
if "bazel_gazelle" not in native.existing_rules():
http_archive(
name = "bazel_gazelle",
urls = [
"https://storage.googleapis.com/bazel-mirror/github.com/bazelbuild/bazel-gazelle/releases/download/v0.19.1/bazel-gazelle-v0.19.1.tar.gz",
"https://github.com/bazelbuild/bazel-gazelle/releases/download/v0.19.1/bazel-gazelle-v0.19.1.tar.gz",
],
sha256 = "86c6d481b3f7aedc1d60c1c211c6f76da282ae197c3b3160f54bd3a8f847896f",
)
2019-04-04 11:33:38 +03:00
if "io_bazel_rules_sass" not in native.existing_rules():
http_archive(
name = "io_bazel_rules_sass",
sha256 = "7b9c9a88099d00dbb16be359c3b1946309d99673220c6b39c7e8bda8ecc692f8",
strip_prefix = "rules_sass-1.24.4",
urls = [
"https://github.com/bazelbuild/rules_sass/archive/1.24.4.zip",
"https://mirror.bazel.build/github.com/bazelbuild/rules_sass/archive/1.24.4.zip",
],
)
2019-04-04 11:33:38 +03:00
# Fetch rules_nodejs so we can install our npm dependencies
if "build_bazel_rules_nodejs" not in native.existing_rules():
http_archive(
name = "build_bazel_rules_nodejs",
urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/{}/rules_nodejs-{}.tar.gz".format(rules_nodejs_version, rules_nodejs_version)],
sha256 = rules_nodejs_sha256,
patches = [
# Work around for https://github.com/bazelbuild/rules_nodejs/issues/1565
"@com_github_digital_asset_daml//bazel_tools:rules_nodejs_npm_cli_path.patch",
"@com_github_digital_asset_daml//bazel_tools:rules_nodejs_node_dependency.patch",
],
patch_args = ["-p1"],
)
2019-04-04 11:33:38 +03:00
if "com_github_grpc_grpc" not in native.existing_rules():
# This should be kept in sync with the grpc version we get from Nix.
http_archive(
name = "com_github_grpc_grpc",
strip_prefix = "grpc-1.23.1",
urls = ["https://github.com/grpc/grpc/archive/v1.23.1.tar.gz"],
sha256 = "dd7da002b15641e4841f20a1f3eb1e359edb69d5ccf8ac64c362823b05f523d9",
patches = [
"@com_github_digital_asset_daml//bazel_tools:grpc-bazel-apple.patch",
"@com_github_digital_asset_daml//bazel_tools:grpc-bazel-mingw.patch",
],
patch_args = ["-p1"],
)
2019-04-04 11:33:38 +03:00
if "io_grpc_grpc_java" not in native.existing_rules():
http_archive(
name = "io_grpc_grpc_java",
strip_prefix = "grpc-java-1.21.0",
urls = ["https://github.com/grpc/grpc-java/archive/v1.21.0.tar.gz"],
sha256 = "9bc289e861c6118623fcb931044d843183c31d0e4d53fc43c4a32b56d6bb87fa",
patches = [
"@com_github_digital_asset_daml//bazel_tools:grpc-java-plugin-visibility.patch",
],
patch_args = ["-p1"],
)
if "com_github_johnynek_bazel_jar_jar" not in native.existing_rules():
http_archive(
name = "com_github_johnynek_bazel_jar_jar",
sha256 = "841ae424eec3f322d411eb49d949622cc84787cb4189a30698fa9adadb98deac",
strip_prefix = "bazel_jar_jar-20dbf71f09b1c1c2a8575a42005a968b38805519",
urls = ["https://github.com/johnynek/bazel_jar_jar/archive/20dbf71f09b1c1c2a8575a42005a968b38805519.zip"], # Latest commit SHA as at 2019/02/13
)
if "com_github_googleapis_googleapis" not in native.existing_rules():
http_archive(
name = "com_github_googleapis_googleapis",
strip_prefix = "googleapis-6c48ab5aef47dc14e02e2dc718d232a28067129d",
urls = ["https://github.com/googleapis/googleapis/archive/6c48ab5aef47dc14e02e2dc718d232a28067129d.tar.gz"],
sha256 = "70d7be6ad49b4424313aad118c8622aab1c5fdd5a529d4215d3884ff89264a71",
)
# Buildifier.
# It is written in Go and hence needs rules_go to be available.
if "com_github_bazelbuild_buildtools" not in native.existing_rules():
http_archive(
name = "com_github_bazelbuild_buildtools",
sha256 = buildifier_sha256,
strip_prefix = "buildtools-{}".format(buildifier_version),
url = "https://github.com/bazelbuild/buildtools/archive/{}.tar.gz".format(buildifier_version),
)
native.bind(
name = "guava",
actual = "@com_google_guava_guava//jar",
)
native.bind(
name = "gson",
actual = "@com_google_code_gson_gson//jar",
)
if "com_github_google_bazel_common" not in native.existing_rules():
http_archive(
name = "com_github_google_bazel_common",
sha256 = "48a209fed9575c9d108eaf11fb77f7fe6178a90135e4d60cac6f70c2603aa53a",
strip_prefix = "bazel-common-9e3880428c1837db9fb13335ed390b7e33e346a7",
urls = ["https://github.com/google/bazel-common/archive/9e3880428c1837db9fb13335ed390b7e33e346a7.zip"],
)
maybe(
http_archive,
name = "rules_pkg",
urls = [
"https://github.com/bazelbuild/rules_pkg/releases/download/0.2.6/rules_pkg-0.2.6.tar.gz",
"https://mirror.bazel.build/github.com/bazelbuild/rules_pkg/releases/download/0.2.6/rules_pkg-0.2.6.tar.gz",
],
sha256 = "aeca78988341a2ee1ba097641056d168320ecc51372ef7ff8e64b139516a4937",
)
if "com_github_grpc_ecosystem_grpc_health_probe_binary" not in native.existing_rules():
http_file(
name = "com_github_grpc_ecosystem_grpc_health_probe_binary",
sha256 = "bfbe82e34645e91cdf3bacbb0d2dc7786f3c3cc4da6b64a446e5fdfb7bb0429f",
downloaded_file_path = "grpc-health-probe",
urls = [
"https://github.com/grpc-ecosystem/grpc-health-probe/releases/download/v0.3.1/grpc_health_probe-linux-amd64",
],
executable = True,
)
if "davl-v3" not in native.existing_rules():
http_archive(
name = "davl-v3",
strip_prefix = "davl-{}".format(davl_v3_version),
urls = ["https://github.com/digital-asset/davl/archive/{}.tar.gz".format(davl_v3_version)],
sha256 = davl_v3_sha256,
build_file_content = """
package(default_visibility = ["//visibility:public"])
exports_files(["released/davl-v3.dar"])
""",
)
if "davl" not in native.existing_rules():
http_archive(
name = "davl",
strip_prefix = "davl-{}".format(davl_version),
urls = ["https://github.com/digital-asset/davl/archive/{}.tar.gz".format(davl_version)],
sha256 = davl_sha256,
build_file_content = """
package(default_visibility = ["//visibility:public"])
exports_files(["released/davl-v4.dar", "released/davl-v5.dar", "released/davl-upgrade-v3-v4.dar", "released/davl-upgrade-v4-v5.dar"])
""",
)
if "daml-cheat-sheet" not in native.existing_rules():
http_archive(
name = "daml-cheat-sheet",
strip_prefix = "daml-cheat-sheet-{}".format(daml_cheat_sheet_version),
urls = ["https://github.com/digital-asset/daml-cheat-sheet/archive/{}.tar.gz".format(daml_cheat_sheet_version)],
sha256 = daml_cheat_sheet_sha256,
build_file_content = """
package(default_visibility = ["//visibility:public"])
genrule(
name = "site",
srcs = ["_config.yml"] + glob(["**/*"],
exclude = ["_config.yml", "LICENSE", "WORKSPACE", "BUILD.bazel", "README.md"]),
outs = ["cheat-sheet.tar.gz"],
tools = ["@jekyll_nix//:bin/jekyll"],
cmd = '''
DIR=$$(dirname $(execpath _config.yml))
$(execpath @jekyll_nix//:bin/jekyll) build -s $$DIR
tar hc _site \\
--owner=1000 \\
--group=1000 \\
--mtime=2000-01-01\\ 00:00Z \\
--no-acls \\
--no-xattrs \\
--no-selinux \\
--sort=name \\
| gzip -n > $(OUTS)
''',
)
""",
)