diff --git a/bazel_tools/java.bzl b/bazel_tools/java.bzl index 57a22aae6d..1b420583a0 100644 --- a/bazel_tools/java.bzl +++ b/bazel_tools/java.bzl @@ -2,6 +2,8 @@ # SPDX-License-Identifier: Apache-2.0 load("//bazel_tools:pom_file.bzl", "pom_file") +load("@os_info//:os_info.bzl", "is_windows") +load("@com_github_google_bazel_common//tools/javadoc:javadoc.bzl", "javadoc_library") _java_home_runtime_build_template = """ java_runtime( @@ -29,14 +31,53 @@ java_home_runtime = repository_rule( def _wrap_rule(rule, name = "", **kwargs): rule(name = name, **kwargs) -def da_java_library(name, **kwargs): - _wrap_rule(native.java_library, name, **kwargs) +def da_java_library( + name, + deps, + srcs, + data = [], + resources = [], + resource_jars = [], + resource_strip_prefix = None, + tags = [], + visibility = None, + exports = [], + **kwargs): + root_packages = None + for tag in tags: + if tag.startswith("javadoc_root_packages="): + root_packages = tag[len("javadoc_root_packages="):].split(":") + + native.java_library( + name = name, + deps = deps, + srcs = srcs, + data = data, + resources = resources, + resource_jars = resource_jars, + resource_strip_prefix = resource_strip_prefix, + tags = tags, + visibility = visibility, + exports = exports, + **kwargs + ) pom_file( name = name + "_pom", + tags = tags, target = ":" + name, visibility = ["//visibility:public"], ) + # Disable the building of Javadoc on Windows as the rule fails to + # find the sources under Windows. + if root_packages and is_windows == False: + javadoc_library( + name = name + "_javadoc", + deps = deps + [name], + srcs = srcs, + root_packages = root_packages, + ) + def da_java_binary(name, **kwargs): _wrap_rule(native.java_binary, name, **kwargs) pom_file( diff --git a/bazel_tools/pom_template.xml b/bazel_tools/pom_template.xml index 2b1c917594..2df87c9898 100644 --- a/bazel_tools/pom_template.xml +++ b/bazel_tools/pom_template.xml @@ -7,6 +7,34 @@ {artifactId} {version} jar + + {artifactId} + TBD + https://github.com/digital-asset/daml + + + + Apache License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + repo + + + + + + Digital Asset SDK Feedback + sdk-feedback@digitalasset.com + Digital Asset (Switzerland) GmbH + http://www.daml.com + + + + + scm:git:git://github.com/digital-asset/daml.git + scm:git:ssh://github.com:digital-asset/daml.git + http://github.com/digital-asset/daml/tree/master + + {generated_bzl_deps} diff --git a/deps.bzl b/deps.bzl index 73b43fc46d..e502ec7662 100644 --- a/deps.bzl +++ b/deps.bzl @@ -232,3 +232,11 @@ java_import( 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 = "ccdd09559b49c7efd9e4b0b617b18e2a4bbdb2142fc30dfd3501eb5fa1294dcc", + strip_prefix = "bazel-common-f3dc1a775d21f74fc6f4bbcf076b8af2f6261a69", + urls = ["https://github.com/google/bazel-common/archive/f3dc1a775d21f74fc6f4bbcf076b8af2f6261a69.zip"], + ) diff --git a/docs/BUILD.bazel b/docs/BUILD.bazel index f1c0a159a4..66ff34f7e7 100644 --- a/docs/BUILD.bazel +++ b/docs/BUILD.bazel @@ -157,7 +157,7 @@ genrule( ":theme", "//daml-foundations/daml-ghc:daml-base-rst-docs", "//daml-foundations/daml-ghc:daml-base-hoogle-docs", - "//language-support/java:javadocs", + "//language-support/java:javadoc", ], outs = ["html-only.tar.gz"], cmd = (""" @@ -186,8 +186,8 @@ genrule( exit 1 fi - # Copy Javadoc - tar -zxf ../$(locations //language-support/java:javadocs) -C html/app-dev/bindings-java + # Copy Javadoc using unzip to avoid having to know the path to the 'jar' binary. + unzip -f ../$(locations //language-support/java:javadoc) -d html/app-dev/bindings-java # Copy in hoogle DB mkdir -p html/hoogle_db diff --git a/docs/source/support/release-notes.rst b/docs/source/support/release-notes.rst index 10f7ab3c93..f516ffee56 100644 --- a/docs/source/support/release-notes.rst +++ b/docs/source/support/release-notes.rst @@ -118,6 +118,19 @@ Java Bindings - **Ledger API**: Added three new methods to the :ref:`CommandService `: - ``SubmitAndWaitForTransactionId`` returns the transaction ID. +- Beta release of the Windows SDK: + You can download the installer from + `GitHub releases `_. + The Windows SDK ships with the new `daml` installer which will soon also + become the default on Linux and MacOS. Documentation is still in progress, + take a look at the `Migration guide `_ + and the `updated documentation `_. +- Add ``fromListWith`` and ``merge`` to ``DA.TextMap``. +- Release Javadoc artifacts as part of the SDK. See more `here https://github.com/digital-asset/daml/pull/896` +- Add ``DA.Next.Map`` and ``DA.Next.Set`` and deprecate ``DA.Map`` and ``DA.Set`` in favor of those. +- Ledger API: Added three new methods to :ref:`CommandService `: + + - ``SubmitAndWaitForTransactionId`` returns the transaction id. - ``SubmitAndWaitForTransaction`` returns the transaction. - ``SubmitAndWaitForTransactionTree`` returns the transaction tree. diff --git a/language-support/java/BUILD.bazel b/language-support/java/BUILD.bazel index 57f1f662b9..745d8e91ee 100644 --- a/language-support/java/BUILD.bazel +++ b/language-support/java/BUILD.bazel @@ -1,50 +1,35 @@ # Copyright (c) 2019 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. # SPDX-License-Identifier: Apache-2.0 -load("@os_info//:os_info.bzl", "is_windows") +load("@com_github_google_bazel_common//tools/javadoc:javadoc.bzl", "javadoc_library") -genrule( - name = "javadocs", +javadoc_library( + name = "javadoc", srcs = [ - "//language-support/java/bindings-rxjava:sources", "//language-support/java/bindings:sources", - "//language-support/java/bindings-rxjava", - "//language-support/java/bindings:bindings-java", - "//external:jar/org/slf4j/slf4j_api", - "//ledger-api/rs-grpc-bridge", - "//external:jar/io/reactivex/rxjava2/rxjava", - "//external:jar/com/google/protobuf/protobuf_java", - "//external:jar/org/pcollections/pcollections", - "//external:jar/org/checkerframework/checker", - "//external:jar/io/grpc/grpc_netty", - "//external:jar/io/grpc/grpc_core", - "//external:jar/io/grpc/grpc_stub", - "//external:jar/io/netty/netty_handler", - "//external:jar/com/google/code/findbugs/jsr305", + "//language-support/java/bindings-rxjava:sources", + ], + root_packages = [ + "com.daml.ledger.javaapi.data", + "com.daml.ledger.rxjava", + "com.digitalasset.ledger.api.v1", ], - outs = ["javadocs.tar.gz"], - cmd = """ - CP=$(location //external:jar/org/slf4j/slf4j_api) - CP=$$CP{delim}$(location //language-support/java/bindings-rxjava:bindings-rxjava) - CP=$$CP{delim}$(location //language-support/java/bindings:bindings-java) - CP=$$CP{delim}$(location //ledger-api/rs-grpc-bridge:rs-grpc-bridge) - CP=$$CP{delim}$(location //external:jar/io/reactivex/rxjava2/rxjava) - CP=$$CP{delim}$(location //external:jar/com/google/protobuf/protobuf_java) - CP=$$CP{delim}$(location //external:jar/org/pcollections/pcollections) - CP=$$CP{delim}$(location //external:jar/org/checkerframework/checker) - CP=$$CP{delim}$(location //external:jar/io/grpc/grpc_netty) - CP=$$CP{delim}$(location //external:jar/io/grpc/grpc_core) - CP=$$CP{delim}$(location //external:jar/io/grpc/grpc_stub) - CP=$$CP{delim}$(location //external:jar/io/netty/netty_handler) - CP=$$CP{delim}$(location //external:jar/com/google/code/findbugs/jsr305) - echo $$CP - $(location @javadoc_dev_env//:javadoc) -quiet -d javadocs -classpath $$CP $(locations //language-support/java/bindings-rxjava:sources) $(locations //language-support/java/bindings:sources) - tar -zcf $(location javadocs.tar.gz) javadocs - """.format( - delim = "\;" if is_windows else ":", - ), - tools = ["@javadoc_dev_env//:javadoc"], visibility = [ "//visibility:public", ], + deps = [ + "//external:jar/com/google/code/findbugs/jsr305", + "//external:jar/com/google/protobuf/protobuf_java", + "//external:jar/io/grpc/grpc_core", + "//external:jar/io/grpc/grpc_netty", + "//external:jar/io/grpc/grpc_stub", + "//external:jar/io/netty/netty_handler", + "//external:jar/io/reactivex/rxjava2/rxjava", + "//external:jar/org/checkerframework/checker", + "//external:jar/org/pcollections/pcollections", + "//external:jar/org/slf4j/slf4j_api", + "//language-support/java/bindings:bindings-java", + "//language-support/java/bindings-rxjava", + "//ledger-api/rs-grpc-bridge", + ], ) diff --git a/language-support/java/bindings-rxjava/BUILD.bazel b/language-support/java/bindings-rxjava/BUILD.bazel index 4ab67421c3..b69c34e31b 100644 --- a/language-support/java/bindings-rxjava/BUILD.bazel +++ b/language-support/java/bindings-rxjava/BUILD.bazel @@ -7,11 +7,15 @@ load( "da_scala_test_suite", ) load("//bazel_tools:pom_file.bzl", "pom_file") +load("//bazel_tools:java.bzl", "da_java_library") -java_library( +da_java_library( name = "bindings-rxjava", srcs = glob(["src/main/java/**/*.java"]), - tags = ["maven_coordinates=com.daml.ledger:bindings-rxjava:__VERSION__"], + tags = [ + "javadoc_root_packages=com.daml.ledger.rxjava", + "maven_coordinates=com.daml.ledger:bindings-rxjava:__VERSION__", + ], visibility = [ "//visibility:public", ], @@ -31,12 +35,6 @@ java_library( ], ) -pom_file( - name = "bindings-rxjava_pom", - target = ":bindings-rxjava", - visibility = ["//visibility:public"], -) - testDependencies = [ "//3rdparty/jvm/io/grpc:grpc_core", "//3rdparty/jvm/io/grpc:grpc_netty", diff --git a/language-support/java/bindings/BUILD.bazel b/language-support/java/bindings/BUILD.bazel index aeb5c8d099..e26022b84d 100644 --- a/language-support/java/bindings/BUILD.bazel +++ b/language-support/java/bindings/BUILD.bazel @@ -52,7 +52,10 @@ da_java_library( ":ledger-api-java", ":ledger-api-java-grpc", ], - tags = ["maven_coordinates=com.daml.ledger:bindings-java:__VERSION__"], + tags = [ + "javadoc_root_packages=com.daml.ledger.javaapi.data", + "maven_coordinates=com.daml.ledger:bindings-java:__VERSION__", + ], visibility = [ "//visibility:public", ], diff --git a/ledger-api/rs-grpc-bridge/BUILD.bazel b/ledger-api/rs-grpc-bridge/BUILD.bazel index 6b99a38d89..ad74f8d59a 100644 --- a/ledger-api/rs-grpc-bridge/BUILD.bazel +++ b/ledger-api/rs-grpc-bridge/BUILD.bazel @@ -7,7 +7,10 @@ load("//bazel_tools:java.bzl", "da_java_library") da_java_library( name = "rs-grpc-bridge", srcs = glob(["src/main/java/**/*.java"]), - tags = ["maven_coordinates=com.digitalasset.ledger-api:rs-grpc-bridge:__VERSION__"], + tags = [ + "javadoc_root_packages=com.digitalasset.grpc.adapter", + "maven_coordinates=com.digitalasset.ledger-api:rs-grpc-bridge:__VERSION__", + ], visibility = [ "//visibility:public", ], diff --git a/release/src/Util.hs b/release/src/Util.hs index 289eaa390e..b0731bccc7 100644 --- a/release/src/Util.hs +++ b/release/src/Util.hs @@ -128,7 +128,8 @@ buildTargets art@Artifact{..} = (directory, _) = splitBazelTarget artTarget in [jarTarget, pomTar] <> [BazelTarget ("//" <> directory <> ":" <> srcJar) | Just srcJar <- pure (sourceJarName art)] <> - [BazelTarget ("//" <> directory <> ":" <> srcJar) | Just srcJar <- pure (scalaSourceJarName art)] + [BazelTarget ("//" <> directory <> ":" <> srcJar) | Just srcJar <- pure (scalaSourceJarName art)] <> + [BazelTarget ("//" <> directory <> ":" <> javadocJar) | Just javadocJar <- pure (javadocJarName art)] Zip -> [artTarget] TarGz -> [artTarget] @@ -216,6 +217,11 @@ scalaSourceJarName Artifact{..} | Jar Scala <- artReleaseType = Just $ snd (splitBazelTarget artTarget) <> "_src.jar" | otherwise = Nothing +javadocJarName :: Artifact a -> Maybe Text +javadocJarName Artifact{..} + | Jar Lib <- artReleaseType = Just $ snd (splitBazelTarget artTarget) <> "_javadoc.jar" + | otherwise = Nothing + -- | Given an artifact, produce a list of pairs of an input file and the corresponding output file. artifactFiles :: E.MonadThrow m => AllArtifacts -> Artifact PomData -> m [(Path Rel File, Path Rel File)] artifactFiles allArtifacts art@Artifact{..} = do @@ -238,11 +244,15 @@ artifactFiles allArtifacts art@Artifact{..} = do mbScalaSourceJarIn <- traverse (parseRelFile . unpack) (scalaSourceJarName art) scalaSourceJarOut <- parseRelFile (unpack (pomArtifactId #"-"# pomVersion # ostxt # "-sources" # mainExt artReleaseType)) + mbJavadocJarIn <- traverse (parseRelFile . unpack) (javadocJarName art) + javadocJarOut <- parseRelFile (unpack (pomArtifactId #"-"# pomVersion # ostxt # "-javadoc" # mainExt artReleaseType)) + pure $ [(directory mainArtifactIn, outDir mainArtifactOut) | shouldRelease allArtifacts artPlatformDependent] <> [(directory pomFileIn, outDir pomFileOut) | isJar artReleaseType, shouldRelease allArtifacts (PlatformDependent False)] <> [(directory sourceJarIn, outDir sourceJarOut) | shouldRelease allArtifacts (PlatformDependent False), Just sourceJarIn <- pure mbSourceJarIn] <> - [(directory scalaSourceJarIn, outDir scalaSourceJarOut) | shouldRelease allArtifacts (PlatformDependent False), Just scalaSourceJarIn <- pure mbScalaSourceJarIn] + [(directory scalaSourceJarIn, outDir scalaSourceJarOut) | shouldRelease allArtifacts (PlatformDependent False), Just scalaSourceJarIn <- pure mbScalaSourceJarIn] <> + [(directory javadocJarIn, outDir javadocJarOut) | shouldRelease allArtifacts (PlatformDependent False), Just javadocJarIn <- pure mbJavadocJarIn] shouldRelease :: AllArtifacts -> PlatformDependent -> Bool shouldRelease (AllArtifacts allArtifacts) (PlatformDependent platformDependent) =