<AWT Dev> [OpenJDK 2D-Dev] RFR: JDK-8071469 Cleanup include and exclude of sound native libraries after source code restructure
Magnus Ihse Bursie
magnus.ihse.bursie at oracle.com
Thu Mar 22 07:41:27 UTC 2018
On 2018-03-21 19:08, Alex Menkov wrote:
> Hi Magnus,
>
> > I have tested the following:
> > * On my linux machine, failure to load libjsound.so was not fatal.
>
> In Platform.java:
> 54 loadLibraries();
> 55 readProperties();
>
> and readProperties calls native nIsBigEndian
>
> if libjsound loading fails I'd expect nIsBigEndian fails too.
You are absolutely correct. I managed to publish a half-ass fix of
Platform.java. :-(
Here is the correct version:
http://cr.openjdk.java.net/~ihse/JDK-8071469-cleanup-sound-libs/webrev.04
/Magnus
>
> --alex
>
> On 03/21/2018 07:09, Magnus Ihse Bursie wrote:
>> On 2018-03-16 17:49, Alex Menkov wrote:
>>>
>>>
>>> On 03/15/2018 13:09, Magnus Ihse Bursie wrote:
>>>>
>>>>> 15 mars 2018 kl. 20:13 skrev Phil Race <philip.race at oracle.com>:
>>>>>
>>>>>
>>>>>> As far as I know the split was made to dynamically load
>>>>>> ALSA/DirectSound stuff
>>>>>
>>>>> Yes, I think it is something like that for Linux
>>>>> ie if at runtime a dependent-but-not-essential .so was not
>>>>> installed it was not fatal. I don't know to what extent this is no
>>>>> longer a
>>>>> possible issue, or one that matters.
>>>>
>>>> I have not heard of any mainstream Linux distro in years that was
>>>> lacking ALSA.
>>>>
>>>> If ALSA was not present, will the libraries fall back to OSS, or
>>>> will there be just no sound available?
>>>
>>> No sound.
>>> OSS support was dropped many years ago (IIRC in jdk7)
>>>
>>>> In any case, I think that whatever Linux distros we're targeting as
>>>> supported, ALSA will be present.
>>>>
>>>> Alex, did I understand you correctly that in any case, a separate
>>>> Windows library is always unnecessary, since we can rely on
>>>> DirectAudio always being present in our supported versions of Windows?
>>>
>>> Yes, that's right.
>>> Windows always has DirectSound pre-installed and its version is
>>> greater than required (IIRC javasoundds requires DirectX 5).
>>>
>>> For now failure of libjsound loading is fatal (see
>>> com.sun.media.sound.Platform.loadLibraries()), loading of extra libs
>>> is non-fatal.
>>> I believe libjsound loading failure should be made non-fatal, then
>>> all the functionality will remain the same as we have now.
>>
>> Ok.
>>
>> Here is an updated webrev. I have made the following changes:
>> * libjavasoundalsa and libjavasoundds is now folded into the main
>> libjavasound native library, so there's exactly one library built on
>> all platforms.
>> * Loading of libjsound is made non-fatal.
>> * I have cleaned out all obvious parts of the code that handle
>> multiple libraries. Since loading the native library is now a
>> all-or-nothing situation, the checks for various subsystems have been
>> turned into a generic check if the native library is loaded.
>>
>> There is a lot of defines like USE_DSOUND which are always true. This
>> could probably be cleaned up further, but it is not a build issue so
>> I'm leaving that to the client team to handle.
>>
>> I have tested the following:
>> * COMPARE_BUILD shows me just the expected changes in the build.
>> * On my linux machine, failure to load libjsound.so was not fatal.
>> * I have looked for sound tests. I found the test/jdk/javax/sound
>> suite, which was included in tier3. So I've run tier3 testing on all
>> platforms using our internal test system, and all tests pass.
>>
>> I don't know if there is any other tests I should run. If so, let me
>> know.
>>
>> Updated webrev:
>> http://cr.openjdk.java.net/~ihse/JDK-8071469-cleanup-sound-libs/webrev.03
>>
>> /Magnus
>>
>>>
>>> --alex
>>>
>>>>
>>>> /Magnus
>>>>
>>>>>
>>>>> -phil.
>>>>>
>>>>>> On 03/15/2018 12:06 PM, Alex Menkov wrote:
>>>>>>
>>>>>>
>>>>>>> On 03/15/2018 11:44, Magnus Ihse Bursie wrote:
>>>>>>>> On 2018-03-15 18:23, Phil Race wrote:
>>>>>>>> I wondered if that might be the case since it was a "BSD" port
>>>>>>>> .. using X11 ..
>>>>>>>>
>>>>>>>> Maybe we should be getting rid of them ?
>>>>>>> I agree, we should delete them. I just shuffled them around in
>>>>>>> the hope that they would be useful for a potential future bsd
>>>>>>> port, but if/when that happens, we can dig them out from mercurial.
>>>>>>>
>>>>>>> A short explanation of how the files moved. The sound library is
>>>>>>> apparently composed of either a single library (solaris and
>>>>>>> macosx) or two libraries (linux and windows). Two building
>>>>>>> blocks, MIDI + ports and DirectAudio is used for all platforms,
>>>>>>> but they go into either the main library (libjsound) or the
>>>>>>> helper library.
>>>>>>>
>>>>>>> For Windows, MIDI+Ports go into libjsound, and DirectAudio go
>>>>>>> into libjsoundds. On Linux, MIDI+Ports and DirectAudio go into
>>>>>>> libjsoundalsa. On Macosx and Solaris, MIDI+Ports and DirectAudio
>>>>>>> go into the main libjsound.
>>>>>>>
>>>>>>> I have no idea why this split is necessary, but this is how the
>>>>>>> libraries de facto is compiled, and the code needs to match
>>>>>>> that. If it would be possible to move libjsoundds and
>>>>>>> libjsoundalsa into libjsound directly, things would be greatly
>>>>>>> simplified.
>>>>>>
>>>>>> As far as I know the split was made to dynamically load
>>>>>> ALSA/DirectSound stuff. If it's not available (or old unsupported
>>>>>> version is installed), libjsound stuff continues to work (in
>>>>>> pre-OpenJDK libjsound supported WaveIn/WaveOut on Windows and OSS
>>>>>> on Linux).
>>>>>> For now Windows (DirectSound) libjsoundds stuff can be merged
>>>>>> into libjsound, but I'm not sure we can rely on ALSA is always
>>>>>> available on Linux (but most likely if ALSA is not available,
>>>>>> libjsound does not provide any functionality, so I suppose
>>>>>> libjsoundalsa stuff can be moved to libjsound as well)
>>>>>>
>>>>>> --alex
>>>>>>
>>>>>>>
>>>>>>> /Magnus
>>>>>>>
>>>>>>>>
>>>>>>>> -phil.
>>>>>>>>
>>>>>>>>> On 03/15/2018 10:21 AM, Erik Joelsson wrote:
>>>>>>>>> Digging a bit, those files came with the initial Macosx
>>>>>>>>> support. It doesn't look like they were ever used.
>>>>>>>>>
>>>>>>>>> /Erik
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> On 2018-03-15 09:53, Phil Race wrote:
>>>>>>>>>> It is very hard to follow all the moved around files, but one
>>>>>>>>>> thing
>>>>>>>>>> that sticks out is there is a "bsd" directory created and I
>>>>>>>>>> can't
>>>>>>>>>> work out how the files in there are used.
>>>>>>>>>> If they are for a BSD port of OpenJDK where is rest of the
>>>>>>>>>> support for that ?
>>>>>>>>>>
>>>>>>>>>>> On 03/15/2018 07:20 AM, Erik Joelsson wrote:
>>>>>>>>>>> Looks good to me. I tried cleaning this up before but failed
>>>>>>>>>>> to find a reasonable split, but this seems like a good split
>>>>>>>>>>> between common and library specific.
>>>>>>>>>>>
>>>>>>>>>>> /Erik
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>> On 2018-03-14 18:12, Magnus Ihse Bursie wrote:
>>>>>>>>>>>> I forgot to add the client mailing lists as recipients.
>>>>>>>>>>>> Sorry. (Not sure if "sounds" belong to "awt" or "2d".)
>>>>>>>>>>
>>>>>>>>>> In fact, there is a sound-specific list, which I've added.
>>>>>>>>>>
>>>>>>>>>> -phil.
>>>>>>>>>>>>
>>>>>>>>>>>> /Magnus
>>>>>>>>>>>>
>>>>>>>>>>>>> On 2018-03-15 02:07, Magnus Ihse Bursie wrote:
>>>>>>>>>>>>> From the bug description:
>>>>>>>>>>>>>
>>>>>>>>>>>>> Moving this to a separate bug from JDK-8055190. In
>>>>>>>>>>>>> SoundLibraries.gmk, the source code splitting is not
>>>>>>>>>>>>> complete. The directory libjsound is used to build not
>>>>>>>>>>>>> only libjsound but libjsoundalsa and libjsoundds, and thus
>>>>>>>>>>>>> needs a complex include/exclude system like before.
>>>>>>>>>>>>>
>>>>>>>>>>>>> I have tested this using COMPARE_BUILD. Windows and
>>>>>>>>>>>>> solaris are completely clean. On macosx, there's a binary
>>>>>>>>>>>>> diff (but nothing else) on libjsound.dylib. On linux, some
>>>>>>>>>>>>> offset seems to have changed, which caused a slight change
>>>>>>>>>>>>> in disass and fulldump for libjsound.so. I'm not quite
>>>>>>>>>>>>> sure what's causing it, but I'm convinced it's harmless.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8071469
>>>>>>>>>>>>> WebRev:
>>>>>>>>>>>>> http://cr.openjdk.java.net/~ihse/JDK-8071469-cleanup-sound-libs/webrev.01
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> /Magnus
>>>>>
>>>>
>>
More information about the awt-dev
mailing list