[arch-commits] Commit in keycloak/trunk (PKGBUILD pin-java-version.patch)
Levente Polyak
anthraxx at archlinux.org
Sun Jun 20 01:18:09 UTC 2021
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 <levente at leventepolyak.net>
+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
+
More information about the arch-commits
mailing list