Skip to content

Commit e5ac399

Browse files
Ensure SBOM FreeType version is set correctly for system and bundled settings (#3497)
* Obtain FreeType version being used for the build from freetype.h Signed-off-by: Andrew Leonard <[email protected]> * Obtain FreeType version being used for the build from freetype.h Signed-off-by: Andrew Leonard <[email protected]> * Obtain FreeType version being used for the build from freetype.h Signed-off-by: Andrew Leonard <[email protected]> * Obtain FreeType version being used for the build from freetype.h Signed-off-by: Andrew Leonard <[email protected]> * Obtain FreeType version being used for the build from freetype.h Signed-off-by: Andrew Leonard <[email protected]> * Obtain FreeType version being used for the build from freetype.h Signed-off-by: Andrew Leonard <[email protected]> * Obtain FreeType version being used for the build from freetype.h Signed-off-by: Andrew Leonard <[email protected]> --------- Signed-off-by: Andrew Leonard <[email protected]>
1 parent 467055a commit e5ac399

File tree

2 files changed

+58
-11
lines changed

2 files changed

+58
-11
lines changed

sbin/build.sh

Lines changed: 58 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -890,8 +890,8 @@ generateSBoM() {
890890

891891
# Add ALSA 3rd party
892892
addSBOMMetadataTools "${javaHome}" "${classpath}" "${sbomJson}" "ALSA" "$(cat ${BUILD_CONFIG[WORKSPACE_DIR]}/${BUILD_CONFIG[TARGET_DIR]}/metadata/dependency_version_alsa.txt)"
893-
# Add FreeType 3rd party (windows + macOS)
894-
addSBOMMetadataTools "${javaHome}" "${classpath}" "${sbomJson}" "FreeType" "$(cat ${BUILD_CONFIG[WORKSPACE_DIR]}/${BUILD_CONFIG[TARGET_DIR]}/metadata/dependency_version_freetype.txt)"
893+
# Add FreeType 3rd party
894+
addFreeTypeVersionInfo
895895
# Add FreeMarker 3rd party (openj9)
896896
addSBOMMetadataTools "${javaHome}" "${classpath}" "${sbomJson}" "FreeMarker" "$(cat ${BUILD_CONFIG[WORKSPACE_DIR]}/${BUILD_CONFIG[TARGET_DIR]}/metadata/dependency_version_freemarker.txt)"
897897

@@ -920,6 +920,62 @@ checkingToolSummary() {
920920
sed -n '/^Tools summary:$/,$p' "${inputConfigFile}" > "${outputConfigFile}"
921921
}
922922

923+
# Determine FreeType version being used in the build from either the system or bundled freetype.h definition
924+
addFreeTypeVersionInfo() {
925+
# Default to "system"
926+
local FREETYPE_TO_USE="system"
927+
if [ "${BUILD_CONFIG[OPENJDK_CORE_VERSION]}" != "${JDK8_CORE_VERSION}" ]; then
928+
# For jdk-11+ get FreeType used from build spec.gmk, which can be "bundled" or "system"
929+
FREETYPE_TO_USE="$(grep "^FREETYPE_TO_USE[ ]*:=" ${BUILD_CONFIG[WORKSPACE_DIR]}/${BUILD_CONFIG[WORKING_DIR]}/${BUILD_CONFIG[OPENJDK_SOURCE_DIR]}/build/*/spec.gmk | sed "s/^FREETYPE_TO_USE[ ]*:=[ ]*//")"
930+
fi
931+
932+
echo "FREETYPE_TO_USE=${FREETYPE_TO_USE}"
933+
934+
local version="Unknown"
935+
local freetypeInclude=""
936+
if [ "${FREETYPE_TO_USE}" == "system" ]; then
937+
local FREETYPE_CFLAGS="$(grep "^FREETYPE_CFLAGS[ ]*:=" ${BUILD_CONFIG[WORKSPACE_DIR]}/${BUILD_CONFIG[WORKING_DIR]}/${BUILD_CONFIG[OPENJDK_SOURCE_DIR]}/build/*/spec.gmk | sed "s/^FREETYPE_CFLAGS[ ]*:=[ ]*//" | sed "s/\-I//g")"
938+
echo "FREETYPE_CFLAGS include paths=${FREETYPE_CFLAGS}"
939+
940+
# Search freetype include path for freetype.h
941+
# shellcheck disable=SC2206
942+
local freetypeIncludeDirs=(${FREETYPE_CFLAGS})
943+
for i in "${!freetypeIncludeDirs[@]}"
944+
do
945+
local include1="${freetypeIncludeDirs[i]}/freetype/freetype.h"
946+
local include2="${freetypeIncludeDirs[i]}/freetype.h"
947+
948+
echo "Checking for FreeType include in path ${freetypeIncludeDirs[i]}"
949+
if [[ -f "${include1}" ]]; then
950+
echo "Found ${include1}"
951+
freetypeInclude="${include1}"
952+
elif [[ -f "${include2}" ]]; then
953+
echo "Found ${include2}"
954+
freetypeInclude="${include2}"
955+
fi
956+
done
957+
elif [ "${FREETYPE_TO_USE}" == "bundled" ]; then
958+
# jdk-11+ supports "bundled"
959+
# freetype.h location for jdk-11+
960+
local include="src/java.desktop/share/native/libfreetype/include/freetype/freetype.h"
961+
echo "Checking for FreeType include ${include}"
962+
if [[ -f "${include}" ]]; then
963+
echo "Found ${include}"
964+
freetypeInclude="${include}"
965+
fi
966+
fi
967+
968+
# Obtain FreeType version from freetype.h
969+
if [[ "x${freetypeInclude}" != "x" ]]; then
970+
local ver_major="$(grep "FREETYPE_MAJOR" "${freetypeInclude}" | grep "#define" | tr -s " " | cut -d" " -f3)"
971+
local ver_minor="$(grep "FREETYPE_MINOR" "${freetypeInclude}" | grep "#define" | tr -s " " | cut -d" " -f3)"
972+
local ver_patch="$(grep "FREETYPE_PATCH" "${freetypeInclude}" | grep "#define" | tr -s " " | cut -d" " -f3)"
973+
version="${ver_major}.${ver_minor}.${ver_patch}"
974+
fi
975+
976+
addSBOMMetadataTools "${javaHome}" "${classpath}" "${sbomJson}" "FreeType" "${version}"
977+
}
978+
923979
# Below add versions to sbom | Facilitate reproducible builds
924980

925981
addGLIBCforLinux() {

sbin/prepareWorkspace.sh

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -450,7 +450,6 @@ checkingAndDownloadingFreeType() {
450450

451451
FOUND_FREETYPE=$(find "${BUILD_CONFIG[WORKSPACE_DIR]}/${BUILD_CONFIG[WORKING_DIR]}/installedfreetype/lib/" -name "${FREETYPE_FONT_SHARED_OBJECT_FILENAME}" || true)
452452

453-
FREETYPE_BUILD_INFO="Unknown"
454453
if [[ -n "$FOUND_FREETYPE" ]]; then
455454
echo "Skipping FreeType download"
456455
else
@@ -472,14 +471,9 @@ checkingAndDownloadingFreeType() {
472471
;;
473472
esac
474473

475-
# Fetch the sha for the commit we just cloned
476474
cd freetype || exit
477-
FREETYPE_SHA=$(git rev-parse HEAD) || exit
478-
FREETYPE_BUILD_INFO="https://github.com/freetype/freetype/commit/${FREETYPE_SHA}"
479475

480476
if [[ "$OSTYPE" == "cygwin" ]] || [[ "$OSTYPE" == "msys" ]]; then
481-
# Record buildinfo version
482-
echo "${FREETYPE_BUILD_INFO}" > "${BUILD_CONFIG[WORKSPACE_DIR]}/${BUILD_CONFIG[TARGET_DIR]}/metadata/dependency_version_freetype.txt"
483477
return
484478
fi
485479

@@ -534,9 +528,6 @@ checkingAndDownloadingFreeType() {
534528
fi
535529
fi
536530
fi
537-
538-
# Record buildinfo version
539-
echo "${FREETYPE_BUILD_INFO}" > "${BUILD_CONFIG[WORKSPACE_DIR]}/${BUILD_CONFIG[TARGET_DIR]}/metadata/dependency_version_freetype.txt"
540531
}
541532

542533
# Recording Build image SHA into docker.txt

0 commit comments

Comments
 (0)