From ec2c3a818e9517a6faf514f7cb654b2dfae2c0ce Mon Sep 17 00:00:00 2001 From: Andreas Baumann Date: Wed, 29 Aug 2018 18:15:06 +0200 Subject: extra/java8-openjdk: hotfix for readdir_r --- extra/java8-openjdk/PKGBUILD | 19 ++++++++++++++++ .../hotspot-jdk8u181-b13-readdir_r.patch | 25 ++++++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 extra/java8-openjdk/PKGBUILD create mode 100644 extra/java8-openjdk/hotspot-jdk8u181-b13-readdir_r.patch (limited to 'extra') 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) { -- cgit v1.2.3-70-g09d2