passenger 4.0.25 → 4.0.26
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.
- data.tar.gz.asc +7 -7
- data/NEWS +11 -0
- data/build/packaging.rb +3 -3
- data/debian.template/passenger.install.template +1 -1
- data/debian.template/rules.template +2 -1
- data/doc/Users guide Apache.idmap.txt +5 -3
- data/doc/Users guide Apache.txt +22 -0
- data/doc/Users guide Nginx.txt +12 -12
- data/doc/Users guide Standalone.txt +10 -1
- data/ext/apache2/ConfigurationCommands.cpp +18 -0
- data/ext/apache2/ConfigurationFields.hpp +6 -0
- data/ext/apache2/ConfigurationSetters.cpp +27 -0
- data/ext/apache2/CreateDirConfig.cpp +3 -0
- data/ext/apache2/DirectoryMapper.h +15 -6
- data/ext/apache2/Hooks.cpp +34 -10
- data/ext/apache2/MergeDirConfig.cpp +21 -0
- data/ext/apache2/SetHeaders.cpp +4 -0
- data/ext/common/Constants.h +1 -1
- data/ext/common/Utils.cpp +0 -1
- data/ext/common/Utils/VariantMap.h +1 -1
- data/ext/common/agents/HelperAgent/AgentOptions.h +4 -0
- data/ext/common/agents/HelperAgent/Main.cpp +10 -3
- data/ext/nginx/ContentHandler.c +2 -7
- data/helper-scripts/download_binaries/extconf.rb +7 -5
- data/lib/phusion_passenger.rb +1 -1
- data/lib/phusion_passenger/abstract_installer.rb +7 -22
- data/lib/phusion_passenger/admin_tools/memory_stats.rb +1 -1
- data/lib/phusion_passenger/apache2/config_options.rb +20 -0
- data/lib/phusion_passenger/standalone/runtime_installer.rb +69 -49
- data/lib/phusion_passenger/standalone/runtime_locator.rb +3 -3
- data/lib/phusion_passenger/standalone/start_command.rb +13 -1
- data/lib/phusion_passenger/utils/download.rb +193 -0
- data/resources/templates/standalone/config.erb +20 -3
- data/test/ruby/standalone/runtime_installer_spec.rb +69 -69
- data/test/ruby/standalone/runtime_locator_spec.rb +3 -3
- metadata +3 -3
- metadata.gz.asc +7 -7
- data/resources/templates/standalone/welcome.txt.erb +0 -8
data/ext/apache2/SetHeaders.cpp
CHANGED
data/ext/common/Constants.h
CHANGED
data/ext/common/Utils.cpp
CHANGED
@@ -27,11 +27,13 @@
|
|
27
27
|
|
28
28
|
#include <sys/types.h>
|
29
29
|
#include <string>
|
30
|
+
#include <boost/shared_ptr.hpp>
|
30
31
|
#include <Utils/VariantMap.h>
|
31
32
|
|
32
33
|
namespace Passenger {
|
33
34
|
|
34
35
|
using namespace std;
|
36
|
+
using namespace boost;
|
35
37
|
|
36
38
|
|
37
39
|
struct AgentOptions {
|
@@ -99,6 +101,8 @@ struct AgentOptions {
|
|
99
101
|
}
|
100
102
|
};
|
101
103
|
|
104
|
+
typedef boost::shared_ptr<AgentOptions> AgentOptionsPtr;
|
105
|
+
|
102
106
|
|
103
107
|
} // namespace Passenger
|
104
108
|
|
@@ -603,8 +603,15 @@ public:
|
|
603
603
|
int
|
604
604
|
main(int argc, char *argv[]) {
|
605
605
|
TRACE_POINT();
|
606
|
-
|
607
|
-
|
606
|
+
AgentOptionsPtr options;
|
607
|
+
try {
|
608
|
+
options = boost::make_shared<AgentOptions>(
|
609
|
+
initializeAgent(argc, argv, "PassengerHelperAgent"));
|
610
|
+
} catch (const VariantMap::MissingKeyException &e) {
|
611
|
+
fprintf(stderr, "Option required: %s\n", e.getKey().c_str());
|
612
|
+
return 1;
|
613
|
+
}
|
614
|
+
if (options->testBinary) {
|
608
615
|
printf("PASS\n");
|
609
616
|
exit(0);
|
610
617
|
}
|
@@ -614,7 +621,7 @@ main(int argc, char *argv[]) {
|
|
614
621
|
|
615
622
|
try {
|
616
623
|
UPDATE_TRACE_POINT();
|
617
|
-
Server server(FileDescriptor(FEEDBACK_FD), options);
|
624
|
+
Server server(FileDescriptor(FEEDBACK_FD), *options);
|
618
625
|
P_WARN("PassengerHelperAgent online, listening at unix:" <<
|
619
626
|
server.getRequestSocketFilename());
|
620
627
|
|
data/ext/nginx/ContentHandler.c
CHANGED
@@ -325,9 +325,6 @@ create_request(ngx_http_request_t *r)
|
|
325
325
|
passenger_loc_conf_t *slcf;
|
326
326
|
passenger_context_t *context;
|
327
327
|
ngx_http_script_len_code_pt lcode;
|
328
|
-
#if (NGX_HTTP_SSL)
|
329
|
-
ngx_http_ssl_srv_conf_t *ssl_conf;
|
330
|
-
#endif
|
331
328
|
|
332
329
|
cscf = ngx_http_get_module_srv_conf(r, ngx_http_core_module);
|
333
330
|
slcf = ngx_http_get_module_loc_conf(r, ngx_http_passenger_module);
|
@@ -403,8 +400,7 @@ create_request(ngx_http_request_t *r)
|
|
403
400
|
}
|
404
401
|
|
405
402
|
#if (NGX_HTTP_SSL)
|
406
|
-
|
407
|
-
if (ssl_conf->enable) {
|
403
|
+
if (r->http_connection->ssl) {
|
408
404
|
len += sizeof("HTTPS") + sizeof("on");
|
409
405
|
}
|
410
406
|
#endif
|
@@ -575,8 +571,7 @@ create_request(ngx_http_request_t *r)
|
|
575
571
|
}
|
576
572
|
|
577
573
|
#if (NGX_HTTP_SSL)
|
578
|
-
|
579
|
-
if (ssl_conf->enable) {
|
574
|
+
if (r->http_connection->ssl) {
|
580
575
|
b->last = ngx_copy(b->last, "HTTPS", sizeof("HTTPS"));
|
581
576
|
b->last = ngx_copy(b->last, "on", sizeof("on"));
|
582
577
|
}
|
@@ -62,17 +62,19 @@ FileUtils.mkdir_p(PhusionPassenger.download_cache_dir)
|
|
62
62
|
Dir.chdir(PhusionPassenger.download_cache_dir)
|
63
63
|
|
64
64
|
# Initiate downloads
|
65
|
+
require 'phusion_passenger/utils/download'
|
66
|
+
require 'logger'
|
65
67
|
def download(name)
|
66
68
|
if !File.exist?(name)
|
67
69
|
url = "#{PhusionPassenger::BINARIES_URL_ROOT}/#{PhusionPassenger::VERSION_STRING}/#{name}"
|
68
70
|
cert = PhusionPassenger.binaries_ca_cert_path
|
69
71
|
puts "Attempting to download #{url} into #{Dir.pwd}"
|
70
72
|
File.unlink("#{name}.tmp") rescue nil
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
73
|
+
logger = Logger.new(STDOUT)
|
74
|
+
logger.level = Logger::WARN
|
75
|
+
logger.formatter = proc { |severity, datetime, progname, msg| "*** #{msg}\n" }
|
76
|
+
result = PhusionPassenger::Utils::Download.download(url, "#{name}.tmp",
|
77
|
+
:cacert => cert, :logger => logger)
|
76
78
|
if result
|
77
79
|
File.rename("#{name}.tmp", name)
|
78
80
|
else
|
data/lib/phusion_passenger.rb
CHANGED
@@ -30,7 +30,7 @@ module PhusionPassenger
|
|
30
30
|
|
31
31
|
PACKAGE_NAME = 'passenger'
|
32
32
|
# Run 'rake ext/common/Constants.h' after changing this number.
|
33
|
-
VERSION_STRING = '4.0.
|
33
|
+
VERSION_STRING = '4.0.26'
|
34
34
|
|
35
35
|
PREFERRED_NGINX_VERSION = '1.4.4'
|
36
36
|
NGINX_SHA256_CHECKSUM = '7c989a58e5408c9593da0bebcd0e4ffc3d892d1316ba5042ddb0be5b0b4102b9'
|
@@ -27,7 +27,9 @@ require 'phusion_passenger/console_text_template'
|
|
27
27
|
require 'phusion_passenger/platform_info'
|
28
28
|
require 'phusion_passenger/platform_info/operating_system'
|
29
29
|
require 'phusion_passenger/utils/ansi_colors'
|
30
|
+
require 'phusion_passenger/utils/download'
|
30
31
|
require 'fileutils'
|
32
|
+
require 'logger'
|
31
33
|
require 'etc'
|
32
34
|
|
33
35
|
# IMPORTANT: do not directly or indirectly require native_support; we can't compile
|
@@ -415,28 +417,11 @@ protected
|
|
415
417
|
end
|
416
418
|
|
417
419
|
def download(url, output, options = {})
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
return true
|
424
|
-
end
|
425
|
-
end
|
426
|
-
|
427
|
-
args = []
|
428
|
-
if PlatformInfo.find_command("wget")
|
429
|
-
if options[:cacert]
|
430
|
-
args << "--ca-certificate=#{options[:cacert]}"
|
431
|
-
end
|
432
|
-
return sh("wget", "--tries=3", "-O", output, url, *args)
|
433
|
-
else
|
434
|
-
if options[:cacert]
|
435
|
-
args << "--cacert"
|
436
|
-
args << options[:cacert]
|
437
|
-
end
|
438
|
-
return sh("curl", url, "-f", "-L", "-o", output, *args)
|
439
|
-
end
|
420
|
+
logger = Logger.new(STDOUT)
|
421
|
+
logger.level = Logger::WARN
|
422
|
+
logger.formatter = proc { |severity, datetime, progname, msg| "*** #{msg}\n" }
|
423
|
+
options[:logger] = logger
|
424
|
+
return PhusionPassenger::Utils::Download.download(url, output, options)
|
440
425
|
end
|
441
426
|
|
442
427
|
def list_parent_directories(dir)
|
@@ -88,7 +88,7 @@ class MemoryStats
|
|
88
88
|
# Phusion Passenger is not running.
|
89
89
|
def passenger_processes
|
90
90
|
@passenger_processes ||= list_processes(:match =>
|
91
|
-
/((^| )Passenger
|
91
|
+
/((^| )Passenger|(^| )Rails:|(^| )Rack:|wsgi-loader.py)/)
|
92
92
|
end
|
93
93
|
|
94
94
|
# Returns the sum of the memory usages of all given processes.
|
@@ -131,5 +131,25 @@ APACHE2_DIRECTORY_CONFIGURATION_OPTIONS = [
|
|
131
131
|
:name => "PassengerLoadShellEnvvars",
|
132
132
|
:type => :flag,
|
133
133
|
:desc => "Whether to load environment variables from the shell before running the application."
|
134
|
+
},
|
135
|
+
{
|
136
|
+
:name => "PassengerBufferUpload",
|
137
|
+
:type => :flag,
|
138
|
+
:context => ["OR_ALL"],
|
139
|
+
:desc => "Whether to buffer file uploads.",
|
140
|
+
:header => nil
|
141
|
+
},
|
142
|
+
{
|
143
|
+
:name => 'PassengerAppType',
|
144
|
+
:type => :string,
|
145
|
+
:context => ["OR_ALL"],
|
146
|
+
:desc => "Force specific application type.",
|
147
|
+
:header => nil
|
148
|
+
},
|
149
|
+
{
|
150
|
+
:name => 'PassengerStartupFile',
|
151
|
+
:context => ["OR_ALL"],
|
152
|
+
:desc => "Force specific startup file.",
|
153
|
+
:type => :string
|
134
154
|
}
|
135
155
|
]
|
@@ -124,13 +124,9 @@ protected
|
|
124
124
|
end
|
125
125
|
|
126
126
|
def run_steps
|
127
|
-
show_welcome_screen if @nginx_dir
|
128
127
|
check_whether_os_is_broken
|
129
128
|
check_for_download_tool
|
130
129
|
download_or_compile_binaries
|
131
|
-
puts
|
132
|
-
puts "<green><b>All done!</b></green>"
|
133
|
-
puts
|
134
130
|
end
|
135
131
|
|
136
132
|
def before_install
|
@@ -149,19 +145,17 @@ protected
|
|
149
145
|
end
|
150
146
|
|
151
147
|
private
|
152
|
-
def show_welcome_screen
|
153
|
-
render_template 'standalone/welcome',
|
154
|
-
:version => @nginx_version,
|
155
|
-
:dir => @nginx_dir
|
156
|
-
puts
|
157
|
-
end
|
158
|
-
|
159
148
|
def check_for_download_tool
|
149
|
+
require 'phusion_passenger/platform_info/depcheck'
|
150
|
+
PlatformInfo::Depcheck.load('depcheck_specs/utilities')
|
151
|
+
result = PlatformInfo::Depcheck.find('download-tool').check
|
152
|
+
# Don't output anything if there is a download tool.
|
153
|
+
# We want to be as quiet as possible.
|
154
|
+
return if result && result[:found]
|
155
|
+
|
160
156
|
puts "<banner>Checking for basic prerequities...</banner>"
|
161
157
|
puts
|
162
158
|
|
163
|
-
require 'phusion_passenger/platform_info/depcheck'
|
164
|
-
PlatformInfo::Depcheck.load('depcheck_specs/utilities')
|
165
159
|
runner = PlatformInfo::Depcheck::ConsoleRunner.new
|
166
160
|
runner.add('download-tool')
|
167
161
|
|
@@ -195,6 +189,7 @@ private
|
|
195
189
|
"because --no-compile-runtime is given."
|
196
190
|
exit(1)
|
197
191
|
end
|
192
|
+
puts
|
198
193
|
check_dependencies(false) || exit(1)
|
199
194
|
puts
|
200
195
|
if should_compile_support_binaries
|
@@ -234,29 +229,29 @@ private
|
|
234
229
|
def download_support_binaries
|
235
230
|
return false if !should_download_binaries?
|
236
231
|
|
237
|
-
puts "
|
232
|
+
puts " --> Downloading #{PROGRAM_NAME} support binaries for your platform"
|
238
233
|
basename = "support-#{PlatformInfo.cxx_binary_compatibility_id}.tar.gz"
|
239
234
|
url = "#{@binaries_url_root}/#{PhusionPassenger::VERSION_STRING}/#{basename}"
|
240
235
|
tarball = "#{@working_dir}/#{basename}"
|
241
236
|
if !download(url, tarball, :cacert => PhusionPassenger.binaries_ca_cert_path, :use_cache => true)
|
242
|
-
puts "
|
243
|
-
"necessary binaries will be compiled from source instead.</b>"
|
244
|
-
puts
|
237
|
+
puts " No binaries are available for your platform. Will compile them from source"
|
245
238
|
return false
|
246
239
|
end
|
247
240
|
|
248
241
|
FileUtils.mkdir_p(@support_dir)
|
249
242
|
Dir.mkdir("#{@working_dir}/support")
|
250
243
|
Dir.chdir("#{@working_dir}/support") do
|
251
|
-
|
252
|
-
|
244
|
+
if !extract_tarball(tarball)
|
245
|
+
@stderr.puts " *** Error: cannot extract tarball"
|
246
|
+
return false
|
247
|
+
end
|
253
248
|
return false if !check_support_binaries
|
254
249
|
end
|
255
250
|
|
256
251
|
if system("mv '#{@working_dir}/support'/* '#{@support_dir}'/")
|
257
252
|
return true
|
258
253
|
else
|
259
|
-
@stderr.puts "Error: could not move extracted files to the support directory"
|
254
|
+
@stderr.puts " *** Error: could not move extracted files to the support directory"
|
260
255
|
return false
|
261
256
|
end
|
262
257
|
rescue Interrupt
|
@@ -265,42 +260,42 @@ private
|
|
265
260
|
|
266
261
|
def check_support_binaries
|
267
262
|
["PassengerWatchdog", "PassengerHelperAgent", "PassengerLoggingAgent"].each do |exe|
|
268
|
-
puts "Checking whether the downloaded #{exe} binary is usable
|
263
|
+
puts " Checking whether the downloaded #{exe.sub(/^Passenger/, '')} binary is usable"
|
269
264
|
output = `env LD_BIND_NOW=1 DYLD_BIND_AT_LAUNCH=1 ./agents/#{exe} --test-binary 1`
|
270
265
|
if !$? || $?.exitstatus != 0 || output != "PASS\n"
|
271
|
-
@stderr.puts "
|
266
|
+
@stderr.puts " --> Not usable, will compile from source"
|
272
267
|
return false
|
273
268
|
end
|
274
269
|
end
|
275
|
-
puts "All
|
270
|
+
puts " All good"
|
276
271
|
return true
|
277
272
|
end
|
278
273
|
|
279
274
|
def download_nginx_binary
|
280
275
|
return false if !should_download_binaries?
|
281
276
|
|
282
|
-
puts "
|
283
|
-
basename = "
|
277
|
+
puts " --> Downloading web helper for your platform"
|
278
|
+
basename = "webhelper-#{@nginx_version}-#{PlatformInfo.cxx_binary_compatibility_id}.tar.gz"
|
284
279
|
url = "#{@binaries_url_root}/#{PhusionPassenger::VERSION_STRING}/#{basename}"
|
285
280
|
tarball = "#{@working_dir}/#{basename}"
|
286
281
|
if !download(url, tarball, :cacert => PhusionPassenger.binaries_ca_cert_path, :use_cache => true)
|
287
|
-
puts "
|
288
|
-
"necessary binary will be compiled from source instead.</b>"
|
289
|
-
puts
|
282
|
+
puts " No binary are available for your platform. Will compile them from source"
|
290
283
|
return false
|
291
284
|
end
|
292
285
|
|
293
286
|
FileUtils.mkdir_p(@nginx_dir)
|
294
287
|
Dir.mkdir("#{@working_dir}/nginx")
|
295
288
|
Dir.chdir("#{@working_dir}/nginx") do
|
296
|
-
puts "Extracting tarball..."
|
297
289
|
result = extract_tarball(tarball)
|
298
|
-
|
290
|
+
if !result
|
291
|
+
@stderr.puts " *** Error: cannot extract tarball"
|
292
|
+
return false
|
293
|
+
end
|
299
294
|
if check_nginx_binary
|
300
295
|
if system("mv '#{@working_dir}/nginx'/* '#{@nginx_dir}'/")
|
301
296
|
return true
|
302
297
|
else
|
303
|
-
@stderr.puts "Error: could not move extracted
|
298
|
+
@stderr.puts " *** Error: could not move extracted web helper binary to the right directory"
|
304
299
|
return false
|
305
300
|
end
|
306
301
|
else
|
@@ -312,20 +307,20 @@ private
|
|
312
307
|
end
|
313
308
|
|
314
309
|
def check_nginx_binary
|
315
|
-
puts "Checking whether the downloaded binary is usable
|
316
|
-
output = `env LD_BIND_NOW=1 DYLD_BIND_AT_LAUNCH=1 ./
|
310
|
+
puts " Checking whether the downloaded binary is usable"
|
311
|
+
output = `env LD_BIND_NOW=1 DYLD_BIND_AT_LAUNCH=1 ./PassengerWebHelper -v 2>&1`
|
317
312
|
if $? && $?.exitstatus == 0 && output =~ /nginx version:/
|
318
|
-
puts "
|
313
|
+
puts " All good"
|
319
314
|
return true
|
320
315
|
else
|
321
|
-
@stderr.puts "
|
316
|
+
@stderr.puts " --> Not usable, will compile from source"
|
322
317
|
return false
|
323
318
|
end
|
324
319
|
end
|
325
320
|
|
326
321
|
def download_and_extract_nginx_sources
|
327
322
|
begin_progress_bar
|
328
|
-
puts "Downloading
|
323
|
+
puts "Downloading web helper source code..."
|
329
324
|
if @nginx_tarball
|
330
325
|
tarball = @nginx_tarball
|
331
326
|
else
|
@@ -343,13 +338,14 @@ private
|
|
343
338
|
begin_progress_bar
|
344
339
|
begin
|
345
340
|
result = extract_tarball(tarball) do |progress, total|
|
346
|
-
show_progress(progress / total * 0.1, 1.0, 1, 1, "Extracting
|
341
|
+
show_progress(progress / total * 0.1, 1.0, 1, 1, "Extracting web helper source...")
|
347
342
|
end
|
348
343
|
rescue Exception
|
349
344
|
puts
|
350
345
|
raise
|
351
346
|
end
|
352
347
|
if result
|
348
|
+
rename_nginx_proctitle("#{@working_dir}/#{nginx_sources_name}")
|
353
349
|
return "#{@working_dir}/#{nginx_sources_name}"
|
354
350
|
else
|
355
351
|
puts
|
@@ -361,16 +357,25 @@ private
|
|
361
357
|
exit 2
|
362
358
|
end
|
363
359
|
|
360
|
+
def rename_nginx_proctitle(source_dir)
|
361
|
+
filename = "#{source_dir}/src/os/unix/ngx_setproctitle.c"
|
362
|
+
if File.exist?(filename)
|
363
|
+
source = File.open(filename, "r") { |f| f.read }
|
364
|
+
source.gsub!('"nginx: "', '"PassengerWebHelper: "')
|
365
|
+
File.open(filename, "w") { |f| f.write(source) }
|
366
|
+
end
|
367
|
+
end
|
368
|
+
|
364
369
|
def compile_support_binaries
|
365
370
|
begin_progress_bar
|
366
|
-
show_progress(0, 1, 1, 1, "Preparing
|
371
|
+
show_progress(0, 1, 1, 1, "Preparing #{PROGRAM_NAME}...")
|
367
372
|
Dir.chdir(PhusionPassenger.source_root) do
|
368
373
|
args = "nginx_without_native_support" +
|
369
374
|
" CACHING=false" +
|
370
375
|
" OUTPUT_DIR='#{@support_dir}'"
|
371
376
|
begin
|
372
377
|
run_rake_task!(args) do |progress, total|
|
373
|
-
show_progress(progress, total, 1, 1, "Compiling
|
378
|
+
show_progress(progress, total, 1, 1, "Compiling #{PROGRAM_NAME}...")
|
374
379
|
end
|
375
380
|
ensure
|
376
381
|
puts
|
@@ -398,6 +403,7 @@ private
|
|
398
403
|
install_nginx_from_source(nginx_source_dir) do |progress, total, status_text|
|
399
404
|
show_progress(0.1 + progress / total.to_f * 0.9, 1.0, 1, 1, status_text)
|
400
405
|
end
|
406
|
+
puts
|
401
407
|
end
|
402
408
|
|
403
409
|
def check_whether_we_can_write_to(dir)
|
@@ -451,7 +457,7 @@ private
|
|
451
457
|
def begin_progress_bar
|
452
458
|
if !@begun
|
453
459
|
@begun = true
|
454
|
-
puts "<banner>Installing
|
460
|
+
puts "<banner>Installing #{PROGRAM_NAME} Standalone...</banner>"
|
455
461
|
end
|
456
462
|
end
|
457
463
|
|
@@ -578,37 +584,51 @@ private
|
|
578
584
|
command << "#{shell} ./configure --prefix=/tmp " <<
|
579
585
|
"#{STANDALONE_NGINX_CONFIGURE_OPTIONS} " <<
|
580
586
|
"'--add-module=#{PhusionPassenger.nginx_module_source_dir}'"
|
581
|
-
run_command_with_throbber(command, "Preparing
|
587
|
+
run_command_with_throbber(command, "Preparing web helper...") do |status_text|
|
582
588
|
yield(0, 1, status_text)
|
583
589
|
end
|
584
590
|
|
585
591
|
backlog = ""
|
586
|
-
|
592
|
+
|
593
|
+
# Capture and index the `make --dry-run` output for
|
594
|
+
# progress determination.
|
595
|
+
total_lines = 0
|
596
|
+
dry_run_output = {}
|
597
|
+
`#{PlatformInfo.gnu_make} --dry-run`.split("\n").each do |line|
|
598
|
+
total_lines += 1
|
599
|
+
dry_run_output[line] = true
|
600
|
+
end
|
601
|
+
|
587
602
|
IO.popen("#{PlatformInfo.gnu_make} 2>&1", "r") do |io|
|
588
603
|
progress = 1
|
589
604
|
while !io.eof?
|
590
605
|
line = io.readline
|
591
606
|
backlog << line
|
592
|
-
|
593
|
-
progress
|
607
|
+
# If the output is part of what we saw when dry-running,
|
608
|
+
# then increase progress bar. Otherwise it could be compiler
|
609
|
+
# warnings or something, so ignore those.
|
610
|
+
if dry_run_output[line.chomp]
|
611
|
+
yield(progress, total_lines, "Compiling web helper...")
|
612
|
+
progress += 1
|
613
|
+
end
|
594
614
|
end
|
595
615
|
end
|
596
616
|
if $?.exitstatus != 0
|
597
617
|
@stderr.puts
|
598
|
-
@stderr.puts "*** ERROR: unable to compile
|
618
|
+
@stderr.puts "*** ERROR: unable to compile web helper."
|
599
619
|
@stderr.puts backlog
|
600
620
|
exit 1
|
601
621
|
end
|
602
622
|
|
603
623
|
yield(1, 1, 'Copying files...')
|
604
|
-
if !system("cp -pR objs/nginx '#{@nginx_dir}/'")
|
624
|
+
if !system("cp -pR objs/nginx '#{@nginx_dir}/PassengerWebHelper'")
|
605
625
|
@stderr.puts
|
606
|
-
@stderr.puts "*** ERROR: unable to copy
|
626
|
+
@stderr.puts "*** ERROR: unable to copy web helper binary."
|
607
627
|
exit 1
|
608
628
|
end
|
609
|
-
if !strip_binary("#{@nginx_dir}/
|
629
|
+
if !strip_binary("#{@nginx_dir}/PassengerWebHelper")
|
610
630
|
@stderr.puts
|
611
|
-
@stderr.puts "*** ERROR: unable to strip debugging symbols from the
|
631
|
+
@stderr.puts "*** ERROR: unable to strip debugging symbols from the web helper binary."
|
612
632
|
exit 1
|
613
633
|
end
|
614
634
|
end
|