From: Waldemar Kozaczuk <[email protected]> Committer: Nadav Har'El <[email protected]> Branch: master
external x64: replace openjdk7 module with with new openjdk8-from-host one Java 7 reached end of life almost 5 years ago and has since been largely replaced by Java 8 which is still widely used. This patch eliminates openjdk7 module and adds new openjdk8-from-host one as a default java module. This patch also replaces dependencies in the main makefile on antique openjdk7 in external/x64 with openjdk8 from host that should be installed by setup.py. This patch also removes external/x64/openjdk.bin and external/aarch64/openjdk.bin modules. References #743 Signed-off-by: Waldemar Kozaczuk <[email protected]> Message-Id: <[email protected]> --- diff --git a/.gitmodules b/.gitmodules --- a/.gitmodules +++ b/.gitmodules @@ -1,7 +1,3 @@ -[submodule "external/x64/openjdk.bin"] - path = external/x64/openjdk.bin - url = ../../cloudius-systems/openjdk.bin - ignore = dirty [submodule "external/x64/gcc.bin"] path = external/x64/gcc.bin url = ../../cloudius-systems/gcc.bin @@ -24,9 +20,6 @@ [submodule "external/aarch64/misc.bin"] path = external/aarch64/misc.bin url = ../../cloudius-systems/aarch64-misc.bin.git -[submodule "external/aarch64/openjdk.bin"] - path = external/aarch64/openjdk.bin - url = ../../cloudius-systems/aarch64-openjdk.bin.git [submodule "modules/httpserver/swagger-ui"] path = modules/httpserver-html5-gui/swagger-ui url = ../../cloudius-systems/swagger-ui.git diff --git a/Makefile b/Makefile --- a/Makefile +++ b/Makefile @@ -112,17 +112,13 @@ endif # musl/ - for some of the header files (symbolic links in include/api) and # some of the source files ($(musl) below). # external/x64/acpica - for the ACPICA library (see $(acpi) below). -# external/x64/openjdk.bin - for $(java-targets) below. # Additional submodules are need when certain make parameters are used. ifeq (,$(wildcard musl/include)) $(error Missing musl/ directory. Please run "git submodule update --init --recursive") endif ifeq (,$(wildcard external/x64/acpica/source)) $(error Missing external/x64/acpica/ directory. Please run "git submodule update --init --recursive") endif -ifeq (,$(wildcard external/x64/openjdk.bin/usr)) - $(error Missing external/x64/openjdk.bin/ directory. Please run "git submodule update --init --recursive") -endif # This makefile wraps all commands with the $(quiet) or $(very-quiet) macros # so that instead of half-a-screen-long command lines we short summaries @@ -233,9 +229,6 @@ INCLUDES += -isystem include/glibc-compat gccbase = external/$(arch)/gcc.bin miscbase = external/$(arch)/misc.bin -jdkbase := $(shell find external/$(arch)/openjdk.bin/usr/lib/jvm \ - -maxdepth 1 -type d -name 'java*') - ifeq ($(gcc_include_env), external) gcc-inc-base := $(dir $(shell find $(gccbase)/ -name vector | grep -v -e debug/vector$$ -e profile/vector$$)) @@ -1933,7 +1926,7 @@ $(bootfs_manifest_dep): phony $(out)/bootfs.bin: scripts/mkbootfs.py $(bootfs_manifest) $(bootfs_manifest_dep) $(tools:%=$(out)/%) \ $(out)/zpool.so $(out)/zfs.so $(out)/libenviron.so $(out)/libvdso.so $(call quiet, olddir=`pwd`; cd $(out); "$$olddir"/scripts/mkbootfs.py -o bootfs.bin -d bootfs.bin.d -m "$$olddir"/$(bootfs_manifest) \ - -D jdkbase="$$olddir"/$(jdkbase) -D gccbase="$$olddir"/$(gccbase) \ + -D gccbase="$$olddir"/$(gccbase) \ -D miscbase="$$olddir"/$(miscbase), MKBOOTFS $@) $(out)/bootfs.o: $(out)/bootfs.bin diff --git a/external/aarch64/openjdk.bin b/external/aarch64/openjdk.bin --- a/external/aarch64/openjdk.bin +++ b/external/aarch64/openjdk.bin @@ -1 +0,0 @@ -Subproject commit 443f2cca797910915274a0a3a42ea8a67752c063 diff --git a/external/x64/openjdk.bin b/external/x64/openjdk.bin --- a/external/x64/openjdk.bin +++ b/external/x64/openjdk.bin @@ -1 +0,0 @@ -Subproject commit 019ea95e844cc9e51c149a519391e2a99915ad39 diff --git a/modules/httpserver-jvm-plugin/Makefile b/modules/httpserver-jvm-plugin/Makefile --- a/modules/httpserver-jvm-plugin/Makefile +++ b/modules/httpserver-jvm-plugin/Makefile @@ -1,7 +1,6 @@ INCLUDES = -I$(src)/build/$(mode)/gen/include -INCLUDES += -I../../include -I. -I../../java -I../../arch/$(ARCH) -I../.. -INCLUDES += -I$(jdkbase)/include -I$(jdkbase)/include/linux +INCLUDES += -I../../include -I. -I../../arch/$(ARCH) -I../.. INCLUDES += -I../httpserver-api # compiler flags: diff --git a/modules/java-base/common.gmk b/modules/java-base/common.gmk --- a/modules/java-base/common.gmk +++ b/modules/java-base/common.gmk @@ -1,3 +1,5 @@ +jdkbase = $(dir $(shell readlink -f $$(which javac)))/.. + INCLUDES = -I$(src)/arch/$(arch) -I$(src) -I$(src)/include -I$(src)/arch/common INCLUDES += -I$(src)/include/glibc-compat INCLUDES += $(shell $(CXX) -E -xc++ - -v </dev/null 2>&1 | awk '/^End/ {exit} /^ .*c\+\+/ {print "-isystem" $$0}') diff --git a/modules/java/module.py b/modules/java/module.py --- a/modules/java/module.py +++ b/modules/java/module.py @@ -1,4 +1,4 @@ from osv.modules import api api.require('java-non-isolated') -api.require('openjdk7') +api.require('openjdk8-from-host') diff --git a/modules/openjdk7/module.py b/modules/openjdk7/module.py --- a/modules/openjdk7/module.py +++ b/modules/openjdk7/module.py @@ -1,22 +0,0 @@ -from osv.modules.filemap import FileMap -from osv.modules import api -import os, os.path - -api.require('java-cmd') -provides = ['java'] - -usr_files = FileMap() - -jdkdir = os.path.basename(os.path.expandvars('${jdkbase}')) - -usr_files.add('${jdkbase}').to('/usr/lib/jvm/java') \ - .include('lib/**') \ - .include('jre/**') \ - .include('bin/java') \ - .exclude('jre/lib/security/cacerts') \ - .exclude('jre/lib/audio/**') - -usr_files.link('/usr/lib/jvm/' + jdkdir).to('java') -usr_files.link('/usr/lib/jvm/jre').to('java/jre') -usr_files.link('/usr/lib/jvm/java/jre/lib/security/cacerts').to('/etc/pki/java/cacerts') -usr_files.link('/usr/bin/java').to('/usr/lib/jvm/java/bin/java') diff --git a/modules/openjdk8-from-host/.gitignore b/modules/openjdk8-from-host/.gitignore --- a/modules/openjdk8-from-host/.gitignore +++ b/modules/openjdk8-from-host/.gitignore @@ -0,0 +1 @@ +usr.manifest diff --git a/modules/openjdk8-from-host/Makefile b/modules/openjdk8-from-host/Makefile --- a/modules/openjdk8-from-host/Makefile +++ b/modules/openjdk8-from-host/Makefile @@ -0,0 +1,14 @@ +.PHONY: module clean + +SRC = $(shell readlink -f ../..) + +javac_exe_path = $(shell realpath $$(which javac)) +javac_bin_path = $(shell dirname $(javac_exe_path)) +java_jdk_path = $(shell dirname $(javac_bin_path)) + +module: + $(SRC)/scripts/manifest_from_host.sh $(java_jdk_path)/jre/lib/amd64/libsunec.so > usr.manifest + $(SRC)/scripts/manifest_from_host.sh -l libfreeblpriv3.so >> usr.manifest + +clean: + rm -rf usr.manifest diff --git a/modules/openjdk8-from-host/module.py b/modules/openjdk8-from-host/module.py --- a/modules/openjdk8-from-host/module.py +++ b/modules/openjdk8-from-host/module.py @@ -0,0 +1,40 @@ +from osv.modules.filemap import FileMap +from osv.modules import api +import os, os.path +import subprocess + +api.require('java-cmd') +provides = ['java','java8'] + +#Verify that the jdk exists by trying to locate javac (java compiler) +if subprocess.call(['which', 'javac']) != 0: + print('Could not find any jdk on the host. Please install openjdk8!') + os.exit(-1) + +java_version = subprocess.check_output(['java', '-version'], stderr=subprocess.STDOUT) +if not 'openjdk version "1.8.0' in java_version: + print('Could not find openjdk version 8 on the host. Please install openjdk8!') + os.exit(-1) + +javac_path = subprocess.check_output(['which', 'javac']).split('\n')[0] +javac_real_path = os.path.realpath(javac_path) +jdk_path = os.path.dirname(os.path.dirname(javac_real_path)) + +usr_files = FileMap() + +jdk_dir = os.path.basename(jdk_path) + +usr_files.add(jdk_path).to('/usr/lib/jvm/java') \ + .include('jre/**') \ + .exclude('jre/lib/security/cacerts') \ + .exclude('jre/lib/amd64/*audio*') \ + .exclude('jre/lib/amd64/*sound*') \ + .exclude('') \ + .exclude('jre/man/**') \ + .exclude('jre/bin/**') \ + .include('jre/bin/java') + +usr_files.link('/usr/lib/jvm/' + jdk_dir).to('java') +usr_files.link('/usr/lib/jvm/jre').to('java/jre') +usr_files.link('/usr/lib/jvm/java/jre/lib/security/cacerts').to('/etc/pki/java/cacerts') +usr_files.link('/usr/bin/java').to('/usr/lib/jvm/java/jre/bin/java') diff --git a/scripts/build b/scripts/build --- a/scripts/build +++ b/scripts/build @@ -170,7 +170,6 @@ esac modules=${vars[modules]-!$image} # TODO: some modules need these... Would be better if they wouldn't... -jdkbase=${vars[jdkbase]-`find "$SRC"/external/$arch/openjdk.bin/usr/lib/jvm -maxdepth 1 -type d -name 'java*'`} gccbase=${vars[gccbase]-"$SRC"/external/$arch/gcc.bin} miscbase=${vars[miscbase]-"$SRC"/external/$arch/misc.bin} @@ -221,8 +220,8 @@ fi export "$i" ;; esac done - # Export the variables we already have. This makes it unnecessary to do "fs__type=$fstype jdkbase $jdkbase ..." - export fs_type jdkbase mode OSV_BUILD_PATH + # Export the variables we already have. This makes it unnecessary to do "fs__type=$fstype ..." + export fs_type mode OSV_BUILD_PATH # Other variables we wanted to rename, I don't know why export ARCH=$arch OSV_BASE=$SRC # Run what we wanted to run. It will inherit everything we exported above. @@ -269,15 +268,15 @@ zfs) if [ "$export" == "none" ] then - "$SRC"/scripts/upload_manifest.py -o usr.img -m usr.manifest -D jdkbase="$jdkbase" -D gccbase="$gccbase" -D miscbase="$miscbase" + "$SRC"/scripts/upload_manifest.py -o usr.img -m usr.manifest -D gccbase="$gccbase" -D miscbase="$miscbase" else export_dir=${vars[export_dir]-$SRC/build/export} - "$SRC"/scripts/export_manifest.py -e "$export_dir" -m usr.manifest -D jdkbase="$jdkbase" -D gccbase="$gccbase" -D miscbase="$miscbase" + "$SRC"/scripts/export_manifest.py -e "$export_dir" -m usr.manifest -D gccbase="$gccbase" -D miscbase="$miscbase" fi ;; rofs) rm -rf rofs.img - "$SRC"/scripts/gen-rofs-img.py -o rofs.img -m usr.manifest -D jdkbase="$jdkbase" -D gccbase="$gccbase" -D miscbase="$miscbase" + "$SRC"/scripts/gen-rofs-img.py -o rofs.img -m usr.manifest -D gccbase="$gccbase" -D miscbase="$miscbase" rofs_size=`stat --printf %s rofs.img` img_size=$((kernel_end + rofs_size)) cp loader.img bare.raw -- You received this message because you are subscribed to the Google Groups "OSv Development" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/osv-dev/000000000000d66294059cb790e5%40google.com.
