Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fixes update-alternatives for openjdk installs #95

Merged
merged 5 commits into from
Dec 15, 2013
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 0 additions & 31 deletions attributes/default.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
19 changes: 19 additions & 0 deletions libraries/helpers.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
31 changes: 31 additions & 0 deletions recipes/default.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
9 changes: 6 additions & 3 deletions recipes/openjdk.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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

Expand Down