On Thu, 11 May 2023 08:50:55 GMT, KIRIYAMA Takuya <d...@openjdk.org> wrote:

>> I modified the location from which javadoc copies some legal files to the 
>> generated documentation.  If --legal-notices option is set to default or 
>> nothing is specified,, GPLv2 Legal Documents are copied from 
>> legal/java.base/ directory, such as LICENSE, ADDITIONAL_LICENSE_INFO and 
>> ASSEMBLY_EXCEPTION.
>> 
>> Would you please review this fix?
>
> KIRIYAMA Takuya has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   8306980: Generated docs should contain correct GPLv2 Legal Documents

I still (strongly) dislike baking such specific knowledge of the legal files 
into the javadoc tool. That's just conceptually wrong.

It turns out these files are generated by the `jlink` tool, which somewhat 
weirdly generates these "descriptive links" to use instead of symbolic links on 
platforms that do not support symbolic links.

See [jlink DefaultImageBuilder 
writeSymLinkEntry](https://github.com/openjdk/jdk/blob/aff9cea05468daf60fa80c7d9993b3aa8497b0c5/src/jdk.jlink/share/classes/jdk/tools/jlink/builder/DefaultImageBuilder.java#L469)

In the absence of being able to change this `jlink` behavior, maybe we can work 
around it.
Instead of baking knowledge of the names and locations of specific files into 
the Standard Doclet, one possibility would be to read the file, and if it 
exactly matches `Please see .*\R` then we could substitute the contents of the 
named file.

In other words, the logic becomes roughly


var s = Files.readString(path);
if (s _matches_ "Please see (.*)\\R") {. // follow jlink descriptive links
    path = Path.of(_specified-file_);
    s = Files.readString(path);
}
Files.writeString(_target_, s);

-------------

Changes requested by jjg (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/13686#pullrequestreview-1458520248

Reply via email to