-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathpassenger.rb
107 lines (96 loc) · 4.94 KB
/
passenger.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
define :build_passenger, version: nil, ruby_version: nil, repository: nil, ruby_dependency: nil do
include_recipe 'pkg-build::deps'
ruby_block 'Detect omnibus ruby' do
block do
if node['languages']['ruby']['ruby_bin'].include?('/opt/chef')
raise 'Cannot build passenger against omnibus Chef Ruby installation!'
end
end
not_if do
node['pkg_build']['passenger']['allow_omnibus_chef_ruby']
end
end
if node['pkg_build']['use_pkg_build_ruby'] && params[:ruby_dependency].to_s == 'pkg_build_ruby'
params[:ruby_dependency] = PkgBuild::Ruby.ruby_name(node, params[:ruby_version])
end
# TODO: Move these out to attributes
%w(libcurl4-gnutls-dev apache2 apache2-prefork-dev).each do |dep_pkg|
package dep_pkg
end
# define names and prefixes as required
libpassenger_name = PkgBuild::Ruby.gem_name(node, 'libapache2-mod-passenger', params[:ruby_version])
passenger_gem_name = PkgBuild::Ruby.gem_name(node, 'passenger', params[:ruby_version])
gem_prefix = node['pkg_build']['gems']['dir'] || node['languages']['ruby']['gems_dir']
pass_prefix = "gems/passenger-#{params[:version]}"
gem_version = Gem::Version.new(params[:version])
apache_mod_path = if gem_version.segments.first < 4
'ext/apache2/mod_passenger.so'
elsif gem_version.segments.first == 4 && gem_version.segments[2] < 10
'libout/apache2/mod_passenger.so'
else
'buildout/apache2/mod_passenger.so'
end
builder_dir "passenger-#{params[:version]}" do
init_command "#{node['pkg_build']['gems']['exec']} install --install-dir . --no-ri --no-rdoc --ignore-dependencies -E --version #{params[:version]} passenger"
suffix_cwd pass_prefix
commands [
"#{node['pkg_build']['rake_bin']} apache2",
'mkdir -p $PKG_DIR/libmod/etc/apache2/mods-available',
"mkdir -p $PKG_DIR/libmod/#{node['pkg_build']['passenger']['root']}/apache2/modules",
"mkdir -p $PKG_DIR/libmod/#{node['pkg_build']['passenger']['root']}/phusion-passenger",
"cp #{apache_mod_path} $PKG_DIR/libmod/#{node['pkg_build']['passenger']['root']}/apache2/modules",
"echo \"<IfModule mod_passenger.c>\\n PassengerRoot #{node['pkg_build']['gems']['dir']}/#{pass_prefix}\n PassengerRuby #{node['pkg_build']['ruby_bin']}\\n</IfModule>\\n\" > $PKG_DIR/libmod/etc/apache2/mods-available/passenger.conf",
"echo \"LoadModule passenger_module #{node['pkg_build']['passenger']['root']}/apache2/modules/mod_passenger.so\" > $PKG_DIR/libmod/etc/apache2/mods-available/passenger.load",
"mkdir -p $PKG_DIR/gem/#{node['pkg_build']['gems']['dir']}",
"cp -a ../../gems $PKG_DIR/gem/#{node['pkg_build']['gems']['dir']}",
"cp -a ../../specifications $PKG_DIR/gem/#{node['pkg_build']['gems']['dir']}",
"cp -a ../../bin $PKG_DIR/gem/#{node['pkg_build']['ruby_bin_dir']}",
]
end
conflict_versions = []
if params[:multi_rubies]
conflict_versions = params[:multi_rubies].map do |version|
unless version == params[:ruby_version]
[node['pkg_build']['pkg_prefix'], 'rubygem', version].compact.join('-')
end
end.compact
end
if node['pkg_build']['replace_deprecated']
gem_conflicts = conflict_versions + [[node['pkg_build']['pkg_prefix'], 'rubygem'].compact.join('-')]
lib_conflicts = conflict_versions + [node['pkg_build']['pkg_prefix']]
else
gem_conflicts = lib_conflicts = conflict_versions
end
deps_resource = fpm_tng_gemdeps 'passenger' do
gem_fix_name false
gem_package_name_prefix [node['pkg_build']['pkg_prefix'], 'rubygem', params[:ruby_version]].compact.join('-')
# package_name_suffix params[:ruby_version] if params[:ruby_version] Enable this when FPM release fixed version
gem_gem node['pkg_build']['gems']['exec']
auto_depends false
reprepro node['pkg_build']['reprepro']
repository params[:repository] if params[:repository]
version params[:version]
end
fpm_tng_package libpassenger_name do
output_type 'deb'
version params[:version]
description 'Passenger apache module installation'
chdir File.join(node['builder']['packaging_dir'], "passenger-#{params[:version]}", 'libmod')
depends [
'apache2', 'apache2-mpm-prefork', passenger_gem_name, node['pkg_build']['passenger']['ruby_dependency']
].compact
conflicts lib_conflicts.map { |v| "#{v}-libapache2-mod-passenger" }
reprepro node['pkg_build']['reprepro']
repository params[:repository] if params[:repository]
end
fpm_tng_package passenger_gem_name do
output_type 'deb'
version params[:version]
description 'Passenger apache module installation'
chdir File.join(node['builder']['packaging_dir'], "passenger-#{params[:version]}", 'gem')
depends lazy { deps_resource.generated_dependencies }
conflicts gem_conflicts.map { |v| "#{v}-passenger" }
reprepro node['pkg_build']['reprepro']
repository params[:repository] if params[:repository]
end
end