Date: Sunday, June 20, 2021 @ 01:18:07
Author: anthraxx
Revision: 965731
upgpkg: keycloak 14.0.0-3: pin java runtime for exeuction
Dependency constraint won't solve the issue as the default java can still be
any arbitrary java. In cases where we need to enforce a specific java we need
to hand select a java target and patch the runtime execution to actually force
use that specific version.
As keycloak shell scripts are out of tree and somewhere deep down the rabbit
hole lets use a patch file that we dyinamicall adjust and execute during
packaging.
Added:
keycloak/trunk/pin-java-version.patch
Modified:
keycloak/trunk/PKGBUILD
------------------------+
PKGBUILD | 27 ++++++++++++++++----
pin-java-version.patch | 61 +++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 82 insertions(+), 6 deletions(-)
Modified: PKGBUILD
===================================================================
--- PKGBUILD 2021-06-19 23:45:25 UTC (rev 965730)
+++ PKGBUILD 2021-06-20 01:18:07 UTC (rev 965731)
@@ -4,13 +4,14 @@
pkgname=keycloak
pkgver=14.0.0
_postgresql_jdbc=42.2.22
-pkgrel=2
+_java=11
+pkgrel=3
pkgdesc="Open Source Identity and Access Management For Modern Applications
and Services"
arch=('any')
url="https://www.keycloak.org/"
license=('Apache')
-depends=('java-runtime>=8' 'java-runtime<=15' 'grep' 'bash' 'coreutils'
'util-linux')
-makedepends=('maven' 'git' 'java-environment=8')
+depends=("java-runtime=${_java}" 'grep' 'bash' 'coreutils' 'util-linux')
+makedepends=('maven' 'git' "java-environment=${_java}")
backup=(
opt/keycloak/standalone/configuration/application-roles.properties
opt/keycloak/standalone/configuration/application-users.properties
@@ -27,7 +28,8 @@
keycloak.tmpfiles
layers.conf
postgresql-module.xml
-
https://jdbc.postgresql.org/download/postgresql-${_postgresql_jdbc}.jar)
+ https://jdbc.postgresql.org/download/postgresql-${_postgresql_jdbc}.jar
+ pin-java-version.patch)
sha512sums=('3bb865c71c62105420bc8975018441b9bab93326a3a8d63f12f390c6dcc72d6f88bdf44c61de6137b72cf5bacdda191fb06f7b1e363a6698a055193726c701c9'
'dd10a38e4c8867de6d1fcbb4939c6c5946684842462eba3d5355bf1de13fa059edfd5eba37adce587c824ddd618b6bb88d4bbe1ee568ca5abd0f72296da3ddfe'
'c53b734598ccf675930754514bd2af628355025197e77541e5acb8718629a8ece763c814e8373278758a30475e6a716febeff10bdebf0847d914bc193e732c79'
@@ -34,12 +36,23 @@
'9382b42f09040e34fe1a27d9ff4fb87cabd41525ca26f8ea9629df0169cf93d95cc4bb62bcc5c2ca30efdfd7eeeb13a6f090df9a05823baf701ba729a47f6fd1'
'd54a04c120edb933c4f7168460bd813ff92a4e3771cedcabfeeb76c5d3e057b3cd0d0486dc11ddbd91e8d87ca90193e4c74cc3414e45106dd556d455ac7e60b2'
'5eece4f3eb57372969f0e5319804198b546455828e938ff7f37bbcfb58be08efde43a5b0376c98f359c4bc5eb069e0cd9410daefe19da1c03e9e9c57d3c1b75b'
-
'1464b50c1777347ca9b5d495aff6dfff7e87c5a3b90d18518f5c8ec9b9cedbe05a501a79f54363fc2d609e6578a39be0b373f22b22bddece15179e9a8f06421b')
+
'1464b50c1777347ca9b5d495aff6dfff7e87c5a3b90d18518f5c8ec9b9cedbe05a501a79f54363fc2d609e6578a39be0b373f22b22bddece15179e9a8f06421b'
+
'55a9f861cf5be2bdc64a4b831fbd4d832fae5b88c8c7d620b6ee0622602cce600124e571fff9847b5eb492bf9d522a9ead4179a60d0f90f4f1f70b1d530bde66')
+prepare() {
+ cd $pkgname-$pkgver
+ # Pin the java version. Keycloak produces all those shell scripts deep down
+ # the rabbit hole so applying them during packaging is the best we can get.
+ # Create a local copy and dynamically adjust the patch.
+ cp ../pin-java-version.patch .
+ sed "s|java-11-openjdk|java-${_java}-openjdk|g" -i pin-java-version.patch
+ sed "s|14.0.0|${pkgver}|g" -i pin-java-version.patch
+}
+
build() {
cd $pkgname-$pkgver
- export PATH="/usr/lib/jvm/java-8-openjdk/bin:$PATH"
+ export PATH="/usr/lib/jvm/java-${_java}-openjdk/bin:$PATH"
mvn -Pdistribution \
-pl distribution/server-dist \
-am \
@@ -70,6 +83,8 @@
mkdir -p "$pkgdir"/usr/bin
ln -s /opt/keycloak/bin/kcadm.sh "$pkgdir"/usr/bin/kcadm
ln -s /opt/keycloak/bin/kcreg.sh "$pkgdir"/usr/bin/kcreg
+
+ patch -Np1 -d "$pkgdir"/opt/keycloak/bin < pin-java-version.patch
}
# vim: ts=2 sw=2 et:
Added: pin-java-version.patch
===================================================================
--- pin-java-version.patch (rev 0)
+++ pin-java-version.patch 2021-06-20 01:18:07 UTC (rev 965731)
@@ -0,0 +1,61 @@
+From dbaf85e82f8da8ef85ce73bb882da1763952b86d Mon Sep 17 00:00:00 2001
+From: anthraxx <[email protected]>
+Date: Sun, 20 Jun 2021 02:45:24 +0200
+Subject: [PATCH] pin java version
+
+---
+ common.sh | 4 ++++
+ kcadm.sh | 9 ++++-----
+ kcreg.sh | 4 +++-
+ 3 files changed, 11 insertions(+), 6 deletions(-)
+
+diff --git a/common.sh b/common.sh
+index 48998b6..943d295 100755
+--- a/common.sh
++++ b/common.sh
+@@ -30,3 +30,7 @@ setDefaultModularJvmOptions() {
+ fi
+ fi
+ }
++
++# Pin java version
++export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
++export JAVA="$JAVA_HOME/bin/java"
+diff --git a/kcadm.sh b/kcadm.sh
+index e01a22a..64f1f54 100755
+--- a/kcadm.sh
++++ b/kcadm.sh
+@@ -20,14 +20,13 @@ if [ "x$RESOLVED_NAME" = "x" ]; then
+ fi
+
+ DIRNAME=`dirname "$RESOLVED_NAME"`
+-
++. "$DIRNAME/common.sh"
+
+ # Uncomment out these lines if you are integrating with `kcinit`
+ #if [ "$1" = "config" ]; then
+-# java $KC_OPTS -cp $DIRNAME/client/keycloak-admin-cli-14.0.0.jar
org.keycloak.client.admin.cli.KcAdmMain "$@"
++# $JAVA $KC_OPTS -cp $DIRNAME/client/keycloak-admin-cli-14.0.0.jar
org.keycloak.client.admin.cli.KcAdmMain "$@"
+ #else
+-# java $KC_OPTS -cp $DIRNAME/client/keycloak-admin-cli-14.0.0.jar
org.keycloak.client.admin.cli.KcAdmMain "$@" --noconfig --token $(kcinit token
admin-cli) --server $(kcinit show server)
++# $JAVA $KC_OPTS -cp $DIRNAME/client/keycloak-admin-cli-14.0.0.jar
org.keycloak.client.admin.cli.KcAdmMain "$@" --noconfig --token $(kcinit token
admin-cli) --server $(kcinit show server)
+ #fi
+ # Remove the next line if you have enabled kcinit
+-java $KC_OPTS -cp $DIRNAME/client/keycloak-admin-cli-14.0.0.jar
org.keycloak.client.admin.cli.KcAdmMain "$@"
+-
++$JAVA $KC_OPTS -cp $DIRNAME/client/keycloak-admin-cli-14.0.0.jar
org.keycloak.client.admin.cli.KcAdmMain "$@"
+diff --git a/kcreg.sh b/kcreg.sh
+index 9961dbf..c05ce40 100755
+--- a/kcreg.sh
++++ b/kcreg.sh
+@@ -20,4 +20,6 @@ if [ "x$RESOLVED_NAME" = "x" ]; then
+ fi
+
+ DIRNAME=`dirname "$RESOLVED_NAME"`
+-java $KC_OPTS -cp $DIRNAME/client/keycloak-client-registration-cli-14.0.0.jar
org.keycloak.client.registration.cli.KcRegMain "$@"
++. "$DIRNAME/common.sh"
++
++$JAVA $KC_OPTS -cp
$DIRNAME/client/keycloak-client-registration-cli-14.0.0.jar
org.keycloak.client.registration.cli.KcRegMain "$@"
+--
+2.32.0
+