aboutsummaryrefslogtreecommitdiffstats
path: root/testing
diff options
context:
space:
mode:
authorTimo Teräs <timo.teras@iki.fi>2015-08-17 20:08:39 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2015-08-18 11:16:36 +0200
commit166ad0377b8e939f7777c85b4a791ae53969a42b (patch)
tree4f5c7386e463f17115f62bceb25e8d3bd9f84ef7 /testing
parent33696ff4c4f593b5c06bafac16d6206c4c591eea (diff)
downloadaports-166ad0377b8e939f7777c85b4a791ae53969a42b.tar.bz2
aports-166ad0377b8e939f7777c85b4a791ae53969a42b.tar.xz
testing/openjdk8: new aport
ref #4515 openjdk8 and openjdk7 cannot coexist currently due to automatic so dependencies. both packages should be fixed to not provide conflicting so deps (or maybe needs abuild change?)
Diffstat (limited to 'testing')
-rw-r--r--testing/openjdk8/APKBUILD249
-rw-r--r--testing/openjdk8/fix-libjvm-load.patch14
-rw-r--r--testing/openjdk8/icedtea-hotspot-musl.patch55
-rw-r--r--testing/openjdk8/icedtea-hotspot-noagent-musl.patch51
-rw-r--r--testing/openjdk8/icedtea-hotspot-uclibc-fixes.patch93
-rw-r--r--testing/openjdk8/icedtea-jdk-execinfo.patch20
-rw-r--r--testing/openjdk8/icedtea-jdk-fix-ipv6-init.patch42
-rw-r--r--testing/openjdk8/icedtea-jdk-includes.patch154
-rw-r--r--testing/openjdk8/icedtea-jdk-musl.patch107
9 files changed, 785 insertions, 0 deletions
diff --git a/testing/openjdk8/APKBUILD b/testing/openjdk8/APKBUILD
new file mode 100644
index 0000000000..ab61684b54
--- /dev/null
+++ b/testing/openjdk8/APKBUILD
@@ -0,0 +1,249 @@
+# Contributor: Timo Teras <timo.teras@iki.fi>
+# Maintainer: Timo Teras <timo.teras@iki.fi>
+pkgname=openjdk8
+_java_ver=8
+_jdk_update=66
+_jdk_build=02
+pkgver=$_java_ver.$_jdk_update.$_jdk_build
+pkgrel=0
+pkgdesc="Sun OpenJDK 8"
+url="http://openjdk.java.net"
+arch="x86_64"
+license="custom"
+depends="$pkgname-jre"
+options="sover-namecheck"
+makedepends="bash findutils tar zip file paxmark gawk util-linux libxslt
+ autoconf automake linux-headers sed
+ openjdk7 ca-certificates
+ nss-dev cups-dev jpeg-dev giflib-dev libpng-dev libxt-dev
+ lcms2-dev libxp-dev libxtst-dev libxinerama-dev zlib-dev
+ libxrender-dev alsa-lib-dev freetype-dev fontconfig-dev
+ gtk+2.0-dev krb5-dev attr-dev pcsc-lite-dev lksctp-tools-dev"
+install=""
+
+case $CARCH in
+x86) _jarch=i386;;
+x86_64) _jarch=amd64;;
+arm*) _jarch=arm;;
+esac
+
+INSTALL_BASE=/usr/lib/jvm/java-1.8-openjdk
+BOOTSTRAP_JAVA_HOME=/usr/lib/jvm/java-1.7-openjdk
+_jrelib="$INSTALL_BASE/jre/lib/$_jarch"
+
+# exclude xawt from ldpath to avoid duplicate provides for libmawt.so
+# (also in headless). in future this should be a virtual provides.
+ldpath="$_jrelib:$_jrelib/native_threads:$_jrelib/headless:$_jrelib/server:$_jrelib/jli"
+somask="libjvm.so"
+
+subpackages="$pkgname-jre-lib:jrelib $pkgname-jre $pkgname-jre-base:jrebase
+ $pkgname-doc:doc"
+
+_dropsurl=http://hg.openjdk.java.net/jdk8u/jdk8u
+_dropsver=jdk${_java_ver}u${_jdk_update}-b${_jdk_build}
+
+source="saveas-$_dropsurl/archive/${_dropsver}.tar.bz2/jdk8u-$_dropsver.tar.bz2
+ saveas-$_dropsurl/corba/archive/${_dropsver}.tar.bz2/corba-$_dropsver.tar.bz2
+ saveas-$_dropsurl/jaxp/archive/${_dropsver}.tar.bz2/jaxp-$_dropsver.tar.bz2
+ saveas-$_dropsurl/jaxws/archive/${_dropsver}.tar.bz2/jaxws-$_dropsver.tar.bz2
+ saveas-$_dropsurl/jdk/archive/${_dropsver}.tar.bz2/jdk-$_dropsver.tar.bz2
+ saveas-$_dropsurl/langtools/archive/${_dropsver}.tar.bz2/langtools-$_dropsver.tar.bz2
+ saveas-$_dropsurl/nashorn/archive/${_dropsver}.tar.bz2/nashorn-$_dropsver.tar.bz2
+ saveas-$_dropsurl/hotspot/archive/${_dropsver}.tar.bz2/hotspot-$_dropsver.tar.bz2
+
+ icedtea-hotspot-musl.patch
+ icedtea-hotspot-noagent-musl.patch
+ icedtea-hotspot-uclibc-fixes.patch
+ icedtea-jdk-execinfo.patch
+ icedtea-jdk-fix-ipv6-init.patch
+ icedtea-jdk-musl.patch
+ icedtea-jdk-includes.patch
+ fix-libjvm-load.patch
+ "
+
+_builddir="$srcdir/jdk8u-$_dropsver"
+
+prepare() {
+ cd "$_builddir"
+ update_config_sub || return 1
+
+ local module
+ for module in corba hotspot jdk jaxws jaxp langtools nashorn; do
+ ln -s ../${module}-${_dropsver} ${module}
+ done
+
+ for patch in $source; do
+ case $patch in
+ *.patch)
+ msg "Applying patch $patch"
+ busybox patch -p1 < "$srcdir"/$patch || return 1
+ ;;
+ esac
+ done
+}
+
+build() {
+ cd "$_builddir"
+ unset JAVA_HOME
+ export MAKEFLAGS=${MAKEFLAGS/-j*}
+ sh ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --target=$CTARGET \
+ --prefix=$INSTALL_BASE \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --localstatedir=/var \
+ --with-update-version="${_jdk_update}" \
+ --with-build-number="b${_jdk_build}" \
+ --with-user-release-suffix="alpine-r${pkgrel}" \
+ --enable-unlimited-crypto \
+ --with-zlib=system \
+ --disable-freetype-bundling \
+ --with-boot-jdk="$BOOTSTRAP_JAVA_HOME" \
+ || return 1
+
+ make DEBUG_BINARIES=true || return 1
+ make docs || return 1
+
+ # agent was patched off; make empty sa-jdi.jar to make image builder happy
+ local build
+ for build in build/* ; do
+ touch $build/jdk/lib/sa-jdi.jar
+ done
+ make images || return 1
+}
+
+list_paxables() {
+ file "$@" 2> /dev/null | grep -E 'ELF.*(executable|shared object)' | sed -e 's/: .*$//'
+}
+
+pax_mark_vm() {
+ local paxflags="-mp"
+ [ "$CARCH" = "x86" ] && paxflags="-msp"
+
+ for paxable in $(list_paxables "${1}"/bin/* "${1}"/jre/bin/*); do
+ echo "PaX mark $paxflags ${paxable}"
+ paxmark $paxflags "${paxable}"
+ done
+}
+
+package() {
+ mkdir -p "$pkgdir"/$INSTALL_BASE
+ cp -a "$_builddir"/build/*/images/j2sdk-image/* "$pkgdir"/$INSTALL_BASE
+ rm "$pkgdir"/$INSTALL_BASE/src.zipa
+
+ find "$pkgdir"/$INSTALL_BASE -iname "*.diz" -delete
+ find "$pkgdir"/$INSTALL_BASE -iname "*.debuginfo" -delete
+
+ pax_mark_vm "$pkgdir"/$INSTALL_BASE
+}
+
+jrelib() {
+ pkgdesc="OpenJDK 8 Java Runtime (class libraries)"
+ arch="noarch"
+ depends=""
+
+ for A in jre/lib/images jre/lib/*.jar jre/lib/security \
+ jre/lib/ext/*.jar jre/lib/cmm jre/ASSEMBLY_EXCEPTION \
+ jre/THIRD_PARTY_README jre/LICENSE ; do
+ dirname=${A%/*}
+ mkdir -p "$subpkgdir"/$INSTALL_BASE/$dirname
+ mv "$pkgdir"/$INSTALL_BASE/$A "$subpkgdir"/$INSTALL_BASE/$dirname
+ done
+}
+
+jrebase() {
+ pkgdesc="OpenJDK 8 Java Runtime (no GUI support)"
+ depends="$pkgname-jre-lib java-common"
+ # manually provide this to avoid clash with libgcj's libjvm.so
+ provides="so:openjdk8:libjvm.so=0"
+
+ mkdir -p "$subpkgdir"/$INSTALL_BASE/bin
+
+ for A in java orbd rmid servertool unpack200 keytool \
+ pack200 rmiregistry tnameserv ; do
+ mv "$pkgdir"/$INSTALL_BASE/bin/$A "$subpkgdir"/$INSTALL_BASE/bin
+ done
+
+ # rest of the jre subdir (which were not taken by -jre subpkg)
+ mv "$pkgdir"/$INSTALL_BASE/jre "$subpkgdir"/$INSTALL_BASE
+
+ pax_mark_vm "$subpkgdir"/$INSTALL_BASE
+}
+
+jre() {
+ pkgdesc="OpenJDK 8 Java Runtime"
+ # manually depend to avoid clash with libgcj's libjvm.so
+ depends="so:openjdk8:libjvm.so=0"
+
+ mkdir -p "$subpkgdir"
+ for A in jre/bin/policytool \
+ bin/appletviewer \
+ bin/policytool \
+ jre/lib/$_jarch/libawt_xawt.so \
+ jre/lib/$_jarch/libsplashscreen.so ; do
+ dirname=${A%/*}
+ mkdir -p "$subpkgdir"/$INSTALL_BASE/$dirname
+ mv "$pkgdir"/$INSTALL_BASE/$A "$subpkgdir"/$INSTALL_BASE/$dirname
+ done
+
+ pax_mark_vm "$subpkgdir"/$INSTALL_BASE
+}
+
+doc() {
+ default_doc
+
+ mkdir -p "$subpkgdir"/$INSTALL_BASE/
+ mv "$pkgdir"/$INSTALL_BASE/man "$subpkgdir"/$INSTALL_BASE/
+}
+
+md5sums="1d115662e175470270e89a4da8e0fce2 jdk8u-jdk8u66-b02.tar.bz2
+e14d8f51b9ca30d798094a2867f3f5d0 corba-jdk8u66-b02.tar.bz2
+6bd5ae187272a209439d1a95ac6c9025 jaxp-jdk8u66-b02.tar.bz2
+15e6a93009bdc73194e7118988d5ab8d jaxws-jdk8u66-b02.tar.bz2
+74f2cf3815659b83993c4187e7fc4f6b jdk-jdk8u66-b02.tar.bz2
+de5c9b5fdbcd75028b71ed667d4b99d2 langtools-jdk8u66-b02.tar.bz2
+7da4e88349cfc45ee9726eaa4386be03 nashorn-jdk8u66-b02.tar.bz2
+b49a7b7f2db5b07306b7b5739e87ccc0 hotspot-jdk8u66-b02.tar.bz2
+f87dd2c4c3c97fc3ac33080a65ca9e14 icedtea-hotspot-musl.patch
+a5841507a216890bd8419d496bb118c3 icedtea-hotspot-noagent-musl.patch
+43023861c5f6efc3139a834aa3ec0476 icedtea-hotspot-uclibc-fixes.patch
+bdea7060a067faf1c2de5f4eb6e8525d icedtea-jdk-execinfo.patch
+250b0807b59762670954b132e8f8dfba icedtea-jdk-fix-ipv6-init.patch
+fc1dc983dc562eda399c9d7eabd3b299 icedtea-jdk-musl.patch
+fc7d3cc1f5a5615574fd1e416144a042 icedtea-jdk-includes.patch
+9b95183ae088ac2520ac66ae587619e4 fix-libjvm-load.patch"
+sha256sums="f4dbc2d8f184d60b2caee56c86e29a3fae6025ee6606079e9e8a607402b631f9 jdk8u-jdk8u66-b02.tar.bz2
+7cd14a32a00f9051a7c37d2c263626b97463ef7874df34175a8807bc15d2ac60 corba-jdk8u66-b02.tar.bz2
+c9b1c7f21d5bc335b4bedb327267b68ea5b90bef2ed3938c9de08d5f5ca3de43 jaxp-jdk8u66-b02.tar.bz2
+e46c6ad5b1f7661913953acb140affc25d281bcee61b50c6a79f6c4b189c4d88 jaxws-jdk8u66-b02.tar.bz2
+dc7f945fa7f428583ca6423b5a3f70f24016cb2f5c56e3f3b24647b4f6af9e15 jdk-jdk8u66-b02.tar.bz2
+853ba30f863cafd0556ca8056bf6eab16f7a63960c0e205efc729f727849a7b5 langtools-jdk8u66-b02.tar.bz2
+ab76632148a1ecba96e96e2e0409a41f7301396c8bfd863e55b883848923fdf2 nashorn-jdk8u66-b02.tar.bz2
+3950387e65b38cf599ee890a07ba28a5d1f6f1a861902dae7bd26379df7e334e hotspot-jdk8u66-b02.tar.bz2
+a7922430cb767c8a4baae232c8b2e5f377aeb7cfde0c9901cd7774f078e7f92e icedtea-hotspot-musl.patch
+9223d4a1ae20b51bcb901ace115a2cd5f15b05655ea076c05f4c7f2c66f341e5 icedtea-hotspot-noagent-musl.patch
+0ef7592b8f2c954eda0a6cf4dc4a4010942f35ea426f44e34412be6c9a949745 icedtea-hotspot-uclibc-fixes.patch
+a35d40f24098747cdb73d9c3742cfb4aecafa0f72c9dfdfe2cb460f9706ff665 icedtea-jdk-execinfo.patch
+632683ec88a6fb250ef043aae9cace605d0c669b7058f8c47b62b09b03ecc6c5 icedtea-jdk-fix-ipv6-init.patch
+d3fcf4779a23181178e722a93290921f5c61ed7220d3a431953a53c24f89e562 icedtea-jdk-musl.patch
+38590e411b7bf9b99f5168709b975e1c432ef600915800c709a6617504e2c13a icedtea-jdk-includes.patch
+47028d87c9a65df8d0103b39bf54b2b22de7db7c52a5de1058f88f4c5ea24f0d fix-libjvm-load.patch"
+sha512sums="ddbae784fbae51b49f3308eeb3995458fb43d563a8699ef8cb3d7d3775ed58a60c1cf11339ab520bdb6300709236f28444059b2f3f5bf551faac6748a02e6779 jdk8u-jdk8u66-b02.tar.bz2
+fbaa4207a24e90f55aa3e0584598b7f4cf3baa7d565fb04699abb47fc8ff720c1c6a956b1e0296076f988517e13f3ca446aca8c60e0351a4ea25f108f954aaa1 corba-jdk8u66-b02.tar.bz2
+b258f72216202844ac25415bb5c14caf34efb110e7684d7d392b30fca1df19d064e91c3bef35e16acd1d0be6ed1dc36158cb7922cad191408883f9e241b075a5 jaxp-jdk8u66-b02.tar.bz2
+50d1a2243cea941e25a0de16010cb51db8333386b1ae9d97e8a88f9e15fcdb6fc42fc88232b632b7f56747dcb451e51decb84b4b6021a65b712f2523b64ea623 jaxws-jdk8u66-b02.tar.bz2
+1a73ca36c69e96843e3f57d8bfe0e52eee5f4c325188da6f7272e074c0b70044105ed3cad252af456b58a8c3c6f15afb41149b813ad9d5deaf098e2977688ec7 jdk-jdk8u66-b02.tar.bz2
+983df030b486f08101992a6a2c8b923e6bf445e347b96be4825f0149776fafcf536b8758db7c15034d81d10d63b7df8ac4f2be5ec8b03863cc9e6236080ec7d0 langtools-jdk8u66-b02.tar.bz2
+72173e970526e680fa4ee9e972f27c5d04e8bb0c64240914c670723fe89efbc94d80f196085968f8975ca74ce9b6fe02633224454465a5d51a2e4082306b4677 nashorn-jdk8u66-b02.tar.bz2
+e8fbbf79272ef2153a7bb4e49ada886d0505ccd3964d9ab0c6290e2b88ffde10af2be68e3b7a48a205968c5261167729db3468fad73ea2df71a51ad8ccd6727d hotspot-jdk8u66-b02.tar.bz2
+994e8a79a0a23f26d633bf2ce9dad62198c699892f6e7729cc6e509481330399bb2ba736514b516fd2b3dd125fd6c74a127ae7f16d643c3f6a69776737cdb933 icedtea-hotspot-musl.patch
+d930edbb830957729031228196720fa2d50747655a9289097103d36f852ab11b7198e18805bd89c6a438c3ccf224be48cda5f994b193ab1f81a72aada0df2b16 icedtea-hotspot-noagent-musl.patch
+822eee0dc4d3ba677a289dfeb3668b536d2d626708390a9d9702fb4144a481fd443a215a0d2041c6026113837aafa4ba0b5e9ead8589d2da6717a238bbc95a5a icedtea-hotspot-uclibc-fixes.patch
+f6365cfafafa008bd6c1bf0ccec01a63f8a39bd1a8bc87baa492a27234d47793ba02d455e5667a873ef50148df3baaf6a8421e2da0b15faac675867da714dd5f icedtea-jdk-execinfo.patch
+48533f87fc2cf29d26b259be0df51087d2fe5b252e72d00c6ea2f4add7b0fb113141718c116279c5905e03f64a1118082e719393786811367cf4d472b5d36774 icedtea-jdk-fix-ipv6-init.patch
+2fd75bb52e7c9e3b56a383b72ee519d395413b000aef94ad00b106a692a199de34967bac1120164cebce5f71d302413742922a55cc6479b2d33258aaf7d03c1b icedtea-jdk-musl.patch
+7df0db85039da8cbde49093ec3299f6804370f4134554a9c26c130a4e9e0b35409a3be833f3e90764ed16718683daffb6447261db8e5988f2e0519f649aedbc6 icedtea-jdk-includes.patch
+978539ba0b1f1694cda6a3a1542a4373861cbfb4dc414a3b796cd8841ecf6e12248c746b5efe2c031c85a3b0684101b29e8a5f4ff70e77c1a3f3cd7f5cb148ce fix-libjvm-load.patch"
diff --git a/testing/openjdk8/fix-libjvm-load.patch b/testing/openjdk8/fix-libjvm-load.patch
new file mode 100644
index 0000000000..22faa50b3a
--- /dev/null
+++ b/testing/openjdk8/fix-libjvm-load.patch
@@ -0,0 +1,14 @@
+musl needs LD_LIBRARY_PATH set because when .so is opened with dlopen(/abs/path)
+it does not qualify for providing symbols for NEEDED dependency.
+
+--- src/jdk/src/solaris/bin/java_md_solinux.c.orig
++++ src/jdk/src/solaris/bin/java_md_solinux.c
+@@ -291,6 +291,8 @@
+ char *dmllp = NULL;
+ char *p; /* a utility pointer */
+
++ return JNI_TRUE;
++
+ #ifdef AIX
+ /* We always have to set the LIBPATH on AIX because ld doesn't support $ORIGIN. */
+ return JNI_TRUE;
diff --git a/testing/openjdk8/icedtea-hotspot-musl.patch b/testing/openjdk8/icedtea-hotspot-musl.patch
new file mode 100644
index 0000000000..41072defe2
--- /dev/null
+++ b/testing/openjdk8/icedtea-hotspot-musl.patch
@@ -0,0 +1,55 @@
+--- openjdk.orig/hotspot/src/os/linux/vm/jvm_linux.cpp
++++ openjdk/hotspot/src/os/linux/vm/jvm_linux.cpp
+@@ -154,7 +154,9 @@
+ #ifdef SIGSTKFLT
+ "STKFLT", SIGSTKFLT, /* Stack fault. */
+ #endif
++#ifdef SIGCLD
+ "CLD", SIGCLD, /* Same as SIGCHLD (System V). */
++#endif
+ "CHLD", SIGCHLD, /* Child status has changed (POSIX). */
+ "CONT", SIGCONT, /* Continue (POSIX). */
+ "STOP", SIGSTOP, /* Stop, unblockable (POSIX). */
+--- openjdk.orig/hotspot/src/os/linux/vm/os_linux.inline.hpp
++++ openjdk/hotspot/src/os/linux/vm/os_linux.inline.hpp
+@@ -52,7 +52,7 @@
+
+ #include <unistd.h>
+ #include <sys/socket.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <netdb.h>
+
+ inline void* os::thread_local_storage_at(int index) {
+--- openjdk.orig/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp
++++ openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp
+@@ -73,7 +73,6 @@
+ # include <pwd.h>
+ # include <poll.h>
+ # include <ucontext.h>
+-# include <fpu_control.h>
+
+ #ifdef AMD64
+ #define REG_SP REG_RSP
+@@ -532,6 +531,9 @@
+
+ ShouldNotReachHere();
+ }
++
++#define _FPU_GETCW(cw) __asm__ __volatile__ ("fnstcw %0" : "=m" (*&cw))
++#define _FPU_SETCW(cw) __asm__ __volatile__ ("fldcw %0" : : "m" (*&cw))
+
+ void os::Linux::init_thread_fpu_state(void) {
+ #ifndef AMD64
+--- openjdk.orig/hotspot/src/os_cpu/linux_x86/vm/threadLS_linux_x86.hpp
++++ openjdk/hotspot/src/os_cpu/linux_x86/vm/threadLS_linux_x86.hpp
+@@ -32,7 +32,9 @@
+ // map stack pointer to thread pointer - see notes in threadLS_linux_x86.cpp
+ #define SP_BITLENGTH 32
+ #define PAGE_SHIFT 12
++ #ifndef PAGE_SIZE
+ #define PAGE_SIZE (1UL << PAGE_SHIFT)
++ #endif
+ static Thread* _sp_map[1UL << (SP_BITLENGTH - PAGE_SHIFT)];
+
+ public:
diff --git a/testing/openjdk8/icedtea-hotspot-noagent-musl.patch b/testing/openjdk8/icedtea-hotspot-noagent-musl.patch
new file mode 100644
index 0000000000..aa6c14ef05
--- /dev/null
+++ b/testing/openjdk8/icedtea-hotspot-noagent-musl.patch
@@ -0,0 +1,51 @@
+--- src/hotspot.orig/make/linux/makefiles/defs.make
++++ src/hotspot/make/linux/makefiles/defs.make
+@@ -292,6 +292,9 @@
+
+ # Serviceability Binaries
+ # No SA Support for PPC, IA64, ARM or zero
++# or if thread_db.h missing (musl)
++
++ifneq ($(wildcard /usr/include/thread_db.h),)
+ ADD_SA_BINARIES/x86 = $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.$(LIBRARY_SUFFIX) \
+ $(EXPORT_LIB_DIR)/sa-jdi.jar
+ ADD_SA_BINARIES/sparc = $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.$(LIBRARY_SUFFIX) \
+@@ -304,6 +307,10 @@
+ ADD_SA_BINARIES/x86 += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.debuginfo
+ ADD_SA_BINARIES/sparc += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.debuginfo
+ endif
++endif
++else
++ADD_SA_BINARIES/x86 =
++ADD_SA_BINARIES/sparc =
+ endif
+ ADD_SA_BINARIES/ppc =
+ ADD_SA_BINARIES/ia64 =
+--- src/hotspot.orig/make/linux/makefiles/sa.make
++++ src/hotspot/make/linux/makefiles/sa.make
+@@ -61,7 +61,8 @@
+ # also, we don't build SA on Itanium or zero.
+
+ all:
+- if [ -d $(AGENT_DIR) -a "$(SRCARCH)" != "ia64" \
++ if [ -d $(AGENT_DIR) -a -f /usr/include/thread_db.h \
++ -a "$(SRCARCH)" != "ia64" \
+ -a "$(SRCARCH)" != "zero" ] ; then \
+ $(MAKE) -f sa.make $(GENERATED)/sa-jdi.jar; \
+ fi
+--- src/hotspot.orig/make/linux/makefiles/saproc.make
++++ src/hotspot/make/linux/makefiles/saproc.make
+@@ -61,10 +61,13 @@
+
+ # if $(AGENT_DIR) does not exist, we don't build SA
+ # also, we don't build SA on Itanium or zero.
++# check for thread_db.h too (musl does not have it).
+
++ifneq ($(wildcard /usr/include/thread_db.h),)
+ ifneq ($(wildcard $(AGENT_DIR)),)
+ ifneq ($(filter-out ia64 zero,$(SRCARCH)),)
+ BUILDLIBSAPROC = $(LIBSAPROC)
++endif
+ endif
+ endif
+
diff --git a/testing/openjdk8/icedtea-hotspot-uclibc-fixes.patch b/testing/openjdk8/icedtea-hotspot-uclibc-fixes.patch
new file mode 100644
index 0000000000..1c1d822760
--- /dev/null
+++ b/testing/openjdk8/icedtea-hotspot-uclibc-fixes.patch
@@ -0,0 +1,93 @@
+--- openjdk.orig/hotspot/src/os/linux/vm/os_linux.cpp
++++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp
+@@ -112,7 +112,6 @@
+ # include <string.h>
+ # include <syscall.h>
+ # include <sys/sysinfo.h>
+-# include <gnu/libc-version.h>
+ # include <sys/ipc.h>
+ # include <sys/shm.h>
+ # include <link.h>
+@@ -632,6 +631,13 @@
+ // detecting pthread library
+
+ void os::Linux::libpthread_init() {
++#if 1
++ // Hard code Alpine Linux supported uclibc/musl compatible settings
++ os::Linux::set_glibc_version("glibc 2.9");
++ os::Linux::set_libpthread_version("NPTL");
++ os::Linux::set_is_NPTL();
++ os::Linux::set_is_floating_stack();
++#else
+ // Save glibc and pthread version strings. Note that _CS_GNU_LIBC_VERSION
+ // and _CS_GNU_LIBPTHREAD_VERSION are supported in glibc >= 2.3.2. Use a
+ // generic name for earlier versions.
+@@ -690,6 +696,7 @@
+ if (os::Linux::is_NPTL() || os::Linux::supports_variable_stack_size()) {
+ os::Linux::set_is_floating_stack();
+ }
++#endif
+ }
+
+ /////////////////////////////////////////////////////////////////////////////
+@@ -2951,11 +2958,7 @@
+ // If we are running with earlier version, which did not have symbol versions,
+ // we should use the base version.
+ void* os::Linux::libnuma_dlsym(void* handle, const char *name) {
+- void *f = dlvsym(handle, name, "libnuma_1.1");
+- if (f == NULL) {
+- f = dlsym(handle, name);
+- }
+- return f;
++ return dlsym(handle, name);
+ }
+
+ bool os::Linux::libnuma_init() {
+@@ -5312,7 +5315,25 @@
+ // Linux doesn't yet have a (official) notion of processor sets,
+ // so just return the system wide load average.
+ int os::loadavg(double loadavg[], int nelem) {
++#ifdef __UCLIBC__
++ FILE *LOADAVG;
++ double avg[3] = { 0.0, 0.0, 0.0 };
++ int i, res = -1;;
++
++ if ((LOADAVG = fopen("/proc/loadavg", "r"))) {
++ fscanf(LOADAVG, "%lf %lf %lf", &avg[0], &avg[1], &avg[2]);
++ res = 0;
++ fclose(LOADAVG);
++ }
++
++ for (i = 0; (i < nelem) && (i < 3); i++) {
++ loadavg[i] = avg[i];
++ }
++
++ return res;
++#else
+ return ::getloadavg(loadavg, nelem);
++#endif
+ }
+
+ void os::pause() {
+--- openjdk.orig/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp
++++ openjdk/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp
+@@ -253,7 +253,7 @@
+ #elif defined(__APPLE__)
+ inline int g_isnan(double f) { return isnan(f); }
+ #elif defined(LINUX) || defined(_ALLBSD_SOURCE)
+-inline int g_isnan(float f) { return isnanf(f); }
++inline int g_isnan(float f) { return isnan(f); }
+ inline int g_isnan(double f) { return isnan(f); }
+ #else
+ #error "missing platform-specific definition here"
+@@ -267,8 +267,8 @@
+
+ // Checking for finiteness
+
+-inline int g_isfinite(jfloat f) { return finite(f); }
+-inline int g_isfinite(jdouble f) { return finite(f); }
++inline int g_isfinite(jfloat f) { return isfinite(f); }
++inline int g_isfinite(jdouble f) { return isfinite(f); }
+
+
+ // Wide characters
diff --git a/testing/openjdk8/icedtea-jdk-execinfo.patch b/testing/openjdk8/icedtea-jdk-execinfo.patch
new file mode 100644
index 0000000000..e4ae562c57
--- /dev/null
+++ b/testing/openjdk8/icedtea-jdk-execinfo.patch
@@ -0,0 +1,20 @@
+--- openjdk.orig/jdk/src/solaris/native/sun/xawt/XToolkit.c
++++ openjdk/jdk/src/solaris/native/sun/xawt/XToolkit.c
+@@ -27,7 +27,7 @@
+ #include <X11/Xutil.h>
+ #include <X11/Xos.h>
+ #include <X11/Xatom.h>
+-#ifdef __linux__
++#if defined(__linux__) && defined(__GLIBC__) && ! defined(__UCLIBC__)
+ #include <execinfo.h>
+ #endif
+
+@@ -689,7 +689,7 @@
+ return ret;
+ }
+
+-#ifdef __linux__
++#if defined(__linux__) && defined(__GLIBC__) && ! defined(__UCLIBC__)
+ void print_stack(void)
+ {
+ void *array[10];
diff --git a/testing/openjdk8/icedtea-jdk-fix-ipv6-init.patch b/testing/openjdk8/icedtea-jdk-fix-ipv6-init.patch
new file mode 100644
index 0000000000..11f3bf6dd6
--- /dev/null
+++ b/testing/openjdk8/icedtea-jdk-fix-ipv6-init.patch
@@ -0,0 +1,42 @@
+--- openjdk/jdk/src/solaris/native/java/net/net_util_md.c.orig
++++ openjdk/jdk/src/solaris/native/java/net/net_util_md.c
+@@ -561,7 +561,7 @@
+
+ static struct localinterface *localifs = 0;
+ static int localifsSize = 0; /* size of array */
+-static int nifs = 0; /* number of entries used in array */
++static int nifs = -1; /* number of entries used in array */
+
+ /* not thread safe: make sure called once from one thread */
+
+@@ -573,6 +573,10 @@
+ int index, x1, x2, x3;
+ unsigned int u0,u1,u2,u3,u4,u5,u6,u7,u8,u9,ua,ub,uc,ud,ue,uf;
+
++ if (nifs >= 0)
++ return ;
++ nifs = 0;
++
+ if ((f = fopen("/proc/net/if_inet6", "r")) == NULL) {
+ return ;
+ }
+@@ -601,7 +605,7 @@
+ localifs = (struct localinterface *) realloc (
+ localifs, sizeof (struct localinterface)* (localifsSize+5));
+ if (localifs == 0) {
+- nifs = 0;
++ nifs = -1;
+ fclose (f);
+ return;
+ }
+@@ -624,9 +628,7 @@
+ static int getLocalScopeID (char *addr) {
+ struct localinterface *lif;
+ int i;
+- if (localifs == 0) {
+- initLocalIfs();
+- }
++ initLocalIfs();
+ for (i=0, lif=localifs; i<nifs; i++, lif++) {
+ if (memcmp (addr, lif->localaddr, 16) == 0) {
+ return lif->index;
diff --git a/testing/openjdk8/icedtea-jdk-includes.patch b/testing/openjdk8/icedtea-jdk-includes.patch
new file mode 100644
index 0000000000..e4962e7d37
--- /dev/null
+++ b/testing/openjdk8/icedtea-jdk-includes.patch
@@ -0,0 +1,154 @@
+--- src/jdk.orig/src/aix/native/java/net/aix_close.c
++++ src/jdk/src/aix/native/java/net/aix_close.c
+@@ -50,7 +50,7 @@
+ #include <unistd.h>
+ #include <errno.h>
+
+-#include <sys/poll.h>
++#include <poll.h>
+
+ /*
+ * Stack allocated by thread when doing blocking operation
+--- src/jdk.orig/src/aix/native/sun/nio/ch/AixNativeThread.c
++++ src/jdk/src/aix/native/sun/nio/ch/AixNativeThread.c
+@@ -32,7 +32,7 @@
+ #include "sun_nio_ch_NativeThread.h"
+
+ #include <pthread.h>
+-#include <sys/signal.h>
++#include <signal.h>
+
+ /* Also defined in src/aix/native/java/net/aix_close.c */
+ #define INTERRUPT_SIGNAL (SIGRTMAX - 1)
+--- src/jdk.orig/src/aix/native/sun/nio/ch/AixPollPort.c
++++ src/jdk/src/aix/native/sun/nio/ch/AixPollPort.c
+@@ -34,7 +34,7 @@
+ #include <unistd.h>
+ #include <sys/types.h>
+ #include <sys/socket.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <sys/pollset.h>
+ #include <fcntl.h>
+ #include <stddef.h>
+--- src/jdk.orig/src/macosx/javavm/export/jvm_md.h
++++ src/jdk/src/macosx/javavm/export/jvm_md.h
+@@ -60,7 +60,7 @@
+ #include <sys/stat.h>
+ #include <fcntl.h>
+ #include <errno.h>
+-#include <sys/signal.h>
++#include <signal.h>
+
+ /* O Flags */
+
+--- src/jdk.orig/src/solaris/javavm/export/jvm_md.h
++++ src/jdk/src/solaris/javavm/export/jvm_md.h
+@@ -65,7 +65,7 @@
+ #include <sys/stat.h>
+ #include <fcntl.h>
+ #include <errno.h>
+-#include <sys/signal.h>
++#include <signal.h>
+
+ /* O Flags */
+
+--- src/jdk.orig/src/solaris/native/java/net/PlainSocketImpl.c
++++ src/jdk/src/solaris/native/java/net/PlainSocketImpl.c
+@@ -28,7 +28,7 @@
+ #include <sys/types.h>
+ #include <sys/socket.h>
+ #if defined(__linux__) && !defined(USE_SELECT)
+-#include <sys/poll.h>
++#include <poll.h>
+ #endif
+ #include <netinet/tcp.h> /* Defines TCP_NODELAY, needed for 2.6 */
+ #include <netinet/in.h>
+--- src/jdk.orig/src/solaris/native/java/net/bsd_close.c
++++ src/jdk/src/solaris/native/java/net/bsd_close.c
+@@ -36,7 +36,7 @@
+ #include <sys/uio.h>
+ #include <unistd.h>
+ #include <errno.h>
+-#include <sys/poll.h>
++#include <poll.h>
+
+ /*
+ * Stack allocated by thread when doing blocking operation
+--- src/jdk.orig/src/solaris/native/java/net/linux_close.c
++++ src/jdk/src/solaris/native/java/net/linux_close.c
+@@ -34,7 +34,7 @@
+ #include <sys/uio.h>
+ #include <unistd.h>
+ #include <errno.h>
+-#include <sys/poll.h>
++#include <poll.h>
+
+ /*
+ * Stack allocated by thread when doing blocking operation
+--- src/jdk.orig/src/solaris/native/java/net/net_util_md.h
++++ src/jdk/src/solaris/native/java/net/net_util_md.h
+@@ -33,7 +33,7 @@
+ #include <unistd.h>
+
+ #ifndef USE_SELECT
+-#include <sys/poll.h>
++#include <poll.h>
+ #endif
+
+
+--- src/jdk.orig/src/solaris/native/sun/nio/ch/DevPollArrayWrapper.c
++++ src/jdk/src/solaris/native/sun/nio/ch/DevPollArrayWrapper.c
+@@ -28,7 +28,7 @@
+ #include "jvm.h"
+ #include "jlong.h"
+ #include "sun_nio_ch_DevPollArrayWrapper.h"
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <unistd.h>
+ #include <sys/time.h>
+
+--- src/jdk.orig/src/solaris/native/sun/nio/ch/NativeThread.c
++++ src/jdk/src/solaris/native/sun/nio/ch/NativeThread.c
+@@ -34,7 +34,7 @@
+
+ #ifdef __linux__
+ #include <pthread.h>
+- #include <sys/signal.h>
++ #include <signal.h>
+ /* Also defined in net/linux_close.c */
+ #define INTERRUPT_SIGNAL (SIGRTMAX - 2)
+ #elif __solaris__
+--- src/jdk.orig/src/solaris/native/sun/nio/ch/Net.c
++++ src/jdk/src/solaris/native/sun/nio/ch/Net.c
+@@ -23,7 +23,7 @@
+ * questions.
+ */
+
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <sys/types.h>
+ #include <sys/socket.h>
+ #include <string.h>
+--- src/jdk.orig/src/solaris/native/sun/nio/fs/LinuxWatchService.c
++++ src/jdk/src/solaris/native/sun/nio/fs/LinuxWatchService.c
+@@ -32,7 +32,7 @@
+ #include <dlfcn.h>
+ #include <sys/types.h>
+ #include <sys/socket.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <sys/inotify.h>
+
+ #include "sun_nio_fs_LinuxWatchService.h"
+--- src/jdk.orig/src/solaris/transport/socket/socket_md.c
++++ src/jdk/src/solaris/transport/socket/socket_md.c
+@@ -37,7 +37,7 @@
+ #include <thread.h>
+ #else
+ #include <pthread.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ #endif
+
+ #include "socket_md.h"
diff --git a/testing/openjdk8/icedtea-jdk-musl.patch b/testing/openjdk8/icedtea-jdk-musl.patch
new file mode 100644
index 0000000000..49a88d93fe
--- /dev/null
+++ b/testing/openjdk8/icedtea-jdk-musl.patch
@@ -0,0 +1,107 @@
+--- src/jdk.orig/src/share/native/com/sun/java/util/jar/pack/zip.cpp
++++ src/jdk/src/share/native/com/sun/java/util/jar/pack/zip.cpp
+@@ -46,6 +46,8 @@
+
+ #include "zip.h"
+
++#define uchar unsigned char
++
+ #ifdef NO_ZLIB
+
+ inline bool jar::deflate_bytes(bytes& head, bytes& tail) {
+--- src/jdk.orig/src/share/native/com/sun/java/util/jar/pack/zip.h
++++ src/jdk/src/share/native/com/sun/java/util/jar/pack/zip.h
+@@ -23,9 +23,7 @@
+ * questions.
+ */
+
+-#define ushort unsigned short
+-#define uint unsigned int
+-#define uchar unsigned char
++#include <sys/types.h>
+
+ struct unpacker;
+
+--- src/jdk.orig/src/share/native/sun/awt/medialib/mlib_types.h
++++ src/jdk/src/share/native/sun/awt/medialib/mlib_types.h
+@@ -27,6 +27,7 @@
+ #ifndef MLIB_TYPES_H
+ #define MLIB_TYPES_H
+
++#include <stddef.h> /* for NULL */
+ #include <limits.h>
+ #if defined(_MSC_VER)
+ #include <float.h> /* for FLT_MAX and DBL_MAX */
+--- src/jdk.orig/src/solaris/native/java/net/Inet4AddressImpl.c
++++ src/jdk/src/solaris/native/java/net/Inet4AddressImpl.c
+@@ -47,7 +47,7 @@
+
+ #include "java_net_Inet4AddressImpl.h"
+
+-#if defined(__GLIBC__) || (defined(__FreeBSD__) && (__FreeBSD_version >= 601104))
++#if defined(__linux__) || (defined(__FreeBSD__) && (__FreeBSD_version >= 601104))
+ #define HAS_GLIBC_GETHOSTBY_R 1
+ #endif
+
+--- src/jdk.orig/src/solaris/native/java/net/NetworkInterface.c
++++ src/jdk/src/solaris/native/java/net/NetworkInterface.c
+@@ -47,7 +47,6 @@
+
+ #ifdef __linux__
+ #include <sys/ioctl.h>
+-#include <bits/ioctls.h>
+ #include <sys/utsname.h>
+ #include <stdio.h>
+ #endif
+--- src/jdk.orig/src/solaris/native/java/net/PlainDatagramSocketImpl.c
++++ src/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c
+@@ -35,7 +35,6 @@
+ #endif
+ #ifdef __linux__
+ #include <unistd.h>
+-#include <sys/sysctl.h>
+ #include <sys/utsname.h>
+ #include <netinet/ip.h>
+
+--- src/jdk.orig/src/solaris/native/java/net/PlainSocketImpl.c
++++ src/jdk/src/solaris/native/java/net/PlainSocketImpl.c
+@@ -43,7 +43,6 @@
+ #endif
+ #ifdef __linux__
+ #include <unistd.h>
+-#include <sys/sysctl.h>
+ #endif
+
+ #include "jvm.h"
+--- src/jdk.orig/src/solaris/native/java/net/linux_close.c
++++ src/jdk/src/solaris/native/java/net/linux_close.c
+@@ -56,7 +56,7 @@
+ /*
+ * Signal to unblock thread
+ */
+-static int sigWakeup = (__SIGRTMAX - 2);
++static int sigWakeup;
+
+ /*
+ * The fd table and the number of file descriptors
+@@ -95,6 +95,9 @@
+ /*
+ * Setup the signal handler
+ */
++#ifndef __AIX
++ sigWakeup = SIGRTMAX - 2;
++#endif
+ sa.sa_handler = sig_wakeup;
+ sa.sa_flags = 0;
+ sigemptyset(&sa.sa_mask);
+--- src/jdk.orig/src/solaris/native/sun/nio/ch/NativeThread.c
++++ src/jdk/src/solaris/native/sun/nio/ch/NativeThread.c
+@@ -36,7 +36,7 @@
+ #include <pthread.h>
+ #include <sys/signal.h>
+ /* Also defined in net/linux_close.c */
+- #define INTERRUPT_SIGNAL (__SIGRTMAX - 2)
++ #define INTERRUPT_SIGNAL (SIGRTMAX - 2)
+ #elif __solaris__
+ #include <thread.h>
+ #include <signal.h>