passenger 6.1.3 → 6.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG +20 -1
- data/Rakefile +1 -1
- data/build/agent.rb +15 -15
- data/build/apache2.rb +18 -18
- data/build/basics.rb +1 -1
- data/build/common_library.rb +21 -20
- data/build/cxx_tests.rb +19 -19
- data/build/integration_tests.rb +3 -3
- data/build/misc.rb +10 -9
- data/build/nginx.rb +12 -12
- data/build/oxt_tests.rb +7 -7
- data/build/packaging.rb +11 -11
- data/build/ruby_extension.rb +3 -3
- data/build/ruby_tests.rb +1 -1
- data/build/schema_printer.rb +13 -13
- data/build/support/cplusplus.rb +8 -8
- data/build/support/cxx_dependency_map.rb +622 -622
- data/build/support/general.rb +0 -1
- data/build/support/vendor/cxx_hinted_parser/lib/cxx_hinted_parser/parser.rb +4 -4
- data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder/builder.rb +1 -1
- data/build/test_basics.rb +4 -4
- data/dev/colorize-logs +6 -6
- data/dev/copy_boost_headers +8 -8
- data/dev/index_cxx_dependencies.rb +6 -6
- data/dev/install_scripts_bootstrap_code.rb +4 -4
- data/dev/list_tests +2 -2
- data/dev/nginx_version_sha256 +2 -2
- data/dev/parse_file_descriptor_log +1 -1
- data/passenger.gemspec +5 -4
- data/src/agent/Core/Config.h +1 -1
- data/src/agent/Core/Controller/Config.h +1 -1
- data/src/agent/Watchdog/Config.h +1 -1
- data/src/cxx_supportlib/Constants.h +1 -1
- data/src/helper-scripts/backtrace-sanitizer.rb +2 -2
- data/src/helper-scripts/download_binaries/extconf.rb +8 -8
- data/src/helper-scripts/meteor-loader.rb +39 -39
- data/src/helper-scripts/rack-loader.rb +1 -0
- data/src/helper-scripts/rack-preloader.rb +2 -1
- data/src/ruby_native_extension/extconf.rb +27 -28
- data/src/ruby_supportlib/phusion_passenger/abstract_installer.rb +27 -27
- data/src/ruby_supportlib/phusion_passenger/admin_tools/instance.rb +5 -4
- data/src/ruby_supportlib/phusion_passenger/admin_tools/instance_registry.rb +9 -8
- data/src/ruby_supportlib/phusion_passenger/admin_tools/memory_stats.rb +24 -24
- data/src/ruby_supportlib/phusion_passenger/admin_tools.rb +5 -5
- data/src/ruby_supportlib/phusion_passenger/apache2/config_options.rb +526 -526
- data/src/ruby_supportlib/phusion_passenger/apache2/config_utils.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/common_library.rb +105 -105
- data/src/ruby_supportlib/phusion_passenger/config/about_command.rb +5 -5
- data/src/ruby_supportlib/phusion_passenger/config/agent_compiler.rb +7 -6
- data/src/ruby_supportlib/phusion_passenger/config/api_call_command.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/config/command.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/config/compile_agent_command.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/config/compile_nginx_engine_command.rb +5 -5
- data/src/ruby_supportlib/phusion_passenger/config/detach_process_command.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/config/download_agent_command.rb +17 -17
- data/src/ruby_supportlib/phusion_passenger/config/download_nginx_engine_command.rb +18 -18
- data/src/ruby_supportlib/phusion_passenger/config/install_agent_command.rb +10 -10
- data/src/ruby_supportlib/phusion_passenger/config/install_standalone_runtime_command.rb +12 -12
- data/src/ruby_supportlib/phusion_passenger/config/installation_utils.rb +24 -23
- data/src/ruby_supportlib/phusion_passenger/config/main.rb +26 -26
- data/src/ruby_supportlib/phusion_passenger/config/nginx_engine_compiler.rb +5 -4
- data/src/ruby_supportlib/phusion_passenger/config/reopen_logs_command.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/config/restart_app_command.rb +4 -4
- data/src/ruby_supportlib/phusion_passenger/config/system_properties_command.rb +14 -13
- data/src/ruby_supportlib/phusion_passenger/config/utils.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/config/validate_install_command.rb +34 -33
- data/src/ruby_supportlib/phusion_passenger/console_text_template.rb +3 -2
- data/src/ruby_supportlib/phusion_passenger/debug_logging.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +35 -36
- data/src/ruby_supportlib/phusion_passenger/message_channel.rb +17 -16
- data/src/ruby_supportlib/phusion_passenger/message_client.rb +5 -4
- data/src/ruby_supportlib/phusion_passenger/native_support.rb +42 -42
- data/src/ruby_supportlib/phusion_passenger/nginx/config_options.rb +548 -548
- data/src/ruby_supportlib/phusion_passenger/packaging.rb +6 -6
- data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +85 -84
- data/src/ruby_supportlib/phusion_passenger/platform_info/apache_detector.rb +13 -13
- data/src/ruby_supportlib/phusion_passenger/platform_info/binary_compatibility.rb +5 -5
- data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +65 -65
- data/src/ruby_supportlib/phusion_passenger/platform_info/crypto.rb +6 -6
- data/src/ruby_supportlib/phusion_passenger/platform_info/curl.rb +5 -5
- data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +10 -10
- data/src/ruby_supportlib/phusion_passenger/platform_info/depcheck.rb +6 -5
- data/src/ruby_supportlib/phusion_passenger/platform_info/depcheck_specs/apache2.rb +7 -7
- data/src/ruby_supportlib/phusion_passenger/platform_info/depcheck_specs/libs.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/platform_info/depcheck_specs/ruby.rb +7 -7
- data/src/ruby_supportlib/phusion_passenger/platform_info/depcheck_specs/utilities.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/platform_info/linux.rb +14 -13
- data/src/ruby_supportlib/phusion_passenger/platform_info/networking.rb +27 -26
- data/src/ruby_supportlib/phusion_passenger/platform_info/operating_system.rb +16 -16
- data/src/ruby_supportlib/phusion_passenger/platform_info/pcre.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/platform_info/ruby.rb +29 -28
- data/src/ruby_supportlib/phusion_passenger/platform_info/zlib.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/platform_info.rb +37 -36
- data/src/ruby_supportlib/phusion_passenger/plugin.rb +3 -3
- data/src/ruby_supportlib/phusion_passenger/preloader_shared_helpers.rb +16 -15
- data/src/ruby_supportlib/phusion_passenger/public_api.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/rack/handler.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/rack/out_of_band_gc.rb +5 -4
- data/src/ruby_supportlib/phusion_passenger/rack/thread_handler_extension.rb +8 -7
- data/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb +9 -11
- data/src/ruby_supportlib/phusion_passenger/request_handler.rb +27 -26
- data/src/ruby_supportlib/phusion_passenger/ruby_core_enhancements.rb +6 -5
- data/src/ruby_supportlib/phusion_passenger/ruby_core_io_enhancements.rb +7 -6
- data/src/ruby_supportlib/phusion_passenger/standalone/app_finder.rb +13 -13
- data/src/ruby_supportlib/phusion_passenger/standalone/command.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/standalone/config_options_list.rb +351 -351
- data/src/ruby_supportlib/phusion_passenger/standalone/main.rb +11 -11
- data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +13 -14
- data/src/ruby_supportlib/phusion_passenger/standalone/start_command/nginx_engine.rb +21 -23
- data/src/ruby_supportlib/phusion_passenger/standalone/start_command.rb +4 -4
- data/src/ruby_supportlib/phusion_passenger/standalone/status_command.rb +5 -5
- data/src/ruby_supportlib/phusion_passenger/standalone/stop_command.rb +6 -6
- data/src/ruby_supportlib/phusion_passenger/standalone/version_command.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/utils/download.rb +12 -11
- data/src/ruby_supportlib/phusion_passenger/utils/file_system_watcher.rb +9 -9
- data/src/ruby_supportlib/phusion_passenger/utils/hosts_file_parser.rb +8 -7
- data/src/ruby_supportlib/phusion_passenger/utils/json.rb +7 -6
- data/src/ruby_supportlib/phusion_passenger/utils/native_support_utils.rb +4 -4
- data/src/ruby_supportlib/phusion_passenger/utils/progress_bar.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/utils/shellwords.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/utils/strscan.rb +1 -0
- data/src/ruby_supportlib/phusion_passenger/utils/tee_input.rb +1 -0
- data/src/ruby_supportlib/phusion_passenger/utils/terminal_choice_menu.rb +13 -12
- data/src/ruby_supportlib/phusion_passenger/utils/tmpio.rb +2 -3
- data/src/ruby_supportlib/phusion_passenger/utils/unseekable_socket.rb +7 -7
- data/src/ruby_supportlib/phusion_passenger/utils.rb +17 -16
- data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/app.rb +1 -0
- data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/gdb_controller.rb +3 -2
- data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/lldb_controller.rb +2 -1
- data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/utils.rb +3 -2
- data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller.rb +13 -13
- data/src/ruby_supportlib/phusion_passenger.rb +27 -26
- metadata +3 -3
|
@@ -24,7 +24,7 @@ define 'ruby-dev' do
|
|
|
24
24
|
end
|
|
25
25
|
end
|
|
26
26
|
|
|
27
|
-
if ruby_command =~ %r
|
|
27
|
+
if ruby_command =~ %r{^/usr/bin/ruby} || ruby_command =~ %r{^/System/Library/Frameworks/Ruby.framework}
|
|
28
28
|
# Only tell user to install the headers with the system's package manager
|
|
29
29
|
# if Ruby itself was installed with the package manager.
|
|
30
30
|
on :debian do
|
|
@@ -57,13 +57,13 @@ define 'ruby-openssl' do
|
|
|
57
57
|
define_checker do
|
|
58
58
|
begin
|
|
59
59
|
require 'openssl'
|
|
60
|
-
{ :
|
|
60
|
+
{ found: true }
|
|
61
61
|
rescue LoadError
|
|
62
62
|
false
|
|
63
63
|
end
|
|
64
64
|
end
|
|
65
65
|
|
|
66
|
-
if ruby_command =~ %r
|
|
66
|
+
if ruby_command =~ %r{^/usr/bin/ruby}
|
|
67
67
|
# Only tell user to install ruby-openssl with the system's package manager
|
|
68
68
|
# if Ruby itself was installed with the package manager.
|
|
69
69
|
on :debian do
|
|
@@ -78,7 +78,7 @@ define 'rubygems' do
|
|
|
78
78
|
define_checker do
|
|
79
79
|
begin
|
|
80
80
|
require 'rubygems'
|
|
81
|
-
{ :
|
|
81
|
+
{ found: true }
|
|
82
82
|
rescue LoadError
|
|
83
83
|
false
|
|
84
84
|
end
|
|
@@ -86,7 +86,7 @@ define 'rubygems' do
|
|
|
86
86
|
|
|
87
87
|
install_instructions "Please download it from <b>#{website}</b>. " +
|
|
88
88
|
"Extract the tarball, and run <b>ruby setup.rb</b>"
|
|
89
|
-
if ruby_command =~ %r
|
|
89
|
+
if ruby_command =~ %r{^/usr/bin/ruby}
|
|
90
90
|
# Only tell user to install RubyGems with the system's package manager
|
|
91
91
|
# if Ruby itself was installed with the package manager.
|
|
92
92
|
#
|
|
@@ -121,7 +121,7 @@ define 'rake' do
|
|
|
121
121
|
end
|
|
122
122
|
end
|
|
123
123
|
|
|
124
|
-
if ruby_command =~ %r
|
|
124
|
+
if ruby_command =~ %r{^/usr/bin/ruby}
|
|
125
125
|
# Only tell user to install Rake with the system's package manager
|
|
126
126
|
# if Ruby itself was installed with the package manager.
|
|
127
127
|
on :debian do
|
|
@@ -131,7 +131,7 @@ define 'rake' do
|
|
|
131
131
|
urpmi "rake"
|
|
132
132
|
end
|
|
133
133
|
on :redhat do
|
|
134
|
-
yum_install "rubygem-rake", :
|
|
134
|
+
yum_install "rubygem-rake", epel: true
|
|
135
135
|
end
|
|
136
136
|
end
|
|
137
137
|
on :other_platforms do
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# encoding: binary
|
|
2
|
+
|
|
2
3
|
# Phusion Passenger - https://www.phusionpassenger.com/
|
|
3
4
|
# Copyright (c) 2010-2025 Asynchronous B.V.
|
|
4
5
|
#
|
|
@@ -33,9 +34,9 @@ module PhusionPassenger
|
|
|
33
34
|
def self.linux_distro
|
|
34
35
|
tags = linux_distro_tags
|
|
35
36
|
if tags
|
|
36
|
-
|
|
37
|
+
tags.first
|
|
37
38
|
else
|
|
38
|
-
|
|
39
|
+
nil
|
|
39
40
|
end
|
|
40
41
|
end
|
|
41
42
|
|
|
@@ -49,36 +50,36 @@ module PhusionPassenger
|
|
|
49
50
|
end
|
|
50
51
|
lsb_release = read_file("/etc/lsb-release")
|
|
51
52
|
if lsb_release =~ /Ubuntu/
|
|
52
|
-
|
|
53
|
+
[ :ubuntu, :debian ]
|
|
53
54
|
elsif File.exist?("/etc/debian_version")
|
|
54
|
-
|
|
55
|
+
[ :debian ]
|
|
55
56
|
elsif File.exist?("/etc/redhat-release")
|
|
56
57
|
redhat_release = read_file("/etc/redhat-release")
|
|
57
58
|
if redhat_release =~ /CentOS|AlmaLinux|Rocky Linux/
|
|
58
59
|
# For now treat all non-RHEL enterprise linux distros the same
|
|
59
|
-
|
|
60
|
+
[ :centos, :redhat ]
|
|
60
61
|
elsif redhat_release =~ /Fedora/
|
|
61
|
-
|
|
62
|
+
[ :fedora, :redhat ]
|
|
62
63
|
elsif redhat_release =~ /Mandriva/
|
|
63
|
-
|
|
64
|
+
[ :mandriva, :redhat ]
|
|
64
65
|
else
|
|
65
66
|
# On official RHEL distros, the content is in the form of
|
|
66
67
|
# "Red Hat Enterprise Linux Server release 5.1 (Tikanga)"
|
|
67
|
-
|
|
68
|
+
[ :rhel, :redhat ]
|
|
68
69
|
end
|
|
69
70
|
elsif File.exist?("/etc/system-release")
|
|
70
71
|
system_release = read_file("/etc/system-release")
|
|
71
72
|
if system_release =~ /Amazon Linux/
|
|
72
|
-
|
|
73
|
+
[ :amazon, :redhat ]
|
|
73
74
|
else
|
|
74
|
-
|
|
75
|
+
[ :unknown ]
|
|
75
76
|
end
|
|
76
77
|
elsif File.exist?("/etc/suse-release")
|
|
77
|
-
|
|
78
|
+
[ :suse ]
|
|
78
79
|
elsif File.exist?("/etc/gentoo-release")
|
|
79
|
-
|
|
80
|
+
[ :gentoo ]
|
|
80
81
|
else
|
|
81
|
-
|
|
82
|
+
[ :unknown ]
|
|
82
83
|
end
|
|
83
84
|
# TODO: Slackware
|
|
84
85
|
end
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
+
|
|
2
3
|
# Phusion Passenger - https://www.phusionpassenger.com/
|
|
3
4
|
# Copyright (c) 2017-2025 Asynchronous B.V.
|
|
4
5
|
#
|
|
@@ -73,18 +74,18 @@ module PhusionPassenger
|
|
|
73
74
|
case os_name_simple
|
|
74
75
|
when 'linux'
|
|
75
76
|
{
|
|
76
|
-
:
|
|
77
|
-
:
|
|
77
|
+
ipv4: default_network_interface_linux_for_ip_type(:ipv4),
|
|
78
|
+
ipv6: default_network_interface_linux_for_ip_type(:ipv6),
|
|
78
79
|
}
|
|
79
80
|
when 'macosx', 'freebsd'
|
|
80
81
|
{
|
|
81
|
-
:
|
|
82
|
-
:
|
|
82
|
+
ipv4: default_network_interface_bsd_for_ip_type(:ipv4),
|
|
83
|
+
ipv6: default_network_interface_bsd_for_ip_type(:ipv6),
|
|
83
84
|
}
|
|
84
85
|
else
|
|
85
86
|
{
|
|
86
|
-
:
|
|
87
|
-
:
|
|
87
|
+
ipv4: :unknown,
|
|
88
|
+
ipv6: :unknown,
|
|
88
89
|
}
|
|
89
90
|
end
|
|
90
91
|
end
|
|
@@ -106,11 +107,11 @@ module PhusionPassenger
|
|
|
106
107
|
device = elems[1].sub(/:$/, '')
|
|
107
108
|
flags = parse_bsd_or_linux_ifconfig_flags(elems[2])
|
|
108
109
|
current_iface = {
|
|
109
|
-
:
|
|
110
|
-
:
|
|
111
|
-
:
|
|
112
|
-
:
|
|
113
|
-
:
|
|
110
|
+
device: device,
|
|
111
|
+
type: flags.include?(:loopback) ? :loopback : :unknown,
|
|
112
|
+
flags: flags,
|
|
113
|
+
ipv4: [],
|
|
114
|
+
ipv6: [],
|
|
114
115
|
}
|
|
115
116
|
result[device] = current_iface
|
|
116
117
|
|
|
@@ -125,11 +126,11 @@ module PhusionPassenger
|
|
|
125
126
|
actual_iface = current_iface
|
|
126
127
|
else
|
|
127
128
|
actual_iface = (result[device] ||= {
|
|
128
|
-
:
|
|
129
|
-
:
|
|
130
|
-
:
|
|
131
|
-
:
|
|
132
|
-
:
|
|
129
|
+
device: device,
|
|
130
|
+
type: :unknown,
|
|
131
|
+
flags: [],
|
|
132
|
+
ipv4: [],
|
|
133
|
+
ipv6: [],
|
|
133
134
|
})
|
|
134
135
|
end
|
|
135
136
|
actual_iface[:ipv4] << ip
|
|
@@ -146,11 +147,11 @@ module PhusionPassenger
|
|
|
146
147
|
next if !File.directory?(path)
|
|
147
148
|
device = File.basename(path)
|
|
148
149
|
iface = (result[device] ||= {
|
|
149
|
-
:
|
|
150
|
-
:
|
|
151
|
-
:
|
|
152
|
-
:
|
|
153
|
-
:
|
|
150
|
+
device: device,
|
|
151
|
+
type: :unknown,
|
|
152
|
+
flags: [],
|
|
153
|
+
ipv4: [],
|
|
154
|
+
ipv6: [],
|
|
154
155
|
})
|
|
155
156
|
|
|
156
157
|
if iface[:type] == :unknown && File.exist?("#{path}/type")
|
|
@@ -212,11 +213,11 @@ module PhusionPassenger
|
|
|
212
213
|
device = elems[0].chomp(':')
|
|
213
214
|
flags = parse_bsd_or_linux_ifconfig_flags(elems[1])
|
|
214
215
|
current_interface = {
|
|
215
|
-
:
|
|
216
|
-
:
|
|
217
|
-
:
|
|
218
|
-
:
|
|
219
|
-
:
|
|
216
|
+
device: device,
|
|
217
|
+
type: flags.include?(:loopback) ? :loopback : :unknown,
|
|
218
|
+
flags: flags,
|
|
219
|
+
ipv4: [],
|
|
220
|
+
ipv6: [],
|
|
220
221
|
}
|
|
221
222
|
result << current_interface
|
|
222
223
|
|
|
@@ -79,7 +79,7 @@ module PhusionPassenger
|
|
|
79
79
|
when 'linux'
|
|
80
80
|
# Parse LSB (applicable to e.g. Ubuntu)
|
|
81
81
|
if read_file('/etc/lsb-release') =~ /DISTRIB_RELEASE=(.+)/
|
|
82
|
-
version = $1.delete(%q
|
|
82
|
+
version = $1.delete(%q('"))
|
|
83
83
|
return VersionComparer.new(version) if !version.empty?
|
|
84
84
|
end
|
|
85
85
|
|
|
@@ -106,9 +106,9 @@ module PhusionPassenger
|
|
|
106
106
|
# The current platform's shared library extension ('so' on most Unices).
|
|
107
107
|
def self.library_extension
|
|
108
108
|
if os_name_simple == "macosx"
|
|
109
|
-
|
|
109
|
+
"bundle"
|
|
110
110
|
else
|
|
111
|
-
|
|
111
|
+
"so"
|
|
112
112
|
end
|
|
113
113
|
end
|
|
114
114
|
|
|
@@ -120,11 +120,11 @@ module PhusionPassenger
|
|
|
120
120
|
if result = find_command("uname")
|
|
121
121
|
result
|
|
122
122
|
elsif File.exist?("/bin/uname")
|
|
123
|
-
|
|
123
|
+
"/bin/uname"
|
|
124
124
|
elsif File.exist?("/usr/bin/uname")
|
|
125
|
-
|
|
125
|
+
"/usr/bin/uname"
|
|
126
126
|
else
|
|
127
|
-
|
|
127
|
+
nil
|
|
128
128
|
end
|
|
129
129
|
end
|
|
130
130
|
|
|
@@ -162,21 +162,21 @@ module PhusionPassenger
|
|
|
162
162
|
if major >= 11 || (major == 10 && minor >= 16)
|
|
163
163
|
# Since Big Sur aarch64 is supported, and default on m1 macs.
|
|
164
164
|
if `#{uname_command} -m` =~ /arm64/
|
|
165
|
-
["arm64", "x86_64"]
|
|
165
|
+
[ "arm64", "x86_64" ]
|
|
166
166
|
elsif `sysctl -in sysctl.proc_translated` == "1"
|
|
167
|
-
["arm64", "x86_64"]
|
|
167
|
+
[ "arm64", "x86_64" ]
|
|
168
168
|
else
|
|
169
|
-
["x86_64", "arm64"]
|
|
169
|
+
[ "x86_64", "arm64" ]
|
|
170
170
|
end
|
|
171
171
|
elsif minor == 15
|
|
172
172
|
# Since Catalina x86 is gone.
|
|
173
|
-
["x86_64"]
|
|
173
|
+
[ "x86_64" ]
|
|
174
174
|
elsif minor >= 6
|
|
175
175
|
# Since Snow Leopard x86_64 is the default on intel macs.
|
|
176
|
-
["x86_64", "x86"]
|
|
176
|
+
[ "x86_64", "x86" ]
|
|
177
177
|
else
|
|
178
178
|
# Before Snow Leopard x86 was the default.
|
|
179
|
-
["x86", "x86_64"]
|
|
179
|
+
[ "x86", "x86_64" ]
|
|
180
180
|
end
|
|
181
181
|
else
|
|
182
182
|
uname = uname_command
|
|
@@ -199,13 +199,13 @@ module PhusionPassenger
|
|
|
199
199
|
# a CPU that supports both x86 and x86_64, but we're not gonna
|
|
200
200
|
# go through the trouble of checking that. The main architecture
|
|
201
201
|
# is what we usually care about.
|
|
202
|
-
["x86"]
|
|
202
|
+
[ "x86" ]
|
|
203
203
|
elsif arch == "x86_64"
|
|
204
204
|
# I don't think there's a single x86_64 CPU out there
|
|
205
205
|
# that doesn't support x86 as well.
|
|
206
|
-
["x86_64", "x86"]
|
|
206
|
+
[ "x86_64", "x86" ]
|
|
207
207
|
else
|
|
208
|
-
[arch]
|
|
208
|
+
[ arch ]
|
|
209
209
|
end
|
|
210
210
|
end
|
|
211
211
|
end
|
|
@@ -217,7 +217,7 @@ module PhusionPassenger
|
|
|
217
217
|
end
|
|
218
218
|
|
|
219
219
|
def self.requires_no_tls_direct_seg_refs?
|
|
220
|
-
|
|
220
|
+
File.exist?("/proc/xen/capabilities") && cpu_architectures[0] == "x86"
|
|
221
221
|
end
|
|
222
222
|
memoize :requires_no_tls_direct_seg_refs?, true
|
|
223
223
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# encoding: binary
|
|
2
|
+
|
|
2
3
|
# Phusion Passenger - https://www.phusionpassenger.com/
|
|
3
4
|
# Copyright (c) 2010-2025 Asynchronous B.V.
|
|
4
5
|
#
|
|
@@ -143,7 +144,7 @@ module PhusionPassenger
|
|
|
143
144
|
exit 1
|
|
144
145
|
end
|
|
145
146
|
else
|
|
146
|
-
|
|
147
|
+
ruby_executable
|
|
147
148
|
end
|
|
148
149
|
end
|
|
149
150
|
memoize :ruby_command
|
|
@@ -160,7 +161,7 @@ module PhusionPassenger
|
|
|
160
161
|
def self.ruby_supports_fork?
|
|
161
162
|
# MRI >= 1.9.2's respond_to? returns false for methods
|
|
162
163
|
# that are not implemented.
|
|
163
|
-
|
|
164
|
+
Process.respond_to?(:fork) &&
|
|
164
165
|
RUBY_ENGINE != "jruby" &&
|
|
165
166
|
RUBY_ENGINE != "macruby" &&
|
|
166
167
|
rb_config['target_os'] !~ /mswin|windows|mingw/
|
|
@@ -170,7 +171,7 @@ module PhusionPassenger
|
|
|
170
171
|
# be available for the current Ruby implementation.
|
|
171
172
|
def self.passenger_needs_ruby_dev_header?
|
|
172
173
|
# Too much of a trouble for JRuby. We can do without it.
|
|
173
|
-
|
|
174
|
+
RUBY_ENGINE != "jruby"
|
|
174
175
|
end
|
|
175
176
|
|
|
176
177
|
# Returns the correct 'gem' command for this Ruby interpreter.
|
|
@@ -181,7 +182,7 @@ module PhusionPassenger
|
|
|
181
182
|
if options[:sudo] && gem_install_requires_sudo?
|
|
182
183
|
command = "#{ruby_sudo_command} #{command}"
|
|
183
184
|
end
|
|
184
|
-
|
|
185
|
+
command
|
|
185
186
|
end
|
|
186
187
|
memoize :gem_command
|
|
187
188
|
|
|
@@ -189,9 +190,9 @@ module PhusionPassenger
|
|
|
189
190
|
def self.gem_install_requires_sudo?
|
|
190
191
|
`#{gem_command} env` =~ /INSTALLATION DIRECTORY: (.+)/
|
|
191
192
|
if install_dir = $1
|
|
192
|
-
|
|
193
|
+
!File.writable?(install_dir)
|
|
193
194
|
else
|
|
194
|
-
|
|
195
|
+
nil
|
|
195
196
|
end
|
|
196
197
|
end
|
|
197
198
|
memoize :gem_install_requires_sudo?
|
|
@@ -203,7 +204,7 @@ module PhusionPassenger
|
|
|
203
204
|
# The return value may not be the actual correct invocation
|
|
204
205
|
# for Rake. Use `rake_command` for that.
|
|
205
206
|
def self.rake
|
|
206
|
-
|
|
207
|
+
locate_ruby_tool('rake')
|
|
207
208
|
end
|
|
208
209
|
memoize :rake
|
|
209
210
|
|
|
@@ -219,14 +220,14 @@ module PhusionPassenger
|
|
|
219
220
|
# belongs to the current Ruby interpreter. Returns nil if it
|
|
220
221
|
# doesn't exist.
|
|
221
222
|
def self.rspec
|
|
222
|
-
|
|
223
|
+
locate_ruby_tool('rspec')
|
|
223
224
|
end
|
|
224
225
|
memoize :rspec
|
|
225
226
|
|
|
226
227
|
# Returns whether the current Ruby interpreter is managed by RVM.
|
|
227
228
|
def self.in_rvm?
|
|
228
229
|
bindir = rb_config['bindir']
|
|
229
|
-
|
|
230
|
+
bindir.include?('/.rvm/') || bindir.include?('/rvm/')
|
|
230
231
|
end
|
|
231
232
|
|
|
232
233
|
# If the current Ruby interpreter is managed by RVM, returns all
|
|
@@ -238,7 +239,7 @@ module PhusionPassenger
|
|
|
238
239
|
def self.rvm_paths
|
|
239
240
|
if in_rvm?
|
|
240
241
|
result = []
|
|
241
|
-
[ENV['rvm_path'], "#{PhusionPassenger.home_dir}/.rvm", "/usr/local/rvm"].each do |path|
|
|
242
|
+
[ ENV['rvm_path'], "#{PhusionPassenger.home_dir}/.rvm", "/usr/local/rvm" ].each do |path|
|
|
242
243
|
next if path.nil?
|
|
243
244
|
rubies_path = File.join(path, 'rubies')
|
|
244
245
|
wrappers_path = File.join(path, 'wrappers')
|
|
@@ -257,10 +258,10 @@ module PhusionPassenger
|
|
|
257
258
|
"'rvm get head && rvm reload && rvm repair all'."
|
|
258
259
|
exit 1
|
|
259
260
|
else
|
|
260
|
-
|
|
261
|
+
result
|
|
261
262
|
end
|
|
262
263
|
else
|
|
263
|
-
|
|
264
|
+
nil
|
|
264
265
|
end
|
|
265
266
|
end
|
|
266
267
|
memoize :rvm_paths
|
|
@@ -289,7 +290,7 @@ module PhusionPassenger
|
|
|
289
290
|
# will modify $GEM_HOME to the --path directory. That's
|
|
290
291
|
# why we need to parse the version of $GEM_HOME *before*
|
|
291
292
|
# `bundle exec` had modified it.
|
|
292
|
-
[GEM_HOME, BUNDLER_ORIG_GEM_HOME].each do |gem_home|
|
|
293
|
+
[ GEM_HOME, BUNDLER_ORIG_GEM_HOME ].each do |gem_home|
|
|
293
294
|
if gem_home && gem_home =~ %r{rvm/gems/(.+)}
|
|
294
295
|
return $1.sub(/\/.*/, '')
|
|
295
296
|
end
|
|
@@ -297,7 +298,7 @@ module PhusionPassenger
|
|
|
297
298
|
|
|
298
299
|
# User might have explicitly set GEM_HOME to a custom directory,
|
|
299
300
|
# or might have nuked $GEM_HOME. Extract info from $GEM_PATH.
|
|
300
|
-
[GEM_PATH, BUNDLER_ORIG_GEM_PATH].each do |gem_path|
|
|
301
|
+
[ GEM_PATH, BUNDLER_ORIG_GEM_PATH ].each do |gem_path|
|
|
301
302
|
if gem_path
|
|
302
303
|
gem_path.split(':').each do |gem_path_part|
|
|
303
304
|
if gem_path_part =~ %r{rvm/gems/(.+)}
|
|
@@ -330,7 +331,7 @@ module PhusionPassenger
|
|
|
330
331
|
"doesn't help, please contact this program's author for support."
|
|
331
332
|
exit 1
|
|
332
333
|
end
|
|
333
|
-
|
|
334
|
+
nil
|
|
334
335
|
end
|
|
335
336
|
memoize :rvm_ruby_string
|
|
336
337
|
|
|
@@ -342,16 +343,16 @@ module PhusionPassenger
|
|
|
342
343
|
def self.rvm_installation_mode
|
|
343
344
|
if in_rvm?
|
|
344
345
|
if ENV['rvm_path'] =~ /\.rvm/
|
|
345
|
-
|
|
346
|
+
:single
|
|
346
347
|
else
|
|
347
348
|
if GEM_HOME =~ /\.rvm/
|
|
348
|
-
|
|
349
|
+
:mixed
|
|
349
350
|
else
|
|
350
|
-
|
|
351
|
+
:multi
|
|
351
352
|
end
|
|
352
353
|
end
|
|
353
354
|
else
|
|
354
|
-
|
|
355
|
+
nil
|
|
355
356
|
end
|
|
356
357
|
end
|
|
357
358
|
|
|
@@ -359,9 +360,9 @@ module PhusionPassenger
|
|
|
359
360
|
# Ruby interpreter is managed by RVM.
|
|
360
361
|
def self.ruby_sudo_command
|
|
361
362
|
if in_rvm?
|
|
362
|
-
|
|
363
|
+
"rvmsudo"
|
|
363
364
|
else
|
|
364
|
-
|
|
365
|
+
"sudo"
|
|
365
366
|
end
|
|
366
367
|
end
|
|
367
368
|
|
|
@@ -382,9 +383,9 @@ module PhusionPassenger
|
|
|
382
383
|
result = "rvmsudo "
|
|
383
384
|
result << "#{args} " if args
|
|
384
385
|
result << shell
|
|
385
|
-
|
|
386
|
+
result
|
|
386
387
|
else
|
|
387
|
-
|
|
388
|
+
"sudo -s #{args}".strip
|
|
388
389
|
end
|
|
389
390
|
end
|
|
390
391
|
|
|
@@ -414,7 +415,7 @@ module PhusionPassenger
|
|
|
414
415
|
result = locate_ruby_tool_by_basename(transform_according_to_ruby_exec_format(name) + exeext)
|
|
415
416
|
end
|
|
416
417
|
end
|
|
417
|
-
|
|
418
|
+
result
|
|
418
419
|
end
|
|
419
420
|
|
|
420
421
|
# Locates a Ruby tool command, e.g. 'gem', 'rake', 'bundle', etc. Instead of
|
|
@@ -445,7 +446,7 @@ module PhusionPassenger
|
|
|
445
446
|
private
|
|
446
447
|
def self.locate_ruby_tool_by_basename(name)
|
|
447
448
|
if os_name_simple == "macosx" &&
|
|
448
|
-
ruby_command =~ %r
|
|
449
|
+
ruby_command =~ %r{\A/System/Library/Frameworks/Ruby.framework/Versions/.*?/usr/bin/ruby\Z}
|
|
449
450
|
# On OS X we must look for Ruby binaries in /usr/bin.
|
|
450
451
|
# RubyGems puts executables (e.g. 'rake') in there, not in
|
|
451
452
|
# /System/Libraries/(...)/bin.
|
|
@@ -496,7 +497,7 @@ module PhusionPassenger
|
|
|
496
497
|
return f.readline =~ /ruby/
|
|
497
498
|
end
|
|
498
499
|
rescue EOFError
|
|
499
|
-
|
|
500
|
+
false
|
|
500
501
|
end
|
|
501
502
|
private_class_method :is_ruby_program?
|
|
502
503
|
|
|
@@ -508,9 +509,9 @@ module PhusionPassenger
|
|
|
508
509
|
install_name = rb_config['RUBY_INSTALL_NAME']
|
|
509
510
|
if install_name.include?('ruby')
|
|
510
511
|
format = install_name.sub('ruby', '%s')
|
|
511
|
-
|
|
512
|
+
sprintf(format, name)
|
|
512
513
|
else
|
|
513
|
-
|
|
514
|
+
name
|
|
514
515
|
end
|
|
515
516
|
end
|
|
516
517
|
private_class_method :transform_according_to_ruby_exec_format
|