daml/BUILD
Martin Huschenbett 6ec61bf506
Write proper SDK version in DAR manifest for snapshots (#7546)
* Write proper SDK version in DAR manifest for snapshots

Currently, we don't write the actual SDK version in the DAR manifest but
rather the version that has been sanitized for `ghc-pkg`. For proper
releases, these are identical but for snapshots the latter does not
contain the `-snapshot` part and the commit hash because `ghc-pkg` can
only handle numeric components.

This PR changes this behaviour such that we write the actual
unsanitized SDK version in the DAR manifest.

The implementation might look a bit unintuitive. However, we use the
`PackageSdkVersion` type for exactly two things:

1. Writing it into the manifest.
2. Using it to initialize the package database.

As mentioned above, the former should not be sanitized whereas the
latter should. So far, we've done the sanitization right after reading
the SDK version from `daml.yaml` or `DAML_SDK_VERSION`. Now, we do the
sanitization only in the code concerned with initializing the package
database.

CHANGELOG_BEGIN
[DAML Compiler]
- Bugfix: write the proper SDK version in the DAR manifest for
  snapshot releases instead of a sanitized version
CHANGELOG_END

* Drop SdkVersion.toGhcPkgVersion entirely

CHANGELOG_BEGIN
CHANGELOG_END
2020-10-02 12:59:18 +02:00

243 lines
4.8 KiB
Python

package(default_visibility = ["//:__subpackages__"])
load(
"@rules_haskell//haskell:defs.bzl",
"haskell_toolchain",
)
load(
"@rules_haskell//haskell:c2hs.bzl",
"c2hs_toolchain",
)
load("//bazel_tools:haskell.bzl", "da_haskell_library", "da_haskell_repl")
load("@os_info//:os_info.bzl", "is_windows")
load("@build_environment//:configuration.bzl", "ghc_version", "mvn_version", "sdk_version")
exports_files([".hlint.yaml"])
config_setting(
name = "on_linux",
constraint_values = [
"@bazel_tools//platforms:linux",
],
)
config_setting(
name = "on_osx",
constraint_values = [
"@bazel_tools//platforms:osx",
],
)
config_setting(
name = "on_freebsd",
constraint_values = [
"@bazel_tools//platforms:freebsd",
],
)
config_setting(
name = "on_windows",
constraint_values = [
"@bazel_tools//platforms:windows",
],
)
config_setting(
name = "profiling_build",
values = {
"compilation_mode": "dbg",
},
)
load(
"@rules_haskell//haskell:c2hs.bzl",
"c2hs_toolchain",
)
c2hs_toolchain(
name = "c2hs-toolchain",
c2hs = "@stackage-exe//c2hs",
)
filegroup(
name = "node_modules",
srcs = glob(["node_modules/**/*"]),
)
config_setting(
name = "ghci_data",
define_values = {
"ghci_data": "True",
},
)
config_setting(
name = "hie_bios_ghci",
define_values = {
"hie_bios_ghci": "True",
},
)
#
# Metadata
#
# The VERSION file is inlined in a few builds.
exports_files([
"NOTICES",
"LICENSE",
"CHANGELOG",
"tsconfig.json",
])
genrule(
name = "mvn_version_file",
outs = ["MVN_VERSION"],
cmd = "echo -n {mvn} > $@".format(mvn = mvn_version),
)
genrule(
name = "sdk-version-hs",
srcs = [],
outs = ["SdkVersion.hs"],
cmd = """
cat > $@ <<EOF
module SdkVersion where
import Module (stringToUnitId, UnitId)
sdkVersion :: String
sdkVersion = "{sdk}"
mvnVersion :: String
mvnVersion = "{mvn}"
damlStdlib :: UnitId
damlStdlib = stringToUnitId ("daml-stdlib-" ++ "{ghc}")
EOF
""".format(
ghc = ghc_version,
mvn = mvn_version,
sdk = sdk_version,
),
)
da_haskell_library(
name = "sdk-version-hs-lib",
srcs = [":sdk-version-hs"],
hackage_deps = [
"base",
"extra",
"ghc-lib-parser",
"split",
],
visibility = ["//visibility:public"],
)
#
# Common aliases
#
alias(
name = "damlc",
actual = "//compiler/damlc:damlc",
)
alias(
name = "damlc@ghci",
actual = "//compiler/damlc:damlc@ghci",
)
alias(
name = "damlc-dist",
actual = "//compiler/damlc:damlc-dist",
)
alias(
name = "daml2js",
actual = "//language-support/ts/codegen:daml2js",
)
alias(
name = "daml2js@ghci",
actual = "//language-support/ts/codegen:daml2js@ghci",
)
alias(
name = "daml-lf-repl",
actual = "//daml-lf/repl:repl",
)
alias(
name = "bindings-java",
actual = "//language-support/java/bindings:bindings-java",
)
alias(
name = "yarn",
actual = "@nodejs//:yarn",
)
alias(
name = "java",
actual = "@local_jdk//:bin/java.exe" if is_windows else "@local_jdk//:bin/java",
)
exports_files([
".scalafmt.conf",
])
# Buildifier.
load("@com_github_bazelbuild_buildtools//buildifier:def.bzl", "buildifier")
buildifier_excluded_patterns = [
"./3rdparty/haskell/c2hs-package.bzl",
"./3rdparty/haskell/network-package.bzl",
"**/node_modules/*",
]
# Run this to check if BUILD files are well-formatted.
buildifier(
name = "buildifier",
exclude_patterns = buildifier_excluded_patterns,
mode = "check",
)
# Run this to fix the errors in BUILD files.
buildifier(
name = "buildifier-fix",
exclude_patterns = buildifier_excluded_patterns,
mode = "fix",
verbose = True,
)
# Default target for da-ghci, da-ghcid.
da_haskell_repl(
name = "repl",
testonly = True,
visibility = ["//visibility:public"],
deps = [
":damlc",
"//compiler/daml-lf-ast:tests",
"//compiler/damlc/daml-doc:daml-doc-testing",
"//compiler/damlc/daml-ide-core:ide-testing",
"//compiler/damlc/stable-packages:generate-stable-package",
"//compiler/damlc/tests:daml-doctest",
"//compiler/damlc/tests:damlc-test",
"//compiler/damlc/tests:generate-simple-dalf",
"//compiler/damlc/tests:incremental",
"//compiler/damlc/tests:integration-v1dev",
"//compiler/damlc/tests:packaging",
"//daml-assistant:daml",
"//daml-assistant:test",
"//daml-assistant/daml-helper",
"//daml-assistant/daml-helper:test-deployment",
"//daml-assistant/daml-helper:test-tls",
"//daml-assistant/integration-tests",
"//language-support/hs/bindings:hs-ledger",
"//language-support/hs/bindings:test",
"//language-support/ts/codegen:daml2js",
],
)