OpenJDK 11.0.2 cannot build on Solaris 11.4
Erik Joelsson
erik.joelsson at oracle.com
Fri Jan 18 19:09:41 UTC 2019
On 2019-01-18 10:17, Rob Petti wrote:
> Thanks, Erik!
>
> I tried the createSolarisDevkit12.4.sh
> <http://createSolarisDevkit12.4.sh> script, but none of the packages
> in that list exist in the package manager at those specific versions,
> so it just fails. I basically had to make my own list of packages from
> scratch using the existing one as a guideline.
>
> Zones sound like a cleaner solution to me, but I don't know enough
> about them to know how to install a specific base OS version. All the
> docs I find just install the same version as the 'host'. I'll need to
> do a bunch more research, it seems...
>
I know there is a difference between zones running the same OS version
and those that run a different. I believe you need what's called a
kernel zone to run a different version.
/Erik
> On Fri, Jan 18, 2019 at 5:17 PM Erik Joelsson
> <erik.joelsson at oracle.com <mailto:erik.joelsson at oracle.com>> wrote:
>
> Hello Rob,
>
> On 2019-01-17 13:57, Rob Petti wrote:
> > Hey Folks,
> >
> > I've discovered that OpenJDK 11 cannot be built on Solaris 11.4.
> Normally
> > we would just try to rebuild our system as 11.1, but that's not
> possible
> > since media for that base release is no longer available.
> >
> > Are there plans to support compilation on Oracle's latest and
> greatest, or
> > at least provide a proper method of building in such an environment?
>
> I can't speak for all OpenJDK contributors, but Oracle has no current
> plans for this. We are required to build on the oldest supported
> Solaris
> version to produce binaries that are compatible with that version.
> We do
> not produce different binaries for different versions of an OS.
> Also, as
> I understand it, Oracle is no longer involved in open support of 11u.
> Perhaps the new maintainer will accept contributions for fixing
> the issue.
>
> > For the record, here are the errors I'm getting. This is with
> solarisstudio
> > 12.4 (which BTW wouldn't install on Solaris 11.4 without
> unfreezing the
> > python version):
> >
> > # bash configure --with-boot-jdk=<path to jdk10>
> > --with-devkit=/opt/solarisstudio12.4
> > # gmake bootcycle-images
> > ...
> > Compiling 163 files for jdk.jfr
> > "/root/jdk11/jdk11u/src/hotspot/os/solaris/os_solaris.cpp", line
> 1580:
> > Error: EM_486 is not defined.
> > "/root/jdk11/jdk11u/src/hotspot/os/solaris/os_solaris.cpp", line
> 1618:
> > Error: The type "const arch_t[]" is incomplete.
> > 2 Error(s) detected.
> > gmake[3]: *** [lib/CompileJvm.gmk:151:
> >
> /root/jdk11/jdk11u/build/solaris-sparcv9-normal-server-release/hotspot/variant-server/libjvm/objs/os_solaris.o]
> > Error 2
> >
> > After patching with http://robpetti.com/files/jdk11-sol114.patch
> to fix
> > https://bugs.openjdk.java.net/browse/JDK-8182035, it gets a bit
> further,
> > but still fails:
> >
> > Compiling 64 files for jdk.jconsole
> >
> "/opt/solarisstudio12.4/lib/compilers/include/CC/stlport4/stl/_stdio_file.h",
> > line 161: Error: __pad is not a member of const __FILE.
> >
> "/opt/solarisstudio12.4/lib/compilers/include/CC/stlport4/stl/_stdio_file.h",
> > line 163: Error: __pad is not a member of const __FILE.
> >
> "/opt/solarisstudio12.4/lib/compilers/include/CC/stlport4/stl/_stdio_file.h",
> > line 165: Error: __pad is not a member of const __FILE.
> >
> "/opt/solarisstudio12.4/lib/compilers/include/CC/stlport4/stl/_stdio_file.h",
> > line 165: Error: __pad is not a member of const __FILE.
> >
> "/opt/solarisstudio12.4/lib/compilers/include/CC/stlport4/stl/_stdio_file.h",
> > line 167: Error: __pad is not a member of const __FILE.
> >
> "/opt/solarisstudio12.4/lib/compilers/include/CC/stlport4/stl/_stdio_file.h",
> > line 170: Error: __pad is not a member of __FILE.
> >
> "/opt/solarisstudio12.4/lib/compilers/include/CC/stlport4/stl/_stdio_file.h",
> > line 170: Error: __pad is not a member of __FILE.
> >
> "/opt/solarisstudio12.4/lib/compilers/include/CC/stlport4/stl/_stdio_file.h",
> > line 172: Error: __pad is not a member of __FILE.
> >
> "/opt/solarisstudio12.4/lib/compilers/include/CC/stlport4/stl/_stdio_file.h",
> > line 172: Error: __pad is not a member of __FILE.
> >
> "/opt/solarisstudio12.4/lib/compilers/include/CC/stlport4/stl/_stdio_file.h",
> > line 174: Error: __pad is not a member of __FILE.
> >
> "/opt/solarisstudio12.4/lib/compilers/include/CC/stlport4/stl/_stdio_file.h",
> > line 174: Error: __pad is not a member of __FILE.
> >
> "/opt/solarisstudio12.4/lib/compilers/include/CC/stlport4/stl/_stdio_file.h",
> > line 176: Error: __pad is not a member of __FILE.
> >
> "/opt/solarisstudio12.4/lib/compilers/include/CC/stlport4/stl/_stdio_file.h",
> > line 176: Error: __pad is not a member of __FILE.
> >
> "/opt/solarisstudio12.4/lib/compilers/include/CC/stlport4/stl/_stdio_file.h",
> > line 178: Error: __pad is not a member of __FILE.
> >
> "/opt/solarisstudio12.4/lib/compilers/include/CC/stlport4/stl/_stdio_file.h",
> > line 178: Error: __pad is not a member of __FILE.
> >
> "/opt/solarisstudio12.4/lib/compilers/include/CC/stlport4/stl/_stdio_file.h",
> > line 182: Error: __pad is not a member of __FILE.
> >
> "/opt/solarisstudio12.4/lib/compilers/include/CC/stlport4/stl/_stdio_file.h",
> > line 183: Error: __pad is not a member of __FILE.
> >
> "/opt/solarisstudio12.4/lib/compilers/include/CC/stlport4/stl/_stdio_file.h",
> > line 184: Error: __pad is not a member of __FILE.
> > 18 Error(s) detected.
> >
> > It seems the "right" way to do this would be to create a sysroot
> with older
> > 11.1 headers and libraries, and compile against that.
> Unfortunately the
> > --with-sysroot configure option does not completely work
> correctly. The
> > compiler still tries to include /usr/include instead of the sysroot
> > headers, and that just results in more build errors. The only
> way it seems
> > to truly get it to use the sysroot was to physically replace
> /usr/include
> > on the machine with the version from the sysroot. This is
> obviously less
> > than ideal.
> We have tried to get sysroot working on Solaris, and we are using it
> internally, against the recommendation of the Solaris team. It's not
> working perfectly though. According to the Solaris team, Solaris
> Studio
> does not support the concept of a sysroot. Their recommendation is to
> create zones with the OS version you need and build in those, which I
> find incredibly annoying. 11u should build fine on either 11.2 or
> 11.3
> though.
> > Is the --with-sysroot issue already known? Is there any other
> way around it
> > aside from manually replacing headers in the system just to
> compile the JDK?
> >
> For includes, I thought we had sysroot working pretty OK at this
> point.
> We use -I-xbuiltin to fool CC into thinking our
> $SYSROOT/usr/include is
> the actual /usr/include. Though, I have only tried it and seen it
> work
> with certain combinations of host OS versions and sysroots, and
> 11.4 is
> not in that list.
>
> You could try the open/make/devkit/createSolarisDevkit12.4.sh
> <http://createSolarisDevkit12.4.sh> script and
> see if that helps you build something that works better. That's
> what we
> use at Oracle.
>
> /Erik
>
>
>
> --
> <https://about.me/robpetti?promo=email_sig&utm_source=product&utm_medium=email_sig&utm_campaign=gmail_api&utm_content=thumb>
>
> Rob Petti
> about.me/robpetti
> <https://about.me/robpetti?promo=email_sig&utm_source=product&utm_medium=email_sig&utm_campaign=gmail_api&utm_content=thumb>
>
>
More information about the build-dev
mailing list