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..29351ff0 100644 --- a/resources/puppetlabs/lein-ezbake/template/foss/ext/default.erb +++ b/resources/puppetlabs/lein-ezbake/template/foss/ext/default.erb @@ -2,8 +2,8 @@ # Init settings for <%= EZBake::Config[:project] %> ########################################### -# Location of your Java binary (version 8) -JAVA_BIN="/usr/bin/java" +# 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] %>" diff --git a/resources/puppetlabs/lein-ezbake/template/global/ext/fpm.rb b/resources/puppetlabs/lein-ezbake/template/global/ext/fpm.rb index 7aaa79b1..910ba7c0 100755 --- a/resources/puppetlabs/lein-ezbake/template/global/ext/fpm.rb +++ b/resources/puppetlabs/lein-ezbake/template/global/ext/fpm.rb @@ -5,6 +5,31 @@ 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 @@ -141,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('') @@ -269,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' @@ -285,6 +312,20 @@ options.deb_activate_triggers.each do |trigger| fpm_opts << "--deb-activate #{trigger}" end + + # figure out correct java dependency + case options.dist + # Bullseye, Bookworm + when 'debian11','debian12' + options.java = 'openjdk-17-jre-headless' + options.java_bin = '/usr/lib/jvm/java-17-openjdk-amd64/bin/java' + # 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 # generic options! 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 []