diff --git a/modules/openjdk8-from-host/Makefile b/modules/openjdk8-from-host/Makefile index 7bf1db6b54..e5552df4db 100644 --- a/modules/openjdk8-from-host/Makefile +++ b/modules/openjdk8-from-host/Makefile @@ -1,16 +1,20 @@ .PHONY: module clean +include ../common.gmk +ifneq ($(arch),$(host_arch)) +$(error Cannot provide JDK when cross-compiling) +endif + 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)) - -very-quiet = $(if $V, $1, @$1) +libsunec_path = $(shell find $(java_jdk_path) -name libsunec.so) module: - $(call very-quiet, $(SRC)/scripts/manifest_from_host.sh $(java_jdk_path)/jre/lib/amd64/libsunec.so > usr.manifest) + $(call very-quiet, $(SRC)/scripts/manifest_from_host.sh $(libsunec_path) > usr.manifest) $(call very-quiet, $(SRC)/scripts/manifest_from_host.sh -li libfreeblpriv3.so >> usr.manifest) clean: - rm -rf usr.manifest + rm -f usr.manifest diff --git a/modules/openjdk8-from-host/module.py b/modules/openjdk8-from-host/module.py index faab8c3620..f6b388e46f 100644 --- a/modules/openjdk8-from-host/module.py +++ b/modules/openjdk8-from-host/module.py @@ -3,23 +3,33 @@ import os, os.path import subprocess +host_arch = os.uname().machine +if host_arch == 'aarch64': + arch_dir = 'aarch64' +elif host_arch == 'x86_64': + arch_dir = 'amd64' +else: + print('Unsupported architecture: %s' % host_arch) + exit(-1) + 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).decode('utf-8') -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) + print('Could not find any jdk on the host. Please install openjdk8!') + exit(-1) javac_path = subprocess.check_output(['which', 'javac']).decode('utf-8').split('\n')[0] javac_real_path = os.path.realpath(javac_path) +java_real_path = os.path.dirname(javac_real_path) + '/java' jdk_path = os.path.dirname(os.path.dirname(javac_real_path)) +java_version = subprocess.check_output([java_real_path, '-version'], stderr=subprocess.STDOUT).decode('utf-8') +if not 'openjdk version "1.8.0' in java_version: + print('Could not find openjdk version 8 on the host. Please install openjdk8!') + exit(-1) + usr_files = FileMap() jdk_dir = os.path.basename(jdk_path) @@ -27,8 +37,8 @@ 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('jre/lib/%s/*audio*' % arch_dir) \ + .exclude('jre/lib/%s/*sound*' % arch_dir) \ .exclude('') \ .exclude('jre/man/**') \ .exclude('jre/bin/**') \