[jdk8u-dev] RFR: 8193017: Import freetype sources into OpenJDK source tree
Zdenek Zambersky
zzambers at openjdk.org
Wed Oct 29 11:43:11 UTC 2025
On Tue, 28 Oct 2025 13:31:44 GMT, Jiří Vaněk <jvanek at openjdk.org> wrote:
> Hi!
>
> I had recently hit an issue with jdk8, which, if build on old system - eg el7, it can not run GUI application on newest system like f42 or similar:
>
> java.lang.UnsatisfiedLinkError: /usr/lib/jvm/java-1.8.0-openjdk-jdk8u462.b05-0.ojdk8~u~upstream.hotspot.release.sdk.el7.x86_64.tarxz/jre/lib/amd64/libfontmanager.so: /lib64/libharfbuzz.so.0: undefined symbol: FT_Get_Color_Glyph_Layer
> at java.lang.ClassLoader$NativeLibrary.load(Native Method)
> at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1934)
> at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1838)
> at java.lang.Runtime.loadLibrary0(Runtime.java:843)
> at java.lang.System.loadLibrary(System.java:1136)
> at sun.font.FontManagerNativeLibrary$1.run(FontManagerNativeLibrary.java:61)
> at java.security.AccessController.doPrivileged(Native Method)
> at sun.font.FontManagerNativeLibrary.<clinit>(FontManagerNativeLibrary.java:32)
> at sun.java2d.xr.XRSurfaceData.initXRSurfaceData(XRSurfaceData.java:85)
> at sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:137)
> at java.security.AccessController.doPrivileged(Native Method)
> at sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:74)
>
>
> As per investigations the issue is in duality of freetype, and is solved by `8193017: Import freetype sources into OpenJDK source tree`
>
> This is fully based on unfinished https://github.com/openjdk/jdk8u-dev/pull/318 , with smal lexception of rebase, and docs adaptation. The change in `doc/building.html ` is unluckily done manually, as `make update-build-docs` is regenerating half of the universum. Is it desired? Is there some recomended version of pandoc to use?
>
> pandoc --version
> pandoc 3.1.11.1
> Features: +server +lua
> Scripting engine: Lua 5.4
>
>
> I had tested builds on windows and several linuxes, run full jtregs and checked the GUI works again. I can link full set of tests if needed (actually many of them are still running).
>
> For record, I built by temurin build wrapper, which needed an change to adapt to this: https://github.com/adoptium/temurin-build/pull/4287
Would be nice to have in-tree freetype as in later jdks
As when person is not careful bundling freetype, it can end up linking against system hafrbuzz (which, in turn, has cyclic dependency on freetype). This may, in better case, fail the build. In worst case, build may seemingly look ok, but cause runtime linking error (in description), when run on newer OS (newer than build one).
For reference, issue and workaround in temurin-build:
issue: https://github.com/adoptium/temurin-build/issues/4159
workaround: https://github.com/adoptium/temurin-build/pull/4238
Also `--with-freetype-src` on windows does not work with recent freetype versions, due to changes to vcxproj confugrations:
configure: Trying to compile freetype sources with PlatformToolset=v143 to /home/tester/temurinbuild-1756203907/workspace/libs/freetype/lib64/ ...
configure: User specified --with-freetype-src but building freetype failed. (see freetype.log for build results)
configure: error: Consider building freetype manually and using --with-freetype instead.
(and older freetype such as `2.9.1` need to be used)
-------------
PR Comment: https://git.openjdk.org/jdk8u-dev/pull/709#issuecomment-3461080531
More information about the jdk8u-dev
mailing list