Do not vendor cookbooks using Berkshelf anymore
Instead, use the Berkshelf support in knife-solo and the vagrant-berkshelf plugin on Vagrant
This commit is contained in:
@@ -1,48 +0,0 @@
|
||||
module GitCookbook
|
||||
module Helpers
|
||||
# linux packages default to distro offering
|
||||
def parsed_package_name
|
||||
return new_resource.package_name if new_resource.package_name
|
||||
return 'git-core' if node['platform'] == 'ubuntu' && node['platform_version'].to_f < 10.10
|
||||
return 'developer/versioning/git' if node['platform'] == 'omnios'
|
||||
return 'scmgit' if node['platform'] == 'smartos'
|
||||
'git'
|
||||
end
|
||||
|
||||
def parsed_package_version
|
||||
return new_resource.package_version if new_resource.package_version
|
||||
end
|
||||
|
||||
# source
|
||||
def parsed_source_url
|
||||
return new_resource.source_url if new_resource.source_url
|
||||
"https://nodeload.github.com/git/git/tar.gz/v#{new_resource.source_version}"
|
||||
end
|
||||
|
||||
def parsed_source_checksum
|
||||
return new_resource.source_checksum if new_resource.source_checksum
|
||||
'8d53703d75890c03e26a915c7af3b7b98d8cfb94382f685a9bcbee1eeaec47b4' # 2.7.4 tarball
|
||||
end
|
||||
|
||||
# windows
|
||||
def parsed_windows_display_name
|
||||
return new_resource.windows_display_name if new_resource.windows_display_name
|
||||
"Git version #{parsed_windows_package_version}"
|
||||
end
|
||||
|
||||
def parsed_windows_package_version
|
||||
return new_resource.windows_package_version if new_resource.windows_package_version
|
||||
'2.7.4'
|
||||
end
|
||||
|
||||
def parsed_windows_package_url
|
||||
return new_resource.windows_package_url if new_resource.windows_package_url
|
||||
"https://github.com/git-for-windows/git/releases/download/v%#{parsed_windows_package_version}.windows.1/Git-%#{parsed_windows_package_version}-32-bit.exe"
|
||||
end
|
||||
|
||||
def parsed_windows_package_checksum
|
||||
return new_resource.windows_package_checksum if new_resource.windows_package_checksum
|
||||
'49601d5102df249d6f866ecfa1eea68eb5672acc1dbb7e4051099e792f6da5fc'
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,16 +0,0 @@
|
||||
if defined?(ChefSpec)
|
||||
ChefSpec.define_matcher(:git_client)
|
||||
ChefSpec.define_matcher(:git_service)
|
||||
|
||||
def set_git_config(resource_name) # rubocop:disable Style/AccessorMethodName
|
||||
ChefSpec::Matchers::ResourceMatcher.new(:git_config, :set, resource_name)
|
||||
end
|
||||
|
||||
def install_git_client(resource_name)
|
||||
ChefSpec::Matchers::ResourceMatcher.new(:git_client, :install, resource_name)
|
||||
end
|
||||
|
||||
def install_git_service(resource_name)
|
||||
ChefSpec::Matchers::ResourceMatcher.new(:git_service, :install, resource_name)
|
||||
end
|
||||
end
|
||||
@@ -1,13 +0,0 @@
|
||||
class Chef
|
||||
class Provider
|
||||
class GitClient < Chef::Provider::LWRPBase
|
||||
use_inline_resources
|
||||
|
||||
def whyrun_supported?
|
||||
true
|
||||
end
|
||||
|
||||
include GitCookbook::Helpers
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,26 +0,0 @@
|
||||
class Chef
|
||||
class Provider
|
||||
class GitClient
|
||||
class Osx < Chef::Provider::GitClient
|
||||
include Chef::DSL::IncludeRecipe
|
||||
|
||||
provides :git_client, os: 'mac_os_x'
|
||||
|
||||
action :install do
|
||||
dmg_package 'GitOSX-Installer' do
|
||||
app new_resource.osx_dmg_app_name
|
||||
package_id new_resource.osx_dmg_package_id
|
||||
volumes_dir new_resource.osx_dmg_volumes_dir
|
||||
source new_resource.osx_dmg_url
|
||||
checksum new_resource.osx_dmg_checksum
|
||||
type 'pkg'
|
||||
action :install
|
||||
end
|
||||
end
|
||||
|
||||
action :delete do
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,27 +0,0 @@
|
||||
class Chef
|
||||
class Provider
|
||||
class GitClient
|
||||
class Package < Chef::Provider::GitClient
|
||||
include Chef::DSL::IncludeRecipe
|
||||
|
||||
provides :git_client, os: 'linux'
|
||||
|
||||
action :install do
|
||||
# FIXME: rhel 5
|
||||
include_recipe 'yum-epel' if node['platform_family'] == 'rhel' && node['platform_version'].to_i == 5
|
||||
|
||||
# Software installation
|
||||
package "#{new_resource.name} :create #{parsed_package_name}" do
|
||||
package_name parsed_package_name
|
||||
version parsed_package_version
|
||||
action new_resource.package_action
|
||||
action :install
|
||||
end
|
||||
end
|
||||
|
||||
action :delete do
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,66 +0,0 @@
|
||||
class Chef
|
||||
class Provider
|
||||
class GitClient
|
||||
class Source < Chef::Provider::GitClient
|
||||
include Chef::DSL::IncludeRecipe
|
||||
|
||||
action :install do
|
||||
return "#{node['platform']} is not supported by the #{cookbook_name}::#{recipe_name} recipe" unless platform_family?('rhel', 'suse', 'fedora', 'debian')
|
||||
|
||||
include_recipe 'build-essential'
|
||||
include_recipe 'yum-epel' if node['platform_family'] == 'rhel' && node['platform_version'].to_i == 5
|
||||
|
||||
# move this to attributes.
|
||||
case node['platform_family']
|
||||
when 'fedora'
|
||||
pkgs = %w(tar openssl-devel libcurl-devel expat-devel perl-ExtUtils-MakeMaker)
|
||||
when 'rhel'
|
||||
case node['platform_version'].to_i
|
||||
when 5
|
||||
pkgs = %w(tar expat-devel gettext-devel curl-devel openssl-devel zlib-devel)
|
||||
pkgs += %w( pcre-devel ) if new_resource.source_use_pcre
|
||||
when 6, 7
|
||||
pkgs = %w(tar expat-devel gettext-devel libcurl-devel openssl-devel perl-ExtUtils-MakeMaker zlib-devel)
|
||||
pkgs += %w( pcre-devel ) if new_resource.source_use_pcre
|
||||
else
|
||||
pkgs = %w(expat-devel gettext-devel curl-devel openssl-devel perl-ExtUtils-MakeMaker zlib-devel) if node['platform'] == 'amazon'
|
||||
pkgs += %w( pcre-devel ) if new_resource.source_use_pcre
|
||||
end
|
||||
when 'debian'
|
||||
pkgs = %w(libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev)
|
||||
pkgs += %w( libpcre3-dev ) if new_resource.source_use_pcre
|
||||
when 'suse'
|
||||
pkgs = %w(tar libcurl-devel libexpat-devel gettext-tools zlib-devel libopenssl-devel)
|
||||
pkgs += %w( libpcre2-devel ) if new_resource.source_use_pcre
|
||||
end
|
||||
|
||||
package pkgs
|
||||
|
||||
# reduce line-noise-eyness
|
||||
remote_file "#{Chef::Config['file_cache_path']}/git-#{new_resource.source_version}.tar.gz" do
|
||||
source parsed_source_url # helpers.rb
|
||||
checksum parsed_source_checksum # helpers.rb
|
||||
mode '0644'
|
||||
not_if "test -f #{Chef::Config['file_cache_path']}/git-#{new_resource.source_version}.tar.gz"
|
||||
end
|
||||
|
||||
# reduce line-noise-eyness
|
||||
execute "Extracting and Building Git #{new_resource.source_version} from Source" do
|
||||
cwd Chef::Config['file_cache_path']
|
||||
additional_make_params = ''
|
||||
additional_make_params += 'USE_LIBPCRE=1' if new_resource.source_use_pcre
|
||||
command <<-COMMAND
|
||||
(mkdir git-#{new_resource.source_version} && tar -zxf git-#{new_resource.source_version}.tar.gz -C git-#{new_resource.source_version} --strip-components 1)
|
||||
(cd git-#{new_resource.source_version} && make prefix=#{new_resource.source_prefix} #{additional_make_params} install)
|
||||
COMMAND
|
||||
not_if "git --version | grep #{new_resource.source_version}"
|
||||
not_if "#{new_resource.source_prefix}/bin/git --version | grep #{new_resource.source_version}"
|
||||
end
|
||||
end
|
||||
|
||||
action :delete do
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,49 +0,0 @@
|
||||
# frozen_string_literal: true
|
||||
class Chef
|
||||
class Provider
|
||||
class GitClient
|
||||
class Windows < Chef::Provider::GitClient
|
||||
include Chef::DSL::IncludeRecipe
|
||||
|
||||
provides :git_client, os: 'windows'
|
||||
|
||||
action :install do
|
||||
windows_package parsed_windows_display_name do
|
||||
action :install
|
||||
source parsed_windows_package_url
|
||||
checksum parsed_windows_package_checksum
|
||||
installer_type :inno
|
||||
end
|
||||
|
||||
# Git is installed to Program Files (x86) on 64-bit machines and
|
||||
# 'Program Files' on 32-bit machines
|
||||
PROGRAM_FILES = if node['git']['architecture'] == '32'
|
||||
ENV['ProgramFiles(x86)'] || ENV['ProgramFiles']
|
||||
else
|
||||
ENV['ProgramW6432'] || ENV['ProgramFiles']
|
||||
end
|
||||
GIT_PATH = "#{PROGRAM_FILES}\\Git\\Cmd".freeze
|
||||
|
||||
# COOK-3482 - windows_path resource doesn't change the current process
|
||||
# environment variables. Therefore, git won't actually be on the PATH
|
||||
# until the next chef-client run
|
||||
ruby_block 'Add Git Path' do
|
||||
block do
|
||||
ENV['PATH'] += ";#{GIT_PATH}"
|
||||
end
|
||||
not_if { ENV['PATH'] =~ /GIT_PATH/ }
|
||||
action :nothing
|
||||
end
|
||||
|
||||
windows_path GIT_PATH do
|
||||
notifies :create, 'ruby_block[Add Git Path]', :immediately
|
||||
action :add
|
||||
end
|
||||
end
|
||||
|
||||
action :delete do
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,57 +0,0 @@
|
||||
class Chef
|
||||
class Provider
|
||||
class GitClient < Chef::Provider::LWRPBase
|
||||
use_inline_resources
|
||||
|
||||
def whyrun_supported?
|
||||
true
|
||||
end
|
||||
|
||||
include Chef::DSL::IncludeRecipe
|
||||
include GitCookbook::Helpers
|
||||
|
||||
provides :git_service, os: 'linux'
|
||||
|
||||
action :create do
|
||||
return "#{node['platform']} is not supported by the #{cookbook_name}::#{recipe_name} recipe" if node['platform'] == 'windows'
|
||||
|
||||
include_recipe 'git'
|
||||
|
||||
directory new_resource.service_base_path do
|
||||
owner 'root'
|
||||
group 'root'
|
||||
mode '0755'
|
||||
end
|
||||
|
||||
case node['platform_family']
|
||||
when 'debian'
|
||||
package 'xinetd'
|
||||
when 'rhel'
|
||||
package 'git-daemon'
|
||||
else
|
||||
log 'Platform requires setting up a git daemon service script.'
|
||||
log "Hint: /usr/bin/git daemon --export-all --user=nobody --group=daemon --base-path=#{new_resource.service_base_path}"
|
||||
return
|
||||
end
|
||||
|
||||
template '/etc/xinetd.d/git' do
|
||||
backup false
|
||||
source 'git-xinetd.d.erb'
|
||||
owner 'root'
|
||||
group 'root'
|
||||
mode '0644'
|
||||
variables(
|
||||
git_daemon_binary: value_for_platform_family(
|
||||
'debian' => '/usr/lib/git-core/git-daemon',
|
||||
'rhel' => '/usr/libexec/git-core/git-daemon'
|
||||
)
|
||||
)
|
||||
end
|
||||
|
||||
service 'xinetd' do
|
||||
action [:enable, :restart]
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,55 +0,0 @@
|
||||
class Chef
|
||||
class Provider
|
||||
class GitClient < Chef::Provider::LWRPBase
|
||||
use_inline_resources
|
||||
|
||||
def whyrun_supported?
|
||||
true
|
||||
end
|
||||
|
||||
include Chef::DSL::IncludeRecipe
|
||||
include GitCookbook::Helpers
|
||||
|
||||
action :create do
|
||||
return "#{node['platform']} is not supported by the #{cookbook_name}::#{recipe_name} recipe" if node['platform'] == 'windows'
|
||||
|
||||
include_recipe 'git'
|
||||
|
||||
directory new_resource.service_base_path do
|
||||
owner 'root'
|
||||
group 'root'
|
||||
mode '0755'
|
||||
end
|
||||
|
||||
case node['platform_family']
|
||||
when 'debian'
|
||||
package 'xinetd'
|
||||
when 'rhel'
|
||||
package 'git-daemon'
|
||||
else
|
||||
log 'Platform requires setting up a git daemon service script.'
|
||||
log "Hint: /usr/bin/git daemon --export-all --user=nobody --group=daemon --base-path=#{new_resource.service_base_path}"
|
||||
return
|
||||
end
|
||||
|
||||
template '/etc/xinetd.d/git' do
|
||||
backup false
|
||||
source 'git-xinetd.d.erb'
|
||||
owner 'root'
|
||||
group 'root'
|
||||
mode '0644'
|
||||
variables(
|
||||
git_daemon_binary: value_for_platform_family(
|
||||
'debian' => '/usr/lib/git-core/git-daemon',
|
||||
'rhel' => '/usr/libexec/git-core/git-daemon'
|
||||
)
|
||||
)
|
||||
end
|
||||
|
||||
service 'xinetd' do
|
||||
action [:enable, :restart]
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,38 +0,0 @@
|
||||
require 'chef/resource/lwrp_base'
|
||||
|
||||
class Chef
|
||||
class Resource
|
||||
class GitClient < Chef::Resource::LWRPBase
|
||||
self.resource_name = :git_client
|
||||
actions :install, :remove
|
||||
default_action :install
|
||||
|
||||
provides :git_client
|
||||
|
||||
# used by source providers
|
||||
attribute :source_checksum, kind_of: String, default: nil
|
||||
attribute :source_prefix, kind_of: String, default: '/usr/local'
|
||||
attribute :source_url, kind_of: String, default: nil
|
||||
attribute :source_use_pcre, kind_of: [TrueClass, FalseClass], default: false
|
||||
attribute :source_version, kind_of: String, default: nil
|
||||
|
||||
# used by linux package providers
|
||||
attribute :package_name, kind_of: String, default: nil
|
||||
attribute :package_version, kind_of: String, default: nil
|
||||
attribute :package_action, kind_of: Symbol, default: :install
|
||||
|
||||
# used by OSX package providers
|
||||
attribute :osx_dmg_app_name, kind_of: String, default: 'git-2.7.1-intel-universal-mavericks'
|
||||
attribute :osx_dmg_package_id, kind_of: String, default: 'GitOSX.Installer.git271.git.pkg'
|
||||
attribute :osx_dmg_volumes_dir, kind_of: String, default: 'Git 2.7.1 Mavericks Intel Universal'
|
||||
attribute :osx_dmg_url, kind_of: String, default: 'http://sourceforge.net/projects/git-osx-installer/files/git-2.7.1-intel-universal-mavericks.dmg/download'
|
||||
attribute :osx_dmg_checksum, kind_of: String, default: '260b32e8877eb72d07807b26163aeec42e2d98c350f32051ab1ff0cc33626440' # 2.7.1
|
||||
|
||||
# used by Windows providers
|
||||
attribute :windows_display_name, kind_of: String, default: nil
|
||||
attribute :windows_package_url, kind_of: String, default: nil
|
||||
attribute :windows_package_checksum, kind_of: String, default: nil
|
||||
attribute :windows_package_version, kind_of: String, default: nil
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,16 +0,0 @@
|
||||
require 'chef/resource/lwrp_base'
|
||||
|
||||
class Chef
|
||||
class Resource
|
||||
class GitService < Chef::Resource::LWRPBase
|
||||
self.resource_name = :git_service
|
||||
actions :create
|
||||
default_action :create
|
||||
|
||||
provides :git_service
|
||||
|
||||
# used by the service xinetd provider
|
||||
attribute :service_base_path, kind_of: String, default: '/srv/git'
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user