<AWT Dev> RFR: 8025673: Disable X11 AWT toolkit
Anthony Petrov
anthony.petrov at oracle.com
Tue Oct 22 10:16:07 UTC 2013
Artem is correct. On Mac we can't start a GUI session via ssh, for
example. Thus we choose the headless mode then. The isInAquaSession() is
supposed to perform exactly this check. This logic needs to be preserved.
--
best regards,
Anthony
On 10/22/2013 01:23 PM, Artem Ananiev wrote:
> Hi, David,
>
> thanks for additional cleanup.
>
> I have only one concern. Before the fix, we checked if there is an
> active Aqua session. When no session was found, we falled back to
> HToolkit. I think this logic should be preserved, but slightly
> corrected: fall back to HeadlessToolkit (with CToolkit wrapped in).
>
> Otherwise the only way to run headless on Mac will be to force it with
> the system property. It works this way on Windows, but on Windows we're
> sure that WToolkit can run even without a UI session. Is it also true on
> Mac? Did you try to launch AWT without -Djava.awt.headless=true from
> remote console with no users logged in?
>
> Thanks,
>
> Artem
>
> On 10/22/2013 7:34 AM, David DeHaven wrote:
>>
>> Updated webrev for JDK (hotspot change is the same):
>> http://cr.openjdk.java.net/~ddehaven/8025673/jdk.1/
>>
>> Changes since last version:
>> - Moved to jdk8/build/jdk to save someone a merge headache, moved
>> changes to CompileNativeLibs.gmk to libs/Awt2dLibraries.gmk
>> - Removed HToolkit option and toolkit selection code from
>> java_props_macosx.[ch]
>>
>> -DrD-
>>
>>
>>> I want to do one more iteration of this. Based on feedback it seems I
>>> can remove a bit more code from java_props_macosx.[ch] and make
>>> things a bit cleaner.
>>>
>>> -DrD-
>>>
>>>> Thanks guys.
>>>>
>>>> Anthony, can you sponsor this for me?
>>>>
>>>> -DrD-
>>>>
>>>>> This fix looks fine to me as well.
>>>>>
>>>>> --
>>>>> best regards,
>>>>> Anthony
>>>>>
>>>>> On 10/20/2013 11:56 PM, David DeHaven wrote:
>>>>>>
>>>>>> CCing: build-dev, macosx-port-dev, hotspot-dev
>>>>>>
>>>>>> Request for review of JDK-8025673:
>>>>>> https://bugs.openjdk.java.net/browse/JDK-8025673
>>>>>>
>>>>>> Proposed changes:
>>>>>> http://cr.openjdk.java.net/~ddehaven/8025673/
>>>>>>
>>>>>> This change disables building libawt_xawt.dylib and
>>>>>> libawt_headless.dylib on Mac since they are not used and not
>>>>>> supported. There are too many challenges (and not enough time) in
>>>>>> removing all X11 code from the Mac build at this time, so we're
>>>>>> deferring complete removal for later (will be covered by
>>>>>> JDK-8003900).
>>>>>>
>>>>>> A small change to hotspot is required as it was looking for
>>>>>> libawt_xawt.dylib and if not found would set java.awt.headless to
>>>>>> true. Since we don't build a headless only JRE on Mac I just have
>>>>>> that method return false. I'm not sure how to handle changes to
>>>>>> hotspot, can it be pushed along with the jdk changes? Without that
>>>>>> change the Mac builds will be broken.
>>>>>>
>>>>>> Significant build system changes, build-dev guys are encouraged to
>>>>>> comment...
>>>>>>
>>>>>> I tried excluding all sun/awt/X11 classes in
>>>>>> CompileJavaClasses.gmk but that broke JNI header generation on
>>>>>> platforms still using X11 and I couldn't use the big list of
>>>>>> excluded files on Mac as that resulted in Java compilation errors,
>>>>>> so I just added some logic to exclude everything on Mac and left
>>>>>> the list in place everywhere else.
>>>>>>
>>>>>> The changes to CompileNativeLibraries.gmk will port to
>>>>>> libs/AwtJava2dLibraries.gmk in jdk8/build, however there is a
>>>>>> problem in the jdk8/build workspace where the build cannot find
>>>>>> symbols in JNI libs so that issue needs to be resolved first. I've
>>>>>> not had time to investigate that problem.
>>>>>>
>>>>>>
>>>>>> Question for the AWT team, we still have this in java_props_md.c:
>>>>>> 458 PreferredToolkit prefToolkit = getPreferredToolkit();
>>>>>> 459 if (prefToolkit == CToolkit) {
>>>>>> 460 sprops.awt_toolkit = "sun.lwawt.macosx.LWCToolkit";
>>>>>> 461 } else {
>>>>>> 462 // TODO: do we still need this?
>>>>>> 463 sprops.awt_toolkit = "sun.awt.HToolkit";
>>>>>> 464 }
>>>>>>
>>>>>> Is that necessary? Since we're now using libawt_lwawt in both
>>>>>> headless and headful modes I would think we could remove the
>>>>>> HToolkit option, but I'm not 100% certain about that.
>>>>>>
>>>>>>
>>>>>> I've built and tested on Mac and a Linux VM (Ubuntu 12.04) and
>>>>>> both seem to be working fine.
>>>>>>
>>>>>> JPRT run for Mac is in progress, I will submit one for all other
>>>>>> platforms when it finishes building.
>>>>>>
>>>>>> -DrD-
>>>>>>
>>>>
>>>
>>
More information about the build-dev
mailing list