mirror of
https://github.com/digital-asset/daml.git
synced 2024-09-20 01:07:18 +03:00
a7d46d25ce
This script was introduced to control the date printed in the sitemap. The sitemap is now produced in the docs repo, so there's little point in keeping this mechanism. Moreover, the stamp on the docs build means it gets rebuilt on every change to the date, i.e. every day, which isn't good for caching. CHANGELOG_BEGIN CHANGELOG_END
872 lines
30 KiB
Python
872 lines
30 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 = "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",
|
|
"configs/pdf/index.rst",
|
|
":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
|
|
mv $$DIR/docs/source/index.rst $$DIR/docs/configs/html
|
|
cp $(location configs/pdf/index.rst) $$DIR/docs/configs/pdf
|
|
|
|
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 $$DIR/source/configs/{name}/index.rst $$DIR/source/source/
|
|
mv $(location :canton-refs.rst) $$DIR/source/source
|
|
cat << EOF >> $$DIR/source/source/index.rst
|
|
|
|
Stub
|
|
----
|
|
|
|
.. toctree::
|
|
canton-refs
|
|
EOF
|
|
|
|
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/
|
|
# The generated docs of the typescript libraries are published at two places: The npm
|
|
# registry and on docs.daml.com. The docs at the npm registry contain a link pointing
|
|
# to docs.daml.com. We remove it for the version published at docs.daml.com as it would be
|
|
# pointing to itself.
|
|
sed -i -e 's,^.*\\(Comprehensive documentation\\|<h2>Documentation</h2>\\|0.0.0-SDKVERSION\\).*$$,,' $$DIR/html/app-dev/bindings-ts/*/index.html
|
|
|
|
# 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
|