daml/docs/BUILD.bazel
Gary Verhaegen 3d70c68952
docs: no index (#14985)
This removes the index.rst files from the repo, and instead generates a
placeholder index that just includes all the rst files at build time.

The reason for this change is that the ToC is defined in docs.daml.com,
and having one on both sides is both confusing and error-prone.

CHANGELOG_BEGIN
CHANGELOG_END
2022-09-15 12:12:12 +02:00

885 lines
29 KiB
Python

# Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
load("@build_bazel_rules_nodejs//:index.bzl", "nodejs_binary")
load("@os_info//:os_info.bzl", "is_linux", "is_windows")
load("//rules_daml:daml.bzl", "daml_build_test", "daml_compile", "daml_test")
load("@rules_pkg//:pkg.bzl", "pkg_tar")
load("@build_environment//:configuration.bzl", "mvn_version", "sdk_version")
load("@scala_version//:index.bzl", "scala_major_version")
load("//bazel_tools:scala.bzl", "da_scala_test")
load(
"//daml-lf/language:daml-lf.bzl",
"LF_VERSIONS",
"lf_version_configuration",
)
exports_files(
[
"configs/html/conf.py",
"configs/static/pygments_daml_lexer.py",
"configs/static/typescript.py",
"scripts/check-closing-quotes.sh",
"scripts/check-closing-quotes.sh.allow",
"source/tools/export/output-root/Export.daml",
"source/tools/export/output-root/args.json",
"source/tools/export/output-root/daml.yaml",
],
)
nodejs_binary(
name = "grunt",
data = [
"@npm//grunt-cli",
],
entry_point = "@npm//:node_modules/grunt-cli/bin/grunt",
)
genrule(
name = "theme",
srcs = glob(
["theme/**"],
exclude = [
"theme/bower_components/**",
"theme/node_modules/**",
"theme/da_theme/**",
],
) + [
# we need to list all the transitive dependencies here because of https://github.com/bazelbuild/rules_nodejs/issues/1553
"@npm//:node_modules",
],
outs = ["da_theme.tar.gz"],
cmd = """
cp -rL docs/theme theme
cd theme
# Make the node_modules available
ln -s ../external/npm/node_modules .
# Run sass and grunt
../$(execpath @sass_nix//:bin/sass) \\
-I bower_components_static/bourbon/dist \\
-I bower_components_static/neat/app/assets/stylesheets \\
-I bower_components_static/font-awesome/scss \\
-I bower_components_static/wyrm/sass \\
--style compressed \\
--sourcemap=none \\
--update \\
sass:da_theme/static/css
../$(execpath :grunt) build
../$(execpath //bazel_tools/sh:mktgz) ../$@ da_theme
""",
tools = [
":grunt",
"//bazel_tools/sh:mktgz",
"@sass_nix//:bin/sass",
],
visibility = ["//visibility:public"],
) if not is_windows else None
genrule(
name = "hoogle_db",
srcs = [
"//compiler/damlc:daml-base-hoogle.txt",
"//daml-script/daml:daml-script-hoogle.txt",
"//triggers/daml:daml-trigger-hoogle.txt",
],
outs = ["hoogle_db.tar.gz"],
cmd = """
mkdir hoogle
cp -L $(location //compiler/damlc:daml-base-hoogle.txt) hoogle/
cp -L $(location //daml-script/daml:daml-script-hoogle.txt) hoogle/
cp -L $(location //triggers/daml:daml-trigger-hoogle.txt) hoogle/
$(execpath //bazel_tools/sh:mktgz) $@ hoogle
""",
tools = ["//bazel_tools/sh:mktgz"],
)
genrule(
name = "index",
srcs = glob(["source/**"]),
outs = ["index.rst"],
cmd = """
set -euo pipefail
cat << EOF >> $@
Daml Files
----------
.. toctree::
:titlesonly:
:maxdepth: 0
:hidden:
self
$$(cd docs/source; find . -name \\*.rst | sed 's:\\./\\(.*\\).rst: \\1 <\\1>:')
Canton References
-----------------
.. toctree::
canton-refs
EOF
""",
)
genrule(
name = "sources",
srcs = glob(["source/**"]) + [
"//compiler/damlc:daml-base-rst.tar.gz",
"//triggers/daml:daml-trigger-rst.tar.gz",
"//daml-script/daml:daml-script-rst.tar.gz",
"//ledger-api/grpc-definitions:docs",
"//:LICENSE",
"//:NOTICES",
":generate-docs-error-codes-inventory-into-rst-file",
":generate-docs-error-categories-inventory-into-rst-file",
],
outs = ["source.tar.gz"],
cmd = """
cp -rL docs/source source
# Copy in error inventories
#
# These files are meant to be only included into other .rst files and so
# in order to prevent Sphinx from recognizing them as source files
# we append an '.inc' suffix. (See `source_suffix` in `conf.py`.)
cp -L -- $(location //docs:generate-docs-error-codes-inventory-into-rst-file) source/app-dev/grpc/error-codes-inventory.rst.inc
cp -L -- $(location //docs:generate-docs-error-categories-inventory-into-rst-file) source/app-dev/grpc/error-categories-inventory.rst.inc
# Copy in Stdlib
mkdir -p source/daml/stdlib
tar xf $(location //compiler/damlc:daml-base-rst.tar.gz) \\
--strip-components 1 \\
-C source/daml/stdlib
# Copy in daml-trigger documentation
mkdir -p source/triggers/api/
tar xf $(location //triggers/daml:daml-trigger-rst.tar.gz) \\
--strip-components 1 \\
-C source/triggers/api/
# Copy in daml-script documentation
mkdir -p source/daml-script/api/
tar xf $(location //daml-script/daml:daml-script-rst.tar.gz) \\
--strip-components 1 \\
-C source/daml-script/api/
# Copy in Protobufs
cp -rL $(location //ledger-api/grpc-definitions:docs) source/app-dev/grpc/proto-docs.rst
# Copy in License and Notices
cp -L $(location //:LICENSE) source/LICENSE
cp -L $(location //:NOTICES) source/NOTICES
$(execpath //bazel_tools/sh:mktgz) $@ source
""",
tools = ["//bazel_tools/sh:mktgz"],
)
genrule(
name = "sphinx-source-tree-deps",
srcs = [
"configs/static/pygments_daml_lexer.py",
"configs/static/typescript.py",
"configs/html/conf.py",
"configs/pdf/conf.py",
"configs/pdf/logo.png",
"//templates:templates-tarball",
"//templates:create-daml-app-docs",
"//templates:create-daml-app-test-resources/index.test.ts",
":generate-docs-error-codes-inventory-into-rst-file",
":generate-docs-error-categories-inventory-into-rst-file",
"//compiler/damlc:daml-base-rst.tar.gz",
"//triggers/daml:daml-trigger-rst.tar.gz",
"//daml-script/daml:daml-script-rst.tar.gz",
"//ledger-api/grpc-definitions:docs",
"//:LICENSE",
"//:NOTICES",
] + glob(
["theme/**"],
exclude = [
"theme/bower_components/**",
"theme/node_modules/**",
"theme/da_theme/**",
],
),
outs = ["sphinx-source-tree-deps.tar.gz"],
cmd = """
set -eou pipefail
DIR=$$(mktemp -d)
trap "rm -rf $$DIR" EXIT
mkdir -p $$DIR/deps/configs/{{static,pdf,html}}
cp $(location configs/static/pygments_daml_lexer.py) $$DIR/deps/configs/static
cp $(location configs/static/typescript.py) $$DIR/deps/configs/static
cp $(location configs/html/conf.py) $$DIR/deps/configs/html
cp $(location configs/pdf/conf.py) $$DIR/deps/configs/pdf
cp $(location configs/pdf/logo.png) $$DIR/deps/configs/pdf
mkdir -p $$DIR/deps/theme
cp -rL docs/theme/* $$DIR/deps/theme
cp $(location //templates:templates-tarball) $$DIR/deps/
cp $(location //templates:create-daml-app-docs) $$DIR/deps/
cp $(location //templates:create-daml-app-test-resources/index.test.ts) $$DIR/deps/
cp -L -- $(location //docs:generate-docs-error-codes-inventory-into-rst-file) $$DIR/deps/
cp -L -- $(location //docs:generate-docs-error-categories-inventory-into-rst-file) $$DIR/deps/
cp $(location //compiler/damlc:daml-base-rst.tar.gz) $$DIR/deps/
cp $(location //triggers/daml:daml-trigger-rst.tar.gz) $$DIR/deps/
cp $(location //daml-script/daml:daml-script-rst.tar.gz) $$DIR/deps/
cp -L $(location //ledger-api/grpc-definitions:docs) $$DIR/deps/
cp -L $(location //:LICENSE) $$DIR/deps/
cp -L $(location //:NOTICES) $$DIR/deps/
MKTGZ=$$PWD/$(execpath //bazel_tools/sh:mktgz)
OUT_PATH=$$PWD/$@
cd $$DIR
$$MKTGZ $$OUT_PATH deps
""".format(sdk = sdk_version),
tools = [
"//bazel_tools/sh:mktgz",
],
) if not is_windows else None
genrule(
name = "sphinx-source-tree",
srcs = [
"configs/static/pygments_daml_lexer.py",
"configs/static/typescript.py",
"configs/html/conf.py",
"configs/pdf/conf.py",
"configs/pdf/logo.png",
":index",
":sources",
":theme",
"//templates:templates-tarball",
"//templates:create-daml-app-docs",
"//templates:create-daml-app-test-resources/index.test.ts",
],
outs = ["sphinx-source-tree.tar.gz"],
cmd = """
set -eou pipefail
DIR=$$(mktemp -d)
trap "rm -rf $$DIR" EXIT
mkdir -p $$DIR/docs
mkdir -p $$DIR/docs/configs/static $$DIR/docs/configs/html $$DIR/docs/configs/pdf/fonts
cp $(location configs/static/pygments_daml_lexer.py) $$DIR/docs/configs/static
cp $(location configs/static/typescript.py) $$DIR/docs/configs/static
tar xf $(location :sources) -C $$DIR/docs
cp $(location configs/html/conf.py) $$DIR/docs/configs/html
cp $(location configs/pdf/conf.py) $$DIR/docs/configs/pdf
sed -i "s,__VERSION__,"{sdk}"," $$DIR/docs/configs/html/conf.py
sed -i "s,__VERSION__,"{sdk}"," $$DIR/docs/configs/pdf/conf.py
cp $(location index) $$DIR/docs/source/index.rst
cp $(location configs/pdf/logo.png) $$DIR/docs/configs/pdf
# Copy in theme
mkdir -p $$DIR/docs/theme
tar xf $(location :theme) -C $$DIR/docs/theme
# Copy templates for code snippets in getting started guide
CODE_DIR=$$DIR/docs/source/getting-started/code/
mkdir -p $$CODE_DIR
tar -zxf $(location //templates:templates-tarball) -C $$CODE_DIR
rm -rf $$CODE_DIR/templates-tarball/create-daml-app
tar -zxf $(location //templates:create-daml-app-docs) -C $$CODE_DIR/templates-tarball/
# Copy create-daml-app tests
mkdir $$CODE_DIR/testing
cp $(location //templates:create-daml-app-test-resources/index.test.ts) $$CODE_DIR/testing
TEMPLATES_DIR=$$DIR/docs/source/_templates
mkdir -p $$TEMPLATES_DIR
tar xf $(location //templates:templates-tarball) -C $$TEMPLATES_DIR --strip-components=1
MKTGZ=$$PWD/$(execpath //bazel_tools/sh:mktgz)
OUT_PATH=$$PWD/$@
cd $$DIR
$$MKTGZ $$OUT_PATH docs
""".format(sdk = sdk_version),
tools = [
"//bazel_tools/sh:mktgz",
],
) if not is_windows else None
[
genrule(
name = "sphinx-{}".format(name),
srcs = [
":canton-refs.rst",
":sphinx-source-tree",
":scripts/check-closing-quotes.sh",
":scripts/check-closing-quotes.sh.allow",
] + (["@glibc_locales//:locale-archive"] if is_linux else []),
outs = ["sphinx-{}.tar.gz".format(name)],
cmd = ("""
export LOCALE_ARCHIVE="$$PWD/$(location @glibc_locales//:locale-archive)"
""" if is_linux else "") +
"""
set -eou pipefail
DIR=$$(mktemp -d)
mkdir -p $$DIR/source $$DIR/target
tar xf $(location sphinx-source-tree) -C $$DIR/source --strip-components=1
mv $(location :canton-refs.rst) $$DIR/source/source
if ! docs/scripts/check-closing-quotes.sh $$DIR/source docs/scripts/check-closing-quotes.sh.allow; then
exit 1
fi
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
SPHINX_BUILD_EXIT_CODE=0
# We hide the output unless we get a failure to make the builds less noisy.
SPHINX_BUILD_OUTPUT=$$($(location @sphinx_nix//:bin/sphinx-build) -W -b {target} -c $$DIR/source/configs/{name} $$DIR/source/source $$DIR/target 2>&1) || SPHINX_BUILD_EXIT_CODE=$$?
if [ "$$SPHINX_BUILD_EXIT_CODE" -ne 0 ]; then
>&2 echo "## SPHINX-BUILD OUTPUT:"
>&2 echo "$$SPHINX_BUILD_OUTPUT"
>&2 echo "## SPHINX-BUILD OUTPUT END"
exit 1
fi
MKTGZ=$$PWD/$(execpath //bazel_tools/sh:mktgz)
OUT_PATH=$$PWD/$@
cd $$DIR
$$MKTGZ $$OUT_PATH target
""".format(
target = target,
name = name,
),
tools = [
"//bazel_tools/sh:mktgz",
"@sphinx_nix//:bin/sphinx-build",
],
)
for (name, target) in [
("html", "html"),
("pdf", "latex"),
]
] if not is_windows else None
genrule(
name = "pdf-docs",
srcs = [
":sphinx-pdf",
":pdf-fonts",
],
outs = ["DigitalAssetSDK.pdf"],
cmd = """
set -euo pipefail
# Set up tools
export PATH="$$( cd "$$(dirname "$(location @imagemagick_nix//:bin/convert)")" ; pwd -P )":$$PATH
mkdir out
tar -zxf $(location sphinx-pdf) -C out --strip-components=1
# Copy in fonts and build with lualatex
cp -L $(locations :pdf-fonts) out/
cd out
# run twice to generate all references properly (this is a latex thing...)
../$(location @texlive_nix//:bin/lualatex) -halt-on-error -interaction=batchmode --shell-escape *.tex
../$(location @texlive_nix//:bin/lualatex) -halt-on-error -interaction=batchmode --shell-escape *.tex
# NOTE, if you get errors of the following form:
#
# luaotfload | db : Font names database not found, generating new one.
# luaotfload | db : This can take several minutes; please be patient.
# luaotfload | db : Reload initiated (formats: otf,ttf,ttc); reason: "File not found: lmroman10-regular.".
#
# Then the error is most likely not font related. To debug the error
# run `bazel build` with `--sandbox_debug`, change into the sandbox
# directory and invoke lualatex from there. You will have to replicate
# the environment variable setup from above.
#
# In the past the following issues caused the error message above:
# - An update of sphinx in nixpkgs that had to be undone.
# - A missing texlive package that had to be added to the Nix derivation.
# Move output to target
mv DigitalAssetSDK.pdf ../$(location DigitalAssetSDK.pdf)""".format(sdk = sdk_version),
tags = ["pdfdocs"],
tools =
[
"@imagemagick_nix//:bin/convert",
"@texlive_nix//:bin/lualatex",
],
) if not is_windows else None
filegroup(
name = "pdf-fonts",
srcs = glob(["configs/pdf/fonts/**"]) + ["@freefont//:fonts"],
)
pkg_tar(
name = "pdf-fonts-tar",
srcs = [":pdf-fonts"],
extension = "tar.gz",
)
genrule(
name = "non-sphinx-html-docs",
srcs = [
":hoogle_db.tar.gz",
"//language-support/java:javadoc",
"//language-support/ts/daml-react:docs",
"//language-support/ts/daml-ledger:docs",
"//language-support/ts/daml-types:docs",
"@daml-cheat-sheet//:site",
":redirects",
"error.html",
],
outs = ["non-sphinx-html-docs.tar.gz"],
cmd = """
set -eou pipefail
DIR=$$(mktemp -d)
trap "rm -rf DIR" EXIT
mkdir -p $$DIR/html/app-dev/bindings-java/javadocs
# Copy Javadoc using unzip to avoid having to know the path to the 'jar' binary. Note flag to overwrite
unzip -q -o $(locations //language-support/java:javadoc) -d $$DIR/html/app-dev/bindings-java/javadocs
# Remove JAR metadata
rm -r $$DIR/html/app-dev/bindings-java/javadocs/META-INF
# Copy generated documentation for typescript libraries
mkdir -p $$DIR/html/app-dev/bindings-ts/daml-react
mkdir -p $$DIR/html/app-dev/bindings-ts/daml-ledger
mkdir -p $$DIR/html/app-dev/bindings-ts/daml-types
tar -xzf $(location //language-support/ts/daml-react:docs) --strip-components 1 -C $$DIR/html/app-dev/bindings-ts/daml-react/
tar -xzf $(location //language-support/ts/daml-ledger:docs) --strip-components 1 -C $$DIR/html/app-dev/bindings-ts/daml-ledger/
tar -xzf $(location //language-support/ts/daml-types:docs) --strip-components 1 -C $$DIR/html/app-dev/bindings-ts/daml-types/
# Get the daml cheat sheet
mkdir -p $$DIR/html/cheat-sheet
tar -xzf $(location @daml-cheat-sheet//:site) --strip-components 1 -C $$DIR/html/cheat-sheet
# Copy in hoogle DB
cp -L $(location :hoogle_db.tar.gz) $$DIR/html/hoogle_db.tar.gz
echo {{ \\"{version}\\" : \\"{version}\\" }} > $$DIR/html/versions.json
cp $(location :error.html) $$DIR/html/
tar xf $(location :redirects) --strip-components=1 -C $$DIR/html
MKTGZ=$$PWD/$(execpath //bazel_tools/sh:mktgz)
OUT_PATH=$$PWD/$@
cd $$DIR
$$MKTGZ $$OUT_PATH html
""".format(version = sdk_version),
tools = ["//bazel_tools/sh:mktgz"],
) if not is_windows else None
genrule(
name = "docs-no-pdf",
srcs = [
":sphinx-html",
":non-sphinx-html-docs",
],
outs = ["html-only.tar.gz"],
cmd = """
set -eou pipefail
mkdir -p build/html
tar xf $(location :sphinx-html) -C build/html --strip-components=1
tar xf $(location :non-sphinx-html-docs) -C build/html --strip-components=1
cd build
../$(execpath //bazel_tools/sh:mktgz) ../$@ html
""".format(sdk = sdk_version),
tools = [
"//bazel_tools/sh:mktgz",
],
) if not is_windows else None
genrule(
name = "redirects",
srcs = [
"redirects.map",
"redirect_template.html",
],
outs = ["redirects.tar.gz"],
cmd = """
mkdir redirects
while read l; do
from=$$(awk -F' -> ' '{print $$1}' <<<$$l)
to=$$(awk -F' -> ' '{print $$2}' <<<"$$l")
if [ $$to ]
then
mkdir -p redirects/$$(dirname $$from)
cp -L docs/redirect_template.html redirects/$$from
sed -i -e "s,__URL__,$${to}," redirects/$$from
fi
done <docs/redirects.map
$(execpath //bazel_tools/sh:mktgz) $@ redirects
""",
tools = ["//bazel_tools/sh:mktgz"],
)
genrule(
name = "docs",
srcs = [
":docs-no-pdf",
":pdf-docs",
],
outs = ["html.tar.gz"],
cmd = """
VERSION_DATE=1970-01-01
tar -zxf $(location :docs-no-pdf)
cd html
find . -name '*.html' | sort | sed -e 's,^\\./,https://docs.daml.com/,' > sitemap
SMHEAD="{head}"
SMITEM="{item}"
SMFOOT="{foot}"
echo $$SMHEAD > sitemap.xml
while read item; do
echo $$SMITEM | sed -e "s,%DATE%,$${{VERSION_DATE}}," | sed -e "s,%LOC%,$${{item}}," >> sitemap.xml
done < sitemap
rm sitemap
echo $$SMFOOT >> sitemap.xml
cd ..
cp -L $(location :pdf-docs) html/_downloads
# Remove Sphinx build products
rm -r html/.buildinfo html/.doctrees html/objects.inv
$(execpath //bazel_tools/sh:mktgz) $@ html
""".format(
head = """<?xml version='1.0' encoding='UTF-8'?><urlset xmlns='http://www.sitemaps.org/schemas/sitemap/0.9' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd'>""",
item = """<url><loc>%LOC%</loc><lastmod>%DATE%</lastmod><changefreq>daily</changefreq><priority>0.8</priority></url>""",
foot = """</urlset>""",
version = sdk_version,
),
tags = ["pdfdocs"],
tools = ["//bazel_tools/sh:mktgz"],
) if not is_windows else None
filegroup(
name = "daml-assistant-iou-setup",
srcs = glob(
["source/app-dev/bindings-java/quickstart/template-root/*"],
# excluding quickstart-java stuff
exclude = [
"source/app-dev/bindings-java/quickstart/template-root/src",
"source/app-dev/bindings-java/quickstart/template-root/pom.xml",
],
exclude_directories = 0,
),
visibility = ["//visibility:public"],
)
genrule(
name = "quickstart-java",
srcs = glob(["source/app-dev/bindings-java/quickstart/template-root/**"]),
outs = ["quickstart-java.tar.gz"],
cmd = """
set -eou pipefail
TMP_DIR=$$(mktemp -d)
trap "rm -rf $$TMP_DIR" EXIT
mkdir -p $$TMP_DIR/quickstart-java
cp -rL docs/source/app-dev/bindings-java/quickstart/template-root/* $$TMP_DIR/quickstart-java/
sed -i "s/__VERSION__/{mvn}/" $$TMP_DIR/quickstart-java/pom.xml
$(execpath //bazel_tools/sh:mktgz) $@ -C $$TMP_DIR quickstart-java
""".format(mvn = mvn_version),
tools = ["//bazel_tools/sh:mktgz"],
visibility = ["//visibility:public"],
)
load("//language-support/java/codegen:codegen.bzl", "dar_to_java")
genrule(
name = "quickstart-model",
srcs = [
"//docs:source/app-dev/bindings-java/quickstart/template-root/daml/Main.daml",
"//docs:source/app-dev/bindings-java/quickstart/template-root/daml/Iou.daml",
"//docs:source/app-dev/bindings-java/quickstart/template-root/daml/IouTrade.daml",
"//daml-script/daml:daml-script.dar",
],
outs = ["quickstart-model.dar"],
cmd = """
set -eou pipefail
TMP_DIR=$$(mktemp -d)
mkdir -p $$TMP_DIR/daml
cp -R -L $(location //docs:source/app-dev/bindings-java/quickstart/template-root/daml/Main.daml) $$TMP_DIR/daml/
cp -R -L $(location //docs:source/app-dev/bindings-java/quickstart/template-root/daml/Iou.daml) $$TMP_DIR/daml/
cp -R -L $(location //docs:source/app-dev/bindings-java/quickstart/template-root/daml/IouTrade.daml) $$TMP_DIR/daml/
cp -L $(location //daml-script/daml:daml-script.dar) $$TMP_DIR/
cat << EOF > $$TMP_DIR/daml.yaml
sdk-version: {sdk}
name: quickstart-model
source: daml
version: 0.0.1
dependencies:
- daml-stdlib
- daml-prim
- daml-script.dar
build-options: ["--ghc-option", "-Werror"]
EOF
$(location //compiler/damlc) build --project-root=$$TMP_DIR --ghc-option=-Werror -o $$PWD/$(location quickstart-model.dar)
rm -rf $$TMP_DIR
""".format(sdk = sdk_version),
tools = ["//compiler/damlc"],
visibility = ["//visibility:public"],
)
dar_to_java(
name = "quickstart-model",
src = "quickstart-model.dar",
package_prefix = "com.daml.quickstart.model",
)
java_binary(
name = "quickstart-java-lib",
srcs = glob(["source/app-dev/bindings-java/quickstart/template-root/src/main/java/**/*.java"]) + [":quickstart-model-srcjar"],
main_class = "com.daml.quickstart.iou.IouMain",
deps = [
"//daml-lf/archive:daml_lf_1.dev_archive_proto_java",
"//language-support/java/bindings:bindings-java",
"//language-support/java/bindings-rxjava",
"@maven//:ch_qos_logback_logback_classic",
"@maven//:com_google_code_gson_gson",
"@maven//:com_google_guava_guava",
"@maven//:com_google_protobuf_protobuf_java",
"@maven//:com_sparkjava_spark_core",
"@maven//:io_reactivex_rxjava2_rxjava",
"@maven//:org_slf4j_slf4j_api",
],
)
daml_test(
name = "ledger-api-daml-test",
srcs = glob(["source/app-dev/code-snippets/**/*.daml"]),
deps = ["//daml-script/daml:daml-script.dar"],
)
daml_test(
name = "bindings-java-daml-test",
srcs = glob(["source/app-dev/bindings-java/code-snippets/**/*.daml"]),
# FIXME: https://github.com/digital-asset/daml/issues/12051
# replace "dev" by "default", once interfaces are stable.
target = lf_version_configuration.get("dev"),
)
daml_test(
name = "patterns-daml-test",
srcs = glob(["source/daml/patterns/daml/**/*.daml"]),
deps = ["//daml-script/daml:daml-script.dar"],
)
pkg_tar(
name = "daml-patterns",
srcs = glob(["source/daml/patterns/daml/**/*.daml"]) + ["source/daml/patterns/daml.yaml.template"],
strip_prefix = "/docs/source/daml/patterns",
visibility = ["//visibility:public"],
)
daml_test(
name = "daml-studio-daml-test",
srcs = glob(["source/daml/daml-studio/daml/**/*.daml"]),
deps = ["//daml-script/daml:daml-script.dar"],
)
daml_test(
name = "daml-ref-daml-test",
timeout = "long",
srcs = glob(["source/daml/code-snippets/**/*.daml"]),
deps = ["//daml-script/daml:daml-script.dar"],
)
daml_test(
name = "daml-ref-daml-test-dev",
timeout = "long",
srcs = glob(["source/daml/code-snippets-dev/**/*.daml"]),
target = "1.dev",
)
daml_test(
name = "introduction-daml-test",
srcs = glob(["source/getting-started/introduction/code/**/*.daml"]),
)
daml_test(
name = "quickstart-daml-test",
srcs = glob(
include = ["source/app-dev/bindings-java/quickstart/template-root/daml/**/*.daml"],
),
deps = ["//daml-script/daml:daml-script.dar"],
)
daml_test(
name = "ledger-model-daml-test",
srcs = glob(["source/concepts/ledger-model/daml/**/*.daml"]),
deps = ["//daml-script/daml:daml-script.dar"],
)
daml_test(
name = "java-bindings-docs-daml-test",
srcs = glob(["source/app-dev/bindings-java/daml/**/*.daml"]),
)
daml_test(
name = "daml-intro-daml-test",
srcs = glob(
["source/daml/intro/daml/**/*.daml"],
exclude = [
"source/daml/intro/daml/daml-intro-8/**",
"source/daml/intro/daml/daml-intro-9/**",
],
),
deps = ["//daml-script/daml:daml-script.dar"],
)
daml_test(
name = "daml-intro-9-daml-test",
srcs = glob(["source/daml/intro/daml/daml-intro-9/**/*.daml"]),
data_deps = [":daml-intro-7.dar"],
deps = ["//daml-script/daml:daml-script.dar"],
)
daml_test(
name = "daml-intro-8-daml-test",
srcs = glob(["source/daml/intro/daml/daml-intro-8/**/*.daml"]),
target = "1.dev",
deps = ["//daml-script/daml:daml-script-1.dev.dar"],
)
daml_build_test(
name = "daml-intro-7",
daml_yaml = ":daml-intro-7.yaml",
dar_dict = {
"//daml-script/daml:daml-script.dar": "daml-script.dar",
},
project_dir = "source/daml/intro/daml/daml-intro-7",
)
daml_build_test(
name = "daml-upgrade-example-v1",
dar_dict = {
"//daml-script/daml:daml-script.dar": "daml-script.dar",
},
project_dir = "source/upgrade/example/carbon-1.0.0",
)
daml_build_test(
name = "daml-upgrade-example-v2",
project_dir = "source/upgrade/example/carbon-2.0.0",
)
daml_build_test(
name = "daml-upgrade-example-upgrade",
dar_dict = {
":daml-upgrade-example-v1": "path/to/carbon-1.0.0.dar",
":daml-upgrade-example-v2": "path/to/carbon-2.0.0.dar",
},
project_dir = "source/upgrade/example/carbon-upgrade",
)
daml_build_test(
name = "daml-upgrade-example-extend",
dar_dict = {
":daml-upgrade-example-v1": "path/to/carbon-1.0.0.dar",
},
project_dir = "source/upgrade/example/carbon-label",
)
daml_build_test(
name = "daml-upgrade-example-upgrade-script",
dar_dict = {
":daml-upgrade-example-v1": "path/to/carbon-1.0.0.dar",
":daml-upgrade-example-v2": "path/to/carbon-2.0.0.dar",
":daml-upgrade-example-upgrade": "path/to/carbon-upgrade-1.0.0.dar",
"//daml-script/daml:daml-script.dar": "daml-script.dar",
},
project_dir = "source/upgrade/example/carbon-initiate-upgrade",
)
daml_build_test(
name = "daml-upgrade-example-upgrade-trigger",
dar_dict = {
":daml-upgrade-example-v1": "path/to/carbon-1.0.0.dar",
":daml-upgrade-example-v2": "path/to/carbon-2.0.0.dar",
":daml-upgrade-example-upgrade": "path/to/carbon-upgrade-1.0.0.dar",
"//triggers/daml:daml-trigger.dar": "daml-trigger.dar",
"//daml-script/daml:daml-script.dar": "daml-script.dar",
},
project_dir = "source/upgrade/example/carbon-upgrade-trigger",
)
filegroup(
name = "daml-intro-1",
srcs = glob(
["source/daml/intro/daml/1_Token/**/*"],
# excluding quickstart-java stuff
exclude = [
"source/app-dev/bindings-java/quickstart/template-root/src",
"source/app-dev/bindings-java/quickstart/template-root/pom.xml",
],
exclude_directories = 0,
),
visibility = ["//visibility:public"],
)
pkg_tar(
name = "daml-intro-templates",
srcs = glob(["source/daml/intro/daml/**"]),
strip_prefix = "source/daml/intro/daml",
visibility = ["//visibility:public"],
)
pkg_tar(
name = "script-example-template",
srcs = glob(
["source/daml-script/template-root/**"],
exclude = ["**/*~"],
),
strip_prefix = "source/daml-script/template-root",
visibility = ["//visibility:public"],
)
genrule(
name = "generate-error-codes-json",
srcs = [],
outs = ["error_codes_export.json"],
cmd = "$(location //ledger/error/generator:export-error-codes-json-app) $(location error_codes_export.json)",
tools = ["//ledger/error/generator:export-error-codes-json-app"],
visibility = ["//visibility:public"],
)
genrule(
name = "generate-docs-error-codes-inventory-into-rst-file",
srcs = [],
outs = ["error-codes-inventory.rst"],
cmd = "$(location //ledger/error/generator:generate-docs-error-codes-inventory-app) $(location error-codes-inventory.rst)",
tools = ["//ledger/error/generator:generate-docs-error-codes-inventory-app"],
visibility = ["//visibility:public"],
)
genrule(
name = "generate-docs-error-categories-inventory-into-rst-file",
srcs = [],
outs = ["error-categories-inventory.rst"],
cmd = "$(location //ledger/error/generator:generate-docs-error-categories-inventory-app) $(location error-categories-inventory.rst)",
tools = ["//ledger/error/generator:generate-docs-error-categories-inventory-app"],
visibility = ["//visibility:public"],
)
exports_files([
"source/daml-script/template-root/src/ScriptExample.daml",
])
da_scala_test(
name = "generated-error-pages-are-up-to-date",
srcs = glob(["src/test/**/*.scala"]),
resources = glob(["resources/**/*"]),
scala_deps = [
"@maven//:org_scalactic_scalactic",
"@maven//:org_scalatest_scalatest_core",
"@maven//:org_scalatest_scalatest_matchers_core",
"@maven//:org_scalatest_scalatest_shouldmatchers",
],
deps = [
"//ledger/error/generator:lib",
"@maven//:commons_io_commons_io",
],
) if not is_windows else None