Created attachment 194114 [details] Patch for ports tree to add three new ports Java 9 is EOL and and can not be downloaded without Oracle account anymore. This patch adds three ports for Linux Oracle Java 10: JDK, JRE and, new for our ports, Server JRE which doesn't require all Linux X-Window bits.
I consider this port to be unusable if your have native code you load at runtime? E.g., the Maven port have native components bundled from Jansi as well as the Tomcat port using Commons Daemon which loads the JVM via dlopen() via --java-home. All of those must be Linux 64-bit too?
(In reply to Michael Osipov from comment #1) Yes, of course, when you run Linux JVM all your native components must be Linux-compiled for same platform. It is true for any Linux JVM running in FreeBSD Linux "emulation" mode. Same for any Linux code: if you run native Linux code on FreeBSD, and this code run dlopen(), target shared object to load must be Linux-compiled one. It is not JVM-specific, it is how Linux "emulation" works.
(In reply to Michael Osipov from comment #1) IMHO, only one reason to use Linux JVM on FreeBSD *is* that you have only Linux-compiled close-source native addons / JNI libraries. I don't see any other reasons to use emulation. Ok, using of JVM > 1.8 is other reason, but I hope, it will be eliminated by porting new JDKs to FreeBSD in [near] future.
(In reply to Lev A. Serebryakov from comment #3) I desperately hope that JDK 11 will be available on FreeBSD by October. I'd like even to help Greg, but I don't know how. I am currently blocked by the pending ports I have applied and no one is willing to review/commit them.
Hello. Thank you for making this patch available. Without it, it is impossible to install a recent version of Oracle JDK (as 9 is no longer available for download). I had installed the patch, however getting a core dump. Appreciate if you could suggest what I should look into. 1) Installed the patch by cd /usr/ports patch -p0 < /home/myhome/Downloads/linux-oracle-java10.patch cd /usr/ports/java/linux-oracle-jdk10/ make config-recusrive make install 2) Error: v@fbtr1:/usr/ports/java/linux-oracle-jdk10 % java # # A fatal error has been detected by the Java Runtime Environment: # # SIGSEGV (0xb) at pc=0xffffffffff600800, pid=4368, tid=100552 # # JRE version: (10.0.1+10) (build ) # Java VM: Java HotSpot(TM) 64-Bit Server VM (10.0.1+10, mixed mode, aot, tiered, compressed oops, g1 gc, linux-amd64) # Problematic frame: # C 0xffffffffff600800 # # Core dump will be written. Default location: core.4368 (may not exist) # # An error report file with more information is saved as: # /tmp/hs_err_pid4368.log # # If you would like to submit a bug report, please visit: # http://bugreport.java.com/bugreport/crash.jsp # Abort v@fbtr1:/usr/ports/java/linux-oracle-jdk10 % ----- My environment: a) Error log Dynamic libraries: Can not get library information for pid = 100552 VM Arguments: java_command: <unknown> java_class_path (initial): <not set> Launcher Type: SUN_STANDARD Logging: Log output configuration: #0: stdout all=warning uptime,level,tags #1: stderr all=off uptime,level,tags Environment Variables: JAVA_HOME=/usr/local/linux-oracle-jdk10 PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/home/v/bin SHELL=/bin/tcsh DISPLAY=localhost:11.0 HOSTTYPE=FreeBSD OSTYPE=FreeBSD MACHTYPE=x86_64 Signal Handlers: SIGSEGV: [libjvm.so+0xdf61c0], sa_mask[0]=11111111011111101101111111111110, sa_\ flags=SA_RESTART|SA_SIGINFO SIGBUS: [libjvm.so+0xdf61c0], sa_mask[0]=11111111011111101101111111111110, sa_f\ lags=SA_RESTART|SA_SIGINFO SIGFPE: [libjvm.so+0xdf61c0], sa_mask[0]=11111111011111101101111111111110, sa_f\ lags=SA_RESTART|SA_SIGINFO SIGPIPE: [libjvm.so+0xbfbe20], sa_mask[0]=11111111011111101101111111111110, sa_\ flags=SA_RESTART|SA_SIGINFO SIGXFSZ: [libjvm.so+0xbfbe20], sa_mask[0]=11111111011111101101111111111110, sa_\ flags=SA_RESTART|SA_SIGINFO SIGILL: [libjvm.so+0xdf61c0], sa_mask[0]=11111111011111101101111111111110, sa_f\ lags=SA_RESTART|SA_SIGINFO SIGUSR2: [libjvm.so+0xbfc1b0], sa_mask[0]=00000000000000000000000000000000, sa_\ flags=SA_RESTART|SA_SIGINFO SIGHUP: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none SIGINT: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none --------------- S Y S T E M --------------- OS:CentOS release 6.9 (Final) uname:Linux 2.6.32 FreeBSD 11.2-RC2 #0 r334861: Sat Jun 9 03:23:08 UTC 2018 x8\ 6_64 libc:glibc 2.12 NPTL 2.12 rlimit: STACK 524288k, CORE 9007199254740991k, NPROC 13842, NOFILE 287577, AS 9\ 007199254740991k, DATA 33554432k, FSIZE 9007199254740991k load average:0.15 0.25 0.23 /proc/meminfo: MemTotal: 10225196 kB MemFree: 8009100 kB Buffers: 0 kB Cached: 141984 kB SwapTotal: 4194304 kB SwapFree: 4194304 kB CPU:total 4 (initial active 4) CPU Model and flags from /proc/cpuinfo: model name : Intel(R) Core(TM) i5-2400 CPU @ 3.10GHz CPU Model and flags from /proc/cpuinfo: model name : Intel(R) Core(TM) i5-2400 CPU @ 3.10GHz CPU Model and flags from /proc/cpuinfo: model name : Intel(R) Core(TM) i5-2400 CPU @ 3.10GHz CPU Model and flags from /proc/cpuinfo: model name : Intel(R) Core(TM) i5-2400 CPU @ 3.10GHz flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov\ pat pse36 mmx fxsr xmm sse2 b28 Memory: 4k page, physical 10225196k(8009100k free), swap 0k(0k free) vm_info: Java HotSpot(TM) 64-Bit Server VM (10.0.1+10) for linux-amd64 JRE (10.\ 0.1+10), built on Mar 26 2018 18:14:41 by "mach5one" with gcc 4.9.2 END. B) Running within VirtualBox 5.12 x64 with 5.12 GuestAdditions (built the guest additons from ports) C) uname -a FreeBSD fbtr1 11.2-RC2 FreeBSD 11.2-RC2 #0 r334861: Sat Jun 9 03:23:08 UTC 2018 root@releng2.nyi.freebsd.org:/usr/obj/usr/src/sys/GENERIC amd64 v@fbtr1:/usr/ports/java/linux-oracle-jdk10 % D) v@fbtr1:/usr/ports/java/linux-oracle-jdk10 % pkg info | grep linux linux-c6-6.9_1 Meta-port for all things CentOS 6.9 linux-c6-alsa-lib-1.1.0_3 Advanced Linux Sound Architecture libraries (Linux CentOS 6.9) linux-c6-alsa-plugins-oss-1.1.0_3 OSS plugin for ALSA (Linux CentOS 6.9) linux-c6-alsa-plugins-pulseaudio-1.1.0_4 PulseAudio plugin for ALSA (Linux CentOS 6.9) linux-c6-alsa-utils-1.1.0_4 Advanced Linux Sound Architecture utilities (Linux CentOS 6.9) linux-c6-aspell-0.60.6_3 Spelling checker with better logic than ispell (Linux CentOS 6.9) linux-c6-atk-1.30.0_2 Accessibility Toolkit (Linux CentOS 6.9) linux-c6-audiofile-0.2.6_3 Implementation of the Audio File Library from SGI (Linux CentOS 6.9) linux-c6-avahi-libs-0.6.25_5 Libraries for Avahi (Linux CentOS 6.9) linux-c6-cairo-1.8.8_8 Vector graphics library Cairo (Linux CentOS 6.9) linux-c6-cups-libs-1.4.2_8 Common UNIX Printing System libraries linux-c6-curl-7.19.7_9 Command line tool for transferring files with URL syntax (Linux CentOS 6.9) linux-c6-cyrus-sasl-lib-2.1.23_5 RFC 2222 SASL (Simple Authentication and Security Layer) (Linux CentOS 6.9) linux-c6-dbus-glib-0.86_4 GLib bindings for D-Bus (Linux CentOS 6.9) linux-c6-dbus-libs-1.2.24_6 Libraries for accessing D-BUS (Linux CentOS 6.9) linux-c6-devtools-6.9_6 Linux compilers and base libraries (CentOS 6.9) linux-c6-dri-11.0.7_5 Mesa libGL runtime libraries (Linux CentOS 6.9) linux-c6-elfutils-libelf-0.164_2 ELF file handling library (CentOS 6.9) linux-c6-expat-2.0.1_5 XML 1.0 parser written in C (Linux CentOS 6.9) linux-c6-flac-1.2.1_4 Free lossless audio codec (Linux CentOS 6.9) linux-c6-fontconfig-2.8.0_3 XML-based font configuration API for X Windows (Linux CentOS 6.9) linux-c6-gdk-pixbuf2-2.24.1_5 Graphic library for GTK+ (Linux CentOS 6.9) linux-c6-glx-utils-11.0.7_3 Mesa GLX utilities (Linux CentOS 6.9) linux-c6-gnutls-2.12.23 GNU Transport Layer Security library (Linux CentOS 6.9) linux-c6-gtk2-2.24.23_7 GTK+ library, version 2.X (Linux CentOS 6.9) linux-c6-jasper-libs-1.900.1_4 JPEG-2000 reference implementation (Linux CentOS 6.9) linux-c6-jpeg-1.2.1_3 SIMD-accelerated JPEG codec (Linux CentOS 6.9) linux-c6-libasyncns-0.8_3 C library for executing DNS queries asynchronously (Linux CentOS 6.9) linux-c6-libgcrypt-1.4.5_7 General purpose crypto library based on code used in GnuPG (Linux CentOS 6.9) linux-c6-libgfortran-4.4.7_5 Runtime libraries for gfortran (Linux Centos 6.9) linux-c6-libglade2-2.6.4_4 GNOME glade library (Linux CentOS 6.9) linux-c6-libgpg-error-1.7_3 Common error values for all GnuPG components (Linux CentOS 6.9) linux-c6-libmikmod-3.2.0_4 MikMod Sound Library (Linux CentOS 6.9) linux-c6-libogg-1.1.4_3 Ogg bitstream library (Linux CentOS 6.9) linux-c6-libpciaccess-0.13.4_2 Generic PCI access library (CentOS 6.9) linux-c6-libpng-1.2.49_5 Library for manipulating PNG images (Linux CentOS 6.9) linux-c6-libsigc++20-2.2.4.2_2 Callback Framework for C++ (Linux CentOS 6.9) linux-c6-libsndfile-1.0.20_4 Reading and writing files containing sampled sound (like WAV or AIFF) (Linux CentOS 6.9) linux-c6-libssh2-1.4.2_6 Library implementing the SSH2 protocol (Linux CentOS 6.9) linux-c6-libtasn1-2.3_3 ASN.1 structure parser library (Linux CentOS 6.9) linux-c6-libthai-0.1.12_1 Thai language support library (Linux CentOS 6.9) linux-c6-libtheora-1.1.0_3 Theora Video Compression Codec (Linux CentOS 6.9) linux-c6-libtiff-3.9.4_5 Tools and library routines for working with TIFF images (Linux CentOS 6.9) linux-c6-libv4l-0.6.3_3 Video4Linux library (Linux CentOS 6.9) linux-c6-libvorbis-1.2.3_3 Audio compression codec library (Linux CentOS 6.9) linux-c6-libxml2-2.7.6_9 Library providing XML and HTML support (Linux CentOS 6.9) linux-c6-nas-1.9.1_3 Network Audio System (Linux CentOS 6.9) linux-c6-nspr-4.13.1 Netscape Portable Runtime (Linux CentOS 6.9) linux-c6-nss-3.28.4_2 Network Security Services (Linux CentOS 6.9) linux-c6-openal-soft-1.12.854_5 3D positional spatialized sound library (Linux CentOS 6.9) linux-c6-openldap-2.4.40_5 Lightweight Directory Access Protocol libraries (Linux CentOS 6.9) linux-c6-openmotif-2.3.3_4 Motif toolkit libraries (Linux CentOS 6.9) linux-c6-openssl-1.0.1e_15 OpenSSL toolkit (Linux CentOS 6.9) linux-c6-pango-1.28.1_7 Pango library (Linux CentOS 6.9) linux-c6-pixman-0.32.8_1 Low-level pixel manipulation library (Linux CentOS 6.9) linux-c6-pulseaudio-libs-0.9.21_7 Libraries for PulseAudio clients (Linux CentOS 6.9) linux-c6-pulseaudio-utils-0.9.21_6 Utils for PulseAudio clients (Linux CentOS 6.9) linux-c6-qt47-4.7.2_4 Cross-platform application and UI framework (Linux CentOS 6.9) linux-c6-qt47-webkit-4.7.2_4 Qt WebKit implementation (Linux CentOS 6.9) linux-c6-qt47-x11-4.7.2_6 Cross-platform application and UI framework (Linux CentOS 6.9) linux-c6-sdl-1.2.14_4 Cross-platform multi-media development API (Linux CentOS 6.9) linux-c6-sdl_image-1.2.12_5 Simple library to load images as SDL interfaces (Linux CentOS 6.9) linux-c6-sdl_mixer-1.2.12_5 Sample multi-channel audio mixer library (Linux CentOS 6.9) linux-c6-sdl_ttf-2.0.11_4 Simple library to load True Type Fonts as SDL interfaces (Linux CentOS 6.9) linux-c6-sqlite-3.6.20_4 Library that implements an embeddable SQL database engine (Linux CentOS 6.9) linux-c6-tcl85-8.5.7_2 Tool Command Language (Linux CentOS 6.9) linux-c6-tcp_wrappers-libs-7.6_4 Libraries tcp wrappers (Linux CentOS 6.9) linux-c6-tk85-8.5.7_3 Graphical toolkit for TCL (Linux CentOS 6.9) linux-c6-xorg-libs-7.4_10 Xorg libraries (Linux CentOS 6.9) linux-oracle-jdk10-10.0.1 Oracle Java 10 Development Kit for Linux linux_base-c6-6.9_6 Base set of packages needed in Linux mode (Linux CentOS 6.9) v@fbtr1:/usr/ports/java/linux-oracle-jdk10 % E) v@fbtr1:/usr/local/linux-oracle-jdk10/bin % ldd java java: linux_vdso.so.1 => (0x00007ffffffff000) libz.so.1 => /lib64/libz.so.1 (0x0000000800a00000) libpthread.so.0 => /lib64/libpthread.so.0 (0x0000000800e00000) libjli.so => /usr/local/linux-oracle-jdk10/bin/../lib/jli/libjli.so (0x0000000801200000) libdl.so.2 => /lib64/libdl.so.2 (0x0000000801600000) libc.so.6 => /lib64/libc.so.6 (0x0000000801a00000) /lib64/ld-linux-x86-64.so.2 (0x0000000800600000) v@fbtr1:/usr/local/linux-oracle-jdk10/bin % D) v@fbtr1:/usr/local/linux-oracle-jdk10/bin % ./jinfo # # A fatal error has been detected by the Java Runtime Environment: # # SIGSEGV (0xb) at pc=0xffffffffff600800, pid=4445, tid=100554 # # JRE version: (10.0.1+10) (build ) # Java VM: Java HotSpot(TM) 64-Bit Server VM (10.0.1+10, mixed mode, aot, tiered, compressed oops, g1 gc, linux-amd64) # Problematic frame: # C 0xffffffffff600800 # # Core dump will be written. Default location: core.4445 (may not exist) # # An error report file with more information is saved as: # /tmp/hs_err_pid4445.log # # If you would like to submit a bug report, please visit: # http://bugreport.java.com/bugreport/crash.jsp # Abort v@fbtr1:/usr/local/linux-oracle-jdk10/bin % E) v@fbtr1:/usr/local/linux-oracle-jdk10/bin % pkg info | grep java java-zoneinfo-2018.c Updated Java timezone definitions javavmwrapper-2.6 Wrapper script for various Java Virtual Machines F) v@fbtr1:/usr/local/linux-oracle-jdk10/bin % pkg info | grep -Hi jdk (standard input):linux-oracle-jdk10-10.0.1 Oracle Java 10 Development Kit for Linux I) v@fbtr1:/usr/local/linux-oracle-jdk10/bin % cat /etc/fstab # Device Mountpoint FStype Options Dump Pass# /dev/ada0p2 none swap sw 0 0 linprocfs /compat/linux/proc linprocfs rw 0 0 linsysfs /compat/linux/sys linsysfs rw 0 0 tmpfs /compat/linux/dev/shm tmpfs rw,mode=1777 0 0 v@fbtr1:/usr/local/linux-oracle-jdk10/bin % J) # kldstat Id Refs Address Size Name 1 35 0xffffffff80200000 2036868 kernel 2 1 0xffffffff82238000 381080 zfs.ko 3 2 0xffffffff825ba000 a380 opensolaris.ko 4 1 0xffffffff82819000 41f0 linprocfs.ko 5 4 0xffffffff8281e000 2d28 linux_common.ko 6 1 0xffffffff82821000 195c linsysfs.ko 7 1 0xffffffff82823000 6fc4 tmpfs.ko 8 1 0xffffffff8282a000 2daa0 vboxguest.ko 9 1 0xffffffff82858000 37528 linux.ko 10 1 0xffffffff82890000 31e50 linux64.ko root@fbtr1:/usr/local/linux-oracle-jdk10/bin #
(In reply to platform from comment #5) It works for me with linux-c7 ports: % /usr/local/linux-oracle-jdk10/bin/javac HW.java % /usr/local/linux-oracle-jdk10/bin/java -cp . HW Hello, world! % cat HW.java class HW { public static void main(String args[]) { System.out.println("Hello, world!"); } } % pkg info | grep linux linux-c7-expat-2.1.0_2 Binary port of Expat XML-parsing library (Linux CentOS 7.3.1611) linux-c7-fontconfig-2.10.95_3 XML-based font configuration API for X Windows (Linux CentOS 7.4.1708) linux-c7-xorg-libs-7.7_5 Xorg libraries (Linux CentOS 7.4.1708) linux-oracle-jdk10-10.0.1 Oracle Java 10 Development Kit for Linux linux-oracle-jre18-8.172 Oracle Java 8 Runtime Environment for Linux linux_base-c7-7.4.1708_5 Base set of packages needed in Linux mode (Linux CentOS 7.4.1708) % Looks like it should be enforced by port.
Thank you. I had uninstalled Linux_c6-base and then installed install linux_base-c7 pkg install linux-c7-xorg-libs With that, reinstalling jdk10 with your patch: worked. Thank you. I did get an error with javapackager script, but this is not a showstopper for me v@fbtr1:~/Downloads % javapackager /usr/local/linux-oracle-jdk10/bin/javapackager: 13: Syntax error: Bad function name Other pieces are ok. --------------- java -version java version "10.0.1" 2018-04-17 Java(TM) SE Runtime Environment 18.3 (build 10.0.1+10) Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.1+10, mixed mode) ----------- root@fbtr1:/usr/ports/java/linux-oracle-jdk10 # javac Usage: javac <options> <source files> where possible options include: @<filename> Read options and filenames from file -Akey[=value] Options to pass to annotation processors --add-modules <module>(,<module>)* Root modules to resolve in addition to the initial modules, or all modules on the module path if <module> is ALL-MODULE-PATH. --boot-class-path <path>, -bootclasspath <path> Override location of bootstrap class files --class-path <path>, -classpath <path>, -cp <path> Specify where to find user class files and annotation processors -d <directory> Specify where to place generated class files -deprecation Output source locations where deprecated APIs are used -encoding <encoding> Specify character encoding used by source files -endorseddirs <dirs> Override location of endorsed standards path -extdirs <dirs> Override location of installed extensions -g Generate all debugging info -g:{lines,vars,source} Generate only some debugging info -g:none Generate no debugging info -h <directory> Specify where to place generated native header files --help, -help Print this help message --help-extra, -X Print help on extra options -implicit:{none,class} Specify whether or not to generate class files for implicitly referenced files -J<flag> Pass <flag> directly to the runtime system --limit-modules <module>(,<module>)* Limit the universe of observable modules --module <module-name>, -m <module-name> Compile only the specified module, check timestamps --module-path <path>, -p <path> Specify where to find application modules --module-source-path <module-source-path> Specify where to find input source files for multiple modules --module-version <version> Specify version of modules that are being compiled -nowarn Generate no warnings -parameters Generate metadata for reflection on method parameters -proc:{none,only} Control whether annotation processing and/or compilation is done. -processor <class1>[,<class2>,<class3>...] Names of the annotation processors to run; bypasses default discovery process --processor-module-path <path> Specify a module path where to find annotation processors --processor-path <path>, -processorpath <path> Specify where to find annotation processors -profile <profile> Check that API used is available in the specified profile --release <release> Compile for a specific VM version. Supported targets: 10, 6, 7, 8, 9 -s <directory> Specify where to place generated source files -source <release> Provide source compatibility with specified release --source-path <path>, -sourcepath <path> Specify where to find input source files --system <jdk>|none Override location of system modules -target <release> Generate class files for specific VM version --upgrade-module-path <path> Override location of upgradeable modules -verbose Output messages about what the compiler is doing --version, -version Version information -Werror Terminate compilation if warnings occur
(In reply to platform from comment #7) Looks like this script is full of bash'ism, and shebang must be fixed, thank you!
A commit references this bug: Author: lev Date: Mon Jun 18 18:00:29 UTC 2018 New revision: 472705 URL: https://svnweb.freebsd.org/changeset/ports/472705 Log: Add Oracle Linux Java 10 JDK/JRE/Server JRE. This version need linux-c7 and crashes with linux-c6. Works only on amd64. PR: 228848 Changes: head/java/Makefile head/java/linux-oracle-jdk10/ head/java/linux-oracle-jdk10/Makefile head/java/linux-oracle-jdk10/distinfo head/java/linux-oracle-jdk10/pkg-descr head/java/linux-oracle-jdk10/pkg-message head/java/linux-oracle-jdk10/pkg-plist head/java/linux-oracle-jre10/ head/java/linux-oracle-jre10/Makefile head/java/linux-oracle-jre10/distinfo head/java/linux-oracle-jre10/pkg-descr head/java/linux-oracle-jre10/pkg-message head/java/linux-oracle-jre10/pkg-plist head/java/linux-oracle-serverjre10/ head/java/linux-oracle-serverjre10/Makefile head/java/linux-oracle-serverjre10/distinfo head/java/linux-oracle-serverjre10/pkg-descr head/java/linux-oracle-serverjre10/pkg-message head/java/linux-oracle-serverjre10/pkg-plist
Committed.