Alan,
Thanks for getting this fixed. I verified that the jpacakge ToolProvider
implementation now works as expected.
-- Kevin
On 11/18/2019 12:13 PM, Mandy Chung wrote:
On 11/18/19 4:34 AM, Alan Bateman wrote:
This issue concerns the interaction of service binding with incubator
modules, a left over from JDK 9 that resurfaces with the upcoming JEP
343 Packaging Tool (Incubator).
The summary on this issue is that service binding augments the module
graph with the modules induced by the service-use relation. This
happens irrespective of the incubating status of the observable
modules because the incubating designation is a JDK rather than Java
SE/specified concept. It shows up with module
`jdk.incubator.jpackage` because this module wants to implement the
`java.util.spi.ToolProvider` service interface, a service interface
used by `java.base`. If service binding were to resolve
`jdk.incubator.jpackage` then a warning would be emitted in all
phases that java.base is resolved (so everywhere).
It's on my radar to more precisely specify service binding and also
work out the specification changes needed to allow filtering of the
observing modules but this is not needed at this time. Instead, we
can limit the changes to the configuration for the boot layer as the
set of observable modules when creating the configuration for the
boot layer is not specified (it's up to the implementation). The
change proposed here means that incubator modules are not candidates
to add to the module graph during service binding for the boot
layer's configuration. It has no impact on the general case where
incubating modules may be observable when creating the configuration
for custom layers.
Limiting this change to the boot layer's configuration is a good
solution that allows time to work out the specification change.
:
http://cr.openjdk.java.net/~alanb/8233922/webrev/
The patch looks good to me.
Mandy