This is the PKGBUILD that worked for me:
pkgbase="java-openjfx-nowebkit"
pkgname=(
"java-openjfx-nowebkit"
"java-openjfx-doc"
"java-openjfx-src"
)
_jfxver=24
_jfxtag=29
# I cannot for the life of me figure out their wacky versioning system so this is pure guesswork:
pkgver=${_jfxver}.0.0.u${_jfxtag}
pkgrel=0.1
pkgdesc="Java OpenJFX client application platform built without WebKit support."
arch=(x86_64 x86_64_v3)
url="https://wiki.openjdk.java.net/display/OpenJFX/Main"
license=('GPL-2.0-only WITH Classpath-exception-2.0')
makedepends=(
"alsa-lib"
"ant"
"cairo"
"cmake"
"ffmpeg4.4"
"freetype2"
"gdk-pixbuf2"
"glib2"
"gperf"
"gradle=8.13-1.1"
"gtk2"
"gtk3"
"java-environment-openjdk=23"
"libgl"
"libx11"
"libxtst"
"libxxf86vm"
"pango"
"perl"
"python"
"qt5-base"
"ruby"
"unzip"
# "webkit2gtk"
"zip"
)
options=(!lto)
source=(
"https://github.com/openjdk/jfx/archive/refs/tags/jfx-${_jfxver}-${_jfxtag}.tar.gz"
gradle.properties
java-openjfx-flags.patch
)
b2sums=('c4f6ff072943702f7431933c2755da0457788d389a90a00c0ab63ede5cc05bdcc5067e7a7bb1ca473543abdc36e12fcf672fd90c74f88bc8673e81793d8f3b91'
'0c023ef99e7ee600710c54dad0ad59070620595109ca42c5057fa2ab74ef6d244631745f5cd4c1bea9c0321ee69f1e1efaab820ff124ad1d4f453121e77fd14f'
'5b6dafc22995b57564fda89aaedeb2b6ee58b2c635336ac43a123ea4ac6ced3a20eba39d99cc4eb7ec7b29fc7541f5c3bee454ee55ca79fd2d7ce5ef4ed65cd3')
_jfxdir=jfx-${_jfxver}-${_jfxtag}
prepare() {
cd "${_jfxdir}"
# Clean from potential previous runs
gradle --stop
rm -rf build
gradle clean || true
ln -svf ../gradle.properties .
patch -Np1 --follow-symlinks -i ../java-openjfx-flags.patch
sed 's|, "-Werror"||g' -i buildSrc/linux.gradle
}
build() {
# Workaround for GCC 14? See https://aur.archlinux.org/packages/java21-openjfx#comment-993098
_FIXWERROR_GCC14="-Wno-error=incompatible-pointer-types -Wno-error=sign-compare -Wno-error=int-conversion"
_SILENCEWARNINGS="-Wno-incompatible-pointer-types -Wno-sign-compare -Wno-int-conversion -Wno-missing-field-initializers -Wno-cast-function-type -Wno-discarded-qualifiers -Wno-deprecated-copy -Wno-missing-field-initializers -Wno-stringop-truncation -Wno-return-local-addr -Wno-dangling-pointer -Wno-address -Wno-switch -Wno-deprecated-declarations -Wno-stringop-overread -Wno-expansion-to-defined -Wno-array-bounds"
_CFLAGSADDITIONS=" ${_FIXWERROR_GCC14} ${_SILENCEWARNINGS}"
CFLAGS+="${_CFLAGSADDITIONS}"
CXXFLAGS+="${_CFLAGSADDITIONS}"
export CFLAGS
export CXXFLAGS
# Suppress errors with lld >= 17 due to undefined symbols, see https://aur.archlinux.org/packages/java-openjfx#comment-980178
_FIXLDERROR="-Wl,--undefined-version"
LDFLAGS+=" ${_FIXLDERROR}"
export LDFLAGS
cd "${_jfxdir}"
# Build with openjdk-(current version minus 1)
export PATH="/usr/lib/jvm/java-$((${_jfxver}-1))-openjdk/bin/:$PATH"
# build against ffmpeg4.4
export PKG_CONFIG_PATH='/usr/lib/ffmpeg4.4/pkgconfig'
# Workaround for situation where the linker treats whitespace as arguments
export LDFLAGS="${LDFLAGS//+([[:space:]]|[[:blank:]])/ }"
gradle zips
}
package_java-openjfx-nowebkit() {
pkgdesc="Java OpenJFX client application platform without WebKit support."
depends=(
"freetype2"
"glib2"
"glibc"
"java-runtime-openjdk=${_jfxver}"
"libgl"
"libx11"
"libxtst"
)
optdepends=(
"ffmpeg4.4: Media support"
'gtk2: GTK2 support'
'gtk3: GTK3 support'
)
provides=(java-openjfx=${_jfxver})
cd "${_jfxdir}"
install -dvm 755 "${pkgdir}"/usr/{lib/jvm/java-${_jfxver}-openjfx,share/licenses}
cp -dvr --no-preserve=ownership build/sdk/lib "${pkgdir}"/usr/lib/jvm/java-${_jfxver}-openjfx/
cp -dvr --no-preserve=ownership build/jmods "${pkgdir}"/usr/lib/jvm/java-${_jfxver}-openjfx/
cp -dr --no-preserve=ownership build/sdk/legal "${pkgdir}"/usr/share/licenses/java-openjfx
}
package_java-openjfx-doc() {
pkgdesc="Documentation for Java OpenJFX client application platform"
arch=(any)
cd "${_jfxdir}"
install -dvm 755 "${pkgdir}"/usr/share/{doc,licenses}
cp -dvr --no-preserve=ownership build/javadoc "${pkgdir}"/usr/share/doc/java-openjfx
install -vm 644 -t "${pkgdir}"/usr/share/doc/java-openjfx README.md UPDATING-VERSION.md WEBKIT-MEDIA-STUBS.md CONTRIBUTING.md
ln -sv java-openjfx "${pkgdir}"/usr/share/licenses/java-openjfx-doc
}
package_java-openjfx-src() {
pkgdesc="Source code for Java OpenJFX client application platform"
arch=(any)
cd "${_jfxdir}"
install -dvm 755 "${pkgdir}"/usr/{lib/jvm/java-${_jfxver}-openjfx,share/licenses}
install -vm 644 build/sdk/src.zip "${pkgdir}"/usr/lib/jvm/java-${_jfxver}-openjfx/javafx-src.zip
ln -sv java-openjfx "${pkgdir}"/usr/share/licenses/java-openjfx-src
}
Pinned Comments
dreieck commented on 2025-03-22 11:26 (UTC)
I know that version 24.x is out, but I cannot get it building. Throws error like
Cannot invoke method trim() on null object
.If anyone succeeds building it locally, please tell.
dreieck commented on 2024-07-23 15:38 (UTC)
This
-nowebkit
variant is here since disabling webkit support seems to work around build failure, see ↗ this comment.