From 76148dd7c22eaf869e4492f8c0b07921b7f17eda Mon Sep 17 00:00:00 2001 From: Ewoud Kohl van Wijngaarden Date: Fri, 22 Mar 2024 11:41:26 +0100 Subject: [PATCH 1/5] Make JAVA_BIN a configuration option Making it a config option allows for differentiation. The comment for version 8 was outdated, since puppetserver 8 refuses to start up with Java 8. Signed-off-by: Tim Meusel --- .../lein-ezbake/staging-templates/ezbake.rb.mustache | 1 + resources/puppetlabs/lein-ezbake/template/foss/ext/default.erb | 3 --- resources/puppetlabs/lein-ezbake/template/global/ext/fpm.rb | 1 + src/puppetlabs/ezbake/core.clj | 3 +++ test/unit/puppetlabs/ezbake/core_test.clj | 1 + 5 files changed, 6 insertions(+), 3 deletions(-) diff --git a/resources/puppetlabs/lein-ezbake/staging-templates/ezbake.rb.mustache b/resources/puppetlabs/lein-ezbake/staging-templates/ezbake.rb.mustache index 100d6393..eb467160 100644 --- a/resources/puppetlabs/lein-ezbake/staging-templates/ezbake.rb.mustache +++ b/resources/puppetlabs/lein-ezbake/staging-templates/ezbake.rb.mustache @@ -73,6 +73,7 @@ module EZBake :main_namespace => {{{main-namespace}}}, :java_args => {{{java-args}}}, :java_args_cli => {{{java-args-cli}}}, + :java_bin => {{{java-bin}}}, :tk_args => {{{tk-args}}}, :start_before => {{{start-before}}}, :start_after => {{{start-after}}}, diff --git a/resources/puppetlabs/lein-ezbake/template/foss/ext/default.erb b/resources/puppetlabs/lein-ezbake/template/foss/ext/default.erb index db413b49..1add5825 100644 --- a/resources/puppetlabs/lein-ezbake/template/foss/ext/default.erb +++ b/resources/puppetlabs/lein-ezbake/template/foss/ext/default.erb @@ -2,9 +2,6 @@ # Init settings for <%= EZBake::Config[:project] %> ########################################### -# Location of your Java binary (version 8) -JAVA_BIN="/usr/bin/java" - # Modify this if you'd like to change the memory allocation, enable JMX, etc JAVA_ARGS="<%= EZBake::Config[:java_args] %>" diff --git a/resources/puppetlabs/lein-ezbake/template/global/ext/fpm.rb b/resources/puppetlabs/lein-ezbake/template/global/ext/fpm.rb index 7aaa79b1..6a512ab5 100755 --- a/resources/puppetlabs/lein-ezbake/template/global/ext/fpm.rb +++ b/resources/puppetlabs/lein-ezbake/template/global/ext/fpm.rb @@ -10,6 +10,7 @@ options.systemd_sles = 0 options.sles = 0 options.java = 'java-1.8.0-openjdk-headless' +options.java_bin = '/usr/bin/java' options.release = 1 options.platform_version = 0 options.replaces = {} diff --git a/src/puppetlabs/ezbake/core.clj b/src/puppetlabs/ezbake/core.clj index fe88f152..ebbefca5 100644 --- a/src/puppetlabs/ezbake/core.clj +++ b/src/puppetlabs/ezbake/core.clj @@ -108,6 +108,7 @@ (schema/optional-key :main-namespace) schema/Str (schema/optional-key :java-args) schema/Str (schema/optional-key :java-args-cli) schema/Str + (schema/optional-key :java-bin) schema/Str (schema/optional-key :tk-args) schema/Str (schema/optional-key :redhat-postinst-install-triggers) RPMTriggers (schema/optional-key :redhat-postinst-upgrade-triggers) RPMTriggers @@ -802,6 +803,8 @@ Additional uberjar dependencies: :java-args (local->ruby :java-args "-Xmx192m") :java-args-cli (local->ruby :java-args-cli "") + :java-bin (local->ruby :java-bin + "/usr/bin/java") :tk-args (local->ruby :tk-args "") :bootstrap-source (-> (get-local :bootstrap-source :bootstrap-cfg) name as-ruby-literal) diff --git a/test/unit/puppetlabs/ezbake/core_test.clj b/test/unit/puppetlabs/ezbake/core_test.clj index d74b2a51..04ab1d02 100644 --- a/test/unit/puppetlabs/ezbake/core_test.clj +++ b/test/unit/puppetlabs/ezbake/core_test.clj @@ -71,6 +71,7 @@ :project "'dummy'" :debian-postinst-install "[]" :java-args-cli "''" + :java-bin "'/usr/bin/java'" :cli-defaults-file "'ext/cli_defaults/cli-defaults.sh'" :debian-install "[]" :redhat-postinst-install-triggers [] From 8ff106c65f00364504ccb8e423f7b497a97637c1 Mon Sep 17 00:00:00 2001 From: Tim Meusel Date: Fri, 25 Jul 2025 19:18:56 +0200 Subject: [PATCH 2/5] Load java_bin from ezbake if possible In the ezbake config we define the desired Java binary location, but we don't always have access to this so it still needs some fallback. Signed-off-by: Tim Meusel --- .../lein-ezbake/template/global/ext/fpm.rb | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/resources/puppetlabs/lein-ezbake/template/global/ext/fpm.rb b/resources/puppetlabs/lein-ezbake/template/global/ext/fpm.rb index 6a512ab5..20ee0487 100755 --- a/resources/puppetlabs/lein-ezbake/template/global/ext/fpm.rb +++ b/resources/puppetlabs/lein-ezbake/template/global/ext/fpm.rb @@ -5,12 +5,36 @@ require 'ostruct' options = OpenStruct.new + +# ezbake.rb is rendered from +# resources/puppetlabs/lein-ezbake/staging-templates/ezbake.rb.mustache +# +# inside the build container, fpm.rb is at: +# /code/target/staging/puppetserver-8.9.0/ext/fpm.rb +# ezbake: +# /code/target/staging/ezbake.rb +# +# we do this hula hoop jump because in our build process the ezbake.rb exists +# We also distribute a .tar.gz. This contains the compiled jar + fpm.rb. +# fpm.rb is executed while we build the packages. This is the same process as +# compiling the jar and rendering ezbake from +# resources/puppetlabs/lein-ezbake/staging-templates/ezbake.rb.mustache +# people that try to build their own package based on our tar, like FreeBSD, don't have the ezbake.rb +# +# patches welcome to move ezbake.rb into the tar *or* get rid of ezbake +begin + require_relative '../../ezbake' +rescue LoadError + options.java_bin = '/usr/bin/java' +else + options.java_bin = EZBake::Config[:java_bin] +end + # settin' some defaults options.systemd_el = 0 options.systemd_sles = 0 options.sles = 0 options.java = 'java-1.8.0-openjdk-headless' -options.java_bin = '/usr/bin/java' options.release = 1 options.platform_version = 0 options.replaces = {} From 06d3b8746e95e740b034ddb3f61e04af68520716 Mon Sep 17 00:00:00 2001 From: Tim Meusel Date: Wed, 30 Jul 2025 20:41:29 +0200 Subject: [PATCH 3/5] default.rb: Set JAVA_BIN for openvox-server CLI apps Signed-off-by: Tim Meusel --- resources/puppetlabs/lein-ezbake/template/foss/ext/default.erb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/resources/puppetlabs/lein-ezbake/template/foss/ext/default.erb b/resources/puppetlabs/lein-ezbake/template/foss/ext/default.erb index 1add5825..29351ff0 100644 --- a/resources/puppetlabs/lein-ezbake/template/foss/ext/default.erb +++ b/resources/puppetlabs/lein-ezbake/template/foss/ext/default.erb @@ -2,6 +2,9 @@ # Init settings for <%= EZBake::Config[:project] %> ########################################### +# Location of your Java binary +JAVA_BIN="<%= EZBake::Config[:java_bin] %>" + # Modify this if you'd like to change the memory allocation, enable JMX, etc JAVA_ARGS="<%= EZBake::Config[:java_args] %>" From 4285fb19c83e4f5d054544506251891c5620376c Mon Sep 17 00:00:00 2001 From: Tim Meusel Date: Tue, 14 Apr 2026 10:40:35 +0200 Subject: [PATCH 4/5] Set java/java_bin for Debian os family Signed-off-by: Tim Meusel --- .../lein-ezbake/template/global/ext/fpm.rb | 37 ++++++++++++++++++- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/resources/puppetlabs/lein-ezbake/template/global/ext/fpm.rb b/resources/puppetlabs/lein-ezbake/template/global/ext/fpm.rb index 20ee0487..233ceed6 100755 --- a/resources/puppetlabs/lein-ezbake/template/global/ext/fpm.rb +++ b/resources/puppetlabs/lein-ezbake/template/global/ext/fpm.rb @@ -166,6 +166,10 @@ end options.dist = "#{options.operating_system}#{options.os_version}" if options.dist.nil? +# values can be... unexpected, so log them +warn "options.os_version is: #{options.os_version}" +warn "options.dist is: #{options.dist}" + fpm_opts = Array('') shared_opts = Array('') termini_opts = Array('') @@ -294,8 +298,6 @@ options.release = "#{options.release}+#{options.dist}" end - options.java = 'openjdk-21-jre-headless | openjdk-17-jre-headless' - fpm_opts << '--deb-build-depends cdbs' fpm_opts << '--deb-build-depends bc' fpm_opts << '--deb-build-depends mawk' @@ -310,6 +312,37 @@ options.deb_activate_triggers.each do |trigger| fpm_opts << "--deb-activate #{trigger}" end + + # figure out correct java dependency + case options.dist + when 'debian11' # Bullseye + options.java = 'openjdk-17-jre-headless' + options.java_bin = '/usr/lib/jvm/java-17-openjdk-amd64/bin/java' + when 'debian12' # Bookworm + options.java = 'openjdk-17-jre-headless' + options.java_bin = '/usr/lib/jvm/java-17-openjdk-amd64/bin/java' + when 'debian13' # Trixie + options.java = 'openjdk-21-jre-headless' + options.java_bin = '/usr/lib/jvm/java-21-openjdk-amd64/bin/java' + when 'ubuntu20.04' # Focal Fossa + options.java = 'openjdk-21-jre-headless' + options.java_bin = '/usr/lib/jvm/java-21-openjdk-amd64/bin/java' + when 'ubuntu22.04' # Jammy Jellyfish + options.java = 'openjdk-21-jre-headless' + options.java_bin = '/usr/lib/jvm/java-21-openjdk-amd64/bin/java' + when 'ubuntu24.04' # Noble Numbat + options.java = 'openjdk-21-jre-headless' + options.java_bin = '/usr/lib/jvm/java-21-openjdk-amd64/bin/java' + when 'ubuntu25.04' # Plucky Puffin + options.java = 'openjdk-21-jre-headless' + options.java_bin = '/usr/lib/jvm/java-21-openjdk-amd64/bin/java' + when 'ubuntu25.10' # Questing Quokka + options.java = 'openjdk-21-jre-headless' + options.java_bin = '/usr/lib/jvm/java-21-openjdk-amd64/bin/java' + when 'ubuntu26.04' # Resolute Raccoon + options.java = 'openjdk-21-jre-headless' + options.java_bin = '/usr/lib/jvm/java-21-openjdk-amd64/bin/java' + end end # generic options! From f15d9eaf16941d21319a86e29434be1179a0dd9e Mon Sep 17 00:00:00 2001 From: Tim Meusel Date: Tue, 14 Apr 2026 18:19:19 +0200 Subject: [PATCH 5/5] fpm.rb: shorten OS list Signed-off-by: Tim Meusel --- .../lein-ezbake/template/global/ext/fpm.rb | 29 ++++--------------- 1 file changed, 6 insertions(+), 23 deletions(-) diff --git a/resources/puppetlabs/lein-ezbake/template/global/ext/fpm.rb b/resources/puppetlabs/lein-ezbake/template/global/ext/fpm.rb index 233ceed6..910ba7c0 100755 --- a/resources/puppetlabs/lein-ezbake/template/global/ext/fpm.rb +++ b/resources/puppetlabs/lein-ezbake/template/global/ext/fpm.rb @@ -315,33 +315,16 @@ # figure out correct java dependency case options.dist - when 'debian11' # Bullseye + # Bullseye, Bookworm + when 'debian11','debian12' options.java = 'openjdk-17-jre-headless' options.java_bin = '/usr/lib/jvm/java-17-openjdk-amd64/bin/java' - when 'debian12' # Bookworm - options.java = 'openjdk-17-jre-headless' - options.java_bin = '/usr/lib/jvm/java-17-openjdk-amd64/bin/java' - when 'debian13' # Trixie - options.java = 'openjdk-21-jre-headless' - options.java_bin = '/usr/lib/jvm/java-21-openjdk-amd64/bin/java' - when 'ubuntu20.04' # Focal Fossa - options.java = 'openjdk-21-jre-headless' - options.java_bin = '/usr/lib/jvm/java-21-openjdk-amd64/bin/java' - when 'ubuntu22.04' # Jammy Jellyfish - options.java = 'openjdk-21-jre-headless' - options.java_bin = '/usr/lib/jvm/java-21-openjdk-amd64/bin/java' - when 'ubuntu24.04' # Noble Numbat - options.java = 'openjdk-21-jre-headless' - options.java_bin = '/usr/lib/jvm/java-21-openjdk-amd64/bin/java' - when 'ubuntu25.04' # Plucky Puffin - options.java = 'openjdk-21-jre-headless' - options.java_bin = '/usr/lib/jvm/java-21-openjdk-amd64/bin/java' - when 'ubuntu25.10' # Questing Quokka - options.java = 'openjdk-21-jre-headless' - options.java_bin = '/usr/lib/jvm/java-21-openjdk-amd64/bin/java' - when 'ubuntu26.04' # Resolute Raccoon + # Trixie, Focal Fossa, Jammy Jellyfish, Noble Numbat, Plucky Puffin, Questing Quokka, Resolute Raccoon + when 'debian13', 'ubuntu20.04', 'ubuntu22.04', 'ubuntu24.04', 'ubuntu25.04', 'ubuntu25.10', 'ubuntu26.04' options.java = 'openjdk-21-jre-headless' options.java_bin = '/usr/lib/jvm/java-21-openjdk-amd64/bin/java' + else + fail "no matching OS data found for #{options.dist}" end end