From e0337a8ac4986ff0d8a74445efc1b0dfcc7c3650 Mon Sep 17 00:00:00 2001 From: mylons Date: Thu, 31 Oct 2013 12:04:17 -0700 Subject: [PATCH 1/3] something is terribly wrong with this cookbook in it's present state. you can almost never install an alternative version of java once a machine is provisioned once with this book. this addresses my issues with the openjdk install and update recipes. --- libraries/helpers.rb | 19 +++++++++++++++++++ metadata.rb | 2 +- recipes/openjdk.rb | 9 ++++++--- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/libraries/helpers.rb b/libraries/helpers.rb index 3fe5444d..5d31ec6f 100644 --- a/libraries/helpers.rb +++ b/libraries/helpers.rb @@ -34,6 +34,25 @@ def java_location File.join(java_home_parent(@java_home), openjdk_path, 'bin/java') end + def alternatives_priority + if @jdk_version == '6' + # 'accepted' default for java 6 + 1061 + elsif @jdk_version == '7' + # i just made this number up + 1100 + elsif @jdk_version.to_i > 7 + # just a guard against the incoming java 8 + # so this cookbook will actually work for.. new versions of java + 1110 + else + # it's not 6, it's not 7, it's not newer than + # 7, but we probably want to install it, so + # override 6's priority. arbitrary number. + 1062 + end + end + def java_home_parent(java_home) Pathname.new(java_home).parent.to_s end diff --git a/metadata.rb b/metadata.rb index f2b29648..d71eb883 100644 --- a/metadata.rb +++ b/metadata.rb @@ -4,7 +4,7 @@ license "Apache 2.0" description "Installs Java runtime." long_description IO.read(File.join(File.dirname(__FILE__), 'README.md')) -version "1.14.1" +version "1.15.1" recipe "java", "Installs Java runtime" recipe "java::openjdk", "Installs the OpenJDK flavor of Java" diff --git a/recipes/openjdk.rb b/recipes/openjdk.rb index 8e47d3f7..b1365da7 100644 --- a/recipes/openjdk.rb +++ b/recipes/openjdk.rb @@ -19,7 +19,9 @@ # See the License for the specific language governing permissions and # limitations under the License. -java_location = Opscode::OpenJDK.new(node).java_location +jdk = Opscode::OpenJDK.new(node) +java_location = jdk.java_location +alternatives_priority = jdk.alternatives_priority if platform_requires_license_acceptance? file "/opt/local/.dlj_license_accepted" do @@ -38,10 +40,11 @@ if platform_family?('debian', 'rhel', 'fedora') bash 'update-java-alternatives' do code <<-EOH.gsub(/^\s+/, '') - update-alternatives --install /usr/bin/java java #{java_location} 1061 && \ + update-alternatives --install /usr/bin/java java #{java_location} #{alternatives_priority} && \ update-alternatives --set java #{java_location} EOH - only_if "update-alternatives --display java | grep '#{java_location} - priority 1061'" + # skip IF it's THERE and has this priority + not_if "update-alternatives --display java | grep '#{java_location} - priority #{alternatives_priority}'" end end From 232239fd4c545102a2bfa4f73430f342fbbd9f83 Mon Sep 17 00:00:00 2001 From: mylons Date: Fri, 1 Nov 2013 15:25:00 -0700 Subject: [PATCH 2/3] moving run time parameters into default recipe. without doing this, or moving the parameters out of the default you cannot change the node[:java][:openjdk_packages] in a recipe. --- attributes/default.rb | 31 ------------------------------- metadata.rb | 2 +- recipes/default.rb | 31 +++++++++++++++++++++++++++++++ 3 files changed, 32 insertions(+), 32 deletions(-) diff --git a/attributes/default.rb b/attributes/default.rb index 09cc1690..d3335dc2 100644 --- a/attributes/default.rb +++ b/attributes/default.rb @@ -27,37 +27,6 @@ default['java']['openjdk_packages'] = [] default['java']['accept_license_agreement'] = false -case node['platform_family'] -when "rhel", "fedora" - default['java']['java_home'] = "/usr/lib/jvm/java" - default['java']['openjdk_packages'] = ["java-1.#{node['java']['jdk_version']}.0-openjdk", "java-1.#{node['java']['jdk_version']}.0-openjdk-devel"] -when "freebsd" - default['java']['java_home'] = "/usr/local/openjdk#{node['java']['jdk_version']}" - default['java']['openjdk_packages'] = ["openjdk#{node['java']['jdk_version']}"] -when "arch" - default['java']['java_home'] = "/usr/lib/jvm/java-#{node['java']['jdk_version']}-openjdk" - default['java']['openjdk_packages'] = ["openjdk#{node['java']['jdk_version']}}"] -when "windows" - default['java']['install_flavor'] = "windows" - default['java']['windows']['url'] = nil - default['java']['windows']['checksum'] = nil - default['java']['windows']['package_name'] = "Java(TM) SE Development Kit 7 (64-bit)" -when "debian" - default['java']['java_home'] = "/usr/lib/jvm/java-#{node['java']['jdk_version']}-#{node['java']['install_flavor']}" - # Newer Debian & Ubuntu adds the architecture to the path - if node['platform'] == 'debian' && Chef::VersionConstraint.new(">= 7.0").include?(node['platform_version']) || - node['platform'] == 'ubuntu' && Chef::VersionConstraint.new(">= 12.04").include?(node['platform_version']) - default['java']['java_home'] = "#{node['java']['java_home']}-#{node['kernel']['machine'] == 'x86_64' ? 'amd64' : 'i386'}" - end - default['java']['openjdk_packages'] = ["openjdk-#{node['java']['jdk_version']}-jdk", "openjdk-#{node['java']['jdk_version']}-jre-headless"] -when "smartos" - default['java']['java_home'] = "/opt/local/java/sun6" - default['java']['openjdk_packages'] = ["sun-jdk#{node['java']['jdk_version']}", "sun-jre#{node['java']['jdk_version']}"] -else - default['java']['java_home'] = "/usr/lib/jvm/default-java" - default['java']['openjdk_packages'] = ["openjdk-#{node['java']['jdk_version']}-jdk"] -end - case node['java']['install_flavor'] when 'ibm' default['java']['ibm']['url'] = nil diff --git a/metadata.rb b/metadata.rb index 07acb471..54ffc9e0 100644 --- a/metadata.rb +++ b/metadata.rb @@ -4,7 +4,7 @@ license "Apache 2.0" description "Installs Java runtime." long_description IO.read(File.join(File.dirname(__FILE__), 'README.md')) -version "0.15.4" +version "0.15.5" recipe "java", "Installs Java runtime" recipe "java::openjdk", "Installs the OpenJDK flavor of Java" diff --git a/recipes/default.rb b/recipes/default.rb index 574aecde..c2720391 100644 --- a/recipes/default.rb +++ b/recipes/default.rb @@ -18,6 +18,37 @@ # limitations under the License. # +case node['platform_family'] +when "rhel", "fedora" + node.default['java']['java_home'] = "/usr/lib/jvm/java" + node.default['java']['openjdk_packages'] = ["java-1.#{node['java']['jdk_version']}.0-openjdk", "java-1.#{node['java']['jdk_version']}.0-openjdk-devel"] +when "freebsd" + node.default['java']['java_home'] = "/usr/local/openjdk#{node['java']['jdk_version']}" + node.default['java']['openjdk_packages'] = ["openjdk#{node['java']['jdk_version']}"] +when "arch" + node.default['java']['java_home'] = "/usr/lib/jvm/java-#{node['java']['jdk_version']}-openjdk" + node.default['java']['openjdk_packages'] = ["openjdk#{node['java']['jdk_version']}}"] +when "windows" + node.default['java']['install_flavor'] = "windows" + node.default['java']['windows']['url'] = nil + node.default['java']['windows']['checksum'] = nil + node.default['java']['windows']['package_name'] = "Java(TM) SE Development Kit 7 (64-bit)" +when "debian" + node.default['java']['java_home'] = "/usr/lib/jvm/java-#{node['java']['jdk_version']}-#{node['java']['install_flavor']}" + # Newer Debian & Ubuntu adds the architecture to the path + if node['platform'] == 'debian' && Chef::VersionConstraint.new(">= 7.0").include?(node['platform_version']) || + node['platform'] == 'ubuntu' && Chef::VersionConstraint.new(">= 12.04").include?(node['platform_version']) + node.default['java']['java_home'] = "#{node['java']['java_home']}-#{node['kernel']['machine'] == 'x86_64' ? 'amd64' : 'i386'}" + end + node.default['java']['openjdk_packages'] = ["openjdk-#{node['java']['jdk_version']}-jdk", "openjdk-#{node['java']['jdk_version']}-jre-headless"] +when "smartos" + node.default['java']['java_home'] = "/opt/local/java/sun6" + node.default['java']['openjdk_packages'] = ["sun-jdk#{node['java']['jdk_version']}", "sun-jre#{node['java']['jdk_version']}"] +else + node.default['java']['java_home'] = "/usr/lib/jvm/default-java" + node.default['java']['openjdk_packages'] = ["openjdk-#{node['java']['jdk_version']}-jdk"] +end + include_recipe "java::#{node['java']['install_flavor']}" # Purge the deprecated Sun Java packages if remove_deprecated_packages is true From a8dda89e13bb5f1f181f5dc31d42235dff167c17 Mon Sep 17 00:00:00 2001 From: mylons Date: Fri, 1 Nov 2013 15:58:36 -0700 Subject: [PATCH 3/3] oops in the version --- metadata.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/metadata.rb b/metadata.rb index 54ffc9e0..b9e690c8 100644 --- a/metadata.rb +++ b/metadata.rb @@ -4,7 +4,7 @@ license "Apache 2.0" description "Installs Java runtime." long_description IO.read(File.join(File.dirname(__FILE__), 'README.md')) -version "0.15.5" +version "1.15.2" recipe "java", "Installs Java runtime" recipe "java::openjdk", "Installs the OpenJDK flavor of Java"