On Wednesday, January 15, 2020 at 3:45:13 AM UTC-5, Nadav Har'El wrote: > > > On Wed, Jan 15, 2020 at 6:07 AM Waldemar Kozaczuk <[email protected] > <javascript:>> 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 makes openjdk8-zull-full >> 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. >> > > It seems you are making two conflicting statements - on the one hand the > default Java will be openjdk8-zulu-full (from apps.git) and on the other > hand - > the default will be Java from the host. So which is it? It seems to me the > former - > I don't see any "java-from-host" module or anything... >
This patch makes the installed openjdk8 a compilation dependency for both main makefile and the one under java-base. The openjdk8-zulu-full app is the runtime dependency for the unit tests (BTW I believe the Scylla jenkins already depends on it the same way). But I think you have a point. Why not delete openjdk7 module and create openjdk8 (we are already demanding it in setup.py) that would pull from host or simply make the java-from-hots the app? > > > A downside of openjdk8-zulu-full is that our "make check" still requires > Java, and if we use openjdk8-zulu-full, it means that apps.git is now a > full-fledged requirement during our test. I'm not sure this is a big > problem, but > it's definitely a change (in the past the stuff we needed for tests were > all in > modules/, not apps/). > See above. BTW our tests already depend on the fonts app which I am removing as a dependency in follow up patch (not needed). > > Please see some comments below. > > >> References #743 >> >> Signed-off-by: Waldemar Kozaczuk <[email protected] <javascript:>> >> --- >> Makefile | 14 +++++++------- >> modules/httpserver-jvm-plugin/Makefile | 2 -- >> modules/java-base/common.gmk | 1 + >> modules/java/module.py | 2 +- >> modules/openjdk7/module.py | 22 ---------------------- >> > scripts/build | 11 +++++------ >> 6 files changed, 14 insertions(+), 38 deletions(-) >> delete mode 100644 modules/openjdk7/module.py >> >> diff --git a/Makefile b/Makefile >> index 62277d5f..8886d1ec 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 >> > > After we do this, we should probably remove the entire JVM from external/. > I did not realize that external is not whole repo and individual subdirectories can be controlled per .gitsubmodules. > > >> # 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,13 @@ 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 ($(arch),x64) >> + jdkbase := $(dir $(shell readlink -f $$(which javac)))/.. >> > +else >> + jdkbase := $(shell find external/$(arch)/openjdk.bin/usr/lib/jvm \ >> + -maxdepth 1 -type d -name 'java*') >> +endif >> > > Maybe a stupid question, but do we still need this "jdkbase" variable in > Makefile? > Aren't you removing its only uses in Makefile, below, and reintroducing > similar code in /modules/java-base/common.gmk anyway ? > > Unfortunately, we need the java headers to compile code under java/jvm directory which is still part of the main makefile (even for aarch64 though it will probably not run). It would be best if it did not. I believe some of the code under java/jvm is baloon related (which is disabled in java.cc anyway) and some code is (java_api.*) used by jvm httpserver plugin. So maybe we can split it and move ballon part to modules/java-base and remaining to modules/httpserver-jvm-plugin. For sure core/mmu.cc depends on ballon code in java/jvm but hopefully it does not depend on jdk headers to compile. I will look into it. > >> ifeq ($(gcc_include_env), external) >> gcc-inc-base := $(dir $(shell find $(gccbase)/ -name vector | grep -v >> -e debug/vector$$ -e profile/vector$$)) >> @@ -1940,7 +1940,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-jvm-plugin/Makefile >> b/modules/httpserver-jvm-plugin/Makefile >> index fdc20bb7..bb802720 100644 >> --- a/modules/httpserver-jvm-plugin/Makefile >> +++ b/modules/httpserver-jvm-plugin/Makefile >> @@ -1,7 +1,5 @@ >> - >> 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../httpserver-api >> >> # compiler flags: >> diff --git a/modules/java-base/common.gmk b/modules/java-base/common.gmk >> index e54a301a..1c79a6b5 100644 >> --- a/modules/java-base/common.gmk >> +++ b/modules/java-base/common.gmk >> @@ -1,3 +1,4 @@ >> +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 >> diff --git a/modules/java/module.py b/modules/java/module.py >> index 7af25104..0c0eb6c5 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-zulu-full') >> 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/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] <javascript:>. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/osv-dev/20200115040644.15786-1-jwkozaczuk%40gmail.com >> . >> > -- 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/61d437a8-6294-4fde-ad78-c8a49f347e85%40googlegroups.com.
