aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--main/openjdk7/APKBUILD290
-rw-r--r--main/openjdk7/fix-paxctl-args.patch15
-rw-r--r--main/openjdk7/icedtea-hotspot-musl.patch55
-rw-r--r--main/openjdk7/icedtea-hotspot-noagent-musl.patch54
-rw-r--r--main/openjdk7/icedtea-hotspot-uclibc-fixes.patch93
-rw-r--r--main/openjdk7/icedtea-jdk-execinfo.patch40
-rw-r--r--main/openjdk7/icedtea-jdk-fix-build.patch56
-rw-r--r--main/openjdk7/icedtea-jdk-fix-ipv6-init.patch42
-rw-r--r--main/openjdk7/icedtea-jdk-iconv-uclibc.patch39
-rw-r--r--main/openjdk7/icedtea-jdk-musl.patch105
-rw-r--r--main/openjdk7/icedtea-jdk-no-lib-nsl-uclibc.patch84
-rw-r--r--main/openjdk7/icedtea-jdk-no-soname.patch12
12 files changed, 885 insertions, 0 deletions
diff --git a/main/openjdk7/APKBUILD b/main/openjdk7/APKBUILD
new file mode 100644
index 0000000000..895cb0c961
--- /dev/null
+++ b/main/openjdk7/APKBUILD
@@ -0,0 +1,290 @@
+# Contributor: Timo Teras <timo.teras@iki.fi>
+# Maintainer: Timo Teras <timo.teras@iki.fi>
+pkgname=openjdk7
+_icedteaver=2.4.5
+_openjdkupdate=51
+pkgver=7.$_openjdkupdate.$_icedteaver
+pkgrel=0
+pkgdesc="Sun OpenJDK 7 via IcedTea"
+url="http://icedtea.classpath.org/"
+arch="x86 x86_64"
+license="GPL-2 with Classpath"
+depends="$pkgname-jre"
+options="sover-namecheck"
+makedepends="findutils tar zip paxctl gawk pkgconfig util-linux
+ autoconf automake nss-dev cups-dev jpeg-dev giflib-dev libpng-dev libxt-dev
+ lcms2-dev libxp-dev libxtst-dev libxinerama-dev libiconv-dev zlib-dev
+ libxrender-dev alsa-lib-dev freetype-dev xulrunner-dev fontconfig-dev
+ gtk+2.0-dev krb5-dev attr-dev ca-certificates libxslt zip"
+install=""
+
+# upstream binary versions
+RHINO_VER=1_7R3
+ANT_VER=1.9.2
+# hashes from $_builddir/Makefile.am
+_CORBA_CHANGESET=3594dbde270d
+_JAXP_CHANGESET=8fe156ad49e2
+_JAXWS_CHANGESET=32ea8b1ed91a
+_JDK_CHANGESET=9db88c18e114
+_LANGTOOLS_CHANGESET=dabd37b7e295
+_OPENJDK_CHANGESET=410eb7fef869
+# hash from $_builddir/hotspot.map
+_HOTSPOT_CHANGESET=2cb58882dac3
+
+case $CARCH in
+x86) _jarch=i386;;
+x86_64) _jarch=amd64;;
+arm*) _jarch=arm;;
+esac
+
+INSTALL_BASE=/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"
+
+if [ "$BOOTSTRAP" != "no" ]; then
+ makedepends="$makedepends java-gcj-compat"
+ BOOTSTRAP_JAVA_HOME=/usr/lib/jvm/java-1.5-gcj/
+else
+ makedepends="$makedepends $pkgname"
+ BOOTSTRAP_JAVA_HOME="$INSTALL_BASE"
+fi
+
+_hgurl=http://icedtea.classpath.org/hg/release/icedtea7-forest-${_icedteaver:0:3}
+
+source="http://icedtea.classpath.org/download/source/icedtea-$_icedteaver.tar.gz
+ openjdk-${_OPENJDK_CHANGESET}.tar.gz::$_hgurl/archive/${_OPENJDK_CHANGESET}.tar.gz
+ corba-${_CORBA_CHANGESET}.tar.gz::$_hgurl/corba/archive/${_CORBA_CHANGESET}.tar.gz
+ jaxp-${_JAXP_CHANGESET}.tar.gz::$_hgurl/jaxp/archive/${_JAXP_CHANGESET}.tar.gz
+ jaxws-${_JAXWS_CHANGESET}.tar.gz::$_hgurl/jaxws/archive/${_JAXWS_CHANGESET}.tar.gz
+ jdk-${_JDK_CHANGESET}.tar.gz::$_hgurl/jdk/archive/${_JDK_CHANGESET}.tar.gz
+ langools-${_LANGTOOLS_CHANGESET}.tar.gz::$_hgurl/langtools/archive/${_LANGTOOLS_CHANGESET}.tar.gz
+ hotspot-${_HOTSPOT_CHANGESET}.tar.gz::$_hgurl/hotspot/archive/${_HOTSPOT_CHANGESET}.tar.gz
+ http://archive.apache.org/dist/ant/binaries/apache-ant-$ANT_VER-bin.tar.gz
+ ftp://ftp.mozilla.org/pub/mozilla.org/js/rhino$RHINO_VER.zip
+
+ fix-paxctl-args.patch
+ icedtea-hotspot-musl.patch
+ icedtea-hotspot-noagent-musl.patch
+ icedtea-hotspot-uclibc-fixes.patch
+ icedtea-jdk-fix-build.patch
+ icedtea-jdk-execinfo.patch
+ icedtea-jdk-fix-ipv6-init.patch
+ icedtea-jdk-iconv-uclibc.patch
+ icedtea-jdk-musl.patch
+ icedtea-jdk-no-soname.patch
+ "
+
+# icedtea6-1.9.7-generate_cacerts-1.patch
+# icedtea-jdk-no-lib-nsl-uclibc.patch
+
+_builddir="$srcdir/icedtea-$_icedteaver"
+
+unpack() {
+ if [ -z "$force" ]; then
+ verify || return 1
+ initdcheck || return 1
+ fi
+ mkdir -p "$srcdir"
+ msg "Unpacking sources..."
+ tar -C "$srcdir" -zxf icedtea-$_icedteaver.tar.gz || return 1
+ tar -C "$srcdir" -zxf apache-ant-$ANT_VER-bin.tar.gz || return 1
+ unzip -o -q "rhino$RHINO_VER.zip" -d "$srcdir" || return 1
+}
+
+prepare() {
+ cd "$_builddir"
+
+ # Busybox sha256 does not support longopts
+ sed -e "s/--check/-c/g" -i Makefile.am
+
+ for patch in $source; do
+ case $patch in
+ icedtea-*.patch)
+ cp ../$patch patches
+ ;;
+ *.patch)
+ msg "Applying patch $patch"
+ patch -p1 -i "$srcdir"/$patch || return 1
+ ;;
+ esac
+ done
+
+ ./autogen.sh
+}
+
+build() {
+ [ -z "$JOBS" ] && export JOBS=`echo $MAKEFLAGS | sed -n -e 's/.*-j\([0-9]\+\).*/\1/p'`
+ export ALT_PARALLEL_COMPILE_JOBS="${JOBS:-2}"
+ export HOTSPOT_BUILD_JOBS="${JOBS:-2}"
+
+ export JAVA_HOME=$BOOTSTRAP_JAVA_HOME
+ export PATH=$JAVA_HOME/bin:$srcdir/apache-ant-$ANT_VER/bin:$PATH
+ export DISTRIBUTION_PATCHES=""
+
+ local patch
+ for patch in $source; do
+ case $patch in
+ icedtea-*.patch)
+ export DISTRIBUTION_PATCHES="$DISTRIBUTION_PATCHES patches/$patch"
+ ;;
+ esac
+ done
+ echo "icedtea patches: $DISTRIBUTION_PATCHES"
+
+ cd "$_builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --localstatedir=/var \
+ --with-parallel-jobs=${JOBS:-2} \
+ --disable-dependency-tracking \
+ --disable-downloading \
+ --with-rhino=$srcdir/rhino$RHINO_VER/js.jar \
+ --with-openjdk-src-zip=$srcdir/openjdk-${_OPENJDK_CHANGESET}.tar.gz \
+ --with-hotspot-src-zip=$srcdir/hotspot-${_HOTSPOT_CHANGESET}.tar.gz \
+ --with-corba-src-zip=$srcdir/corba-${_CORBA_CHANGESET}.tar.gz \
+ --with-jaxp-src-zip=$srcdir/jaxp-${_JAXP_CHANGESET}.tar.gz \
+ --with-jaxws-src-zip=$srcdir/jaxws-${_JAXWS_CHANGESET}.tar.gz \
+ --with-jdk-src-zip=$srcdir/jdk-${_JDK_CHANGESET}.tar.gz \
+ --with-langtools-src-zip=$srcdir/langools-${_LANGTOOLS_CHANGESET}.tar.gz \
+ --with-pax=paxctl \
+ --with-jdk-home=$BOOTSTRAP_JAVA_HOME \
+ --with-abs-install-dir=$INSTALL_BASE \
+ --with-pkgversion="Alpine ${pkgver}-r${pkgrel}" \
+ || return 1
+
+ make || return 1
+}
+
+package() {
+ mkdir -p "$pkgdir"/$INSTALL_BASE
+ cp -a "$_builddir"/openjdk.build/j2sdk-image/* "$pkgdir"/$INSTALL_BASE
+ rm "$pkgdir"/$INSTALL_BASE/src.zip
+}
+
+jrelib() {
+ pkgdesc="OpenJDK 7 Java Runtime (class libraries)"
+ arch="noarch"
+ depends=""
+
+ for A in jre/lib/zi 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 7 Java Runtime (no GUI support)"
+ depends="$pkgname-jre-lib java-common"
+ # manually provide this to avoid clash with libgcj's libjvm.so
+ provides="so:openjdk7: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
+}
+
+jre() {
+ pkgdesc="OpenJDK 7 Java Runtime"
+ # manually depend to avoid clash with libgcj's libjvm.so
+ depends="so:openjdk7:libjvm.so=0"
+
+ mkdir -p "$subpkgdir"
+ for A in jre/bin/policytool \
+ bin/appletviewer \
+ bin/policytool \
+ jre/lib/$_jarch/xawt \
+ jre/lib/$_jarch/libsplashscreen.so ; do
+ dirname=${A%/*}
+ mkdir -p "$subpkgdir"/$INSTALL_BASE/$dirname
+ mv "$pkgdir"/$INSTALL_BASE/$A "$subpkgdir"/$INSTALL_BASE/$dirname
+ done
+}
+
+doc() {
+ default_doc
+
+ mkdir -p "$subpkgdir"/$INSTALL_BASE/
+ mv "$pkgdir"/$INSTALL_BASE/man "$subpkgdir"/$INSTALL_BASE/
+}
+
+md5sums="6dcc544657ade213d01017354a6f9858 icedtea-2.4.5.tar.gz
+09b9db8ca0b833070326573c3dac56e2 openjdk-410eb7fef869.tar.gz
+adf888756629bdcb37f71451269ac42e corba-3594dbde270d.tar.gz
+1c42344779d49baed24724535a7e2c9b jaxp-8fe156ad49e2.tar.gz
+256148d7e7f5619addde91fd14bc3361 jaxws-32ea8b1ed91a.tar.gz
+3370074398071b4104e0e89efc9a4a56 jdk-9db88c18e114.tar.gz
+7605555236ffd8ac6bdedc6bc9b61c26 langools-dabd37b7e295.tar.gz
+67bb16313215e6da72bda7dc0090bb6a hotspot-2cb58882dac3.tar.gz
+9a2826a1819aa128629778217af36c55 apache-ant-1.9.2-bin.tar.gz
+99d94103662a8d0b571e247a77432ac5 rhino1_7R3.zip
+8139e04d07c765d6255a373985b45eb7 fix-paxctl-args.patch
+f87dd2c4c3c97fc3ac33080a65ca9e14 icedtea-hotspot-musl.patch
+573e12eeae80a34541f00d5be75d6c0f icedtea-hotspot-noagent-musl.patch
+43023861c5f6efc3139a834aa3ec0476 icedtea-hotspot-uclibc-fixes.patch
+07c7ab583808e8c8ceb46aff9c265aa4 icedtea-jdk-fix-build.patch
+bd623081d5d2e63694c3649975b12412 icedtea-jdk-execinfo.patch
+250b0807b59762670954b132e8f8dfba icedtea-jdk-fix-ipv6-init.patch
+7c0814181e5adc0763c5c0a24b01d4cb icedtea-jdk-iconv-uclibc.patch
+5b1b624b7127434c0c6329d733c917c9 icedtea-jdk-musl.patch
+d014431e70cdabb82a75e4b9ae4c28a9 icedtea-jdk-no-soname.patch"
+sha256sums="10c08eeffaa0602b23cb957a2595a2ad3ab474cbe47b12743bbdd79037d5883d icedtea-2.4.5.tar.gz
+2de151c7275d91ef082e63fcc0957c5f9290404ec6e20ecfa1e752e16bfab707 openjdk-410eb7fef869.tar.gz
+d1f97e143fe94ae3a56b45bb5a90f8ab10ec2be4ff770a788f0a1ac677e27a7d corba-3594dbde270d.tar.gz
+0a2a40186cedfbeb8f87b0bc86bea2830943943081d4289fc74f7a783b2e1af3 jaxp-8fe156ad49e2.tar.gz
+08a169b6b02883759ec7a412aa91aa3e37480761cb50b95d092dbcdb2fc9a3d0 jaxws-32ea8b1ed91a.tar.gz
+285e5b8ccbb29f3f9f9ea9ea7856d1ed97465c57d091fbcd9b2e55a1ffbb543e jdk-9db88c18e114.tar.gz
+86cb370ce2084c4b699d8c002ebe6c026e86206ffa82a2f3d7906aadb94ed79f langools-dabd37b7e295.tar.gz
+d8c1681ae76e660c1888065933cedbbc1309869c7a2fb98f07c424716d5ebaf9 hotspot-2cb58882dac3.tar.gz
+cab1b8754e5f1f2aa869e2ba603903ae5e81a585de4eafd00f173531a11b5a45 apache-ant-1.9.2-bin.tar.gz
+885b46e24fe5af23ad3712c5e08e8d97d6d92a4b89e1be860e8fe88e4a3dacd1 rhino1_7R3.zip
+3d9b9647931b96c6eac2ac23f94f3a6e072ee500613a45ee08ab88c259e24fe0 fix-paxctl-args.patch
+a7922430cb767c8a4baae232c8b2e5f377aeb7cfde0c9901cd7774f078e7f92e icedtea-hotspot-musl.patch
+fb33409f6700f4ab69ca35f0684a5138f2afe0726ba5de7f9eaf16a18a25a77c icedtea-hotspot-noagent-musl.patch
+0ef7592b8f2c954eda0a6cf4dc4a4010942f35ea426f44e34412be6c9a949745 icedtea-hotspot-uclibc-fixes.patch
+33b18e827a13cc46be11a4491deefac171c8c2c4fbdd3e0cb4a5fdafa560f958 icedtea-jdk-fix-build.patch
+6cebef19d8eec5a4623a96c37ae71b79d124a10478c1db33ad5fc71bc04b30e9 icedtea-jdk-execinfo.patch
+632683ec88a6fb250ef043aae9cace605d0c669b7058f8c47b62b09b03ecc6c5 icedtea-jdk-fix-ipv6-init.patch
+a36ff13d81a1f1415bedd595b77f2c43574c546938cce7882cb33bbe63464865 icedtea-jdk-iconv-uclibc.patch
+6a9f2e7e5f12db53feecaf5bb0afa977e45439722c040842db023c12209c0df2 icedtea-jdk-musl.patch
+6c0bbe710395c4ced1359ab279be6a7c36da5bfb9fd60dc47d920f06a0456d82 icedtea-jdk-no-soname.patch"
+sha512sums="66d34c858fb477a105c163de4b9d7ecaa086bb2a8f5a45e0e721db8e1b49ce670dd56b36b5dd9db7df80438e03ea9aafb41ebadb911e9de2179c8b4be1713d61 icedtea-2.4.5.tar.gz
+135a87d7831d5803b495d8908cab13d9f87134a3eb696684b27aea7fc1ef35677594d4037b44f19b317300555d42c05a569a3a3928458e9787f34cbcf8fce300 openjdk-410eb7fef869.tar.gz
+06bfd82b188dbfeb2f05bc4fdc8585a9ce66762f835052a8bfe5f4ebc2d4eb90c966bd6766825b9d68b7425a2d7af27311da1f3c7c37ce4a36e81b85745cb447 corba-3594dbde270d.tar.gz
+5bc6e75482976e014e191a4952b6598a979fb440643916f5de741be8662e6dcdb224ac7dcca848cb80f2181e9d175d7cfa6cc678c1472ec5bec1adf249324815 jaxp-8fe156ad49e2.tar.gz
+4eaf5af04e65033ad65b04e5d6dd4c91c007d314230990856abb9a551b54c03dc7c26cb8e2da070558b6d2ff5a1c6d5af53dbc966eda352d873771629aca51a6 jaxws-32ea8b1ed91a.tar.gz
+3aeacd02af8263b1168c238045973d57e33aea94a13e95527911f993ffd941423d0db667cd5dd786509c7625ceafdc021cb410573744a93b876a8717d47cfc50 jdk-9db88c18e114.tar.gz
+f6b650431f20758b0f17bc2760e1426e622def620fff80874146e865e2d87d2ce265926c20282489a245df575a87618265dd83a3eb3d8443938f175a89f2c302 langools-dabd37b7e295.tar.gz
+c27c90ab523a0cd438d4850e8762e7047478332fbbee0cf61b07214dafff5db9d6d41c95cc165993458c83ffd91458f1b2f0ff7578f34bfe74a1ff912a587127 hotspot-2cb58882dac3.tar.gz
+618c0c3d80f7c44c2bb8cdfdc2b5278ccd926ab1aa0c8f7099bd0ad5cb4c090f023c0b86c8267052a0a6b1ac57076296fcc16042b9e7a72a1482af63c99e0e49 apache-ant-1.9.2-bin.tar.gz
+77964485481e22d20459ea094c773e1930c5ef22d69bc449375a1ead31f340b3a652e2dd85c645e210be1abc8e623aeb560a5dc81629f388322af270ce868d36 rhino1_7R3.zip
+25b4414f522251529b9f8d69dccac7323abe12bb526d5ad02abf7e9f82b9b49383d6a24f4c1a07c86a0f6b9a44f740c4f7cc58ebdfb44f99915eb965bd1ab5f1 fix-paxctl-args.patch
+994e8a79a0a23f26d633bf2ce9dad62198c699892f6e7729cc6e509481330399bb2ba736514b516fd2b3dd125fd6c74a127ae7f16d643c3f6a69776737cdb933 icedtea-hotspot-musl.patch
+22eb55b0910d51ff2f3f2ad2d7951d2c1d60ea07e0e9561e1110cc57d75a42cc7629ebdaf70722f3f3b76eb2d977b614249b3383118f7b295648bdfda97c9d95 icedtea-hotspot-noagent-musl.patch
+822eee0dc4d3ba677a289dfeb3668b536d2d626708390a9d9702fb4144a481fd443a215a0d2041c6026113837aafa4ba0b5e9ead8589d2da6717a238bbc95a5a icedtea-hotspot-uclibc-fixes.patch
+213a537de5f011cb39d608515c3413513ac75fb93593f9a9ef4205f71d72bdd8b097c80db185f7b26021d5bb85045b866f34f3478482dc4189972d8614a13458 icedtea-jdk-fix-build.patch
+0391970e6a32946aa3cccf38fdef9c0fe2af26cd0df824b98aa2fcfa1bf661d4a68e339bffcfd16f386c565fc68bb28a29208a67d4bad8a0e847ad02bd8becbb icedtea-jdk-execinfo.patch
+48533f87fc2cf29d26b259be0df51087d2fe5b252e72d00c6ea2f4add7b0fb113141718c116279c5905e03f64a1118082e719393786811367cf4d472b5d36774 icedtea-jdk-fix-ipv6-init.patch
+a6ee1c63a171859ab1350481bc3e5d464354f1105d80fc72c1d58620672ca5c1a550b954b35917f89537f0aeb28c49470b27522ce53588e42dedff41e074774c icedtea-jdk-iconv-uclibc.patch
+2da5596c01317cb6ce0183df0a0d7c1f6ab7b05b8060c5808300e24482ff2772206cbfc733d7b0cd66460f24d9b08b9109afdafcb293c12e98b79d307afd1b51 icedtea-jdk-musl.patch
+bf4b184e170f7b0ff64ab30d2162784fe2bd5460d1fa31973259f7065fd4c511c46f97724fe2bd72bb94e9006cb568d0e0c87d1a9c90819e65880f8f44830bb1 icedtea-jdk-no-soname.patch"
diff --git a/main/openjdk7/fix-paxctl-args.patch b/main/openjdk7/fix-paxctl-args.patch
new file mode 100644
index 0000000000..3e8d227725
--- /dev/null
+++ b/main/openjdk7/fix-paxctl-args.patch
@@ -0,0 +1,15 @@
+--- icedtea-2.4.5/acinclude.m4.orig
++++ icedtea-2.4.5/acinclude.m4
+@@ -2324,10 +2324,10 @@
+ xpaxctl)
+ case "${host_cpu}" in
+ i?86)
+- PAX_COMMAND_ARGS="-msp"
++ PAX_COMMAND_ARGS="-c -msp"
+ ;;
+ *)
+- PAX_COMMAND_ARGS="-m"
++ PAX_COMMAND_ARGS="-c -m"
+ ;;
+ esac
+ ;;
diff --git a/main/openjdk7/icedtea-hotspot-musl.patch b/main/openjdk7/icedtea-hotspot-musl.patch
new file mode 100644
index 0000000000..41072defe2
--- /dev/null
+++ b/main/openjdk7/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/main/openjdk7/icedtea-hotspot-noagent-musl.patch b/main/openjdk7/icedtea-hotspot-noagent-musl.patch
new file mode 100644
index 0000000000..176b993118
--- /dev/null
+++ b/main/openjdk7/icedtea-hotspot-noagent-musl.patch
@@ -0,0 +1,54 @@
+--- openjdk.orig/hotspot/make/linux/makefiles/defs.make
++++ openjdk/hotspot/make/linux/makefiles/defs.make
+@@ -285,6 +285,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) \
+@@ -301,6 +304,10 @@
+ endif
+ endif
+ endif
++endif
++else
++ADD_SA_BINARIES/x86 =
++ADD_SA_BINARIES/sparc =
+ endif
+ ADD_SA_BINARIES/ppc =
+ ADD_SA_BINARIES/ia64 =
+--- openjdk.orig/hotspot/make/linux/makefiles/sa.make
++++ openjdk/hotspot/make/linux/makefiles/sa.make
+@@ -59,9 +59,11 @@
+
+ # 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).
+
+ 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
+--- openjdk.orig/hotspot/make/linux/makefiles/saproc.make
++++ openjdk/hotspot/make/linux/makefiles/saproc.make
+@@ -65,10 +65,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/main/openjdk7/icedtea-hotspot-uclibc-fixes.patch b/main/openjdk7/icedtea-hotspot-uclibc-fixes.patch
new file mode 100644
index 0000000000..1c1d822760
--- /dev/null
+++ b/main/openjdk7/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/main/openjdk7/icedtea-jdk-execinfo.patch b/main/openjdk7/icedtea-jdk-execinfo.patch
new file mode 100644
index 0000000000..a6499dcb03
--- /dev/null
+++ b/main/openjdk7/icedtea-jdk-execinfo.patch
@@ -0,0 +1,40 @@
+--- openjdk.orig/jdk/src/solaris/native/sun/awt/awt_xembed_server.c
++++ openjdk/jdk/src/solaris/native/sun/awt/awt_xembed_server.c
+@@ -35,7 +35,7 @@
+ #include <X11/Xlib.h>
+ #include <X11/Xatom.h>
+ #include <Xm/MwmUtil.h>
+-#ifdef __linux__
++#if defined(__linux__) && defined(__GLIBC__) && ! defined(__UCLIBC__)
+ #include <execinfo.h>
+ #endif
+ #include <stdio.h>
+@@ -835,7 +835,7 @@
+ AWT_UNLOCK();
+ }
+
+-#ifdef __linux__
++#if defined(__linux__) && defined(__GLIBC__) && ! defined(__UCLIBC__)
+ void
+ print_stack (void)
+ {
+--- 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/main/openjdk7/icedtea-jdk-fix-build.patch b/main/openjdk7/icedtea-jdk-fix-build.patch
new file mode 100644
index 0000000000..9fae895b66
--- /dev/null
+++ b/main/openjdk7/icedtea-jdk-fix-build.patch
@@ -0,0 +1,56 @@
+Fixes three issues:
+ - so's should not be linked to -ljvm as dlopen(/abs/name) is
+ used by the launcher to load libjvm.so; it is thus not available
+ (musl/uclibc) ld.so to satisfy NEEDED dependency inserted by
+ -ljvm. Fix to not link against -ljvm, and disable -z defs so
+ undefined symbols are allowed in sos
+ - the previous makes ldd generate errors on unresolved symbols (musl)
+ remove it altogether as it's used for informative purposes only
+ (display things - not check anything useful)
+ - Don't delete the generated directory $(GENCSEXT), this can
+ confuse make in highly parallel builds with:
+ make[6]: *** INTERNAL: readdir: No such file or directory. Stop.
+ make[6]: Leaving directory '.../openjdk-boot/jdk/make/sun/nio/cs'
+
+--- openjdk.orig/jdk/make/common/Defs-linux.gmk
++++ openjdk/jdk/make/common/Defs-linux.gmk
+@@ -350,7 +350,7 @@
+
+ EXTRA_LIBS += -lc
+
+-LDFLAGS_DEFS_OPTION = -Xlinker -z -Xlinker defs
++LDFLAGS_DEFS_OPTION =
+ LDFLAGS_COMMON += $(LDFLAGS_DEFS_OPTION)
+
+ #
+@@ -407,7 +407,7 @@
+ # the library itself should not.
+ #
+ VM_NAME = server
+-JVMLIB = -L$(LIBDIR)/$(LIBARCH)/$(VM_NAME) -ljvm
++JVMLIB =
+ JAVALIB = -ljava $(JVMLIB)
+
+ #
+--- openjdk.orig/jdk/make/sun/nio/cs/Makefile
++++ openjdk/jdk/make/sun/nio/cs/Makefile
+@@ -107,7 +107,7 @@
+ $(GENCSDATASRC)/DoubleByte-X.java.template \
+ $(GENCSDATASRC)/extsbcs $(GENCSDATASRC)/dbcs
+ @$(prep-target)
+- $(RM) -r $(GENCSEXT)
++ $(RM) -f "$(GENCSEXT)"/*
+ $(MKDIR) -p $(GENCSEXT)
+ $(BOOT_JAVA_CMD) -jar $(CHARSETMAPPING_JARFILE) $(GENCSDATASRC) $(GENCSEXT) extsbcs
+ $(BOOT_JAVA_CMD) -jar $(CHARSETMAPPING_JARFILE) $(GENCSDATASRC) $(GENCSEXT) euctw \
+--- openjdk.orig/jdk/make/common/shared/Defs-linux.gmk
++++ openjdk/jdk/make/common/shared/Defs-linux.gmk
+@@ -207,8 +207,6 @@
+ if [ "`$(NM) -D -g --defined-only $1 | $(EGREP) 'SUNWprivate'`" = "" ] ; then \
+ $(ECHO) "$(MAPFILE_WARNING): File was not built with a mapfile: $1"; \
+ fi && \
+- $(ECHO) "Library loads for: $1" && \
+- $(LDD) $1 && \
+ $(ECHO) "RUNPATH for: $1" && \
+ ( $(READELF) -d $1 | $(EGREP) 'NEEDED|RUNPATH|RPATH' ) \
+ )
diff --git a/main/openjdk7/icedtea-jdk-fix-ipv6-init.patch b/main/openjdk7/icedtea-jdk-fix-ipv6-init.patch
new file mode 100644
index 0000000000..11f3bf6dd6
--- /dev/null
+++ b/main/openjdk7/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/main/openjdk7/icedtea-jdk-iconv-uclibc.patch b/main/openjdk7/icedtea-jdk-iconv-uclibc.patch
new file mode 100644
index 0000000000..68f858167f
--- /dev/null
+++ b/main/openjdk7/icedtea-jdk-iconv-uclibc.patch
@@ -0,0 +1,39 @@
+Index: openjdk/jdk/make/java/npt/Makefile
+===================================================================
+--- openjdk/jdk/make/java/npt/Makefile 2010-06-13 15:11:02.598512448 +0200
++++ openjdk/jdk/make/java/npt/Makefile 2010-06-13 15:11:28.504759286 +0200
+@@ -65,6 +65,8 @@
+ # We don't want to link against -ljava
+ JAVALIB=
+
++LDLIBS += -liconv
++
+ # Add -export options to explicitly spell exported symbols
+ ifeq ($(PLATFORM), windows)
+ OTHER_LCF += -export:nptInitialize -export:nptTerminate
+Index: icedtea6-1.8/openjdk-ecj/jdk/make/java/instrument/Makefile
+===================================================================
+--- openjdk/jdk/make/java/instrument/Makefile 2010-06-13 15:12:14.688505195 +0200
++++ openjdk/jdk/make/java/instrument/Makefile 2010-06-13 15:12:32.641425670 +0200
+@@ -123,6 +123,8 @@
+ # We don't want to link against -ljava
+ JAVALIB=
+
++LDLIBS += -liconv
++
+ #
+ # Add to ambient vpath so we pick up the library files
+ #
+Index: openjdk/jdk/make/sun/splashscreen/Makefile
+===================================================================
+--- openjdk/jdk/make/sun/splashscreen/Makefile 2010-06-13 15:12:48.951840824 +0200
++++ openjdk/jdk/make/sun/splashscreen/Makefile 2010-06-13 15:13:01.191422891 +0200
+@@ -55,6 +55,8 @@
+
+ JAVALIB=
+
++LDLIBS += -liconv
++
+ #
+ # C Flags
+ #
diff --git a/main/openjdk7/icedtea-jdk-musl.patch b/main/openjdk7/icedtea-jdk-musl.patch
new file mode 100644
index 0000000000..b5456f9ae2
--- /dev/null
+++ b/main/openjdk7/icedtea-jdk-musl.patch
@@ -0,0 +1,105 @@
+--- openjdk.orig/jdk/src/share/native/com/sun/java/util/jar/pack/zip.cpp
++++ openjdk/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) {
+--- openjdk.orig/jdk/src/share/native/com/sun/java/util/jar/pack/zip.h
++++ openjdk/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;
+
+--- openjdk.orig/jdk/src/share/native/sun/awt/medialib/mlib_types.h
++++ openjdk/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 */
+--- openjdk.orig/jdk/src/solaris/native/java/net/Inet4AddressImpl.c
++++ openjdk/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
+
+--- openjdk.orig/jdk/src/solaris/native/java/net/NetworkInterface.c
++++ openjdk/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
+--- openjdk.orig/jdk/src/solaris/native/java/net/linux_close.c
++++ openjdk/jdk/src/solaris/native/java/net/linux_close.c
+@@ -57,7 +57,7 @@
+ /*
+ * Signal to unblock thread
+ */
+-static int sigWakeup = (__SIGRTMAX - 2);
++static int sigWakeup;
+
+ /*
+ * The fd table and the number of file descriptors
+@@ -96,6 +96,7 @@
+ /*
+ * Setup the signal handler
+ */
++ sigWakeup = SIGRTMAX - 2;
+ sa.sa_handler = sig_wakeup;
+ sa.sa_flags = 0;
+ sigemptyset(&sa.sa_mask);
+--- openjdk.orig/jdk/src/solaris/native/sun/nio/ch/NativeThread.c
++++ openjdk/jdk/src/solaris/native/sun/nio/ch/NativeThread.c
+@@ -38,7 +38,7 @@
+ #include <sys/signal.h>
+
+ /* Also defined in src/solaris/native/java/net/linux_close.c */
+-#define INTERRUPT_SIGNAL (__SIGRTMAX - 2)
++#define INTERRUPT_SIGNAL (SIGRTMAX - 2)
+
+ static void
+ nullHandler(int sig)
+--- openjdk.orig/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c
++++ openjdk/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>
+
+--- openjdk.orig/jdk/src/solaris/native/java/net/PlainSocketImpl.c
++++ openjdk/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"
diff --git a/main/openjdk7/icedtea-jdk-no-lib-nsl-uclibc.patch b/main/openjdk7/icedtea-jdk-no-lib-nsl-uclibc.patch
new file mode 100644
index 0000000000..26f89bb546
--- /dev/null
+++ b/main/openjdk7/icedtea-jdk-no-lib-nsl-uclibc.patch
@@ -0,0 +1,84 @@
+--- openjdk.orig/hotspot/agent/src/os/solaris/dbx/Makefile
++++ openjdk/hotspot/agent/src/os/solaris/dbx/Makefile
+@@ -50,7 +50,7 @@
+ CFLAGS_32bit := -xarch=v8
+ CFLAGS_64bit := -xarch=v9
+ CFLAGS := -PIC -xO3 $(INCLUDES)
+-LIBS := -lsocket -lnsl -lrtld_db
++LIBS := -lsocket -lrtld_db
+ LDFLAGS := -G
+
+ ifneq "$(ARCH)" "i486"
+--- openjdk.orig/jdk/make/java/hpi/hpi_common.gmk
++++ openjdk/jdk/make/java/hpi/hpi_common.gmk
+@@ -86,5 +86,5 @@
+ # Things that must be linked in.
+ #
+ ifneq ($(PLATFORM), windows)
+-OTHER_LDLIBS += $(LIBSOCKET) -lnsl $(LIBM) -ldl
++OTHER_LDLIBS += $(LIBSOCKET) $(LIBM) -ldl
+ endif
+--- openjdk.orig/jdk/make/java/java/Makefile
++++ openjdk/jdk/make/java/java/Makefile
+@@ -205,7 +205,7 @@
+ OTHER_LDLIBS += $(JVMLIB) -libpath:$(OBJDIR)/../../../fdlibm/$(OBJDIRNAME) fdlibm.lib \
+ -libpath:$(OBJDIR)/../../../verify/$(OBJDIRNAME) verify.lib
+ else
+-OTHER_LDLIBS += $(JVMLIB) -lverify $(LIBSOCKET) -lnsl -ldl \
++OTHER_LDLIBS += $(JVMLIB) -lverify $(LIBSOCKET) -ldl \
+ -L$(OBJDIR)/../../../fdlibm/$(OBJDIRNAME) -lfdlibm.$(ARCH)
+ endif
+
+--- openjdk.orig/jdk/make/java/java_hprof_demo/Makefile
++++ openjdk/jdk/make/java/java_hprof_demo/Makefile
+@@ -83,7 +83,7 @@
+ ifeq ($(PLATFORM), windows)
+ OTHER_LDLIBS += wsock32.lib winmm.lib
+ else
+- OTHER_LDLIBS += $(LIBSOCKET) -lnsl -ldl
++ OTHER_LDLIBS += $(LIBSOCKET) -ldl
+ endif
+
+ #
+--- openjdk.orig/jdk/make/java/net/Makefile
++++ openjdk/jdk/make/java/net/Makefile
+@@ -97,7 +97,7 @@
+ # Will not compile at warning level 3 if warnings are fatal
+ COMPILER_WARNINGS_FATAL=false
+ else
+- OTHER_LDLIBS = $(LIBSOCKET) -lnsl -ldl $(JVMLIB)
++ OTHER_LDLIBS = $(LIBSOCKET) -ldl $(JVMLIB)
+ endif
+ ifeq ($(PLATFORM), linux)
+ OTHER_LDLIBS += -lpthread
+--- openjdk.orig/jdk/make/jpda/transport/socket/Makefile
++++ openjdk/jdk/make/jpda/transport/socket/Makefile
+@@ -42,11 +42,11 @@
+ endif
+
+ ifeq ($(PLATFORM), linux)
+- OTHER_LDLIBS += -lnsl $(LIBSOCKET) -lpthread
++ OTHER_LDLIBS += $(LIBSOCKET) -lpthread
+ endif
+
+ ifeq ($(PLATFORM), solaris)
+- OTHER_LDLIBS += -lnsl $(LIBSOCKET)
++ OTHER_LDLIBS += $(LIBSOCKET)
+ endif
+
+ ifeq ($(PLATFORM), windows)
+--- openjdk.orig/jdk/make/mkdemo/jvmti/hprof/Makefile
++++ openjdk/jdk/make/mkdemo/jvmti/hprof/Makefile
+@@ -39,10 +39,10 @@
+ EXTRA_LIBS += wsock32.lib winmm.lib
+ endif
+ ifeq ($(PLATFORM), solaris)
+- OTHER_LDLIBS += $(LIBSOCKET) -lnsl -ldl
++ OTHER_LDLIBS += $(LIBSOCKET) -ldl
+ endif
+ ifeq ($(PLATFORM), linux)
+- OTHER_LDLIBS += $(LIBSOCKET) -lnsl -ldl -lpthread
++ OTHER_LDLIBS += $(LIBSOCKET) -ldl -lpthread
+ endif
+
+ #
diff --git a/main/openjdk7/icedtea-jdk-no-soname.patch b/main/openjdk7/icedtea-jdk-no-soname.patch
new file mode 100644
index 0000000000..fe6bbb7329
--- /dev/null
+++ b/main/openjdk7/icedtea-jdk-no-soname.patch
@@ -0,0 +1,12 @@
+--- ./openjdk/jdk/make/common/Defs-linux.gmk.orig
++++ ./openjdk/jdk/make/common/Defs-linux.gmk
+@@ -248,7 +248,9 @@
+ #
+ LDFLAGS_OPT = -Xlinker -O1
+ LDFLAGS_COMMON += -L$(LIBDIR)/$(LIBARCH)
++ifdef LIBRARY
+ LDFLAGS_COMMON += -Wl,-soname=$(LIB_PREFIX)$(LIBRARY).$(LIBRARY_SUFFIX)
++endif
+
+ #
+ # -static-libgcc is a gcc-3 flag to statically link libgcc, gcc-2.9x always