<AWT Dev> RFR: 8025673: Disable X11 AWT toolkit

Sergey Bylokhov Sergey.Bylokhov at oracle.com
Tue Oct 22 11:01:11 PDT 2013


Hello.
I suppose we should request from sqe team to run the jck tests in the 
"true" headless mode via ssh(w/o headless option and w/o access to Aqua 
session).

On 22.10.2013 21:54, Anthony Petrov wrote:
> We don't have to. IIRC, the choice of HToolkit on Mac was made by chance.
>
> Since we must load the lwawt lib in headless on Mac anyway, we may as 
> well use the CToolkit (properly wrapped in the HeadlessToolkit). But 
> there's no need to continue to use the HToolkit on Mac.
>
> -- 
> best regards,
> Anthony
>
> On 10/22/2013 08:22 PM, Leonid Romanov wrote:
>> There was a discussion why we use HToolkit instead of HeadlessToolkit:
>> http://mail.openjdk.java.net/pipermail/awt-dev/2012-July/003114.html
>>
>> So we might want to continue using it.
>>
>> Also, please be aware that there is HToolkit check in 
>> GraphicsToolkit.getHeadlessProperty()
>>
>> On Oct 22, 2013, at 1:23 PM, Artem Ananiev <artem.ananiev at oracle.com> 
>> 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-
>>>>>>>>
>>>>>>
>>>>>
>>>>
>>


-- 
Best regards, Sergey.



More information about the hotspot-dev mailing list