diff --git a/cmds.txt b/cmds.txt new file mode 100644 index 00000000..5451bedf --- /dev/null +++ b/cmds.txt @@ -0,0 +1,128 @@ +#!/bin/bash +alternatives --display appletviewer | grep /usr/lib/jvm/java-1.8.0/bin/appletviewer | grep 'priority 1080$' +alternatives --display appletviewer | grep /usr/lib/jvm/java-1.8.0/bin/appletviewer +alternatives --install /usr/bin/appletviewer appletviewer /usr/lib/jvm/java-1.8.0/bin/appletviewer 1080 +sync +alternatives --display extcheck | grep /usr/lib/jvm/java-1.8.0/bin/extcheck | grep 'priority 1080$' +alternatives --display extcheck | grep /usr/lib/jvm/java-1.8.0/bin/extcheck +alternatives --install /usr/bin/extcheck extcheck /usr/lib/jvm/java-1.8.0/bin/extcheck 1080 +sync +alternatives --display idlj | grep /usr/lib/jvm/java-1.8.0/bin/idlj +alternatives --install /usr/bin/idlj idlj /usr/lib/jvm/java-1.8.0/bin/idlj 1080 +sync +alternatives --display jar | grep /usr/lib/jvm/java-1.8.0/bin/jar +alternatives --install /usr/bin/jar jar /usr/lib/jvm/java-1.8.0/bin/jar 1080 +sync +alternatives --display jarsigner | grep /usr/lib/jvm/java-1.8.0/bin/jarsigner +alternatives --install /usr/bin/jarsigner jarsigner /usr/lib/jvm/java-1.8.0/bin/jarsigner 1080 +sync +alternatives --display java | grep /usr/lib/jvm/java-1.8.0/bin/java +alternatives --install /usr/bin/java java /usr/lib/jvm/java-1.8.0/bin/java 1080 +sync +alternatives --display javac | grep /usr/lib/jvm/java-1.8.0/bin/javac +alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-1.8.0/bin/javac 1080 +sync +alternatives --display javadoc | grep /usr/lib/jvm/java-1.8.0/bin/javadoc +alternatives --install /usr/bin/javadoc javadoc /usr/lib/jvm/java-1.8.0/bin/javadoc 1080 +sync +alternatives --display javah | grep /usr/lib/jvm/java-1.8.0/bin/javah | grep 'priority 1080$' +alternatives --display javah | grep /usr/lib/jvm/java-1.8.0/bin/javah +alternatives --install /usr/bin/javah javah /usr/lib/jvm/java-1.8.0/bin/javah 1080 +sync +alternatives --display javap | grep /usr/lib/jvm/java-1.8.0/bin/javap +alternatives --install /usr/bin/javap javap /usr/lib/jvm/java-1.8.0/bin/javap 1080 +sync +alternatives --display jcmd | grep /usr/lib/jvm/java-1.8.0/bin/jcmd | grep 'priority 1080$' +alternatives --display jcmd | grep /usr/lib/jvm/java-1.8.0/bin/jcmd +alternatives --install /usr/bin/jcmd jcmd /usr/lib/jvm/java-1.8.0/bin/jcmd 1080 +sync +alternatives --display jconsole | grep /usr/lib/jvm/java-1.8.0/bin/jconsole +alternatives --install /usr/bin/jconsole jconsole /usr/lib/jvm/java-1.8.0/bin/jconsole 1080 +sync +alternatives --display jdb | grep /usr/lib/jvm/java-1.8.0/bin/jdb | grep 'priority 1080$' +alternatives --display jdb | grep /usr/lib/jvm/java-1.8.0/bin/jdb +alternatives --install /usr/bin/jdb jdb /usr/lib/jvm/java-1.8.0/bin/jdb 1080 +sync +alternatives --display jdeps | grep /usr/lib/jvm/java-1.8.0/bin/jdeps +alternatives --install /usr/bin/jdeps jdeps /usr/lib/jvm/java-1.8.0/bin/jdeps 1080 +sync +alternatives --display jhat | grep /usr/lib/jvm/java-1.8.0/bin/jhat +alternatives --install /usr/bin/jhat jhat /usr/lib/jvm/java-1.8.0/bin/jhat 1080 +sync +alternatives --display jinfo | grep /usr/lib/jvm/java-1.8.0/bin/jinfo +alternatives --install /usr/bin/jinfo jinfo /usr/lib/jvm/java-1.8.0/bin/jinfo 1080 +sync +alternatives --display jjs | grep /usr/lib/jvm/java-1.8.0/bin/jjs +alternatives --install /usr/bin/jjs jjs /usr/lib/jvm/java-1.8.0/bin/jjs 1080 +sync +alternatives --display jmap | grep /usr/lib/jvm/java-1.8.0/bin/jmap +alternatives --install /usr/bin/jmap jmap /usr/lib/jvm/java-1.8.0/bin/jmap 1080 +sync +alternatives --display jps | grep /usr/lib/jvm/java-1.8.0/bin/jps | grep 'priority 1080$' +alternatives --display jps | grep /usr/lib/jvm/java-1.8.0/bin/jps +alternatives --install /usr/bin/jps jps /usr/lib/jvm/java-1.8.0/bin/jps 1080 +sync +alternatives --display jrunscript | grep /usr/lib/jvm/java-1.8.0/bin/jrunscript +alternatives --install /usr/bin/jrunscript jrunscript /usr/lib/jvm/java-1.8.0/bin/jrunscript 1080 +sync +alternatives --display jsadebugd | grep /usr/lib/jvm/java-1.8.0/bin/jsadebugd +alternatives --install /usr/bin/jsadebugd jsadebugd /usr/lib/jvm/java-1.8.0/bin/jsadebugd 1080 +sync +alternatives --display jstack | grep /usr/lib/jvm/java-1.8.0/bin/jstack +alternatives --install /usr/bin/jstack jstack /usr/lib/jvm/java-1.8.0/bin/jstack 1080 +sync +alternatives --display jstat | grep /usr/lib/jvm/java-1.8.0/bin/jstat +alternatives --install /usr/bin/jstat jstat /usr/lib/jvm/java-1.8.0/bin/jstat 1080 +sync +alternatives --display jstatd | grep /usr/lib/jvm/java-1.8.0/bin/jstatd +alternatives --install /usr/bin/jstatd jstatd /usr/lib/jvm/java-1.8.0/bin/jstatd 1080 +sync +alternatives --display keytool | grep /usr/lib/jvm/java-1.8.0/bin/keytool | grep 'priority 1080$' +alternatives --display keytool | grep /usr/lib/jvm/java-1.8.0/bin/keytool +alternatives --install /usr/bin/keytool keytool /usr/lib/jvm/java-1.8.0/bin/keytool 1080 +sync +alternatives --display native2ascii | grep /usr/lib/jvm/java-1.8.0/bin/native2ascii +alternatives --install /usr/bin/native2ascii native2ascii /usr/lib/jvm/java-1.8.0/bin/native2ascii 1080 +sync +alternatives --display orbd | grep /usr/lib/jvm/java-1.8.0/bin/orbd +alternatives --install /usr/bin/orbd orbd /usr/lib/jvm/java-1.8.0/bin/orbd 1080 +sync +alternatives --display pack200 | grep /usr/lib/jvm/java-1.8.0/bin/pack200 +alternatives --install /usr/bin/pack200 pack200 /usr/lib/jvm/java-1.8.0/bin/pack200 1080 +sync +alternatives --display policytool | grep /usr/lib/jvm/java-1.8.0/bin/policytool +alternatives --install /usr/bin/policytool policytool /usr/lib/jvm/java-1.8.0/bin/policytool 1080 +sync +alternatives --display rmic | grep /usr/lib/jvm/java-1.8.0/bin/rmic +alternatives --install /usr/bin/rmic rmic /usr/lib/jvm/java-1.8.0/bin/rmic 1080 +sync +alternatives --display rmid | grep /usr/lib/jvm/java-1.8.0/bin/rmid +alternatives --install /usr/bin/rmid rmid /usr/lib/jvm/java-1.8.0/bin/rmid 1080 +sync +alternatives --display rmiregistry | grep /usr/lib/jvm/java-1.8.0/bin/rmiregistry +alternatives --install /usr/bin/rmiregistry rmiregistry /usr/lib/jvm/java-1.8.0/bin/rmiregistry 1080 +sync +alternatives --display schemagen | grep /usr/lib/jvm/java-1.8.0/bin/schemagen +alternatives --install /usr/bin/schemagen schemagen /usr/lib/jvm/java-1.8.0/bin/schemagen 1080 +sync +alternatives --display serialver | grep /usr/lib/jvm/java-1.8.0/bin/serialver +alternatives --install /usr/bin/serialver serialver /usr/lib/jvm/java-1.8.0/bin/serialver 1080 +sync +alternatives --display servertool | grep /usr/lib/jvm/java-1.8.0/bin/servertool +alternatives --install /usr/bin/servertool servertool /usr/lib/jvm/java-1.8.0/bin/servertool 1080 +sync +alternatives --display tnameserv | grep /usr/lib/jvm/java-1.8.0/bin/tnameserv +alternatives --install /usr/bin/tnameserv tnameserv /usr/lib/jvm/java-1.8.0/bin/tnameserv 1080 +sync +alternatives --display unpack200 | grep /usr/lib/jvm/java-1.8.0/bin/unpack200 +alternatives --install /usr/bin/unpack200 unpack200 /usr/lib/jvm/java-1.8.0/bin/unpack200 1080 +sync +alternatives --display wsgen | grep /usr/lib/jvm/java-1.8.0/bin/wsgen +alternatives --install /usr/bin/wsgen wsgen /usr/lib/jvm/java-1.8.0/bin/wsgen 1080 +sync +alternatives --display wsimport | grep /usr/lib/jvm/java-1.8.0/bin/wsimport +alternatives --install /usr/bin/wsimport wsimport /usr/lib/jvm/java-1.8.0/bin/wsimport 1080 +sync +alternatives --display xjc | grep /usr/lib/jvm/java-1.8.0/bin/xjc +alternatives --install /usr/bin/xjc xjc /usr/lib/jvm/java-1.8.0/bin/xjc 1080 +sync diff --git a/documentation/resources/openjdk_pkg_install.md b/documentation/resources/openjdk_pkg_install.md index 49045cec..8052c5a7 100644 --- a/documentation/resources/openjdk_pkg_install.md +++ b/documentation/resources/openjdk_pkg_install.md @@ -18,7 +18,7 @@ Introduced: v8.1.0 | pkg_names | Array | `default_openjdk_pkg_names(version)` | List of packages to install | | pkg_version | String | `nil` | Package version to install | | java_home | String | Based on the version | Set to override the java_home | -| default | Boolean | `true` | Whether to set this as the defalut Java | +| default | Boolean | `true` | Whether to set this as the default Java | | bin_cmds | Array | `default_openjdk_bin_cmds(version)` | A list of bin_cmds based on the version and variant | | alternatives_priority | Integer | `1062` | Alternatives priority to set for this Java | | reset_alternatives | Boolean | `true` | Whether to reset alternatives before setting | diff --git a/kitchen.yml b/kitchen.yml index b8771bba..f6fdb4ff 100644 --- a/kitchen.yml +++ b/kitchen.yml @@ -6,6 +6,7 @@ driver: provisioner: name: chef_zero + log_level: <%= ENV['CHEF_LOG_LEVEL'] || 'warn' %> verifier: name: inspec @@ -117,3 +118,7 @@ suites: verifier: inspec_tests: [test/integration/corretto] inputs: { java_version: "18" } + # OpenJDK Package with multiple versions + - name: multiple-openjdk-pkg + run_list: + - recipe[test::multiple_openjdk_pkg] diff --git a/resources/alternatives.rb b/resources/alternatives.rb index bb5b820a..77035308 100644 --- a/resources/alternatives.rb +++ b/resources/alternatives.rb @@ -35,12 +35,15 @@ next end + Chef::Log.warn "#{alternatives_cmd} --display #{cmd} | grep #{alt_path} | grep 'priority #{priority}$'" alternative_exists_same_priority = shell_out("#{alternatives_cmd} --display #{cmd} | grep #{alt_path} | grep 'priority #{priority}$'").exitstatus == 0 + Chef::Log.warn "#{alternatives_cmd} --display #{cmd} | grep #{alt_path}" alternative_exists = shell_out("#{alternatives_cmd} --display #{cmd} | grep #{alt_path}").exitstatus == 0 # remove alternative if priority is changed and install it with new priority if alternative_exists && !alternative_exists_same_priority converge_by("Removing alternative for #{cmd} with old priority") do Chef::Log.debug "Removing alternative for #{cmd} with old priority" + Chef::Log.warn "#{alternatives_cmd} --remove #{cmd} #{alt_path}" remove_cmd = shell_out("#{alternatives_cmd} --remove #{cmd} #{alt_path}") alternative_exists = false unless remove_cmd.exitstatus == 0 @@ -53,8 +56,10 @@ converge_by("Add alternative for #{cmd}") do Chef::Log.debug "Adding alternative for #{cmd}" if new_resource.reset_alternatives + Chef::Log.warn "rm /var/lib/alternatives/#{cmd}" shell_out("rm /var/lib/alternatives/#{cmd}") end + Chef::Log.warn "#{alternatives_cmd} --install #{bin_path} #{cmd} #{alt_path} #{priority}" install_cmd = shell_out("#{alternatives_cmd} --install #{bin_path} #{cmd} #{alt_path} #{priority}") unless install_cmd.exitstatus == 0 raise(%( install alternative failed )) @@ -64,10 +69,12 @@ # set the alternative if default next unless new_resource.default + Chef::Log.warn "#{alternatives_cmd} --display #{cmd} | grep \"link currently points to #{alt_path}\"" alternative_is_set = shell_out("#{alternatives_cmd} --display #{cmd} | grep \"link currently points to #{alt_path}\"").exitstatus == 0 next if alternative_is_set converge_by("Set alternative for #{cmd}") do Chef::Log.debug "Setting alternative for #{cmd}" + Chef::Log.warn "#{alternatives_cmd} --set #{cmd} #{alt_path}" set_cmd = shell_out("#{alternatives_cmd} --set #{cmd} #{alt_path}") unless set_cmd.exitstatus == 0 raise(%( set alternative failed )) diff --git a/test/fixtures/cookbooks/test/recipes/multiple_openjdk_pkg.rb b/test/fixtures/cookbooks/test/recipes/multiple_openjdk_pkg.rb new file mode 100644 index 00000000..bf9e1488 --- /dev/null +++ b/test/fixtures/cookbooks/test/recipes/multiple_openjdk_pkg.rb @@ -0,0 +1,16 @@ +openjdk_pkg_install '8' do + alternatives_priority 1080 + reset_alternatives false + default false +end + +#openjdk_pkg_install '11' do +# alternatives_priority 1100 +# reset_alternatives false +#end +# +#openjdk_pkg_install '17' do +# alternatives_priority 1700 +# reset_alternatives false +# default false +#end