Skip to content
Open
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
20 changes: 13 additions & 7 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,16 +24,22 @@ jobs:
matrix:
os:
- almalinux-8
- amazonlinux-2
- centos-7
- centos-stream-8
- debian-10
- debian-11
- almalinux-9
- almalinux-10
- amazonlinux-2023
- centos-stream-9
- centos-stream-10
- debian-12
- debian-13
- fedora-latest
- opensuse-leap-15
- oraclelinux-8
- oraclelinux-9
- rockylinux-8
- ubuntu-1804
- ubuntu-2004
- rockylinux-9
- rockylinux-10
- ubuntu-2204
- ubuntu-2404
suite:
- default
fail-fast: false
Expand Down
47 changes: 0 additions & 47 deletions attributes/default.rb

This file was deleted.

Binary file added files/default/configure_fixture.tar.gz
Binary file not shown.
5 changes: 0 additions & 5 deletions kitchen.dokken.yml
Original file line number Diff line number Diff line change
Expand Up @@ -82,11 +82,6 @@ platforms:
image: dokken/rockylinux-10
pid_one_command: /usr/lib/systemd/systemd

- name: ubuntu-20.04
driver:
image: dokken/ubuntu-20.04
pid_one_command: /bin/systemd

- name: ubuntu-22.04
driver:
image: dokken/ubuntu-22.04
Expand Down
6 changes: 4 additions & 2 deletions kitchen.global.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,18 @@ verifier:
platforms:
- name: almalinux-8
- name: almalinux-9
- name: almalinux-10
- name: amazonlinux-2023
- name: centos-stream-9
- name: debian-11
- name: centos-stream-10
- name: debian-12
- name: debian-13
- name: fedora-latest
- name: opensuse-leap-15
- name: oraclelinux-8
- name: oraclelinux-9
- name: rockylinux-8
- name: rockylinux-9
- name: ubuntu-20.04
- name: rockylinux-10
- name: ubuntu-22.04
- name: ubuntu-24.04
37 changes: 14 additions & 23 deletions kitchen.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,41 +12,32 @@ verifier:

platforms:
- name: almalinux-8
- name: amazonlinux-2
- name: centos-7
- name: centos-stream-8
- name: debian-10
- name: debian-11
- name: almalinux-9
- name: almalinux-10
- name: amazonlinux-2023
- name: centos-stream-9
- name: centos-stream-10
- name: debian-12
- name: debian-13
- name: fedora-latest
- name: freebsd-12
- name: opensuse-leap-15
- name: oraclelinux-8
- name: oraclelinux-9
- name: rockylinux-8
- name: ubuntu-18.04
- name: ubuntu-20.04
- name: windows-2012r2
driver:
box: tas50/windows_2012r2
- name: windows-2016
driver_config:
box: tas50/windows_2016
- name: windows-2019
driver_config:
box: tas50/windows_2019
- name: rockylinux-9
- name: rockylinux-10
- name: ubuntu-22.04
- name: ubuntu-24.04
- name: freebsd-13

suites:
- name: default
run_list:
- recipe[ark_spec]
excludes:
- windows-2012r2
- windows-2016
- windows-2019
- windows-latest
- name: windows
run_list:
- recipe[ark_spec::windows]
includes:
- windows-2012r2
- windows-2016
- windows-2019
- windows-latest
34 changes: 13 additions & 21 deletions libraries/default.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
require_relative 'platform_defaults'
require_relative 'platform_specific_builders'
require_relative 'resource_deprecations'
require_relative 'resource_defaults'
Expand Down Expand Up @@ -44,34 +45,25 @@ def defaults
end

def set_paths
new_resource.extension = defaults.extension
new_resource.prefix_bin = defaults.prefix_bin
new_resource.prefix_root = defaults.prefix_root
new_resource.home_dir = defaults.home_dir
new_resource.version = defaults.version
new_resource.owner = defaults.owner

# TODO: what happens when the path is already set --
# with the current logic we overwrite it
# if you are in windows we overwrite it
# otherwise we overwrite it with the root/name-version
new_resource.path = defaults.path
new_resource.release_file = defaults.release_file
new_resource.extension ||= defaults.extension
new_resource.prefix_bin ||= defaults.prefix_bin
new_resource.prefix_root ||= defaults.prefix_root
new_resource.home_dir ||= defaults.home_dir
new_resource.version ||= defaults.version
new_resource.owner ||= defaults.owner
new_resource.path ||= defaults.path
new_resource.release_file = defaults.release_file if new_resource.release_file.to_s.empty?
end

def set_put_paths
new_resource.extension = defaults.extension

# TODO: Should we be setting the prefix_root -
# as the prefix_root could be used in the path_with_version
# new_resource.prefix_root = default.prefix_root
new_resource.extension ||= defaults.extension
new_resource.path = defaults.path_without_version
new_resource.release_file = defaults.release_file_without_version
new_resource.release_file = defaults.release_file_without_version if new_resource.release_file.to_s.empty?
end

def set_dump_paths
new_resource.extension = defaults.extension
new_resource.release_file = defaults.release_file_without_version
new_resource.extension ||= defaults.extension
new_resource.release_file = defaults.release_file_without_version if new_resource.release_file.to_s.empty?
end

