Service provider module dependency resolving webrev

Jaroslav Tulach jaroslav.tulach at oracle.com
Wed Jun 20 06:55:43 PDT 2012


Dne Út 19. června 2012 16:33:42, Paul Sandoz napsal(a):
> Hi,
> 
> http://cr.openjdk.java.net/~psandoz/jigsaw/resolver-services/webrev/

This is exactly the order I was recently thinking about when trying to extend 
the concept of "complete repository[1]" to deal with services, but it is so 
NP-completenish!

> - service provider modules dependencies are resolved after the explicit
> dependencies have been successfully resolved.

This part can be made easy with complete repository[1].

>   - if service provider modules or their dependencies are service consumer
> modules then the correspond service provide modules are resolved after the
> explicit dependences and so on.

In this step you have to select one of the modules that "provides a service" 
which has been requested by some module in the first step. This is the part 
when the algorithm turns into 3-SAT solver. 

No surprise, things may get unclear and complicated (which is how I understood 
your further discussion with Alan).
-jt

[1] 
http://wiki.apidesign.org/wiki/RangeDependenciesAnalysed#Complete_Module_Repository_with_Ranges




> 
>      [exec] | Configuring [mapp@=1.0] using library build/mlib
>      [exec] |   resolving ROOT requires mapp@=1.0
>      [exec] |   - trying mapp at 1.0
>      [exec] |   - pushing service provider module dependency
> stringer.StringTransformer -> requires optional mhasher [exec] |   -
> pushing service provider module dependency stringer.StringTransformer ->
> requires optional mrotter [exec] |   -- resolving mapp at 1.0 requires
> mstringer
>      [exec] |   --- trying mstringer at 1.0
>      [exec] |   ---- resolving mstringer at 1.0 requires synthesized
> java.base@>=8 [exec] |   ----- trying java.base
>      [exec] |   ----- pushing service provider module dependency
> java.nio.charset.spi.CharsetProvider -> requires optional sun.charsets
> [exec] |   ----- pushing service provider module dependency
> java.nio.file.spi.FileSystemProvider -> requires optional jdk.zipfs [exec]
> |   ----- pushing service provider module dependency
> sun.net.spi.nameservice.NameServiceDescriptor -> requires optional jdk.jndi
> [exec] |   ------ resolving jdk.base at 8-ea requires local optional
> jdk.desktop.internal@=8-ea [exec] |   ------- trying
> jdk.desktop.internal at 8-ea
>      [exec] |   ------- pushing service provider module dependency
> javax.print.PrintServiceLookup -> requires optional jdk.desktop [exec] |  
> ------- pushing service provider module dependency
> javax.print.StreamPrintServiceFactory -> requires optional jdk.desktop
> [exec] |   ------- pushing service provider module dependency
> javax.sound.midi.spi.MidiDeviceProvider -> requires optional jdk.desktop
> [exec] |   ------- pushing service provider module dependency
> javax.sound.midi.spi.MidiFileReader -> requires optional jdk.desktop [exec]
> |   ------- pushing service provider module dependency
> javax.sound.midi.spi.MidiFileWriter -> requires optional jdk.desktop [exec]
> |   ------- pushing service provider module dependency
> javax.sound.midi.spi.SoundbankReader -> requires optional jdk.desktop
> [exec] |   ------- pushing service provider module dependency
> javax.sound.sampled.spi.AudioFileReader -> requires optional jdk.desktop
> [exec] |   ------- pushing service provider module dependency
> javax.sound.sampled.spi.AudioFileWriter -> requires optional jdk.desktop
> [exec] |   ------- pushing service provider module dependency
> javax.sound.sampled.spi.FormatConversionProvider -> requires optional
> jdk.desktop [exec] |   ------- pushing service provider module dependency
> javax.sound.sampled.spi.MixerProvider -> requires optional jdk.desktop
> [exec] |   ------- pushing service provider module dependency
> sun.java2d.cmm.PCMM -> requires optional jdk.desktop [exec] |   -------
> pushing service provider module dependency sun.java2d.pipe.RenderingEngine
> -> requires optional jdk.desktop [exec] |   -------- resolving
> jdk.desktop at 8-ea requires local jdk.base.internal@=8-ea [exec] |  
> --------- resolving jdk.desktop at 8-ea requires jdk.jaxp@=8-ea [exec] |  
> ---------- trying jdk.jaxp at 8-ea
>      [exec] |   ----------- resolving jdk.jaxp at 8-ea requires jdk.base@=8-ea
>      [exec] |   ------------ resolving jdk.jaxp at 8-ea requires synthesized
> java.base@>=8 [exec] |   ------------- resolving jdk.desktop at 8-ea requires
> jdk.logging@=8-ea [exec] |   -------------- trying jdk.logging at 8-ea
>      [exec] |   --------------- resolving jdk.logging at 8-ea requires
> jdk.base.internal@=8-ea [exec] |   ---------------- resolving
> jdk.logging at 8-ea requires synthesized java.base@>=8 [exec] |  
> ----------------- resolving jdk.desktop at 8-ea requires jdk.prefs@=8-ea
> [exec] |   ------------------ trying jdk.prefs at 8-ea
>      [exec] |   ------------------- resolving jdk.prefs at 8-ea requires local
> jdk.base.internal@=8-ea [exec] |   -------------------- resolving
> jdk.prefs at 8-ea requires jdk.jaxp@=8-ea [exec] |   ---------------------
> resolving jdk.prefs at 8-ea requires synthesized java.base@>=8 [exec] |  
> ---------------------- resolving jdk.desktop at 8-ea requires
> sun.charsets.internal@=8-ea [exec] |   ----------------------- trying
> sun.charsets.internal at 8-ea [exec] |   ------------------------ resolving
> sun.charsets at 8-ea requires local jdk.base.internal@=8-ea [exec] |  
> ------------------------- resolving sun.charsets at 8-ea requires synthesized
> java.base@>=8 [exec] |   -------------------------- resolving
> jdk.desktop at 8-ea requires synthesized java.base@>=8 [exec] |  
> --------------------------- resolving jdk.base at 8-ea requires optional
> jdk.jaxp.internal@=8-ea [exec] |   ---------------------------- resolving
> jdk.base at 8-ea requires local optional jdk.tls.internal@=8-ea [exec] |  
> ----------------------------- trying jdk.tls.internal at 8-ea [exec] |  
> ------------------------------ resolving jdk.tls at 8-ea requires local
> jdk.base.internal@=8-ea [exec] |   -------------------------------
> resolving jdk.tls at 8-ea requires synthesized java.base@>=8 [exec] |  
> -------------------------------- resolving jdk.base at 8-ea requires local
> optional sun.localedata@=8-ea [exec] |   ---------------------------------
> trying sun.localedata at 8-ea [exec] |   ----------------------------------
> resolving sun.localedata at 8-ea requires local jdk.base.internal@=8-ea [exec]
> |   ----------------------------------- resolving sun.localedata at 8-ea
> requires synthesized java.base@>=8 [exec] |  
> ------------------------------------ resolving jdk.base at 8-ea requires local
> optional sun.resources@=8-ea [exec] |  
> ------------------------------------- trying sun.resources at 8-ea [exec] |  
> -------------------------------------- resolving sun.resources at 8-ea
> requires local jdk.base.internal@=8-ea [exec] |  
> --------------------------------------- resolving sun.resources at 8-ea
> requires synthesized java.base@>=8 [exec] |  
> ---------------------------------------- resolving mapp at 1.0 requires
> synthesized java.base@>=8 [exec] |  
> ----------------------------------------- resolving SERVICE PROVIDER
> requires optional mhasher [exec] |  
> ------------------------------------------ trying mhasher at 1.0 [exec] |  
> ------------------------------------------- resolving mhasher at 1.0 requires
> mstringer [exec] |   -------------------------------------------- resolving
> mhasher at 1.0 requires synthesized java.base@>=8 [exec] |  
> --------------------------------------------- resolving SERVICE PROVIDER
> requires optional mrotter [exec] |  
> ---------------------------------------------- trying mrotter at 1.0 [exec] | 
>  ----------------------------------------------- resolving mrotter at 1.0
> requires mstringer [exec] |  
> ------------------------------------------------ resolving mrotter at 1.0
> requires synthesized java.base@>=8 [exec] |  
> ------------------------------------------------- resolving SERVICE
> PROVIDER requires optional sun.charsets [exec] |  
> -------------------------------------------------- resolving SERVICE
> PROVIDER requires optional jdk.zipfs [exec] |  
> --------------------------------------------------- trying jdk.zipfs at 8-ea
> [exec] |   ---------------------------------------------------- resolving
> jdk.zipfs at 8-ea requires jdk.base@=8-ea [exec] |  
> ----------------------------------------------------- resolving
> jdk.zipfs at 8-ea requires synthesized java.base@>=8 [exec] |  
> ------------------------------------------------------ resolving SERVICE
> PROVIDER requires optional jdk.jndi [exec] |  
> ------------------------------------------------------- trying
> jdk.jndi at 8-ea [exec] |  
> -------------------------------------------------------- resolving
> jdk.jndi at 8-ea requires local jdk.auth.internal@=8-ea [exec] |  
> --------------------------------------------------------- trying
> jdk.auth.internal at 8-ea [exec] |  
> ---------------------------------------------------------- resolving
> jdk.auth at 8-ea requires local jdk.base.internal@=8-ea [exec] |  
> ----------------------------------------------------------- resolving
> jdk.auth at 8-ea requires jdk.logging@=8-ea [exec] |  
> ------------------------------------------------------------ resolving
> jdk.auth at 8-ea requires synthesized java.base@>=8 [exec] |  
> ------------------------------------------------------------- resolving
> jdk.jndi at 8-ea requires local jdk.base.internal@=8-ea [exec] |  
> -------------------------------------------------------------- resolving
> jdk.jndi at 8-ea requires optional jdk.desktop@=8-ea [exec] |  
> --------------------------------------------------------------- resolving
> jdk.jndi at 8-ea requires jdk.rmi@=8-ea [exec] |  
> ---------------------------------------------------------------- trying
> jdk.rmi at 8-ea [exec] |  
> ----------------------------------------------------------------- resolving
> jdk.rmi at 8-ea requires jdk.base.internal@=8-ea [exec] |  
> ------------------------------------------------------------------
> resolving jdk.rmi at 8-ea requires jdk.logging@=8-ea [exec] |  
> -------------------------------------------------------------------
> resolving jdk.rmi at 8-ea requires jdk.tls@=8-ea [exec] |  
> --------------------------------------------------------------------
> resolving jdk.rmi at 8-ea requires synthesized java.base@>=8 [exec] |  
> ---------------------------------------------------------------------
> resolving jdk.jndi at 8-ea requires jdk.tls.internal@=8-ea [exec] |  
> ----------------------------------------------------------------------
> resolving jdk.jndi at 8-ea requires synthesized java.base@>=8 [exec] |  
> -----------------------------------------------------------------------
> resolving SERVICE PROVIDER requires optional jdk.desktop



More information about the jigsaw-dev mailing list