Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cannot specify srcjars as srcs for javadoc_library #10

Open
tbroyer opened this issue Apr 16, 2018 · 3 comments
Open

Cannot specify srcjars as srcs for javadoc_library #10

tbroyer opened this issue Apr 16, 2018 · 3 comments
Labels

Comments

@tbroyer
Copy link

tbroyer commented Apr 16, 2018

In google/elemental2, most Java sources are actually generated by google/jsinterop-generator (jsinterop_generator rules), and I can't seem to generate javadoc for those using e.g. srcs = [":libcore-src.jar"]

Actually, it looks like srcs is only used to compute whether the rule is uptodate or needs to be re-run, and root_packages and exclude_packages are the real inputs to the javadoc command.

@tbroyer
Copy link
Author

tbroyer commented Apr 16, 2018

I hacked around this by moving the

  srcs = depset(transitive = [src.files for src in ctx.attr.srcs]).to_list()

line up to the beginning of _javadoc_library and adding

 + ":".join([src.path for src in srcs])

to the end of the -sourcepath.

That probably should filter the join to only keep paths that end in -src.jar and/or .srcjar, or something like that (or directly filter the srcs attribute somehow)

@ronshapiro
Copy link
Contributor

Hmm, I didn't realize that javadoc will process source jars, that's cool.

What about adding a srcjars attribute to the rule?

@tbroyer
Copy link
Author

tbroyer commented Apr 16, 2018

Hmm, I didn't realize that javadoc will process source jars, that's cool.

The way you call javadoc here, you don't give it source files, but a pair of packages + source path (see https://docs.oracle.com/javase/8/docs/technotes/tools/unix/javadoc.html)

BTW, I haven't checked (because I haven't had the need), but apparently you pass the packages as a single colon-separated argument, rather than separate arguments, so specifying several values in root_packages might not work as expected.

What about adding a srcjars attribute to the rule?

SGTM

Still feels weird that srcs is not actually taken into account other than for up-to-date checks, and you actually have to filter your sources through root_packages and exclude_packages; doesn't really match how other Bazel rules work AFAICT. Should it be renamed to something else? At a minimum its documentation needs to be changed, as the source files are not processed (e.g. "source files, used solely to determine if the rule is up-to-date; all sources in the given packages will actually be processed")

@cpovirk cpovirk added the P3 label Jul 25, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants