From: Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH 1/4] openjdk: new package
Date: Tue, 6 Feb 2018 15:52:03 +0100 [thread overview]
Message-ID: <20180206145203.GD20598@australia.be.alcatel-lucent.com> (raw)
In-Reply-To: <20180206143952.12332-2-thomas.de_schampheleire@nokia.com>
Note: I also added following lines in the top-level Buildroot Makefile to avoid
interference from the user's environment:
unexport PLATFORM
unexport JAVA_HOME
unexport OS
On Tue, Feb 06, 2018 at 03:39:49PM +0100, Thomas De Schampheleire wrote:
> Build openjdk for a headless system without crazy dependencies.
>
> Tested on Buildroot 2017.02.
> Created in context of PowerPC.
>
> Signed-off-by: Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
> ---
> package/Config.in | 1 +
> package/openjdk/Config.in | 30 +++++
> package/openjdk/openjdk.mk | 117 +++++++++++++++++
> .../openjdk8-find-compiler-fix-env-respect.patch | 140 +++++++++++++++++++++
> ...8-fix-assembler-flag-handling-in-makefile.patch | 20 +++
> package/openjdk/openjdk8-fix-zero-mode-crash.patch | 49 ++++++++
> .../openjdk/openjdk8-no-genx11-in-headless.patch | 17 +++
> package/openjdk/openjdk8-no-unused-deps.patch | 94 ++++++++++++++
> .../openjdk/openjdk8-restrict-to-staging-dir.patch | 11 ++
> 9 files changed, 479 insertions(+)
> create mode 100644 package/openjdk/Config.in
> create mode 100644 package/openjdk/openjdk.mk
> create mode 100644 package/openjdk/openjdk8-find-compiler-fix-env-respect.patch
> create mode 100644 package/openjdk/openjdk8-fix-assembler-flag-handling-in-makefile.patch
> create mode 100644 package/openjdk/openjdk8-fix-zero-mode-crash.patch
> create mode 100644 package/openjdk/openjdk8-no-genx11-in-headless.patch
> create mode 100644 package/openjdk/openjdk8-no-unused-deps.patch
> create mode 100644 package/openjdk/openjdk8-restrict-to-staging-dir.patch
>
> diff --git a/package/Config.in b/package/Config.in
> index 9cd5d9c087..5746ca75a0 100644
> --- a/package/Config.in
> +++ b/package/Config.in
> @@ -648,6 +648,7 @@ menu "Mono libraries/modules"
> endmenu
> endif
> source "package/nodejs/Config.in"
> + source "package/openjdk/Config.in"
> source "package/perl/Config.in"
> if BR2_PACKAGE_PERL
> menu "Perl libraries/modules"
> diff --git a/package/openjdk/Config.in b/package/openjdk/Config.in
> new file mode 100644
> index 0000000000..f4e2c09776
> --- /dev/null
> +++ b/package/openjdk/Config.in
> @@ -0,0 +1,30 @@
> +comment "openjdk needs a toolchain w/ threads"
> + depends on !BR2_TOOLCHAIN_HAS_THREADS
> +
> +config BR2_PACKAGE_OPENJDK
> + bool "openjdk"
> + select BR2_NEEDS_HOST_JAR
> + select BR2_NEEDS_HOST_JAVAC
> + select BR2_PACKAGE_FREETYPE
> + select BR2_PACKAGE_LIBFFI
> + depends on BR2_TOOLCHAIN_HAS_THREADS # libffi
> + help
> + OpenJDK JRE runtime.
> +
> + http://openjdk.java.net/
> +
> +if BR2_PACKAGE_OPENJDK
> +
> +config BR2_PACKAGE_OPENJDK_CUSTOM_BOOT_JDK
> + bool "Specify a custom boot JDK"
> + help
> + A custom boot JDK passed via --with-boot-jdk
> + (used to bootstrap build)
> +
> +config BR2_PACKAGE_OPENJDK_CUSTOM_BOOT_JDK_PATH
> + string "Path to boot JDK"
> + depends on BR2_PACKAGE_OPENJDK_CUSTOM_BOOT_JDK
> + help
> + Path to custom boot JDK
> +
> +endif
> diff --git a/package/openjdk/openjdk.mk b/package/openjdk/openjdk.mk
> new file mode 100644
> index 0000000000..790a36ba8d
> --- /dev/null
> +++ b/package/openjdk/openjdk.mk
> @@ -0,0 +1,117 @@
> +################################################################################
> +#
> +# openjdk
> +#
> +################################################################################
> +
> +# Please be aware that, when cross-compiling, the OpenJDK configure script will
> +# generally use 'target' where autoconf traditionally uses 'host'
> +
> +#Version is the same as OpenJDK HG tag
> +OPENJDK_VERSION = jdk8u102-b14
> +#Release is the same as OpenJDK repo
> +OPENJDK_RELEASE = jdk8u
> +OPENJDK_PROJECT = jdk8u
> +
> +OPENJDK_DOWNLOAD_SITE = http://hg.openjdk.java.net/$(OPENJDK_PROJECT)/$(OPENJDK_RELEASE)
> +OPENJDK_SOURCE = $(OPENJDK_VERSION).tar.gz
> +OPENJDK_SITE = $(OPENJDK_DOWNLOAD_SITE)/archive
> +
> +OPENJDK_DEPENDENCIES = host-pkgconf libffi freetype
> +OPENJDK_LICENSE = GPLv2+ with classpath exception
> +OPENJDK_LICENSE_FILES = LICENSE
> +
> +# Certain patches are taken from Yocto, see below listing from
> +# directory: meta-java/recipes-core/openjdk/patches-openjdk-8
> +# Note: patches needed to be postprocessed to add one directory component:
> +# find -name "*.patch" | xargs sed -i -e 's,--- ,--- a/,' -e 's,+++ ,+++ b/,'
> +#
> +# NOTNEEDED? dont-expect-fqpn-for-make.patch
> +# NOTNEEDED? filter-aclocal-copy-too.patch
> +# NOTNEEDED openjdk8-add-missing-linker-flags.patch
> +# TAKEN openjdk8-find-compiler-fix-env-respect.patch
> +# NOTNEEDED? openjdk8-fix-adlc-flags.patch
> +# TAKEN openjdk8-fix-assembler-flag-handling-in-makefile.patch
> +# NOSHARKYET openjdk8-fix-shark-build.patch
> +# NOSHARKYET openjdk8-fix-shark-stdc++11.patch
> +# TAKEN openjdk8-fix-zero-mode-crash.patch
> +# TAKEN openjdk8-no-genx11-in-headless.patch
> +# TAKEN openjdk8-no-unused-deps.patch
> +# NOTNEEDED openjdk8-prevent-debuginfo-in-favour-of-openembedded-package-split.patch
> +# TAKEN openjdk8-restrict-to-staging-dir.patch
> +# NOTNEEDED openjdk8-silence-d_fortify_source-warning.patch
> +# NOTNEEDED? remove-shell-variables-from-autoheader.patch
> +
> +OPENJDK_CONF_OPTS += \
> + --with-jvm-interpreter=cpp \
> + --with-jvm-variants=zero \
> + --enable-openjdk-only \
> + --with-debug-level=release \
> + --openjdk-target=$(GNU_TARGET_NAME) \
> + --with-sys-root=$(STAGING_DIR) \
> + --with-tools-dir=$(HOST_DIR) \
> + --enable-unlimited-crypto \
> + --disable-headful \
> + --with-extra-cflags="-DHEADLESS=true -Wno-error" \
> + --with-extra-cxxflags="-DHEADLESS=true -Wno-error" \
> + --with-x=no \
> +
> +ifeq ($(BR2_PACKAGE_OPENJDK_CUSTOM_BOOT_JDK),y)
> +OPENJDK_CONF_OPTS += --with-boot-jdk=$(call qstrip,$(BR2_PACKAGE_OPENJDK_CUSTOM_BOOT_JDK_PATH))
> +endif
> +
> +OPENJDK_MAKE_OPTS += BUILD_HEADLESS_ONLY=1 BUILD_HEADLESS=true \
> + BUILD_SOUNDLESS_ONLY=1 X11_NOT_NEEDED=1 \
> + CUPS_NOT_NEEDED=1 ALSA_NOT_NEEDED=1 PULSE_NOT_NEEDED=1 \
> +
> +OPENJDK_MAKE_ENV += X11_NOT_NEEDED=yes CUPS_NOT_NEEDED=yes ALSA_NOT_NEEDED=yes \
> + PULSE_NOT_NEEDED=yes \
> + BUILD_LD="$(HOSTCC)"
> +
> +# OpenJDK uses a mercurial forest structure
> +# thankfully the various forests can be downloaded as individual .tar.gz files using
> +# the following URL structure
> +# http://hg.openjdk.java.net/$(OPENJDK_PROJECT)/archive/$(OPENJDK_VERSION).tar.bz2
> +# http://hg.openjdk.java.net/$(OPENJDK_PROJECT)/corba/archive/$(OPENJDK_VERSION).tar.bz2
> +# ...
> +define OPENJDK_DOWNLOAD_CMDS
> +$(foreach sub,hotspot corba jaxp jaxws jdk langtools nashorn,
> + $(call DOWNLOAD_INNER,$(OPENJDK_DOWNLOAD_SITE)/$(sub)/archive/$(OPENJDK_VERSION).tar.gz,openjdk-$(OPENJDK_RELEASE)-$(sub)-$(OPENJDK_VERSION).tar.gz,DOWNLOAD)
> +)
> +endef
> +
> +OPENJDK_POST_DOWNLOAD_HOOKS += OPENJDK_DOWNLOAD_CMDS
> +
> +define OPENJDK_POST_EXTRACT_CMDS
> +$(foreach sub,hotspot corba jaxp jaxws jdk langtools nashorn,
> + mkdir $(@D)/$(sub) ;
> + $(TAR) --strip-components=1 -C $(@D)/$(sub) \
> + -z $(TAR_OPTIONS) $(DL_DIR)/openjdk-$(OPENJDK_RELEASE)-$(sub)-$(OPENJDK_VERSION).tar.gz ;
> +)
> +endef
> +
> +OPENJDK_POST_EXTRACT_HOOKS += OPENJDK_POST_EXTRACT_CMDS
> +
> +define OPENJDK_CONFIGURE_CMDS
> + cd $(@D) && bash common/autoconf/autogen.sh
> + cd $(@D) && $(OPENJDK_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) bash ./configure $(OPENJDK_CONF_OPTS)
> +endef
> +
> +# TODO in post-patch step?
> +define OPENJDK_CLEAN_X11_DEPENDENCY
> + rm -f $(@D)/jdk/src/solaris/classes/sun/awt/X11/*.java
> +endef
> +
> +OPENJDK_PRE_BUILD_HOOKS += OPENJDK_CLEAN_X11_DEPENDENCY
> +
> +define OPENJDK_BUILD_CMDS
> + $(OPENJDK_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE1) JOBS=$(PARALLEL_JOBS) -C $(@D) $(OPENJDK_MAKE_OPTS) images
> +endef
> +
> +define OPENJDK_INSTALL_TARGET_CMDS
> + mkdir -p $(TARGET_DIR)/usr/lib/jvm/
> + cp -arf $(@D)/build/*/images/j2re-image $(TARGET_DIR)/usr/lib/jvm/
> +endef
> +
> +#openjdk configure is not based on automake
> +$(eval $(generic-package))
> diff --git a/package/openjdk/openjdk8-find-compiler-fix-env-respect.patch b/package/openjdk/openjdk8-find-compiler-fix-env-respect.patch
> new file mode 100644
> index 0000000000..d15e9705ba
> --- /dev/null
> +++ b/package/openjdk/openjdk8-find-compiler-fix-env-respect.patch
> @@ -0,0 +1,140 @@
> +--- a/common/autoconf/toolchain.m4.orig 2015-08-07 20:52:38.000000000 +0200
> ++++ b/common/autoconf/toolchain.m4 2015-10-27 13:57:19.708566525 +0100
> +@@ -27,7 +27,7 @@
> + # $2 = human readable name of compiler (C or C++)
> + AC_DEFUN([TOOLCHAIN_CHECK_COMPILER_VERSION],
> + [
> +- COMPILER=[$]$1
> ++ COMPILER="[$]$1"
> + COMPILER_NAME=$2
> +
> + if test "x$OPENJDK_TARGET_OS" = xsolaris; then
> +@@ -123,64 +123,37 @@
> + [
> + COMPILER_NAME=$2
> +
> +- $1=
> ++ FOUND_$1=
> ++
> ++ if test "x[$]$1" != "x"; then
> ++ FOUND_$1="[$]$1"
> ++ fi
> ++
> + # If TOOLS_DIR is set, check for all compiler names in there first
> + # before checking the rest of the PATH.
> +- if test -n "$TOOLS_DIR"; then
> ++ if test "x[$]FOUND_$1" = x -a -n "$TOOLS_DIR"; then
> + PATH_save="$PATH"
> + PATH="$TOOLS_DIR"
> + AC_PATH_PROGS(TOOLS_DIR_$1, $3)
> +- $1=$TOOLS_DIR_$1
> ++ FOUND_$1=$TOOLS_DIR_$1
> + PATH="$PATH_save"
> + fi
> +
> + # AC_PATH_PROGS can't be run multiple times with the same variable,
> + # so create a new name for this run.
> +- if test "x[$]$1" = x; then
> ++ if test "x[$]FOUND_$1" = x; then
> + AC_PATH_PROGS(POTENTIAL_$1, $3)
> +- $1=$POTENTIAL_$1
> ++ FOUND_$1=$POTENTIAL_$1
> + fi
> +
> +- if test "x[$]$1" = x; then
> ++ if test "x[$]FOUND_$1" = x; then
> + HELP_MSG_MISSING_DEPENDENCY([devkit])
> + AC_MSG_ERROR([Could not find a $COMPILER_NAME compiler. $HELP_MSG])
> + fi
> +- BASIC_FIXUP_EXECUTABLE($1)
> +- TEST_COMPILER="[$]$1"
> +- # Don't remove symbolic links on AIX because 'xlc_r' and 'xlC_r' may all be links
> +- # to 'xlc' but it is crucial that we invoke the compiler with the right name!
> +- if test "x$OPENJDK_BUILD_OS" != xaix; then
> +- AC_MSG_CHECKING([resolved symbolic links for $1])
> +- BASIC_REMOVE_SYMBOLIC_LINKS(TEST_COMPILER)
> +- AC_MSG_RESULT([$TEST_COMPILER])
> +- fi
> +- AC_MSG_CHECKING([if $1 is disguised ccache])
> +-
> +- COMPILER_BASENAME=`$BASENAME "$TEST_COMPILER"`
> +- if test "x$COMPILER_BASENAME" = "xccache"; then
> +- AC_MSG_RESULT([yes, trying to find proper $COMPILER_NAME compiler])
> +- # We /usr/lib/ccache in the path, so cc is a symlink to /usr/bin/ccache.
> +- # We want to control ccache invocation ourselves, so ignore this cc and try
> +- # searching again.
> +-
> +- # Remove the path to the fake ccache cc from the PATH
> +- RETRY_COMPILER_SAVED_PATH="$PATH"
> +- COMPILER_DIRNAME=`$DIRNAME [$]$1`
> +- PATH="`$ECHO $PATH | $SED -e "s,$COMPILER_DIRNAME,,g" -e "s,::,:,g" -e "s,^:,,g"`"
> +-
> +- # Try again looking for our compiler
> +- AC_CHECK_TOOLS(PROPER_COMPILER_$1, $3)
> +- BASIC_FIXUP_EXECUTABLE(PROPER_COMPILER_$1)
> +- PATH="$RETRY_COMPILER_SAVED_PATH"
> +-
> +- AC_MSG_CHECKING([for resolved symbolic links for $1])
> +- BASIC_REMOVE_SYMBOLIC_LINKS(PROPER_COMPILER_$1)
> +- AC_MSG_RESULT([$PROPER_COMPILER_$1])
> +- $1="$PROPER_COMPILER_$1"
> +- else
> +- AC_MSG_RESULT([no, keeping $1])
> +- $1="$TEST_COMPILER"
> +- fi
> ++ BASIC_FIXUP_EXECUTABLE(FOUND_$1)
> ++ TEST_COMPILER="[$]FOUND_$1"
> ++
> ++ $1="$TEST_COMPILER"
> + TOOLCHAIN_CHECK_COMPILER_VERSION([$1], [$COMPILER_NAME])
> + ])
> +
> +@@ -214,12 +187,12 @@
> + # otherwise we might pick up cross-compilers which don't use standard naming.
> + # Otherwise, we'll set the BUILD_tools to the native tools, but that'll have
> + # to wait until they are properly discovered.
> +- AC_PATH_PROGS(BUILD_CC, [cl cc gcc])
> +- BASIC_FIXUP_EXECUTABLE(BUILD_CC)
> +- AC_PATH_PROGS(BUILD_CXX, [cl CC g++])
> +- BASIC_FIXUP_EXECUTABLE(BUILD_CXX)
> +- AC_PATH_PROG(BUILD_LD, ld)
> +- BASIC_FIXUP_EXECUTABLE(BUILD_LD)
> ++ AS_IF([test "x${BUILD_CC}" = "x"], [AC_PATH_PROGS(BUILD_CC, [cl cc gcc])
> ++ BASIC_FIXUP_EXECUTABLE(BUILD_CC)])
> ++ AS_IF([test "x${BUILD_CXX}" = "x"], [AC_PATH_PROGS(BUILD_CXX, [cl CC g++])
> ++ BASIC_FIXUP_EXECUTABLE(BUILD_CXX)])
> ++ AS_IF([test "x${BUILD_LD}" = "x"], [AC_PATH_PROG(BUILD_LD, ld)
> ++ BASIC_FIXUP_EXECUTABLE(BUILD_LD)])
> + fi
> + AC_SUBST(BUILD_CC)
> + AC_SUBST(BUILD_CXX)
> +--- a/common/autoconf/basics.m4.orig 2015-08-31 15:03:54.942975387 +0200
> ++++ b/common/autoconf/basics.m4 2015-08-31 15:02:25.090975049 +0200
> +@@ -171,8 +171,15 @@
> + fi
> + fi
> +
> ++ # First separate the path from the arguments. This will split at the first
> ++ # space.
> ++ complete="[$]$1"
> ++ path="${complete%% *}"
> ++ tmp="$complete EOL"
> ++ arguments="${tmp#* }"
> ++
> + if test "x$READLINK" != x; then
> +- $1=`$READLINK -f [$]$1`
> ++ new_path=`$READLINK -f $path`
> + else
> + # Save the current directory for restoring afterwards
> + STARTDIR=$PWD
> +@@ -198,8 +205,9 @@
> + let COUNTER=COUNTER+1
> + done
> + cd $STARTDIR
> +- $1=$sym_link_dir/$sym_link_file
> ++ new_path=$sym_link_dir/$sym_link_file
> + fi
> ++ $1="$new_path ${arguments% *}"
> + fi
> + ])
> +
> diff --git a/package/openjdk/openjdk8-fix-assembler-flag-handling-in-makefile.patch b/package/openjdk/openjdk8-fix-assembler-flag-handling-in-makefile.patch
> new file mode 100644
> index 0000000000..e6948d463c
> --- /dev/null
> +++ b/package/openjdk/openjdk8-fix-assembler-flag-handling-in-makefile.patch
> @@ -0,0 +1,20 @@
> +Delay $CXX insertion until after make has evaluated the comma-separated list,
> +as any comma separated parameters in CXX (such as assembler arguments) would
> +break the build
> +
> +Signed-off-by: Erkka K??ri? <erkka.kaaria@intel.com>
> +
> +Upstream-Status: Pending
> +
> +---
> +--- a/make/common/NativeCompilation.gmk
> ++++ b/make/common/NativeCompilation.gmk
> +@@ -372,7 +372,7 @@ define SetupNativeCompilation
> + $$(foreach p,$$($1_SRCS), \
> + $$(eval $$(call add_native_source,$1,$$p,$$($1_OBJECT_DIR), \
> + $$($1_CFLAGS) $$($1_EXTRA_CFLAGS),$$($1_CC), \
> +- $$($1_CXXFLAGS) $$($1_EXTRA_CXXFLAGS),$(CXX),$$($1_ASFLAGS))))
> ++ $$($1_CXXFLAGS) $$($1_EXTRA_CXXFLAGS),$$(CXX),$$($1_ASFLAGS))))
> +
> + # On windows we need to create a resource file
> + ifeq ($(OPENJDK_TARGET_OS), windows)
> diff --git a/package/openjdk/openjdk8-fix-zero-mode-crash.patch b/package/openjdk/openjdk8-fix-zero-mode-crash.patch
> new file mode 100644
> index 0000000000..ef40bc6372
> --- /dev/null
> +++ b/package/openjdk/openjdk8-fix-zero-mode-crash.patch
> @@ -0,0 +1,49 @@
> +# HG changeset patch
> +# User aph
> +# Date 1461121375 -3600
> +# Wed Apr 20 04:02:55 2016 +0100
> +# Node ID 6811f311f905409fe71d2b1c2fb34c3268758724
> +# Parent c66e4cc0fce57664ab44c55c47fa1a2f1bf02638
> +8154210: Zero: Better byte behaviour
> +Summary: Complete support for 8132051 on Zero and fix failure on 64-bit big-endian systems
> +Reviewed-by: andrew, chrisphi, coleenp
> +
> +Upstream-Status: Backport [Fixed in u112]
> +
> +diff --git hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp
> +--- a/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp
> ++++ b/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp
> +@@ -220,9 +220,16 @@
> + // Push our result
> + for (int i = 0; i < result_slots; i++) {
> + // Adjust result to smaller
> +- intptr_t res = result[-i];
> ++ union {
> ++ intptr_t res;
> ++ jint res_jint;
> ++ };
> ++ res = result[-i];
> + if (result_slots == 1) {
> +- res = narrow(method->result_type(), res);
> ++ BasicType t = method->result_type();
> ++ if (is_subword_type(t)) {
> ++ res_jint = (jint)narrow(t, res_jint);
> ++ }
> + }
> + stack->push(res);
> + }
> +diff --git hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp
> +--- a/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp
> ++++ b/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp
> +@@ -593,8 +593,9 @@
> + /* 0xDC */ &&opc_default, &&opc_default, &&opc_default, &&opc_default,
> +
> + /* 0xE0 */ &&opc_default, &&opc_default, &&opc_default, &&opc_default,
> +-/* 0xE4 */ &&opc_default, &&opc_fast_aldc, &&opc_fast_aldc_w, &&opc_return_register_finalizer,
> +-/* 0xE8 */ &&opc_invokehandle,&&opc_default, &&opc_default, &&opc_default,
> ++/* 0xE4 */ &&opc_default, &&opc_default, &&opc_fast_aldc, &&opc_fast_aldc_w,
> ++/* 0xE8 */ &&opc_return_register_finalizer,
> ++ &&opc_invokehandle, &&opc_default, &&opc_default,
> + /* 0xEC */ &&opc_default, &&opc_default, &&opc_default, &&opc_default,
> +
> + /* 0xF0 */ &&opc_default, &&opc_default, &&opc_default, &&opc_default,
> diff --git a/package/openjdk/openjdk8-no-genx11-in-headless.patch b/package/openjdk/openjdk8-no-genx11-in-headless.patch
> new file mode 100644
> index 0000000000..5a9f9056ad
> --- /dev/null
> +++ b/package/openjdk/openjdk8-no-genx11-in-headless.patch
> @@ -0,0 +1,17 @@
> +--- a/jdk/make/GenerateSources.gmk.orig 2015-08-24 11:23:34.720648954 +0200
> ++++ b/jdk/make/GenerateSources.gmk 2015-08-24 11:24:41.376649205 +0200
> +@@ -73,9 +73,11 @@
> + GENSRC += $(GENSRC_OSX_ICONS)
> + endif
> +
> +- ifneq ($(OPENJDK_TARGET_OS), macosx)
> +- include gensrc/GensrcX11Wrappers.gmk
> +- GENSRC += $(GENSRC_X11WRAPPERS)
> ++ ifndef BUILD_HEADLESS_ONLY
> ++ ifneq ($(OPENJDK_TARGET_OS), macosx)
> ++ include gensrc/GensrcX11Wrappers.gmk
> ++ GENSRC += $(GENSRC_X11WRAPPERS)
> ++ endif
> + endif
> + endif
> +
> diff --git a/package/openjdk/openjdk8-no-unused-deps.patch b/package/openjdk/openjdk8-no-unused-deps.patch
> new file mode 100644
> index 0000000000..c76eae9f20
> --- /dev/null
> +++ b/package/openjdk/openjdk8-no-unused-deps.patch
> @@ -0,0 +1,94 @@
> +--- a/jdk/make/lib/Awt2dLibraries.gmk.orig 2015-09-03 15:05:21.429981848 +0200
> ++++ b/jdk/make/lib/Awt2dLibraries.gmk 2015-09-03 15:05:44.705981936 +0200
> +@@ -235,6 +235,10 @@
> + LIBAWT_DIRS += $(JDK_TOPDIR)/src/aix/porting
> + endif
> +
> ++ifdef BUILD_HEADLESS_ONLY
> ++LIBAWT_CFLAGS += -DHEADLESS=true
> ++endif
> ++
> + LIBAWT_CFLAGS += -D__MEDIALIB_OLD_NAMES -D__USE_J2D_NAMES \
> + $(X_CFLAGS) \
> + $(foreach dir, $(LIBAWT_DIRS), -I$(dir))
> +@@ -1126,17 +1130,28 @@
> + -F/System/Library/Frameworks/ApplicationServices.framework/Frameworks
> + endif
> +
> +- LIBAWT_HEADLESS_FILES := \
> +- awt_Font.c \
> +- HeadlessToolkit.c \
> +- fontpath.c \
> +- VDrawingArea.c \
> ++ ifndef X11_NOT_NEEDED
> ++ LIBAWT_HEADLESS_X11_FILES := \
> + X11Color.c \
> + X11Renderer.c \
> + X11PMBlitLoops.c \
> + X11SurfaceData.c \
> + X11FontScaler_md.c \
> + X11TextRenderer_md.c \
> ++ GLXGraphicsConfig.c \
> ++ GLXSurfaceData.c
> ++ endif
> ++
> ++ ifndef CUPS_NOT_NEEDED
> ++ LIBAWT_HEADLESS_CUPS_FILES := \
> ++ CUPSfuncs.c
> ++ endif
> ++
> ++ LIBAWT_HEADLESS_FILES := \
> ++ awt_Font.c \
> ++ HeadlessToolkit.c \
> ++ fontpath.c \
> ++ VDrawingArea.c \
> + OGLBlitLoops.c \
> + OGLBufImgOps.c \
> + OGLContext.c \
> +@@ -1149,10 +1164,9 @@
> + OGLSurfaceData.c \
> + OGLTextRenderer.c \
> + OGLVertexCache.c \
> +- GLXGraphicsConfig.c \
> +- GLXSurfaceData.c \
> + AccelGlyphCache.c \
> +- CUPSfuncs.c
> ++ $(LIBAWT_HEADLESS_X11_FILES) \
> ++ $(LIBAWT_HEADLESS_CUPS_FILES)
> +
> + LIBAWT_HEADLESS_REORDER :=
> + ifeq ($(OPENJDK_TARGET_OS), solaris)
> +--- a/jdk/make/CompileNativeLibraries.gmk.orig 2015-08-24 13:35:55.320678845 +0200
> ++++ b/jdk/make/CompileNativeLibraries.gmk 2015-08-24 13:36:22.776678949 +0200
> +@@ -85,7 +85,9 @@
> +
> + include lib/Awt2dLibraries.gmk
> +
> ++ifndef BUILD_SOUNDLESS_ONLY
> + include lib/SoundLibraries.gmk
> ++endif
> +
> + # Include the corresponding custom file, if present.
> + -include $(CUSTOM_MAKE_DIR)/CompileNativeLibraries.gmk
> +--- a/jdk/src/solaris/native/sun/awt/jawt.c.orig 2015-08-24 14:12:29.376687104 +0200
> ++++ b/jdk/src/solaris/native/sun/awt/jawt.c 2015-08-24 14:16:20.420687974 +0200
> +@@ -33,7 +33,7 @@
> + */
> + JNIEXPORT jboolean JNICALL JAWT_GetAWT(JNIEnv* env, JAWT* awt)
> + {
> +-#if defined(JAVASE_EMBEDDED) && defined(HEADLESS)
> ++#if defined(JAVASE_EMBEDDED) || defined(HEADLESS)
> + /* there are no AWT libs available at all */
> + return JNI_FALSE;
> + #else
> +--- a/jdk/src/solaris/native/sun/awt/utility/rect.h.orig 2015-09-03 14:45:40.717977403 +0200
> ++++ b/jdk/src/solaris/native/sun/awt/utility/rect.h 2015-09-03 14:46:46.337977650 +0200
> +@@ -28,7 +28,7 @@
> + #ifndef _AWT_RECT_H
> + #define _AWT_RECT_H
> +
> +-#ifndef MACOSX
> ++#if !(defined(MACOSX) || defined(HEADLESS))
> + #include <X11/Xlib.h>
> + typedef XRectangle RECT_T;
> + #else
> diff --git a/package/openjdk/openjdk8-restrict-to-staging-dir.patch b/package/openjdk/openjdk8-restrict-to-staging-dir.patch
> new file mode 100644
> index 0000000000..aa78a54fc8
> --- /dev/null
> +++ b/package/openjdk/openjdk8-restrict-to-staging-dir.patch
> @@ -0,0 +1,11 @@
> +--- a/hotspot/make/linux/makefiles/dtrace.make.orig 2015-09-01 08:00:59.737868760 +0200
> ++++ b/hotspot/make/linux/makefiles/dtrace.make 2015-09-01 08:01:24.049859677 +0200
> +@@ -40,7 +40,7 @@
> + ifneq ($(ALT_SDT_H),)
> + SDT_H_FILE = $(ALT_SDT_H)
> + else
> +- SDT_H_FILE = /usr/include/sys/sdt.h
> ++ SDT_H_FILE = $(SYS_ROOT)/usr/include/sys/sdt.h
> + endif
> + DTRACE_ENABLED = $(shell test -f $(SDT_H_FILE) && echo $(SDT_H_FILE))
> + REASON = "$(SDT_H_FILE) not found"
> --
> 2.13.6
>
next prev parent reply other threads:[~2018-02-06 14:52 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-06 14:39 [Buildroot] [PATCH 0/4] openjdk Thomas De Schampheleire
2018-02-06 14:39 ` [Buildroot] [PATCH 1/4] openjdk: new package Thomas De Schampheleire
2018-02-06 14:52 ` Thomas De Schampheleire [this message]
2018-02-06 22:15 ` Arnout Vandecappelle
2018-02-07 9:51 ` Thomas De Schampheleire
2018-02-25 19:39 ` Yann E. MORIN
2018-02-06 14:39 ` [Buildroot] [PATCH 2/4] openjdk size optimization: disable debug info Thomas De Schampheleire
2018-02-06 14:39 ` [Buildroot] [PATCH 3/4] openjdk size optimization: link dynamically with system libstdc++ Thomas De Schampheleire
2018-02-06 14:39 ` [Buildroot] [PATCH 4/4] openjdk size optimization: compress JAR files Thomas De Schampheleire
2018-04-20 11:37 ` [Buildroot] [PATCH 0/4] openjdk Thomas Petazzoni
2018-04-20 12:33 ` Yann E. MORIN
2018-04-20 12:52 ` Matthew Weber
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180206145203.GD20598@australia.be.alcatel-lucent.com \
--to=thomas.de_schampheleire@nokia.com \
--cc=buildroot@busybox.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox