Hello,
On 2017-10-17 19:54, mandy chung wrote:
On 10/17/17 10:44 AM, Jan Lahoda wrote:
The problematic part is TransitiveDependencies, right?
Might be easier to replace:
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
with:
JavaCompiler compiler = JavacTool.create();
(import com.sun.tools.javac.api.JavacTool;)
That should avoid the ServiceLoader lookup.
I can try this instead of patching ToolProvider.
Worth trying this and I think this needs --limit-modules to hide
jdk.compiler and other interim modules.
Yes, --limit-modules is definitely needed and already used.
Does this build tool just depend on javac? Does it need all system
modules to be observable?
I'm currently running it with the same arguments as when I run interim
javac and it works:
--limit-modules
java.base,jdk.zipfs,java.compiler.interim,jdk.compiler.interim,jdk.jdeps.interim,jdk.javadoc.interim
--add-modules
java.compiler.interim,jdk.compiler.interim,jdk.jdeps.interim,jdk.javadoc.interim
--module-path
/localhome/hg/jdk10-boot9/build/linux-x64/buildtools/interim_modules
--add-exports java.base/sun.reflect.annotation=jdk.compiler.interim
--add-exports java.base/jdk.internal.util.jar=jdk.jdeps.interim
--add-exports java.base/jdk.internal.misc=jdk.jdeps.interim
Some of these may be unnecessary for this specific tool, but it is
certainly simpler from my point of view to just use the same set of
arguments instead of maintaining another set.
/Erik
Mandy
Jan
On 17.10.2017 19:04, mandy chung wrote:
It'd be simpler if we could avoid patching ToolProvider. The ctsym
generator is a build tool. Jan and Jon may have suggestion if the
build
tool can find the compiler from the interim module instead and use
--limit-modules to java.base?
Mandy
On 10/17/17 8:55 AM, Erik Joelsson wrote:
The ctsym generator in Gendata-jdk.compiler.gmk looks up the tool
using the ToolProvider. That part of the change was just a reaction to
ctsym generation failing.
/Erik
On 2017-10-17 17:47, mandy chung wrote:
Hi Erik,
On 10/16/17 6:12 AM, Erik Joelsson wrote:
To generate the new modules, I copy the module-info.java files to a
new gensrc dir and sed replace the module names. I also generate a
new ToolProvider.java so that the default tools are taken from the
interim modules.
:
Webrev: http://cr.openjdk.java.net/~erikj/8189094/webrev.01
65 java.compiler_EXTRA_FILES :=
$(BUILDTOOLS_OUTPUTDIR)/gensrc/java.compiler.interim/javax/tools/ToolProvider.java
66 TARGETS += $(java.compiler_EXTRA_FILES)
What issue did you run into without patching ToolProvider? I have
assumed
the build always launches javac/javadoc main class and not using
ToolProvider.
580 JAVAC_MAIN_CLASS = -m
jdk.compiler.interim/com.sun.tools.javac.Main
581 JAVADOC_MAIN_CLASS = -m
jdk.javadoc.interim/jdk.javadoc.internal.tool.Main Mandy