From 319ce39bb077f2085972d514e4880a59d8be3550 Mon Sep 17 00:00:00 2001 From: Chris Armstrong Date: Fri, 17 Jan 2014 15:26:44 -0800 Subject: [PATCH] Refactor default recipe to better enable wrapper cookbooks --- recipes/compute_paths.rb | 51 +++++++++++++++++++++++++++++++++++++++ recipes/default.rb | 45 +++------------------------------- recipes/purge_packages.rb | 21 ++++++++++++++++ 3 files changed, 75 insertions(+), 42 deletions(-) create mode 100644 recipes/compute_paths.rb create mode 100644 recipes/purge_packages.rb diff --git a/recipes/compute_paths.rb b/recipes/compute_paths.rb new file mode 100644 index 00000000..68316fa7 --- /dev/null +++ b/recipes/compute_paths.rb @@ -0,0 +1,51 @@ +# Cookbook Name:: java +# Recipe:: compute_paths +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Calculate variables that depend on jdk_version +# If you need to override this in an attribute file you must use +# force_default or higher precedence. + +case node['platform_family'] +when "rhel", "fedora" + case node['java']['install_flavor'] + when "oracle" + node.default['java']['java_home'] = "/usr/lib/jvm/java" + else + node.default['java']['java_home'] = "/usr/lib/jvm/java-1.#{node['java']['jdk_version']}.0" + end + 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 "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']}"] +when "windows" + # Do nothing otherwise we will fall through to the else and set java_home to an invalid path, causing the installer to popup a dialog +else + node.default['java']['java_home'] = "/usr/lib/jvm/default-java" + node.default['java']['openjdk_packages'] = ["openjdk-#{node['java']['jdk_version']}-jdk"] +end diff --git a/recipes/default.rb b/recipes/default.rb index f793977e..269abcc8 100644 --- a/recipes/default.rb +++ b/recipes/default.rb @@ -18,48 +18,9 @@ # limitations under the License. # -# Calculate variables that depend on jdk_version -# If you need to override this in an attribute file you must use -# force_default or higher precedence. -case node['platform_family'] -when "rhel", "fedora" - case node['java']['install_flavor'] - when "oracle" - node.default['java']['java_home'] = "/usr/lib/jvm/java" - else - node.default['java']['java_home'] = "/usr/lib/jvm/java-1.#{node['java']['jdk_version']}.0" - end - 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 "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']}"] -when "windows" - # Do nothing otherwise we will fall through to the else and set java_home to an invalid path, causing the installer to popup a dialog -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::compute_paths" include_recipe "java::#{node['java']['install_flavor']}" -# Purge the deprecated Sun Java packages if remove_deprecated_packages is true -%w[sun-java6-jdk sun-java6-bin sun-java6-jre].each do |pkg| - package pkg do - action :purge - only_if { node['java']['remove_deprecated_packages'] } - end +if node['java']['remove_deprecated_packages'] + include_recipe "java::purge_packages" end diff --git a/recipes/purge_packages.rb b/recipes/purge_packages.rb new file mode 100644 index 00000000..d13c081c --- /dev/null +++ b/recipes/purge_packages.rb @@ -0,0 +1,21 @@ +# Cookbook Name:: java +# Recipe:: purge_packages +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Purge the deprecated Sun Java packages if remove_deprecated_packages is true +%w[sun-java6-jdk sun-java6-bin sun-java6-jre].each do |pkg| + package pkg do + action :purge + end +end