RFR (XS): Enable new build on Linux/PPC64 (jdk part)
Volker Simonis
volker.simonis at gmail.com
Thu Jun 27 10:03:26 UTC 2013
Hi Erik,
as Vladimir explained, we have a special staging repository for our
PPC64/AIX port:
I would be happy if you could push the changes right into the build-infra
repositories and we will then get them into our staging repository via
jdk8/jdk8.
Otherwise I'll have to push them to our staging repository and later when
the whole port is completed in the staging repo they will be
bulk-integrated into jdk8.
What do you think?
Regards,
Volker
On Wed, Jun 26, 2013 at 6:53 PM, Vladimir Kozlov <vladimir.kozlov at oracle.com
> wrote:
> Erik,
>
> We have special staging forest for PPC64/AIX port:
>
> http://hg.openjdk.java.net/**ppc-aix-port/stage<http://hg.openjdk.java.net/ppc-aix-port/stage>
>
> We collect Hotspot and JDK changes there for testing before pushing into
> main sources in a future. But some general fixes we push directly into our
> main sources.
> If you think these build changes are acceptable for main, please, ask
> someone sponsor these changes.
>
> Alan is our official contact for PPC64/AIX project. I CC him.
>
> Thanks,
> Vladimir
>
>
> On 6/26/13 8:56 AM, Erik Joelsson wrote:
>
>> Hello,
>>
>> If you by staging area mean the build-infra forest, that's more or less
>> dead now.
>>
>> I think these changes look good now (both top level and jdk). It should
>> be fine to push this to jdk8/build.
>>
>> /Erik
>>
>> On 2013-06-26 17:28, Volker Simonis wrote:
>>
>>> Hi Erik,
>>>
>>> thank you for looking at this. I've prepared a new webrev at:
>>>
>>> http://cr.openjdk.java.net/~**simonis/webrevs/8017568_jdk/<http://cr.openjdk.java.net/~simonis/webrevs/8017568_jdk/>
>>> <http://cr.openjdk.java.net/%**7Esimonis/webrevs/8017568_jdk/<http://cr.openjdk.java.net/%7Esimonis/webrevs/8017568_jdk/>
>>> **>
>>>
>>>
>>> What do you think, do you want to push this directly into the build
>>> repositories or should I push it into the staging repository first?
>>>
>>> Please see my further comments inline.
>>>
>>> Thank you and best regards,
>>> Volker
>>>
>>> On Tue, Jun 25, 2013 at 12:41 PM, Erik Joelsson
>>> <erik.joelsson at oracle.com <mailto:erik.joelsson at oracle.**com<erik.joelsson at oracle.com>>>
>>> wrote:
>>>
>>>
>>> On 2013-06-25 12:27, Erik Joelsson wrote:
>>>
>>> Hello Volker,
>>>
>>> On 2013-06-24 19:23, Volker Simonis wrote:
>>>
>>> Hi,
>>>
>>> could somebody please review the following change and
>>> create an appropriate
>>> Bug ID for it:
>>>
>>> http://cr.openjdk.java.net/~**simonis/webrevs/linux_ppc_**
>>> build_jdk/<http://cr.openjdk.java.net/~simonis/webrevs/linux_ppc_build_jdk/>
>>> <http://cr.openjdk.java.net/%**7Esimonis/webrevs/linux_ppc_*
>>> *build_jdk/<http://cr.openjdk.java.net/%7Esimonis/webrevs/linux_ppc_build_jdk/>
>>> >
>>>
>>>
>>> The patch contains two little changes which are required
>>> to build the class
>>> library part of the OpenJDK on Linux/PPC64. Most of the
>>> build magic is
>>> contained in the top-level part of this change which is
>>> separately reviewed
>>> at
>>> http://cr.openjdk.java.net/~**simonis/webrevs/linux_ppc_**
>>> build_top<http://cr.openjdk.java.net/~simonis/webrevs/linux_ppc_build_top>
>>> <http://cr.openjdk.java.net/%**7Esimonis/webrevs/linux_ppc_*
>>> *build_top<http://cr.openjdk.java.net/%7Esimonis/webrevs/linux_ppc_build_top>
>>> >
>>>
>>> CompileLaunchers.gmk
>>>
>>> Remove mapfile from build instructions of BUILD_UNPACKEXE:
>>>
>>> CFLAGS_macosx:=-fPIC, \
>>> -
>>> MAPFILE:=$(JDK_TOPDIR)/**makefiles/mapfiles/libunpack/**
>>> mapfile-vers-unpack200,\
>>> LDFLAGS:=$(UNPACKEXE_ZIPOBJS),**\
>>>
>>> I think it makes no sense to use a version script file
>>> for an executable
>>> and older linkers (e.g. on SLES 10) complain with:
>>> "*Invalid version tag
>>> `SUNWprivate_1.1'. Only anonymous version tag is allowed
>>> in executable.*"
>>> The GNU ld
>>> manual<http://ftp.gnu.org/old-**gnu/Manuals/ld-2.9.1/html_**
>>> node/ld_25.html<http://ftp.gnu.org/old-gnu/Manuals/ld-2.9.1/html_node/ld_25.html>
>>> >states:
>>> "*Version scripts are only meaningful when creating shared
>>> libraries.*"
>>> Morover unpack200 was the only executable which used a
>>> version script file.
>>>
>>> Unpackexe has some weirdness and this isn't surprising me.
>>> Would be good if someone with more historic knowledge could
>>> fill in on the reason for this. Someone apparently went
>>> through the trouble of creating a special mapfile for this
>>> executable. Also, if not using it, should it be removed?
>>>
>>> I looked closer at this. These mapfiles were explicitly added in
>>> http://bugs.sun.com/view_bug.**do?bug_id=7033954<http://bugs.sun.com/view_bug.do?bug_id=7033954>,
>>> but it was noted
>>> that it broke builds for architectures that didn't have mapfiles
>>> defined. If you look at the launchers, the mapfile is only set if
>>> the arch specific one exists. I think a safer change here would be
>>> to make the mapfile conditional on platform or arch for unpackexe.
>>>
>>>
>>> I still do not fully understand why we need map-files for executables,
>>> but I also understand that you don't want to change the current setup.
>>> So I went the hard (and hopefully right:) way and implemented a
>>> detection of the buggy linkers on older SuSE distros (e.g. on SLES 10)
>>> which complain with: "Invalid version tag `SUNWprivate_1.1' during
>>> the configure step (see top-level change). Unfortunately we still have
>>> quite a lot of these systems so we really need the build with that
>>> buggy ld.
>>>
>>> I've therefore added map files with anonymous version tags for these
>>> buggy linkers which are only used if the buggy linker was detected
>>> during the configure step (i.e. if USING_BROKEN_SUSE_LD=yes). Notice
>>> that this is no PPC64 specific problem but a occurs on all SuSE 10
>>> platforms.
>>>
>>> And you've been right. I also had to add the arch specific map files
>>> for ppc64 in order to use them for the other launchers.
>>>
>>> Kumar, you made the change referred to here, do you have anything
>>> to add?
>>>
>>> /Erik
>>>
>>> Fix typo (replace 'defalt: all' by 'default')
>>>
>>> default: all
>>>
>>> CompileNativeLibraries.gmk
>>>
>>> Only use $(OPENWIN_LIB) for linking LIBSPLASHSCREEN on
>>> Solaris! The old
>>> code worked only accidentally when the X-libraries are in
>>> the default
>>> linker path anyway. The right solution is to use $(X_LIBS)
>>> if not on
>>> Windows or Solaris.
>>>
>>> Append -DX_ARCH=X_PPC64 to LIBJSOUND_CFLAGS on PPC64.
>>> The value of
>>> X_ARCHisn't actually used on the PPC architectures, but
>>> there's a
>>> check to verify
>>> that it is set.
>>>
>>> Fix typo (replace 'defalt: all' by 'default')
>>>
>>> default: all
>>>
>>>
>>> Otherwise looks good.
>>>
>>> /Erik
>>>
>>>
>>>
More information about the build-dev
mailing list