From fe1b40cd280b01ea54392a456fc293805341efa3 Mon Sep 17 00:00:00 2001 From: Andrew Hughes Date: Wed, 9 Jul 2025 02:00:12 +0100 Subject: [PATCH] Add OpenJDK 8u support to get_bundle_versions.sh Related: RHEL-103209 --- java-21-openjdk.spec | 1 + scripts/get_bundle_versions.sh | 122 +++++++++++++++++++++++++-------- 2 files changed, 93 insertions(+), 30 deletions(-) diff --git a/java-21-openjdk.spec b/java-21-openjdk.spec index 4c80e76..81b565e 100644 --- a/java-21-openjdk.spec +++ b/java-21-openjdk.spec @@ -2571,6 +2571,7 @@ cjc.mainProgram(args) - * get_bundle_versions.sh: Remove unneeded '.' in JPEG version - * get_bundle_versions.sh: shellcheck: Double-quote variable references (SC2086) - * get_bundle_versions.sh: shellcheck: Drop use of cat and pass file to awk directly (SC2002) +- Add OpenJDK 8u support to get_bundle_versions.sh - Related: RHEL-103209 * Wed Jul 09 2025 Antonio Vieiro - 1:21.0.8.0.1-0.1.ea diff --git a/scripts/get_bundle_versions.sh b/scripts/get_bundle_versions.sh index ebab48a..dddbee4 100755 --- a/scripts/get_bundle_versions.sh +++ b/scripts/get_bundle_versions.sh @@ -23,82 +23,144 @@ fi JDKROOT=$1 +if [ ! -d "${JDKROOT}" ] ; then + echo "${JDKROOT} is not a directory."; + exit 2 +fi + +# Work out the OpenJDK version +# OpenJDK >= 10 has its version in the build machinery +# OpenJDK >= 17 stores it in a new location (JDK-8258246) +VERSION_FILE="${JDKROOT}"/make/conf/version-numbers.conf +printf "Checking for %s..." "${VERSION_FILE}"; +if [ ! -f "${VERSION_FILE}" ] ; then + VERSION_FILE="${JDKROOT}"/make/autoconf/version-numbers + echo "Not found; using old version file ${VERSION_FILE}"; +else + echo "found."; +fi +if [ -e "${VERSION_FILE}" ] ; then + openjdk_version=$(grep '^DEFAULT_VERSION_FEATURE' "${VERSION_FILE}" | cut -d '=' -f 2) +elif [ -e "${JDKROOT}"/jdk/src/java.base/share/classes/java/lang/Object.java ] ; then + openjdk_version=9; +elif [ -e "${JDKROOT}"/common/autoconf ] ; then + openjdk_version=8; +else + openjdk_version=7; +fi +echo "OpenJDK version: ${openjdk_version}"; + # # Freetype # -FREETYPE=src/java.desktop/share/native/libfreetype/include/freetype/freetype.h -ABS_FREETYPE="${JDKROOT}"/"${FREETYPE}" -if [ ! -f "${ABS_FREETYPE}" ]; then - echo "Freetype header not found!" - exit 2 +if [ "${openjdk_version}" -gt 8 ] ; then + FREETYPE=src/java.desktop/share/native/libfreetype/include/freetype/freetype.h + ABS_FREETYPE="${JDKROOT}"/"${FREETYPE}" + if [ ! -f "${ABS_FREETYPE}" ]; then + echo "Freetype header not found!" + exit 2 + fi + FREETYPE_VERSION=$(awk '/#define FREETYPE_MAJOR/ {MAJOR=$3} /#define FREETYPE_MINOR/ {MINOR=$3} /#define FREETYPE_PATCH/ {PATCH=$3} END {printf "%s.%s.%s", MAJOR, MINOR, PATCH}' "${ABS_FREETYPE}") +else + echo "No bundled FreeType on ${openjdk_version}"; fi -FREETYPE_VERSION=$(awk '/#define FREETYPE_MAJOR/ {MAJOR=$3} /#define FREETYPE_MINOR/ {MINOR=$3} /#define FREETYPE_PATCH/ {PATCH=$3} END {printf "%s.%s.%s", MAJOR, MINOR, PATCH}' "${ABS_FREETYPE}") -echo "# Version in ${FREETYPE}" -echo "Provides: bundled(freetype) = ${FREETYPE_VERSION}" # giflib -GIFLIB=src/java.desktop/share/native/libsplashscreen/giflib/gif_lib.h +if [ "${openjdk_version}" -gt 8 ] ; then + GIFLIB=src/java.desktop/share/native/libsplashscreen/giflib/gif_lib.h +else + GIFLIB=jdk/src/share/native/sun/awt/giflib/gif_lib.h +fi ABS_GIFLIB="${JDKROOT}"/"${GIFLIB}" if [ ! -f "${ABS_GIFLIB}" ]; then echo "giflib header not found!" exit 3 fi GIFLIB_VERSION=$(awk '/#define GIFLIB_MAJOR/ {MAJOR=$3} /#define GIFLIB_MINOR/ {MINOR=$3} /#define GIFLIB_RELEASE/ {PATCH=$3} END {printf "%s.%s.%s", MAJOR, MINOR, PATCH}' "${ABS_GIFLIB}") -echo "# Version in ${GIFLIB}" -echo "Provides: bundled(giflib) = ${GIFLIB_VERSION}" -# hatfbuzz -HARFBUZZ=src/java.desktop/share/native/libharfbuzz/hb-version.h -ABS_HARFBUZZ="${JDKROOT}/${HARFBUZZ}" -if [ ! -f "${ABS_HARFBUZZ}" ]; then - echo "HarfBuzz header not found!" - exit 4 +# harfbuzz +if [ "${openjdk_version}" -gt 8 ] ; then + HARFBUZZ=src/java.desktop/share/native/libharfbuzz/hb-version.h + ABS_HARFBUZZ="${JDKROOT}/${HARFBUZZ}" + if [ ! -f "${ABS_HARFBUZZ}" ]; then + echo "HarfBuzz header not found!" + exit 4 + fi + HARFBUZZ_VERSION=$(awk '/#define HB_VERSION_MAJOR/ {MAJOR=$3} /#define HB_VERSION_MINOR/ {MINOR=$3} /#define HB_VERSION_MICRO/ {PATCH=$3} END {printf "%s.%s.%s", MAJOR, MINOR, PATCH}' "${ABS_HARFBUZZ}") +else + echo "No HarfBuzz on ${openjdk_version}"; fi -HARFBUZZ_VERSION=$(awk '/#define HB_VERSION_MAJOR/ {MAJOR=$3} /#define HB_VERSION_MINOR/ {MINOR=$3} /#define HB_VERSION_MICRO/ {PATCH=$3} END {printf "%s.%s.%s", MAJOR, MINOR, PATCH}' "${ABS_HARFBUZZ}") -echo "# Version in ${HARFBUZZ}" -echo "Provides: bundled(harfbuzz) = ${HARFBUZZ_VERSION}" # lcms -LCMS=src/java.desktop/share/native/liblcms/lcms2.h +if [ "${openjdk_version}" -gt 8 ] ; then + LCMS=src/java.desktop/share/native/liblcms/lcms2.h +else + LCMS=jdk/src/share/native/sun/java2d/cmm/lcms/lcms2.h +fi ABS_LCMS="${JDKROOT}"/"${LCMS}" if [ ! -f "${ABS_LCMS}" ]; then echo "lcms header not found!" exit 5 fi LCMS_VERSION=$(awk '/#define LCMS_VERSION/ { MAJOR=int($3 / 1000); REST=$3 % 1000; MINOR=int(REST / 10); PATCH=REST % 10; } END {printf "%s.%s.%s", MAJOR, MINOR, PATCH}' "${ABS_LCMS}") -echo "# Version in ${LCMS}" -echo "Provides: bundled(lcms2) = ${LCMS_VERSION}" # jpeg -JPEG=src/java.desktop/share/native/libjavajpeg/jpeglib.h +if [ "${openjdk_version}" -gt 8 ] ; then + JPEG=src/java.desktop/share/native/libjavajpeg/jpeglib.h +else + JPEG=jdk/src/share/native/sun/awt/image/jpeg/jpeglib.h +fi ABS_JPEG="${JDKROOT}"/"${JPEG}" if [ ! -f "${ABS_JPEG}" ]; then echo "jpeg header not found!" exit 6 fi JPEG_VERSION=$(awk '/#define JPEG_LIB_VERSION/ { VERSION=$3; MAJOR=int(VERSION / 10); MINOR=VERSION%10; } END {printf "%s%c", MAJOR, (MINOR+96)}' "${ABS_JPEG}") -echo "# Version in ${JPEG}" -echo "Provides: bundled(libjpeg) = ${JPEG_VERSION}" # png -PNG=src/java.desktop/share/native/libsplashscreen/libpng/png.h +if [ "${openjdk_version}" -gt 8 ] ; then + PNG=src/java.desktop/share/native/libsplashscreen/libpng/png.h +else + PNG=jdk/src/share/native/sun/awt/libpng/png.h +fi ABS_PNG="${JDKROOT}"/"${PNG}" if [ ! -f "${ABS_PNG}" ]; then echo "png header not found!" exit 7 fi PNG_VERSION=$(awk '/#define PNG_LIBPNG_VER_STRING/ { VERSION=$3; gsub("\"", "", VERSION) } END {print VERSION}' "${ABS_PNG}") -echo "# Version in ${PNG}" -echo "Provides: bundled(libpng) = ${PNG_VERSION}" # zlib -ZLIB=src/java.base/share/native/libzip/zlib/zlib.h +if [ "${openjdk_version}" -gt 8 ] ; then + ZLIB=src/java.base/share/native/libzip/zlib/zlib.h +else + ZLIB=jdk/src/share/native/java/util/zip/zlib/zlib.h +fi ABS_ZLIB="${JDKROOT}"/"${ZLIB}" if [ ! -f "${ABS_ZLIB}" ]; then echo "zlib header not found!" exit 8 fi ZLIB_VERSION=$(awk '/#define ZLIB_VERSION/ { VERSION=$3; gsub("\"", "", VERSION) } END {print VERSION}' "${ABS_ZLIB}") + +# Print output +printf "\nRPM definitions:\n" +if [ "${openjdk_version}" -gt 8 ] ; then + echo "# Version in ${FREETYPE}" + echo "Provides: bundled(freetype) = ${FREETYPE_VERSION}" +fi +echo "# Version in ${GIFLIB}" +echo "Provides: bundled(giflib) = ${GIFLIB_VERSION}" +if [ "${openjdk_version}" -gt 8 ] ; then + echo "# Version in ${HARFBUZZ}" + echo "Provides: bundled(harfbuzz) = ${HARFBUZZ_VERSION}" +fi +echo "# Version in ${LCMS}" +echo "Provides: bundled(lcms2) = ${LCMS_VERSION}" +echo "# Version in ${JPEG}" +echo "Provides: bundled(libjpeg) = ${JPEG_VERSION}" +echo "# Version in ${PNG}" +echo "Provides: bundled(libpng) = ${PNG_VERSION}" echo "# Version in ${ZLIB}" echo "Provides: bundled(zlib) = ${ZLIB_VERSION}"