mirror of
https://github.com/digital-asset/daml.git
synced 2024-09-20 09:17:43 +03:00
ccd36146a4
This PR does two things: 1. It makes use of the new sha256sums file to speed up the script to update the versions significantly. The code here is a bit hacky but as mentioned in the comment, this script is only run offline atm so that seems reasonable. 2. It prunes SDK snapshot versions to those for which there is no corresponding stable release. changelog_begin changelog_end
311 lines
8.6 KiB
Python
311 lines
8.6 KiB
Python
workspace(name = "compatibility")
|
||
|
||
# We import the main workspace for nix stuff and some shared Bazel rules.
|
||
# This is mainly so we don’t have to symlink a bunch of files.
|
||
# Note that you should never depend on targets from @daml.
|
||
local_repository(
|
||
name = "daml",
|
||
path = "..",
|
||
)
|
||
|
||
load("@daml//bazel_tools:os_info.bzl", "os_info")
|
||
|
||
os_info(name = "os_info")
|
||
|
||
load("@os_info//:os_info.bzl", "is_darwin", "is_linux", "is_windows", "os_name")
|
||
load("@daml//bazel_tools:build_environment.bzl", "build_environment")
|
||
|
||
build_environment(name = "build_environment")
|
||
|
||
load("//:deps.bzl", "daml_deps")
|
||
|
||
daml_deps()
|
||
|
||
load("@rules_haskell//haskell:repositories.bzl", "rules_haskell_dependencies")
|
||
|
||
rules_haskell_dependencies()
|
||
|
||
load("@daml//bazel_tools/dev_env_tool:dev_env_tool.bzl", "dadew", "dev_env_tool")
|
||
|
||
dadew(name = "dadew")
|
||
|
||
load("@daml//bazel_tools/dev_env_tool:dev_env_tool.bzl", "dadew_sh_posix_configure")
|
||
|
||
dadew_sh_posix_configure() if is_windows else None
|
||
|
||
load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories")
|
||
load(
|
||
"@rules_haskell//haskell:nixpkgs.bzl",
|
||
"haskell_register_ghc_nixpkgs",
|
||
)
|
||
load(
|
||
"@rules_haskell//haskell:ghc_bindist.bzl",
|
||
"haskell_register_ghc_bindists",
|
||
)
|
||
load(
|
||
"@io_tweag_rules_nixpkgs//nixpkgs:nixpkgs.bzl",
|
||
"nixpkgs_cc_configure_hermetic",
|
||
"nixpkgs_local_repository",
|
||
"nixpkgs_package",
|
||
"nixpkgs_python_configure",
|
||
)
|
||
load("//:versions.bzl", "latest_stable_version", "sdk_versions", "version_sha256s")
|
||
|
||
common_nix_file_deps = [
|
||
"@daml//nix:bazel.nix",
|
||
"@daml//nix:nixpkgs.nix",
|
||
"@daml//nix:nixpkgs/default.nix",
|
||
"@daml//nix:nixpkgs/default.src.json",
|
||
]
|
||
|
||
nix_ghc_deps = common_nix_file_deps + [
|
||
"@daml//nix:ghc.nix",
|
||
"@daml//nix:with-packages-wrapper.nix",
|
||
"@daml//nix:overrides/ghc-8.6.5.nix",
|
||
"@daml//nix:overrides/ghc-8.6.3-binary.nix",
|
||
]
|
||
|
||
dev_env_nix_repos = {
|
||
"nixpkgs": "@nixpkgs",
|
||
}
|
||
|
||
nixpkgs_local_repository(
|
||
name = "nixpkgs",
|
||
nix_file = "@daml//nix:nixpkgs.nix",
|
||
nix_file_deps = [
|
||
"@daml//nix:nixpkgs/default.nix",
|
||
"@daml//nix:nixpkgs/default.src.json",
|
||
],
|
||
)
|
||
|
||
nixpkgs_cc_configure_hermetic(
|
||
# We override the Bazel's autodetect toolchain to avoid accidentaly
|
||
# dependencies on the inhermetic autodetected builtin include paths or
|
||
# builds failing due to Bazel not finding `cc` in `$PATH` or `$CC`.
|
||
name = "local_config_cc",
|
||
nix_file = "@daml//nix:bazel-cc-toolchain.nix",
|
||
nix_file_deps = common_nix_file_deps + [
|
||
"@daml//nix:tools/bazel-cc-toolchain/default.nix",
|
||
],
|
||
repositories = dev_env_nix_repos,
|
||
) if not is_windows else None
|
||
|
||
nixpkgs_package(
|
||
name = "glibc_locales",
|
||
attribute_path = "glibcLocales",
|
||
build_file_content = """
|
||
package(default_visibility = ["//visibility:public"])
|
||
filegroup(
|
||
name = "locale-archive",
|
||
srcs = ["lib/locale/locale-archive"],
|
||
)
|
||
""",
|
||
nix_file = "@daml//nix:bazel.nix",
|
||
nix_file_deps = common_nix_file_deps,
|
||
repositories = dev_env_nix_repos,
|
||
) if is_linux else None
|
||
|
||
haskell_register_ghc_bindists(
|
||
compiler_flags = [],
|
||
version = "8.6.5",
|
||
) if is_windows else None
|
||
|
||
haskell_register_ghc_nixpkgs(
|
||
attribute_path = "ghcStatic",
|
||
build_file = "@io_tweag_rules_nixpkgs//nixpkgs:BUILD.pkg",
|
||
is_static = True,
|
||
locale_archive = "@glibc_locales//:locale-archive",
|
||
nix_file = "@daml//nix:bazel.nix",
|
||
nix_file_deps = nix_ghc_deps,
|
||
repositories = dev_env_nix_repos,
|
||
version = "8.6.5",
|
||
)
|
||
|
||
nixpkgs_python_configure(repository = "@nixpkgs")
|
||
|
||
nixpkgs_package(
|
||
name = "postgresql_nix",
|
||
attribute_path = "postgresql_9_6",
|
||
build_file_content = """
|
||
package(default_visibility = ["//visibility:public"])
|
||
filegroup(
|
||
name = "all",
|
||
srcs = glob(["**"]),
|
||
)
|
||
""",
|
||
fail_not_supported = False,
|
||
nix_file = "@daml//nix:bazel.nix",
|
||
nix_file_deps = common_nix_file_deps,
|
||
repositories = dev_env_nix_repos,
|
||
)
|
||
|
||
nixpkgs_package(
|
||
name = "openssl_nix",
|
||
attribute_path = "openssl",
|
||
fail_not_supported = False,
|
||
nix_file = "@daml//nix:bazel.nix",
|
||
nix_file_deps = common_nix_file_deps,
|
||
repositories = dev_env_nix_repos,
|
||
)
|
||
|
||
dev_env_tool(
|
||
name = "openssl_dev_env",
|
||
nix_include = ["bin/openssl"],
|
||
nix_label = "@openssl_nix",
|
||
nix_paths = ["bin/openssl"],
|
||
tools = ["openssl"],
|
||
win_include = [
|
||
"usr/bin",
|
||
"usr/ssl",
|
||
],
|
||
win_paths = ["usr/bin/openssl.exe"],
|
||
win_tool = "msys2",
|
||
)
|
||
|
||
nixpkgs_package(
|
||
name = "hlint_nix",
|
||
attribute_path = "hlint",
|
||
nix_file = "@daml//nix:bazel.nix",
|
||
nix_file_deps = nix_ghc_deps,
|
||
repositories = dev_env_nix_repos,
|
||
)
|
||
|
||
nixpkgs_package(
|
||
name = "node_nix",
|
||
attribute_path = "nodejsNested",
|
||
build_file_content = 'exports_files(glob(["node_nix/**"]))',
|
||
fail_not_supported = False,
|
||
nix_file = "@daml//nix:bazel.nix",
|
||
nix_file_deps = common_nix_file_deps,
|
||
repositories = dev_env_nix_repos,
|
||
)
|
||
|
||
dev_env_tool(
|
||
name = "nodejs_dev_env",
|
||
nix_include = [
|
||
"bin",
|
||
"include",
|
||
"lib",
|
||
"share",
|
||
],
|
||
nix_label = "@node_nix",
|
||
nix_paths = [],
|
||
prefix = "nodejs_dev_env",
|
||
tools = [],
|
||
win_include = [
|
||
".",
|
||
],
|
||
win_paths = [],
|
||
win_tool = "nodejs-12.17.0",
|
||
)
|
||
|
||
node_repositories(
|
||
vendored_node = "@nodejs_dev_env" if is_windows else "@node_nix",
|
||
yarn_version = "1.22.4",
|
||
)
|
||
|
||
nixpkgs_package(
|
||
name = "patch_nix",
|
||
attribute_path = "gnupatch",
|
||
fail_not_supported = False,
|
||
nix_file = "@daml//nix:bazel.nix",
|
||
nix_file_deps = common_nix_file_deps,
|
||
repositories = dev_env_nix_repos,
|
||
)
|
||
|
||
dev_env_tool(
|
||
name = "patch_dev_env",
|
||
nix_include = ["bin/patch"],
|
||
nix_label = "@patch_nix",
|
||
nix_paths = ["bin/patch"],
|
||
tools = ["patch"],
|
||
win_include = ["usr/bin/patch.exe"],
|
||
win_paths = ["usr/bin/patch.exe"],
|
||
win_tool = "msys2",
|
||
)
|
||
|
||
load("//:bazel-haskell-deps.bzl", "daml_haskell_deps")
|
||
|
||
daml_haskell_deps()
|
||
|
||
load("//bazel_tools:daml_sdk.bzl", "daml_sdk", "daml_sdk_head")
|
||
|
||
local_repository(
|
||
name = "head_sdk",
|
||
path = "head_sdk",
|
||
)
|
||
|
||
daml_sdk_head(
|
||
create_daml_app_patch = "@head_sdk//:messaging.patch",
|
||
daml_ledger_tarball = "@head_sdk//:daml-ledger-0.0.0.tgz",
|
||
daml_react_tarball = "@head_sdk//:daml-react-0.0.0.tgz",
|
||
daml_types_tarball = "@head_sdk//:daml-types-0.0.0.tgz",
|
||
ledger_api_test_tool = "@head_sdk//:ledger-api-test-tool_deploy.jar",
|
||
os_name = os_name,
|
||
sdk_tarball = "@head_sdk//:sdk-release-tarball.tar.gz",
|
||
)
|
||
|
||
[
|
||
daml_sdk(
|
||
# See the explanation in UpdateVersions.hs
|
||
create_daml_app_patch = None if version_sha256s.get(ver).get("create_daml_app_patch") else "@daml-sdk-1.1.1//:create_daml_app.patch",
|
||
create_daml_app_patch_sha256 = version_sha256s.get(ver).get("create_daml_app_patch"),
|
||
daml_ledger_sha256 = version_sha256s.get(ver).get("daml_ledger"),
|
||
daml_react_sha256 = version_sha256s.get(ver).get("daml_react"),
|
||
daml_types_sha256 = version_sha256s.get(ver).get("daml_types"),
|
||
os_name = os_name,
|
||
sdk_sha256 = version_sha256s.get(ver),
|
||
test_tool_sha256 = version_sha256s.get(ver).get("test_tool"),
|
||
version = ver,
|
||
)
|
||
for ver in sdk_versions
|
||
if ver != "0.0.0"
|
||
]
|
||
|
||
load("@rules_jvm_external//:defs.bzl", "maven_install")
|
||
|
||
# We base our Maven artifacts on the latest stable release
|
||
# for now. In principle, we could setup one Maven workspace
|
||
# per SDK version but that is a bit painful to setup and
|
||
# seems to bring little benefit.
|
||
maven_install(
|
||
name = "maven",
|
||
artifacts = [
|
||
"com.daml:bindings-akka_2.12:{}".format(latest_stable_version),
|
||
"com.daml:daml-lf-archive-reader_2.12:{}".format(latest_stable_version),
|
||
"com.daml:daml-lf-transaction_2.12:{}".format(latest_stable_version),
|
||
"com.daml:ledger-api-common_2.12:{}".format(latest_stable_version),
|
||
"com.daml:lf-value-json_2.12:{}".format(latest_stable_version),
|
||
"com.github.scopt:scopt_2.12:3.7.1",
|
||
"org.wartremover:wartremover_2.12:2.2.0",
|
||
"io.spray:spray-json_2.12:1.3.3",
|
||
],
|
||
maven_install_json = "@compatibility//:maven_install.json",
|
||
repositories = [
|
||
"https://repo1.maven.org/maven2",
|
||
],
|
||
version_conflict_policy = "pinned",
|
||
)
|
||
|
||
load("@maven//:defs.bzl", "pinned_maven_install")
|
||
|
||
pinned_maven_install()
|
||
|
||
load(
|
||
"@io_bazel_rules_scala//scala:scala.bzl",
|
||
"scala_repositories",
|
||
)
|
||
|
||
scala_repositories((
|
||
"2.12.11",
|
||
{
|
||
"scala_compiler": "e901937dbeeae1715b231a7cfcd547a10d5bbf0dfb9d52d2886eae18b4d62ab6",
|
||
"scala_library": "dbfe77a3fc7a16c0c7cb6cb2b91fecec5438f2803112a744cb1b187926a138be",
|
||
"scala_reflect": "5f9e156aeba45ef2c4d24b303405db259082739015190b3b334811843bd90d6a",
|
||
},
|
||
))
|
||
|
||
load("@io_bazel_rules_scala//scala:toolchains.bzl", "scala_register_toolchains")
|
||
|
||
scala_register_toolchains()
|