[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