summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Baumann <mail@andreasbaumann.cc>2018-08-29 18:15:06 +0200
committerAndreas Baumann <mail@andreasbaumann.cc>2018-08-29 18:15:06 +0200
commitec2c3a818e9517a6faf514f7cb654b2dfae2c0ce (patch)
treef52c2f65b276aefb0f038bbb871d1c4ff7c51673
parent85ed0d7704dfc7808e189f44ef1874ecc6165c96 (diff)
downloadpackages-ec2c3a818e9517a6faf514f7cb654b2dfae2c0ce.tar.xz
extra/java8-openjdk: hotfix for readdir_r
-rw-r--r--extra/java8-openjdk/PKGBUILD19
-rw-r--r--extra/java8-openjdk/hotspot-jdk8u181-b13-readdir_r.patch25
2 files changed, 44 insertions, 0 deletions
diff --git a/extra/java8-openjdk/PKGBUILD b/extra/java8-openjdk/PKGBUILD
new file mode 100644
index 00000000..69209bb8
--- /dev/null
+++ b/extra/java8-openjdk/PKGBUILD
@@ -0,0 +1,19 @@
+# glibc 2.28 readdir_r -> readdir hotfix (or, let's hope readdir is
+# actually thread-safe internally)
+
+source+=('hotspot-jdk8u181-b13-readdir_r.patch')
+sha256sums+=('76b176e6ec65e90b1352cb42ebf6c47a11c9a632662c31ff413965d03e3a5d41')
+
+eval "$(
+ declare -f prepare | \
+ sed '
+ /^}$/ i cd ${srcdir}/hotspot-${_repo_ver} && patch -Np1 < "${srcdir}/hotspot-jdk8u181-b13-readdir_r.patch"
+ '
+)"
+
+eval "$(
+ declare -f build | \
+ sed '
+ s/-Wno-error=deprecated-declarations/-Wno-error=deprecated-declarations -Wno-error=deprecated/
+ '
+)"
diff --git a/extra/java8-openjdk/hotspot-jdk8u181-b13-readdir_r.patch b/extra/java8-openjdk/hotspot-jdk8u181-b13-readdir_r.patch
new file mode 100644
index 00000000..2da9545c
--- /dev/null
+++ b/extra/java8-openjdk/hotspot-jdk8u181-b13-readdir_r.patch
@@ -0,0 +1,25 @@
+diff -rauN hotspot-jdk8u181-b13/src/os/linux/vm/os_linux.inline.hpp hotspot-jdk8u181-b13-readdir_r-patch/src/os/linux/vm/os_linux.inline.hpp
+--- hotspot-jdk8u181-b13/src/os/linux/vm/os_linux.inline.hpp 2018-07-04 03:01:40.000000000 +0200
++++ hotspot-jdk8u181-b13-readdir_r-patch/src/os/linux/vm/os_linux.inline.hpp 2018-08-29 16:58:42.460758701 +0200
+@@ -117,18 +117,10 @@
+ inline struct dirent* os::readdir(DIR* dirp, dirent *dbuf)
+ {
+ dirent* p;
+- int status;
+ assert(dirp != NULL, "just checking");
+-
+- // NOTE: Linux readdir_r (on RH 6.2 and 7.2 at least) is NOT like the POSIX
+- // version. Here is the doc for this function:
+- // http://www.gnu.org/manual/glibc-2.2.3/html_node/libc_262.html
+-
+- if((status = ::readdir_r(dirp, dbuf, &p)) != 0) {
+- errno = status;
+- return NULL;
+- } else
+- return p;
++
++ p = ::readdir(dirp);
++ return p;
+ }
+
+ inline int os::closedir(DIR *dirp) {