1

I'm having a bit of a sticky problem building openjdk7 on an Itanium server running Suse Linux Enterprise Server 11 SP2.

I have successfully installed the Sun JDK 1.6 update 33 to serve as the bootstrap for the installation. And, I have downloaded the source drops and unzipped the openJDK7 install source into a directory. My build passes all the make sanity checks and looks ready to go.

I have unset JAVA_HOME, declared LANG=C, and pointed the build to the bootstrap JDK.

Then I invoke make ALLOW_DOWNLOADS=false ALT_BOOTDIR=/usr/java/jdk1.6.0_33 ALT_DROPS_DIR=~/openjdk_src/sourcedrop

The build runs fine for about 5-10 minutes, and then I get a string of errors about SSL libraries not being found.

This occurs in the following segment of the build in the jaxws source tree, and appears to have something to do with SSL:

[javac] Compiling 2735 source files to /root/openjdk_src/openjdk/build/linux-ia64/jaxws/build/classes
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/tools/internal/ws/wsdl/parser/DOMForest.java:54: error: package javax.net.ssl does not exist
[javac] import javax.net.ssl.HttpsURLConnection;
[javac]                     ^
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/tools/internal/ws/wsdl/parser/DOMForest.java:55: error: package javax.net.ssl does not exist
[javac] import javax.net.ssl.HostnameVerifier;
[javac]                     ^
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/tools/internal/ws/wsdl/parser/DOMForest.java:56: error: package javax.net.ssl does not exist
[javac] import javax.net.ssl.SSLSession;
[javac]                     ^
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/tools/internal/ws/wsdl/parser/MetadataFinder.java:54: error: package javax.net.ssl does not exist
[javac] import javax.net.ssl.HostnameVerifier;
[javac]                     ^
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/tools/internal/ws/wsdl/parser/MetadataFinder.java:55: error: package javax.net.ssl does not exist
[javac] import javax.net.ssl.HttpsURLConnection;
[javac]                     ^
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/tools/internal/ws/wsdl/parser/MetadataFinder.java:56: error: package javax.net.ssl does not exist
[javac] import javax.net.ssl.SSLSession;
[javac]                     ^
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/tools/internal/ws/wsdl/parser/MetadataFinder.java:218: error: cannot find symbol
[javac]     private static class HttpClientVerifier implements HostnameVerifier {
[javac]                                                        ^
[javac]   symbol:   class HostnameVerifier
[javac]   location: class MetadataFinder
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/tools/internal/ws/wsdl/parser/MetadataFinder.java:219: error: cannot find symbol
[javac]         public boolean verify(String s, SSLSession sslSession) {
[javac]                                         ^
[javac]   symbol:   class SSLSession
[javac]   location: class HttpClientVerifier
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/developer/JAXWSProperties.java:32: error: package javax.net.ssl does not exist
[javac] import javax.net.ssl.HostnameVerifier;
[javac]                     ^
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/developer/JAXWSProperties.java:33: error: package javax.net.ssl does not exist
[javac] import javax.net.ssl.HttpsURLConnection;
[javac]                     ^
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/developer/JAXWSProperties.java:34: error: package javax.net.ssl does not exist
[javac] import javax.net.ssl.SSLSocketFactory;
[javac]                     ^
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/transport/http/client/HttpClientTransport.java:39: error: package javax.net.ssl does not exist
[javac] import javax.net.ssl.SSLSocketFactory;
[javac]                     ^
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/transport/http/client/HttpClientTransport.java:40: error: package javax.net.ssl does not exist
[javac] import javax.net.ssl.HttpsURLConnection;
[javac]                     ^
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/transport/http/client/HttpClientTransport.java:41: error: package javax.net.ssl does not exist
[javac] import javax.net.ssl.HostnameVerifier;
[javac]                     ^
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/transport/http/client/HttpClientTransport.java:42: error: package javax.net.ssl does not exist
[javac] import javax.net.ssl.SSLSession;
[javac]                     ^
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/transport/http/client/HttpClientTransport.java:302: error: cannot find symbol
[javac]     private static class HttpClientVerifier implements HostnameVerifier {
[javac]                                                        ^
[javac]   symbol:   class HostnameVerifier
[javac]   location: class HttpClientTransport
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/transport/http/client/HttpClientTransport.java:303: error: cannot find symbol
[javac]         public boolean verify(String s, SSLSession sslSession) {
[javac]                                         ^
[javac]   symbol:   class SSLSession
[javac]   location: class HttpClientVerifier
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/tools/internal/ws/wsdl/parser/MetadataFinder.java:154: error: cannot find symbol
[javac]                     if (conn instanceof HttpsURLConnection) {
[javac]                                         ^
[javac]   symbol:   class HttpsURLConnection
[javac]   location: class WSEntityResolver
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/tools/internal/ws/wsdl/parser/MetadataFinder.java:156: error: cannot find symbol
[javac]                             ((HttpsURLConnection) conn).setHostnameVerifier(new HttpClientVerifier());
[javac]                               ^
[javac]   symbol:   class HttpsURLConnection
[javac]   location: class WSEntityResolver
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/transport/http/client/HttpClientTransport.java:207: error: cannot find symbol
[javac]         if (httpConnection instanceof HttpsURLConnection) {
[javac]                                       ^
[javac]   symbol:   class HttpsURLConnection
[javac]   location: class HttpClientTransport
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/transport/http/client/HttpClientTransport.java:223: error: cannot find symbol
[javac]                 ((HttpsURLConnection) httpConnection).setHostnameVerifier(new HttpClientVerifier());
[javac]                   ^
[javac]   symbol:   class HttpsURLConnection
[javac]   location: class HttpClientTransport
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/transport/http/client/HttpClientTransport.java:227: error: cannot find symbol
[javac]             HostnameVerifier verifier =
[javac]             ^
[javac]   symbol:   class HostnameVerifier
[javac]   location: class HttpClientTransport
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/transport/http/client/HttpClientTransport.java:228: error: cannot find symbol
[javac]                 (HostnameVerifier) context.invocationProperties.get(JAXWSProperties.HOSTNAME_VERIFIER);
[javac]                  ^
[javac]   symbol:   class HostnameVerifier
[javac]   location: class HttpClientTransport
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/transport/http/client/HttpClientTransport.java:230: error: cannot find symbol
[javac]                 ((HttpsURLConnection) httpConnection).setHostnameVerifier(verifier);
[javac]                   ^
[javac]   symbol:   class HttpsURLConnection
[javac]   location: class HttpClientTransport
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/transport/http/client/HttpClientTransport.java:234: error: cannot find symbol
[javac]             SSLSocketFactory sslSocketFactory =
[javac]             ^
[javac]   symbol:   class SSLSocketFactory
[javac]   location: class HttpClientTransport
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/transport/http/client/HttpClientTransport.java:235: error: cannot find symbol
[javac]                 (SSLSocketFactory) context.invocationProperties.get(JAXWSProperties.SSL_SOCKET_FACTORY);
[javac]                  ^
[javac]   symbol:   class SSLSocketFactory
[javac]   location: class HttpClientTransport
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/transport/http/client/HttpClientTransport.java:237: error: cannot find symbol
[javac]                 ((HttpsURLConnection) httpConnection).setSSLSocketFactory(sslSocketFactory);
[javac]                   ^
[javac]   symbol:   class HttpsURLConnection
[javac]   location: class HttpClientTransport
[javac] Note: Some input files use or override a deprecated API.
[javac] Note: Recompile with -Xlint:deprecation for details.
[javac] Note: Some input files use unchecked or unsafe operations.
[javac] Note: Recompile with -Xlint:unchecked for details.
[javac] 27 errors

To work around this I unpacked the jsse.pack into jsse.jar in the jdk/jre/bin.

Then if I remember to make with make ALLOW_DOWNLOADS=false ALT_BOOTDIR=/usr/java/jdk1.6.0_33 ALT_DROPS_DIR=~/openjdk_src/sourcedrop DISABLE_HOTSPOT_OS_VERSION_CHECK=ok to ignore the architecture well.

The build then fails when it makes adlc in the VM:

Making adlc
g++  -Wl,-relax -Xlinker -O1   -Xlinker -export-dynamic -o ../generated/adfiles/adlc            
../generated/adfiles/adlparse.o ../generated/adfiles/arch       Desc.o    
../generated/adfiles/arena.o ../generated/adfiles/dfa.o ../generated/adfiles/dict2.o   
../generated/adfiles/filebuff.o ../generated/adfil       es/forms.o 
../generated/adfiles/formsopt.o ../generated/adfiles/formssel.o 
../generated/adfiles/main.o 
../generated/adfiles/adlc-opcodes.o ../       generated/adfiles/output_c.o 
../generated/adfiles/output_h.o
make[6]: *** No rule to make target 
`/root/openjdk_src/openjdk/hotspot/src/cpu/ia64/vm/.ad', needed by    
`../generated/adfiles/linux_.ad'.  Stop       .

Now what? What is adlc and why won't it build?

jknowles
  • 479
  • 3
  • 13

1 Answers1

1

I only recently stumbled across this (still open) question, having attempted something similar in recent months; and also having encountered (and solved) the same issue.

'adlc' is HotSpot's Architecture Description Language Compiler, i.e. ADLC. It is employed in generating the source of the Java execution engines (interpreter and JIT compiler) of the HotSpot build; based on processing '.ad' files. If and when you get the ADLC tool to build, this is what its 'usage' looks like:

$> ./adlc
Architecture Description Language Compiler

Usage: adlc [-doqwTs] [-#]* [-D<FLAG>[=<DEF>]] [-U<FLAG>] [-c<CPP_FILE_NAME>] [-h<HPP_FILE_NAME>] [-a<DFA_FILE_NAME>] [-v<GLOBALS_FILE_NAME>] <ADL_FILE_NAME>
 d  produce DFA debugging info
 o  no output produced, syntax and semantic checking only
 q  quiet mode, supresses all non-essential messages
 w  suppress warning messages
 T  make DFA as many subroutine calls
 s  output which instructions are cisc-spillable
 D  define preprocessor symbol
 U  undefine preprocessor symbol
 c  specify CPP file name (default: (null))
 h  specify HPP file name (default: (null))
 a  specify DFA output file name
 v  specify adGlobals output file name
 #  increment ADL debug level

Your build problem is that you cannot avoid the 'architecture' detection! (Indeed, your use of "DISABLE_HOTSPOT_OS_VERSION_CHECK=ok", is probably suspect even.) However, its worse than (just) that : IA64 (apart from with Windows, until the end of Windows Server 2008 R2 (extended)support... out-to 2020?) is being removed from the Java 7 OpenJDK source tree, and bits have been removed/are being actively removed (and/or are not being maintained?). Specifically, thats been the problem with some of the HotSpot/OpenJDK build configuration components of the Makefile-support system that is necessary to specify all the architectural qualifications to locate/process the '.ad' files necessary on the Linux Itanium/IA64 architecture. Specifically, you are missing certain critical definitions needed for correct filename expansions: [...]/cpu/ia64/vm/.ad and ../generated/adfiles/linux_.ad are manifestly not correct, fully architecturally qualified names of the files/targets (hence are not located).

The proper name of the file/target concerned above actually is ../generated/adfiles/linux_ia64.ad, which comes about through an environment variable substitution in the target name, but for a missing definition of ${arch_model} (a similar situation presents with another envvar, ${os_arch_model}). These are/were absent (an oversight?) in the 'platform_ia64' under the 'linux' directory of [JDK_distribution]/hotspot/make. A brief review of the other platform files under linux, and you should see that 'arch_model' should take the value of 'arch', i.e. ia64, and similarly, 'os_arch_model' takes the same value as 'os_arch', i.e. linux_ia64.

[Java7 JDK distribution]/hotspot/make $ cat platform_ia64
os_family = linux
arch = ia64
arch_model = ia64                      # Added
os_arch = linux_ia64
os_arch_model = linux_ia64             # Added
lib_arch = ia64
compiler = gcc
gnu_dis_arch = ia64
sysdefs = -DLINUX -D_GNU_SOURCE -DIA64 -DCC_INTERP
mark_style = alignment

With just that amendment/correction, you should be able to succeed in these initial steps of the OpenJDK build. (I can get past the ADLC building, but fail later down the build process for another area of source having been dropped from later IA64 sources...) Good Luck!