Please note this and other 2 patches in this series depend on the 'java: move balloon code out of kernel into java-base' patch submitted earlier.
On Tuesday, January 21, 2020 at 12:23:59 AM UTC-5, Waldek Kozaczuk wrote: > > 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. > > References #743 > > Signed-off-by: Waldemar Kozaczuk <[email protected]> > --- > .gitmodules | 7 ----- > Makefile | 9 +----- > modules/httpserver-api/api/os.cc | 2 +- > modules/httpserver-jvm-plugin/Makefile | 3 +- > modules/java-base/common.gmk | 2 ++ > modules/java/module.py | 2 +- > modules/openjdk7/module.py | 22 -------------- > modules/openjdk8-from-host/.gitignore | 1 + > modules/openjdk8-from-host/Makefile | 14 +++++++++ > modules/openjdk8-from-host/module.py | 40 ++++++++++++++++++++++++++ > scripts/build | 11 ++++--- > 11 files changed, 66 insertions(+), 47 deletions(-) > delete mode 100644 modules/openjdk7/module.py > create mode 100644 modules/openjdk8-from-host/.gitignore > create mode 100644 modules/openjdk8-from-host/Makefile > create mode 100644 modules/openjdk8-from-host/module.py > > diff --git a/.gitmodules b/.gitmodules > index a9fc9c64..8244a0e7 100644 > --- 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 > index cbe90704..a4b000d6 100644 > --- a/Makefile > +++ b/Makefile > @@ -112,7 +112,6 @@ 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") > @@ -120,9 +119,6 @@ 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/modules/httpserver-api/api/os.cc > b/modules/httpserver-api/api/os.cc > index 358a86c6..d80ab1ba 100644 > --- a/modules/httpserver-api/api/os.cc > +++ b/modules/httpserver-api/api/os.cc > @@ -19,7 +19,7 @@ > #include <api/unistd.h> > #include <osv/commands.hh> > #include <algorithm> > -#include "java/jvm/balloon_api.hh" > +#include "../java-base/balloon/balloon_api.hh" > > extern char debug_buffer[DEBUG_BUFFER_SIZE]; > > diff --git a/modules/httpserver-jvm-plugin/Makefile > b/modules/httpserver-jvm-plugin/Makefile > index fdc20bb7..e92bec2c 100644 > --- 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 > index 0e2e4690..3d0a1c98 100644 > --- 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 > index 7af25104..114c5fb9 100644 > --- 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 > deleted file mode 100644 > index e4895465..00000000 > --- a/modules/openjdk7/module.py > +++ /dev/null > @@ -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 > new file mode 100644 > index 00000000..f9235a6b > --- /dev/null > +++ 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 > new file mode 100644 > index 00000000..1bd8b898 > --- /dev/null > +++ 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 > new file mode 100644 > index 00000000..a55c78e9 > --- /dev/null > +++ 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 > index 2a4ba957..b72a8d67 100755 > --- 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 > -- > 2.20.1 > > -- 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/fc3b2661-22f6-4b40-9138-834cfb2a2c0d%40googlegroups.com.
