173 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			173 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env sh
 | |
| 
 | |
| # Copyright (C) 2025 Red Hat, Inc.
 | |
| # Original written by Antonio Vieiro <avieirov@redhat.com>
 | |
| #
 | |
| # This program is free software: you can redistribute it and/or modify
 | |
| # it under the terms of the GNU Affero General Public License as
 | |
| # published by the Free Software Foundation, either version 3 of the
 | |
| # License, or (at your option) any later version.
 | |
| #
 | |
| # This program is distributed in the hope that it will be useful,
 | |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
| # GNU Affero General Public License for more details.
 | |
| #
 | |
| # You should have received a copy of the GNU Affero General Public License
 | |
| # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | |
| 
 | |
| if [ $# -ne 1 ]; then
 | |
|     echo "Usage: $0 openjdk-root-directory"
 | |
|     exit 1
 | |
| 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
 | |
| #
 | |
| 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
 | |
| 
 | |
| # giflib
 | |
| 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}")
 | |
| 
 | |
| # 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
 | |
| 
 | |
| # lcms
 | |
| 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}")
 | |
| 
 | |
| # jpeg
 | |
| 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}")
 | |
| 
 | |
| # png
 | |
| 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}")
 | |
| 
 | |
| # zlib
 | |
| 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}"
 | |
| 
 | |
| # Local Variables:
 | |
| # compile-command: "shellcheck get_bundle_versions.sh"
 | |
| # fill-column: 80
 | |
| # indent-tabs-mode: nil
 | |
| # sh-basic-offset: 4
 | |
| # End:
 |