def unpack_command
Expand Down
65 changes: 65 additions & 0 deletions libraries/platform_defaults.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
module Ark
module PlatformDefaults
module_function

def prefix_root
'/usr/local'
end

def prefix_bin
'/usr/local/bin'
end

def prefix_home
'/usr/local'
end

def version
'1'
end

def package_dependencies(node)
return [] if platform_family?(node, 'windows', 'mac_os_x')

pkgs = %w(libtool autoconf)
pkgs += %w(ca-certificates) unless platform_family?(node, 'freebsd') || platform?(node, 'smartos')
pkgs += %w(make) unless platform_family?(node, 'freebsd')
pkgs += %w(unzip rsync gcc)
pkgs += %w(autogen) unless platform_family?(node, 'rhel', 'fedora', 'suse', 'amazon')
pkgs += %w(gtar) if platform?(node, 'freebsd', 'smartos')
pkgs += %w(gmake) if platform?(node, 'freebsd')

if platform_family?(node, 'rhel', 'suse', 'amazon')
pkgs += if node['platform_version'].to_i >= 7
%w(xz bzip2 tar)
else
%w(xz-lzma-compat bzip2 tar)
end
elsif platform_family?(node, 'fedora')
pkgs += %w(xz-lzma-compat bzip2 tar)
end

pkgs += %w(bzip2 xz-utils shtool pkg-config) if platform_family?(node, 'debian')
pkgs
end

def tar_binary(node)
case node['platform_family']
when 'mac_os_x', 'freebsd'
'/usr/bin/tar'
when 'smartos'
'/bin/gtar'
else
platform?(node, 'smartos') ? '/bin/gtar' : '/bin/tar'
end
end

def platform_family?(node, *families)
families.include?(node['platform_family'])
end

def platform?(node, *platforms)
platforms.include?(node['platform'])
end
end
end
43 changes: 15 additions & 28 deletions libraries/resource_defaults.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,32 +5,31 @@ def extension
end

def prefix_bin
resource.prefix_bin || prefix_bin_from_node_in_run_context
resource.prefix_bin || ::Ark::PlatformDefaults.prefix_bin
end

def prefix_root
resource.prefix_root || prefix_root_from_node_in_run_context
resource.prefix_root || ::Ark::PlatformDefaults.prefix_root
end

def home_dir
if resource.home_dir.nil? || resource.home_dir.empty?
prefix_home = resource.prefix_home || prefix_home_from_node_in_run_context
prefix_home = resource.prefix_home || ::Ark::PlatformDefaults.prefix_home
::File.join(prefix_home, resource.name)
else
resource.home_dir
end
end

def version
resource.version || default_version
resource.version || ::Ark::PlatformDefaults.version
end

def path
if windows?
resource.win_install_dir
else
::File.join(resource.prefix_root, "#{resource.name}-#{resource.version}")
end
return resource.path unless resource.path.nil? || resource.path.empty?
return resource.win_install_dir if windows?

::File.join(prefix_root, "#{resource.name}-#{version}")
end

def owner
Expand All @@ -42,16 +41,20 @@ def windows?
end

def path_without_version
partial_path = resource.path || prefix_root_from_node_in_run_context
partial_path = resource.path || prefix_root
::File.join(partial_path, resource.name)
end

def release_file
release_filename = "#{resource.name}-#{resource.version}.#{resource.extension}"
return resource.release_file unless resource.release_file.nil? || resource.release_file.empty?

release_filename = "#{resource.name}-#{version}.#{resource.extension}"
::File.join(file_cache_path, release_filename)
end

def release_file_without_version
return resource.release_file unless resource.release_file.nil? || resource.release_file.empty?

release_filename = "#{resource.name}.#{resource.extension}"
::File.join(file_cache_path, release_filename)
end
Expand All @@ -77,22 +80,6 @@ def generate_extension_from_url(url)
Regexp.last_match(2)
end

def prefix_bin_from_node_in_run_context
node_in_run_context['ark']['prefix_bin']
end

def prefix_root_from_node_in_run_context
node_in_run_context['ark']['prefix_root']
end

def prefix_home_from_node_in_run_context
node_in_run_context['ark']['prefix_home']
end

def default_version
'1'
end

def default_owner
if windows?
wmi_property_from_query(:name, "select * from Win32_UserAccount where sid like 'S-1-5-21-%-500' and LocalAccount=True")
Expand All @@ -104,7 +91,7 @@ def default_owner
def wmi_property_from_query(wmi_property, wmi_query)
@wmi = ::WIN32OLE.connect('winmgmts://')
result = @wmi.ExecQuery(wmi_query)
return unless result.each.count > 0
return unless result.each.any?
result.each.next.send(wmi_property)
end

Expand Down
3 changes: 2 additions & 1 deletion libraries/sevenzip_command_builder.rb
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,8 @@ def sevenzip_command
end

def sevenzip_binary
@tar_binary ||= "\"#{node['ark']['sevenzip_binary'] || sevenzip_path_from_registry}\""
binary = resource.sevenzip_binary if resource.respond_to?(:sevenzip_binary)
@tar_binary ||= "\"#{binary || sevenzip_path_from_registry}\""
end

def sevenzip_path_from_registry
Expand Down
Loading
Loading