diff --git a/dev-support/docker/Dockerfile_rockylinux_8 b/dev-support/docker/Dockerfile_rockylinux_8 index abea5105a39f2..06dacf049e089 100644 --- a/dev-support/docker/Dockerfile_rockylinux_8 +++ b/dev-support/docker/Dockerfile_rockylinux_8 @@ -43,6 +43,8 @@ RUN yum update -y \ && yum install -y python3 \ && yum install -y $(pkg-resolver/resolve.py rockylinux:8) +RUN update-alternatives --set java java-17-openjdk.x86_64 + RUN dnf --enablerepo=powertools install -y \ doxygen \ snappy-devel \ @@ -85,8 +87,14 @@ ENV INFOPATH="${GCC_HOME}/root/usr/share/info" ###### ENV MAVEN_HOME=/opt/maven ENV PATH="${PATH}:${MAVEN_HOME}/bin" + +# jenkins.sh sets --java-home to a path with an "-amd64" suffix, which doesn't +# exist on Rocky. Fake it with symlinks. +RUN ln -s /usr/lib/jvm/java-17-openjdk /usr/lib/jvm/java-17-openjdk-amd64 +RUN ln -s /usr/lib/jvm/java-21-openjdk /usr/lib/jvm/java-21-openjdk-amd64 + # JAVA_HOME must be set in Maven >= 3.5.0 (MNG-6003) -ENV JAVA_HOME=/usr/lib/jvm/java-1.8.0 +ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk ####### # Set env vars for SpotBugs diff --git a/dev-support/docker/pkg-resolver/packages.json b/dev-support/docker/pkg-resolver/packages.json index 364c8e2defe31..976dadacd8505 100644 --- a/dev-support/docker/pkg-resolver/packages.json +++ b/dev-support/docker/pkg-resolver/packages.json @@ -360,6 +360,10 @@ "temurin-17-jdk", "openjdk-25-jdk" ], + "rockylinux:8": [ + "java-17-openjdk-devel", + "java-21-openjdk-devel" + ], "ubuntu:focal": [ "temurin-25-jdk", "openjdk-8-jdk", diff --git a/hadoop-common-project/hadoop-common/src/main/native/src/exception.c b/hadoop-common-project/hadoop-common/src/main/native/src/exception.c index b4a9b81280392..84c1ce309530a 100644 --- a/hadoop-common-project/hadoop-common/src/main/native/src/exception.c +++ b/hadoop-common-project/hadoop-common/src/main/native/src/exception.c @@ -110,15 +110,18 @@ jthrowable newIOException(JNIEnv* env, const char *fmt, ...) const char* terror(int errnum) { -// MT-Safe under Solaris or glibc >= 2.32 not supporting sys_errlist/sys_nerr -#if defined(__sun) - #define USE_STR_ERROR -#elif defined(__GLIBC_PREREQ) - #if __GLIBC_PREREQ(2, 32) - #define USE_STR_ERROR +/* STD_ERROR is the new standard. Alpine musc does not want to be 'detected' it want to be pure and modern. Thus we detect the old glib and handle. */ +#ifdef __GLIBC__ + #if defined(__GLIBC_PREREQ) + #if __GLIBC_PREREQ(2, 32) + #define USE_STR_ERROR + #endif #endif +#else + #define USE_STR_ERROR #endif + #if defined(USE_STR_ERROR) return strerror(errnum); #else