passenger 5.0.0.beta3 → 5.0.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of passenger might be problematic. Click here for more details.
- checksums.yaml +8 -8
- checksums.yaml.gz.asc +7 -7
- data.tar.gz.asc +7 -7
- data/.editorconfig +11 -5
- data/CHANGELOG +38 -0
- data/CONTRIBUTING.md +1 -4
- data/Gemfile +0 -1
- data/Gemfile.lock +0 -2
- data/Rakefile +33 -33
- data/bin/passenger +1 -1
- data/bin/passenger-config +1 -1
- data/bin/passenger-install-apache2-module +800 -800
- data/bin/passenger-install-nginx-module +592 -592
- data/bin/passenger-memory-stats +127 -127
- data/bin/passenger-status +216 -216
- data/build/agents.rb +127 -127
- data/build/apache2.rb +87 -87
- data/build/basics.rb +60 -60
- data/build/common_library.rb +165 -165
- data/build/cplusplus_support.rb +51 -51
- data/build/cxx_tests.rb +268 -268
- data/build/debian.rb +143 -143
- data/build/documentation.rb +58 -58
- data/build/integration_tests.rb +81 -81
- data/build/misc.rb +132 -132
- data/build/nginx.rb +20 -20
- data/build/node_tests.rb +7 -7
- data/build/oxt_tests.rb +14 -14
- data/build/packaging.rb +570 -570
- data/build/preprocessor.rb +260 -260
- data/build/rake_extensions.rb +71 -71
- data/build/ruby_extension.rb +29 -29
- data/build/ruby_tests.rb +6 -6
- data/build/test_basics.rb +37 -37
- data/debian.template/control.template +3 -5
- data/dev/copy_boost_headers +134 -134
- data/dev/install_scripts_bootstrap_code.rb +25 -25
- data/dev/list_tests +20 -20
- data/dev/ruby_server.rb +223 -223
- data/dev/runner +18 -18
- data/doc/ServerOptimizationGuide.txt.md +55 -2
- data/doc/Users guide Nginx.txt +0 -26
- data/doc/Users guide Standalone.txt +5 -1
- data/doc/users_guide_snippets/tips.txt +9 -0
- data/ext/common/ApplicationPool2/Group.h +23 -11
- data/ext/common/ApplicationPool2/Implementation.cpp +32 -7
- data/ext/common/ApplicationPool2/Pool.h +22 -17
- data/ext/common/ApplicationPool2/SmartSpawner.h +4 -1
- data/ext/common/ApplicationPool2/Spawner.h +1 -1
- data/ext/common/Constants.h +1 -1
- data/ext/common/agents/Base.cpp +35 -20
- data/ext/common/agents/HelperAgent/Main.cpp +8 -1
- data/ext/common/agents/HelperAgent/OptionParser.h +18 -4
- data/ext/common/agents/HelperAgent/RequestHandler.h +2 -83
- data/ext/common/agents/HelperAgent/RequestHandler/ForwardResponse.cpp +54 -1
- data/ext/common/agents/HelperAgent/RequestHandler/InitRequest.cpp +7 -4
- data/ext/common/agents/Main.cpp +1 -1
- data/ext/common/agents/Watchdog/Main.cpp +54 -19
- data/ext/nginx/Configuration.c +7 -0
- data/ext/nginx/ContentHandler.c +9 -1
- data/helper-scripts/backtrace-sanitizer.rb +106 -87
- data/helper-scripts/crash-watch.rb +32 -0
- data/helper-scripts/download_binaries/extconf.rb +38 -38
- data/helper-scripts/meteor-loader.rb +107 -107
- data/helper-scripts/prespawn +101 -101
- data/helper-scripts/rack-loader.rb +96 -96
- data/helper-scripts/rack-preloader.rb +137 -137
- data/lib/phusion_passenger.rb +292 -292
- data/lib/phusion_passenger/abstract_installer.rb +438 -438
- data/lib/phusion_passenger/active_support3_extensions/init.rb +168 -170
- data/lib/phusion_passenger/admin_tools.rb +20 -20
- data/lib/phusion_passenger/admin_tools/instance.rb +178 -178
- data/lib/phusion_passenger/admin_tools/instance_registry.rb +61 -61
- data/lib/phusion_passenger/admin_tools/memory_stats.rb +267 -267
- data/lib/phusion_passenger/apache2/config_options.rb +182 -182
- data/lib/phusion_passenger/common_library.rb +479 -485
- data/lib/phusion_passenger/config/about_command.rb +161 -161
- data/lib/phusion_passenger/config/admin_command_command.rb +129 -129
- data/lib/phusion_passenger/config/agent_compiler.rb +121 -121
- data/lib/phusion_passenger/config/build_native_support_command.rb +43 -43
- data/lib/phusion_passenger/config/command.rb +25 -25
- data/lib/phusion_passenger/config/compile_agent_command.rb +62 -62
- data/lib/phusion_passenger/config/compile_nginx_engine_command.rb +88 -73
- data/lib/phusion_passenger/config/detach_process_command.rb +72 -72
- data/lib/phusion_passenger/config/download_agent_command.rb +246 -227
- data/lib/phusion_passenger/config/download_nginx_engine_command.rb +245 -224
- data/lib/phusion_passenger/config/install_agent_command.rb +144 -132
- data/lib/phusion_passenger/config/install_standalone_runtime_command.rb +205 -185
- data/lib/phusion_passenger/config/installation_utils.rb +204 -204
- data/lib/phusion_passenger/config/list_instances_command.rb +64 -64
- data/lib/phusion_passenger/config/main.rb +152 -152
- data/lib/phusion_passenger/config/nginx_engine_compiler.rb +319 -300
- data/lib/phusion_passenger/config/reopen_logs_command.rb +67 -67
- data/lib/phusion_passenger/config/restart_app_command.rb +155 -155
- data/lib/phusion_passenger/config/system_metrics_command.rb +13 -13
- data/lib/phusion_passenger/config/utils.rb +95 -95
- data/lib/phusion_passenger/config/validate_install_command.rb +198 -198
- data/lib/phusion_passenger/console_text_template.rb +25 -25
- data/lib/phusion_passenger/constants.rb +90 -90
- data/lib/phusion_passenger/debug_logging.rb +106 -106
- data/lib/phusion_passenger/loader_shared_helpers.rb +447 -432
- data/lib/phusion_passenger/message_channel.rb +312 -312
- data/lib/phusion_passenger/message_client.rb +176 -176
- data/lib/phusion_passenger/native_support.rb +369 -369
- data/lib/phusion_passenger/nginx/config_options.rb +297 -297
- data/lib/phusion_passenger/packaging.rb +131 -131
- data/lib/phusion_passenger/platform_info.rb +360 -360
- data/lib/phusion_passenger/platform_info/apache.rb +767 -767
- data/lib/phusion_passenger/platform_info/apache_detector.rb +199 -199
- data/lib/phusion_passenger/platform_info/binary_compatibility.rb +107 -107
- data/lib/phusion_passenger/platform_info/compiler.rb +570 -570
- data/lib/phusion_passenger/platform_info/curl.rb +32 -32
- data/lib/phusion_passenger/platform_info/cxx_portability.rb +188 -188
- data/lib/phusion_passenger/platform_info/depcheck.rb +372 -372
- data/lib/phusion_passenger/platform_info/depcheck_specs/apache2.rb +109 -109
- data/lib/phusion_passenger/platform_info/depcheck_specs/compiler_toolchain.rb +4 -4
- data/lib/phusion_passenger/platform_info/depcheck_specs/gems.rb +10 -34
- data/lib/phusion_passenger/platform_info/depcheck_specs/libs.rb +101 -101
- data/lib/phusion_passenger/platform_info/depcheck_specs/ruby.rb +5 -5
- data/lib/phusion_passenger/platform_info/depcheck_specs/utilities.rb +13 -13
- data/lib/phusion_passenger/platform_info/linux.rb +55 -55
- data/lib/phusion_passenger/platform_info/operating_system.rb +149 -149
- data/lib/phusion_passenger/platform_info/ruby.rb +468 -448
- data/lib/phusion_passenger/platform_info/zlib.rb +9 -9
- data/lib/phusion_passenger/plugin.rb +66 -66
- data/lib/phusion_passenger/preloader_shared_helpers.rb +126 -126
- data/lib/phusion_passenger/public_api.rb +191 -191
- data/lib/phusion_passenger/rack/out_of_band_gc.rb +93 -94
- data/lib/phusion_passenger/rack/thread_handler_extension.rb +231 -227
- data/lib/phusion_passenger/request_handler.rb +567 -577
- data/lib/phusion_passenger/request_handler/thread_handler.rb +379 -381
- data/lib/phusion_passenger/ruby_core_enhancements.rb +86 -86
- data/lib/phusion_passenger/ruby_core_io_enhancements.rb +74 -74
- data/lib/phusion_passenger/simple_benchmarking.rb +25 -25
- data/lib/phusion_passenger/standalone/app_finder.rb +153 -150
- data/lib/phusion_passenger/standalone/command.rb +44 -40
- data/lib/phusion_passenger/standalone/config_utils.rb +53 -53
- data/lib/phusion_passenger/standalone/control_utils.rb +38 -59
- data/lib/phusion_passenger/standalone/main.rb +73 -73
- data/lib/phusion_passenger/standalone/start_command.rb +697 -685
- data/lib/phusion_passenger/standalone/start_command/builtin_engine.rb +193 -155
- data/lib/phusion_passenger/standalone/start_command/nginx_engine.rb +162 -133
- data/lib/phusion_passenger/standalone/status_command.rb +64 -64
- data/lib/phusion_passenger/standalone/stop_command.rb +72 -72
- data/lib/phusion_passenger/standalone/version_command.rb +9 -9
- data/lib/phusion_passenger/union_station/connection.rb +32 -32
- data/lib/phusion_passenger/union_station/core.rb +251 -251
- data/lib/phusion_passenger/union_station/transaction.rb +126 -126
- data/lib/phusion_passenger/utils.rb +199 -167
- data/lib/phusion_passenger/utils/ansi_colors.rb +128 -128
- data/lib/phusion_passenger/utils/download.rb +196 -196
- data/lib/phusion_passenger/utils/file_system_watcher.rb +158 -158
- data/lib/phusion_passenger/utils/hosts_file_parser.rb +101 -101
- data/lib/phusion_passenger/utils/lock.rb +31 -31
- data/lib/phusion_passenger/utils/native_support_utils.rb +31 -31
- data/lib/phusion_passenger/utils/progress_bar.rb +26 -26
- data/lib/phusion_passenger/utils/shellwords.rb +20 -20
- data/lib/phusion_passenger/utils/terminal_choice_menu.rb +206 -206
- data/lib/phusion_passenger/utils/unseekable_socket.rb +272 -272
- data/lib/phusion_passenger/vendor/crash_watch/app.rb +129 -0
- data/lib/phusion_passenger/vendor/crash_watch/gdb_controller.rb +341 -0
- data/lib/phusion_passenger/vendor/crash_watch/version.rb +24 -0
- data/lib/phusion_passenger/vendor/daemon_controller.rb +877 -0
- data/lib/phusion_passenger/vendor/daemon_controller/lock_file.rb +127 -0
- data/lib/phusion_passenger/vendor/daemon_controller/spawn.rb +26 -0
- data/lib/phusion_passenger/vendor/daemon_controller/version.rb +29 -0
- data/packaging/rpm/passenger_spec/passenger.spec.template +0 -1
- data/passenger.gemspec +0 -1
- data/resources/templates/config/nginx_engine_compiler/possible_solutions_for_download_and_extraction_problems.txt.erb +27 -0
- data/resources/templates/standalone/config.erb +19 -15
- data/test/integration_tests/apache2_tests.rb +566 -566
- data/test/integration_tests/downloaded_binaries_tests.rb +126 -125
- data/test/integration_tests/native_packaging_spec.rb +296 -296
- data/test/integration_tests/nginx_tests.rb +393 -393
- data/test/integration_tests/shared/example_webapp_tests.rb +282 -280
- data/test/integration_tests/source_packaging_test.rb +138 -138
- data/test/integration_tests/spec_helper.rb +5 -5
- data/test/integration_tests/standalone_tests.rb +367 -367
- data/test/ruby/debug_logging_spec.rb +133 -133
- data/test/ruby/message_channel_spec.rb +186 -186
- data/test/ruby/rack/loader_spec.rb +28 -28
- data/test/ruby/rack/preloader_spec.rb +34 -34
- data/test/ruby/rails3.0/loader_spec.rb +12 -12
- data/test/ruby/rails3.0/preloader_spec.rb +18 -18
- data/test/ruby/rails3.1/loader_spec.rb +12 -12
- data/test/ruby/rails3.1/preloader_spec.rb +18 -18
- data/test/ruby/rails3.2/loader_spec.rb +12 -12
- data/test/ruby/rails3.2/preloader_spec.rb +18 -18
- data/test/ruby/rails4.0/loader_spec.rb +12 -12
- data/test/ruby/rails4.0/preloader_spec.rb +18 -18
- data/test/ruby/rails4.1/loader_spec.rb +12 -12
- data/test/ruby/rails4.1/preloader_spec.rb +18 -18
- data/test/ruby/request_handler_spec.rb +730 -730
- data/test/ruby/shared/loader_sharedspec.rb +224 -224
- data/test/ruby/shared/rails/union_station_extensions_sharedspec.rb +327 -327
- data/test/ruby/shared/ruby_loader_sharedspec.rb +47 -47
- data/test/ruby/spec_helper.rb +65 -65
- data/test/ruby/standalone/runtime_installer_spec.rb +384 -384
- data/test/ruby/union_station_spec.rb +276 -276
- data/test/ruby/utils/file_system_watcher_spec.rb +220 -220
- data/test/ruby/utils/hosts_file_parser.rb +248 -248
- data/test/ruby/utils/tee_input_spec.rb +215 -215
- data/test/ruby/utils/unseekable_socket_spec.rb +57 -57
- data/test/ruby/utils_spec.rb +21 -21
- data/test/stub/rack/config.ru +87 -87
- data/test/stub/rack/library.rb +8 -8
- data/test/stub/rack/start.rb +30 -30
- data/test/support/apache2_controller.rb +191 -191
- data/test/support/nginx_controller.rb +90 -99
- data/test/support/placebo-preloader.rb +57 -57
- data/test/support/test_helper.rb +435 -435
- metadata +11 -21
- metadata.gz.asc +7 -7
- data/lib/phusion_passenger/standalone/command2.rb +0 -292
- data/lib/phusion_passenger/standalone/start2_command.rb +0 -799
- data/resources/templates/standalone/download_tool_missing.txt.erb +0 -18
- data/resources/templates/standalone/possible_solutions_for_download_and_extraction_problems.txt.erb +0 -17
- data/resources/templates/standalone/run_installer_as_root.txt.erb +0 -8
@@ -33,138 +33,138 @@ PhusionPassenger.require_passenger_lib 'utils/progress_bar'
|
|
33
33
|
PhusionPassenger.require_passenger_lib 'utils/tmpio'
|
34
34
|
|
35
35
|
module PhusionPassenger
|
36
|
-
module Config
|
36
|
+
module Config
|
37
37
|
|
38
|
-
class AgentCompiler < AbstractInstaller
|
39
|
-
protected
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
38
|
+
class AgentCompiler < AbstractInstaller
|
39
|
+
protected
|
40
|
+
def dependencies
|
41
|
+
specs = [
|
42
|
+
'depcheck_specs/compiler_toolchain',
|
43
|
+
'depcheck_specs/ruby',
|
44
|
+
'depcheck_specs/gems',
|
45
|
+
'depcheck_specs/libs',
|
46
|
+
'depcheck_specs/utilities'
|
47
|
+
]
|
48
|
+
ids = [
|
49
|
+
'cc',
|
50
|
+
'c++',
|
51
|
+
'rake',
|
52
|
+
'libcurl-dev',
|
53
|
+
'openssl-dev',
|
54
|
+
'zlib-dev'
|
55
|
+
].compact
|
56
|
+
return [specs, ids]
|
57
|
+
end
|
58
58
|
|
59
|
-
|
60
|
-
|
61
|
-
|
59
|
+
def users_guide_path
|
60
|
+
return PhusionPassenger.standalone_doc_path
|
61
|
+
end
|
62
62
|
|
63
|
-
|
64
|
-
|
65
|
-
|
63
|
+
def users_guide_url
|
64
|
+
return STANDALONE_DOC_URL
|
65
|
+
end
|
66
66
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
67
|
+
def run_steps
|
68
|
+
check_source_code_available!
|
69
|
+
if !@force
|
70
|
+
check_whether_os_is_broken
|
71
|
+
check_whether_system_has_enough_ram
|
72
|
+
InstallationUtils.check_for_download_tool!
|
73
|
+
end
|
74
|
+
check_dependencies(false) || abort
|
75
|
+
puts
|
76
76
|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
77
|
+
@destdir = InstallationUtils.find_or_create_writable_support_binaries_dir!
|
78
|
+
confirm_enable_optimizations
|
79
|
+
compile_agent
|
80
|
+
end
|
81
81
|
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
82
|
+
def before_install
|
83
|
+
super
|
84
|
+
if !@working_dir
|
85
|
+
@working_dir = PhusionPassenger::Utils.mktmpdir("passenger-install.", PlatformInfo.tmpexedir)
|
86
|
+
@owns_working_dir = true
|
87
|
+
end
|
88
|
+
end
|
89
89
|
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
90
|
+
def after_install
|
91
|
+
super
|
92
|
+
FileUtils.remove_entry_secure(@working_dir) if @owns_working_dir
|
93
|
+
end
|
94
94
|
|
95
|
-
private
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
95
|
+
private
|
96
|
+
def check_source_code_available!
|
97
|
+
if PhusionPassenger.build_system_dir.nil?
|
98
|
+
puts "<red>Cannot compile agent binary</red>"
|
99
|
+
puts
|
100
|
+
puts "This #{PROGRAM_NAME} installation does not " +
|
101
|
+
"come with any source code, so the agent binary cannot " +
|
102
|
+
"be compiled. So instead, please try to download a " +
|
103
|
+
"precompiled agent binary from the #{PROGRAM_NAME} website, " +
|
104
|
+
"by running:\n\n" +
|
105
|
+
" <b>passenger-config download-agent</b>"
|
106
|
+
abort
|
107
|
+
end
|
108
|
+
end
|
109
109
|
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
110
|
+
def confirm_enable_optimizations
|
111
|
+
if @auto
|
112
|
+
if @optimize
|
113
|
+
puts "Compiling with optimizations."
|
114
|
+
else
|
115
|
+
puts "Not compiling with optimizations."
|
116
|
+
end
|
117
|
+
else
|
118
|
+
if @optimize
|
119
|
+
puts "Compiling with optimizations."
|
120
|
+
else
|
121
|
+
new_screen
|
122
|
+
render_template 'config/agent_compiler/confirm_enable_optimizations',
|
123
|
+
:total_ram => total_ram_gb
|
124
|
+
puts
|
125
|
+
@optimize = prompt_confirmation('Compile with optimizations?')
|
126
|
+
puts
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
130
130
|
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
131
|
+
def compile_agent
|
132
|
+
puts "<banner>Compiling #{PROGRAM_NAME} agent...</banner>"
|
133
|
+
progress_bar = ProgressBar.new
|
134
|
+
e_working_dir = Shellwords.escape(@working_dir)
|
135
|
+
args = "#{e_working_dir}/support-binaries/#{AGENT_EXE}" +
|
136
|
+
" CACHING=false" +
|
137
|
+
" OUTPUT_DIR=#{e_working_dir} "
|
138
|
+
" OPTIMIZE=#{!!@optimize}"
|
139
|
+
begin
|
140
|
+
progress_bar.set(0)
|
141
|
+
Dir.chdir(PhusionPassenger.build_system_dir) do
|
142
|
+
InstallationUtils.run_rake_task!(args) do |progress, total|
|
143
|
+
progress_bar.set(0.05 + (progress / total.to_f) * 0.95)
|
144
|
+
end
|
145
|
+
end
|
146
|
+
progress_bar.set(1)
|
147
|
+
ensure
|
148
|
+
progress_bar.finish
|
149
|
+
end
|
150
150
|
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
151
|
+
FileUtils.cp("#{@working_dir}/support-binaries/#{AGENT_EXE}",
|
152
|
+
"#{@destdir}/#{AGENT_EXE}")
|
153
|
+
puts "<green>Compilation finished!</green>"
|
154
|
+
end
|
155
155
|
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
end
|
156
|
+
def total_ram_gb
|
157
|
+
begin
|
158
|
+
meminfo = File.read("/proc/meminfo")
|
159
|
+
if meminfo =~ /^MemTotal: *(\d+) kB$/
|
160
|
+
return sprintf("%.1f", $1.to_i / 1024 / 1024)
|
161
|
+
end
|
162
|
+
rescue Errno::ENOENT, Errno::EACCES
|
163
|
+
# Don't do anything on systems without memory information.
|
164
|
+
return nil
|
165
|
+
end
|
166
|
+
end
|
167
|
+
end
|
168
168
|
|
169
|
-
end # module Standalone
|
169
|
+
end # module Standalone
|
170
170
|
end # module PhusionPassenger
|
@@ -26,53 +26,53 @@ PhusionPassenger.require_passenger_lib 'constants'
|
|
26
26
|
PhusionPassenger.require_passenger_lib 'config/command'
|
27
27
|
|
28
28
|
module PhusionPassenger
|
29
|
-
module Config
|
29
|
+
module Config
|
30
30
|
|
31
|
-
class BuildNativeSupportCommand < Command
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
31
|
+
class BuildNativeSupportCommand < Command
|
32
|
+
def run
|
33
|
+
parse_options
|
34
|
+
PhusionPassenger.require_passenger_lib 'native_support'
|
35
|
+
end
|
36
36
|
|
37
|
-
private
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
37
|
+
private
|
38
|
+
def self.create_option_parser(options)
|
39
|
+
PhusionPassenger.require_passenger_lib 'platform_info/ruby'
|
40
|
+
OptionParser.new do |opts|
|
41
|
+
nl = "\n" + ' ' * 37
|
42
|
+
opts.banner = "Usage: passenger-config build-native-support [OPTIONS]\n"
|
43
|
+
opts.separator ""
|
44
|
+
opts.separator " #{PROGRAM_NAME} utilizes a Ruby native extension, called native_support,"
|
45
|
+
opts.separator " for improving Ruby performance. The extension depends on the"
|
46
|
+
opts.separator " #{PROGRAM_NAME} version and the Ruby version. Normally, every time you run"
|
47
|
+
opts.separator " a #{PROGRAM_NAME} version with a Ruby version that it hasn't encountered"
|
48
|
+
opts.separator " before, it will rebuild the native_support library for that Ruby version."
|
49
|
+
opts.separator " By running this command, you can force the native_support to be built for"
|
50
|
+
opts.separator " the current Ruby interpreter."
|
51
|
+
opts.separator ""
|
52
|
+
opts.separator " The current Ruby interpreter is:"
|
53
|
+
opts.separator " Path: #{PlatformInfo.ruby_command}"
|
54
|
+
opts.separator " Version: #{RUBY_VERSION}"
|
55
|
+
opts.separator ""
|
56
56
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
57
|
+
opts.separator "Options:"
|
58
|
+
opts.on("-h", "--help", "Show this help") do
|
59
|
+
options[:help] = true
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
63
|
|
64
|
-
|
65
|
-
|
66
|
-
|
64
|
+
def help
|
65
|
+
puts @parser
|
66
|
+
end
|
67
67
|
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
end
|
68
|
+
def parse_options
|
69
|
+
super
|
70
|
+
if @argv.size > 0
|
71
|
+
help
|
72
|
+
abort
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
76
|
|
77
|
-
end # module Config
|
77
|
+
end # module Config
|
78
78
|
end # module PhusionPassenger
|
@@ -22,33 +22,33 @@
|
|
22
22
|
# THE SOFTWARE.
|
23
23
|
|
24
24
|
module PhusionPassenger
|
25
|
-
module Config
|
25
|
+
module Config
|
26
26
|
|
27
|
-
class Command
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
27
|
+
class Command
|
28
|
+
def initialize(argv)
|
29
|
+
@argv = argv.dup
|
30
|
+
@options = self.class.create_default_options
|
31
|
+
end
|
32
32
|
|
33
|
-
private
|
34
|
-
|
35
|
-
|
36
|
-
|
33
|
+
private
|
34
|
+
def self.create_default_options
|
35
|
+
return {}
|
36
|
+
end
|
37
37
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
end
|
38
|
+
def parse_options
|
39
|
+
@parser = self.class.create_option_parser(@options)
|
40
|
+
begin
|
41
|
+
@parser.parse!(@argv)
|
42
|
+
rescue OptionParser::ParseError => e
|
43
|
+
STDERR.puts "*** ERROR: #{e}"
|
44
|
+
abort @parser.to_s
|
45
|
+
end
|
46
|
+
if @options[:help]
|
47
|
+
puts @parser
|
48
|
+
exit
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
52
|
|
53
|
-
end # module Config
|
53
|
+
end # module Config
|
54
54
|
end # module PhusionPassenger
|
@@ -28,75 +28,75 @@ PhusionPassenger.require_passenger_lib 'config/agent_compiler'
|
|
28
28
|
PhusionPassenger.require_passenger_lib 'utils/ansi_colors'
|
29
29
|
|
30
30
|
module PhusionPassenger
|
31
|
-
module Config
|
31
|
+
module Config
|
32
32
|
|
33
|
-
class CompileAgentCommand < Command
|
34
|
-
|
33
|
+
class CompileAgentCommand < Command
|
34
|
+
include InstallationUtils
|
35
35
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
36
|
+
def run
|
37
|
+
@options = { :auto => !STDIN.tty? || !STDOUT.tty?, :colorize => :auto, :force_tip => true }
|
38
|
+
parse_options
|
39
|
+
initialize_objects
|
40
|
+
sanity_check
|
41
|
+
if !AgentCompiler.new(@options).run
|
42
|
+
abort
|
43
|
+
end
|
44
|
+
end
|
45
45
|
|
46
|
-
private
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
46
|
+
private
|
47
|
+
def self.create_option_parser(options)
|
48
|
+
OptionParser.new do |opts|
|
49
|
+
nl = "\n" + ' ' * 37
|
50
|
+
opts.banner = "Usage: passenger-config compile-agent [OPTIONS]\n"
|
51
|
+
opts.separator ""
|
52
|
+
opts.separator " Compile the #{PROGRAM_NAME} agent binary. The agent binary is required for"
|
53
|
+
opts.separator " #{PROGRAM_NAME} to function properly."
|
54
|
+
opts.separator ""
|
55
55
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
56
|
+
opts.separator "Options:"
|
57
|
+
opts.on("--working-dir PATH", String, "Store temporary files in the given#{nl}" +
|
58
|
+
"directory, instead of creating one") do |val|
|
59
|
+
options[:working_dir] = val
|
60
|
+
end
|
61
|
+
opts.on("--auto", "Run in non-interactive mode. Default when#{nl}" +
|
62
|
+
"stdin or stdout is not a TTY") do
|
63
|
+
options[:auto] = true
|
64
|
+
end
|
65
|
+
opts.on("--optimize", "Compile agent with optimizations") do
|
66
|
+
options[:optimize] = true
|
67
|
+
end
|
68
|
+
opts.on("-f", "--force", "Skip sanity checks") do
|
69
|
+
options[:force] = true
|
70
|
+
end
|
71
|
+
opts.on("--no-force-tip", "Do not print any tips regarding the --force parameter") do
|
72
|
+
options[:force_tip] = false
|
73
|
+
end
|
74
|
+
opts.on("-h", "--help", "Show this help") do
|
75
|
+
options[:help] = true
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
79
|
|
80
|
-
|
81
|
-
|
82
|
-
|
80
|
+
def help
|
81
|
+
puts @parser
|
82
|
+
end
|
83
83
|
|
84
|
-
|
85
|
-
|
86
|
-
|
84
|
+
def initialize_objects
|
85
|
+
@colors = Utils::AnsiColors.new(@options[:colorize])
|
86
|
+
end
|
87
87
|
|
88
|
-
|
89
|
-
|
88
|
+
def sanity_check
|
89
|
+
return if @options[:force]
|
90
90
|
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
end
|
91
|
+
if PhusionPassenger.find_support_binary(AGENT_EXE)
|
92
|
+
puts "#{@colors.green}The #{PROGRAM_NAME} agent is already installed.#{@colors.reset}"
|
93
|
+
if @options[:force_tip]
|
94
|
+
puts "If you want to recompile it, re-run this program with the --force parameter."
|
95
|
+
end
|
96
|
+
exit
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
100
|
|
101
|
-
end # module Config
|
101
|
+
end # module Config
|
102
102
|
end # module PhusionPassenger
|