Thanks, Erik! I tried the 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... On Fri, Jan 18, 2019 at 5:17 PM Erik Joelsson <erik.joels...@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 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>