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.

Files changed (218) hide show
  1. checksums.yaml +8 -8
  2. checksums.yaml.gz.asc +7 -7
  3. data.tar.gz.asc +7 -7
  4. data/.editorconfig +11 -5
  5. data/CHANGELOG +38 -0
  6. data/CONTRIBUTING.md +1 -4
  7. data/Gemfile +0 -1
  8. data/Gemfile.lock +0 -2
  9. data/Rakefile +33 -33
  10. data/bin/passenger +1 -1
  11. data/bin/passenger-config +1 -1
  12. data/bin/passenger-install-apache2-module +800 -800
  13. data/bin/passenger-install-nginx-module +592 -592
  14. data/bin/passenger-memory-stats +127 -127
  15. data/bin/passenger-status +216 -216
  16. data/build/agents.rb +127 -127
  17. data/build/apache2.rb +87 -87
  18. data/build/basics.rb +60 -60
  19. data/build/common_library.rb +165 -165
  20. data/build/cplusplus_support.rb +51 -51
  21. data/build/cxx_tests.rb +268 -268
  22. data/build/debian.rb +143 -143
  23. data/build/documentation.rb +58 -58
  24. data/build/integration_tests.rb +81 -81
  25. data/build/misc.rb +132 -132
  26. data/build/nginx.rb +20 -20
  27. data/build/node_tests.rb +7 -7
  28. data/build/oxt_tests.rb +14 -14
  29. data/build/packaging.rb +570 -570
  30. data/build/preprocessor.rb +260 -260
  31. data/build/rake_extensions.rb +71 -71
  32. data/build/ruby_extension.rb +29 -29
  33. data/build/ruby_tests.rb +6 -6
  34. data/build/test_basics.rb +37 -37
  35. data/debian.template/control.template +3 -5
  36. data/dev/copy_boost_headers +134 -134
  37. data/dev/install_scripts_bootstrap_code.rb +25 -25
  38. data/dev/list_tests +20 -20
  39. data/dev/ruby_server.rb +223 -223
  40. data/dev/runner +18 -18
  41. data/doc/ServerOptimizationGuide.txt.md +55 -2
  42. data/doc/Users guide Nginx.txt +0 -26
  43. data/doc/Users guide Standalone.txt +5 -1
  44. data/doc/users_guide_snippets/tips.txt +9 -0
  45. data/ext/common/ApplicationPool2/Group.h +23 -11
  46. data/ext/common/ApplicationPool2/Implementation.cpp +32 -7
  47. data/ext/common/ApplicationPool2/Pool.h +22 -17
  48. data/ext/common/ApplicationPool2/SmartSpawner.h +4 -1
  49. data/ext/common/ApplicationPool2/Spawner.h +1 -1
  50. data/ext/common/Constants.h +1 -1
  51. data/ext/common/agents/Base.cpp +35 -20
  52. data/ext/common/agents/HelperAgent/Main.cpp +8 -1
  53. data/ext/common/agents/HelperAgent/OptionParser.h +18 -4
  54. data/ext/common/agents/HelperAgent/RequestHandler.h +2 -83
  55. data/ext/common/agents/HelperAgent/RequestHandler/ForwardResponse.cpp +54 -1
  56. data/ext/common/agents/HelperAgent/RequestHandler/InitRequest.cpp +7 -4
  57. data/ext/common/agents/Main.cpp +1 -1
  58. data/ext/common/agents/Watchdog/Main.cpp +54 -19
  59. data/ext/nginx/Configuration.c +7 -0
  60. data/ext/nginx/ContentHandler.c +9 -1
  61. data/helper-scripts/backtrace-sanitizer.rb +106 -87
  62. data/helper-scripts/crash-watch.rb +32 -0
  63. data/helper-scripts/download_binaries/extconf.rb +38 -38
  64. data/helper-scripts/meteor-loader.rb +107 -107
  65. data/helper-scripts/prespawn +101 -101
  66. data/helper-scripts/rack-loader.rb +96 -96
  67. data/helper-scripts/rack-preloader.rb +137 -137
  68. data/lib/phusion_passenger.rb +292 -292
  69. data/lib/phusion_passenger/abstract_installer.rb +438 -438
  70. data/lib/phusion_passenger/active_support3_extensions/init.rb +168 -170
  71. data/lib/phusion_passenger/admin_tools.rb +20 -20
  72. data/lib/phusion_passenger/admin_tools/instance.rb +178 -178
  73. data/lib/phusion_passenger/admin_tools/instance_registry.rb +61 -61
  74. data/lib/phusion_passenger/admin_tools/memory_stats.rb +267 -267
  75. data/lib/phusion_passenger/apache2/config_options.rb +182 -182
  76. data/lib/phusion_passenger/common_library.rb +479 -485
  77. data/lib/phusion_passenger/config/about_command.rb +161 -161
  78. data/lib/phusion_passenger/config/admin_command_command.rb +129 -129
  79. data/lib/phusion_passenger/config/agent_compiler.rb +121 -121
  80. data/lib/phusion_passenger/config/build_native_support_command.rb +43 -43
  81. data/lib/phusion_passenger/config/command.rb +25 -25
  82. data/lib/phusion_passenger/config/compile_agent_command.rb +62 -62
  83. data/lib/phusion_passenger/config/compile_nginx_engine_command.rb +88 -73
  84. data/lib/phusion_passenger/config/detach_process_command.rb +72 -72
  85. data/lib/phusion_passenger/config/download_agent_command.rb +246 -227
  86. data/lib/phusion_passenger/config/download_nginx_engine_command.rb +245 -224
  87. data/lib/phusion_passenger/config/install_agent_command.rb +144 -132
  88. data/lib/phusion_passenger/config/install_standalone_runtime_command.rb +205 -185
  89. data/lib/phusion_passenger/config/installation_utils.rb +204 -204
  90. data/lib/phusion_passenger/config/list_instances_command.rb +64 -64
  91. data/lib/phusion_passenger/config/main.rb +152 -152
  92. data/lib/phusion_passenger/config/nginx_engine_compiler.rb +319 -300
  93. data/lib/phusion_passenger/config/reopen_logs_command.rb +67 -67
  94. data/lib/phusion_passenger/config/restart_app_command.rb +155 -155
  95. data/lib/phusion_passenger/config/system_metrics_command.rb +13 -13
  96. data/lib/phusion_passenger/config/utils.rb +95 -95
  97. data/lib/phusion_passenger/config/validate_install_command.rb +198 -198
  98. data/lib/phusion_passenger/console_text_template.rb +25 -25
  99. data/lib/phusion_passenger/constants.rb +90 -90
  100. data/lib/phusion_passenger/debug_logging.rb +106 -106
  101. data/lib/phusion_passenger/loader_shared_helpers.rb +447 -432
  102. data/lib/phusion_passenger/message_channel.rb +312 -312
  103. data/lib/phusion_passenger/message_client.rb +176 -176
  104. data/lib/phusion_passenger/native_support.rb +369 -369
  105. data/lib/phusion_passenger/nginx/config_options.rb +297 -297
  106. data/lib/phusion_passenger/packaging.rb +131 -131
  107. data/lib/phusion_passenger/platform_info.rb +360 -360
  108. data/lib/phusion_passenger/platform_info/apache.rb +767 -767
  109. data/lib/phusion_passenger/platform_info/apache_detector.rb +199 -199
  110. data/lib/phusion_passenger/platform_info/binary_compatibility.rb +107 -107
  111. data/lib/phusion_passenger/platform_info/compiler.rb +570 -570
  112. data/lib/phusion_passenger/platform_info/curl.rb +32 -32
  113. data/lib/phusion_passenger/platform_info/cxx_portability.rb +188 -188
  114. data/lib/phusion_passenger/platform_info/depcheck.rb +372 -372
  115. data/lib/phusion_passenger/platform_info/depcheck_specs/apache2.rb +109 -109
  116. data/lib/phusion_passenger/platform_info/depcheck_specs/compiler_toolchain.rb +4 -4
  117. data/lib/phusion_passenger/platform_info/depcheck_specs/gems.rb +10 -34
  118. data/lib/phusion_passenger/platform_info/depcheck_specs/libs.rb +101 -101
  119. data/lib/phusion_passenger/platform_info/depcheck_specs/ruby.rb +5 -5
  120. data/lib/phusion_passenger/platform_info/depcheck_specs/utilities.rb +13 -13
  121. data/lib/phusion_passenger/platform_info/linux.rb +55 -55
  122. data/lib/phusion_passenger/platform_info/operating_system.rb +149 -149
  123. data/lib/phusion_passenger/platform_info/ruby.rb +468 -448
  124. data/lib/phusion_passenger/platform_info/zlib.rb +9 -9
  125. data/lib/phusion_passenger/plugin.rb +66 -66
  126. data/lib/phusion_passenger/preloader_shared_helpers.rb +126 -126
  127. data/lib/phusion_passenger/public_api.rb +191 -191
  128. data/lib/phusion_passenger/rack/out_of_band_gc.rb +93 -94
  129. data/lib/phusion_passenger/rack/thread_handler_extension.rb +231 -227
  130. data/lib/phusion_passenger/request_handler.rb +567 -577
  131. data/lib/phusion_passenger/request_handler/thread_handler.rb +379 -381
  132. data/lib/phusion_passenger/ruby_core_enhancements.rb +86 -86
  133. data/lib/phusion_passenger/ruby_core_io_enhancements.rb +74 -74
  134. data/lib/phusion_passenger/simple_benchmarking.rb +25 -25
  135. data/lib/phusion_passenger/standalone/app_finder.rb +153 -150
  136. data/lib/phusion_passenger/standalone/command.rb +44 -40
  137. data/lib/phusion_passenger/standalone/config_utils.rb +53 -53
  138. data/lib/phusion_passenger/standalone/control_utils.rb +38 -59
  139. data/lib/phusion_passenger/standalone/main.rb +73 -73
  140. data/lib/phusion_passenger/standalone/start_command.rb +697 -685
  141. data/lib/phusion_passenger/standalone/start_command/builtin_engine.rb +193 -155
  142. data/lib/phusion_passenger/standalone/start_command/nginx_engine.rb +162 -133
  143. data/lib/phusion_passenger/standalone/status_command.rb +64 -64
  144. data/lib/phusion_passenger/standalone/stop_command.rb +72 -72
  145. data/lib/phusion_passenger/standalone/version_command.rb +9 -9
  146. data/lib/phusion_passenger/union_station/connection.rb +32 -32
  147. data/lib/phusion_passenger/union_station/core.rb +251 -251
  148. data/lib/phusion_passenger/union_station/transaction.rb +126 -126
  149. data/lib/phusion_passenger/utils.rb +199 -167
  150. data/lib/phusion_passenger/utils/ansi_colors.rb +128 -128
  151. data/lib/phusion_passenger/utils/download.rb +196 -196
  152. data/lib/phusion_passenger/utils/file_system_watcher.rb +158 -158
  153. data/lib/phusion_passenger/utils/hosts_file_parser.rb +101 -101
  154. data/lib/phusion_passenger/utils/lock.rb +31 -31
  155. data/lib/phusion_passenger/utils/native_support_utils.rb +31 -31
  156. data/lib/phusion_passenger/utils/progress_bar.rb +26 -26
  157. data/lib/phusion_passenger/utils/shellwords.rb +20 -20
  158. data/lib/phusion_passenger/utils/terminal_choice_menu.rb +206 -206
  159. data/lib/phusion_passenger/utils/unseekable_socket.rb +272 -272
  160. data/lib/phusion_passenger/vendor/crash_watch/app.rb +129 -0
  161. data/lib/phusion_passenger/vendor/crash_watch/gdb_controller.rb +341 -0
  162. data/lib/phusion_passenger/vendor/crash_watch/version.rb +24 -0
  163. data/lib/phusion_passenger/vendor/daemon_controller.rb +877 -0
  164. data/lib/phusion_passenger/vendor/daemon_controller/lock_file.rb +127 -0
  165. data/lib/phusion_passenger/vendor/daemon_controller/spawn.rb +26 -0
  166. data/lib/phusion_passenger/vendor/daemon_controller/version.rb +29 -0
  167. data/packaging/rpm/passenger_spec/passenger.spec.template +0 -1
  168. data/passenger.gemspec +0 -1
  169. data/resources/templates/config/nginx_engine_compiler/possible_solutions_for_download_and_extraction_problems.txt.erb +27 -0
  170. data/resources/templates/standalone/config.erb +19 -15
  171. data/test/integration_tests/apache2_tests.rb +566 -566
  172. data/test/integration_tests/downloaded_binaries_tests.rb +126 -125
  173. data/test/integration_tests/native_packaging_spec.rb +296 -296
  174. data/test/integration_tests/nginx_tests.rb +393 -393
  175. data/test/integration_tests/shared/example_webapp_tests.rb +282 -280
  176. data/test/integration_tests/source_packaging_test.rb +138 -138
  177. data/test/integration_tests/spec_helper.rb +5 -5
  178. data/test/integration_tests/standalone_tests.rb +367 -367
  179. data/test/ruby/debug_logging_spec.rb +133 -133
  180. data/test/ruby/message_channel_spec.rb +186 -186
  181. data/test/ruby/rack/loader_spec.rb +28 -28
  182. data/test/ruby/rack/preloader_spec.rb +34 -34
  183. data/test/ruby/rails3.0/loader_spec.rb +12 -12
  184. data/test/ruby/rails3.0/preloader_spec.rb +18 -18
  185. data/test/ruby/rails3.1/loader_spec.rb +12 -12
  186. data/test/ruby/rails3.1/preloader_spec.rb +18 -18
  187. data/test/ruby/rails3.2/loader_spec.rb +12 -12
  188. data/test/ruby/rails3.2/preloader_spec.rb +18 -18
  189. data/test/ruby/rails4.0/loader_spec.rb +12 -12
  190. data/test/ruby/rails4.0/preloader_spec.rb +18 -18
  191. data/test/ruby/rails4.1/loader_spec.rb +12 -12
  192. data/test/ruby/rails4.1/preloader_spec.rb +18 -18
  193. data/test/ruby/request_handler_spec.rb +730 -730
  194. data/test/ruby/shared/loader_sharedspec.rb +224 -224
  195. data/test/ruby/shared/rails/union_station_extensions_sharedspec.rb +327 -327
  196. data/test/ruby/shared/ruby_loader_sharedspec.rb +47 -47
  197. data/test/ruby/spec_helper.rb +65 -65
  198. data/test/ruby/standalone/runtime_installer_spec.rb +384 -384
  199. data/test/ruby/union_station_spec.rb +276 -276
  200. data/test/ruby/utils/file_system_watcher_spec.rb +220 -220
  201. data/test/ruby/utils/hosts_file_parser.rb +248 -248
  202. data/test/ruby/utils/tee_input_spec.rb +215 -215
  203. data/test/ruby/utils/unseekable_socket_spec.rb +57 -57
  204. data/test/ruby/utils_spec.rb +21 -21
  205. data/test/stub/rack/config.ru +87 -87
  206. data/test/stub/rack/library.rb +8 -8
  207. data/test/stub/rack/start.rb +30 -30
  208. data/test/support/apache2_controller.rb +191 -191
  209. data/test/support/nginx_controller.rb +90 -99
  210. data/test/support/placebo-preloader.rb +57 -57
  211. data/test/support/test_helper.rb +435 -435
  212. metadata +11 -21
  213. metadata.gz.asc +7 -7
  214. data/lib/phusion_passenger/standalone/command2.rb +0 -292
  215. data/lib/phusion_passenger/standalone/start2_command.rb +0 -799
  216. data/resources/templates/standalone/download_tool_missing.txt.erb +0 -18
  217. data/resources/templates/standalone/possible_solutions_for_download_and_extraction_problems.txt.erb +0 -17
  218. data/resources/templates/standalone/run_installer_as_root.txt.erb +0 -8
@@ -24,11 +24,11 @@
24
24
  ### Integration tests ###
25
25
 
26
26
  def integration_test_dependencies(runtime_target_name)
27
- if string_option('PASSENGER_LOCATION_CONFIGURATION_FILE')
28
- return []
29
- else
30
- return [runtime_target_name, NATIVE_SUPPORT_TARGET].compact
31
- end
27
+ if string_option('PASSENGER_LOCATION_CONFIGURATION_FILE')
28
+ return []
29
+ else
30
+ return [runtime_target_name, NATIVE_SUPPORT_TARGET].compact
31
+ end
32
32
  end
33
33
 
34
34
  desc "Run all integration tests"
@@ -38,99 +38,99 @@ end
38
38
  dependencies = integration_test_dependencies(:_apache2)
39
39
  desc "Run Apache 2 integration tests"
40
40
  task 'test:integration:apache2' => dependencies do
41
- command = "bundle exec rspec -c -f s --tty integration_tests/apache2_tests.rb"
42
- if boolean_option('SUDO')
43
- command = "#{PlatformInfo.ruby_sudo_command} -E #{command}"
44
- end
45
- if grep = string_option('E')
46
- require 'shellwords'
47
- command << " -e #{Shellwords.escape(grep)}"
48
- end
49
- sh "cd test && exec #{command}"
41
+ command = "bundle exec rspec -c -f s --tty integration_tests/apache2_tests.rb"
42
+ if boolean_option('SUDO')
43
+ command = "#{PlatformInfo.ruby_sudo_command} -E #{command}"
44
+ end
45
+ if grep = string_option('E')
46
+ require 'shellwords'
47
+ command << " -e #{Shellwords.escape(grep)}"
48
+ end
49
+ sh "cd test && exec #{command}"
50
50
  end
51
51
 
52
52
  dependencies = integration_test_dependencies(:_nginx)
53
53
  desc "Run Nginx integration tests"
54
54
  task 'test:integration:nginx' => dependencies do
55
- command = "bundle exec rspec -c -f s --tty integration_tests/nginx_tests.rb"
56
- if boolean_option('SUDO')
57
- command = "#{PlatformInfo.ruby_sudo_command} -E #{command}"
58
- end
59
- if grep = string_option('E')
60
- require 'shellwords'
61
- command << " -e #{Shellwords.escape(grep)}"
62
- end
63
- repeat = true
64
- while repeat
65
- sh "cd test && exec #{command}"
66
- repeat = boolean_option('REPEAT')
67
- end
55
+ command = "bundle exec rspec -c -f s --tty integration_tests/nginx_tests.rb"
56
+ if boolean_option('SUDO')
57
+ command = "#{PlatformInfo.ruby_sudo_command} -E #{command}"
58
+ end
59
+ if grep = string_option('E')
60
+ require 'shellwords'
61
+ command << " -e #{Shellwords.escape(grep)}"
62
+ end
63
+ repeat = true
64
+ while repeat
65
+ sh "cd test && exec #{command}"
66
+ repeat = boolean_option('REPEAT')
67
+ end
68
68
  end
69
69
 
70
70
  dependencies = integration_test_dependencies(:_nginx)
71
71
  desc "Run Passenger Standalone integration tests"
72
72
  task 'test:integration:standalone' => dependencies do
73
- command = "bundle exec rspec -c -f s --tty integration_tests/standalone_tests.rb"
74
- if grep = string_option('E')
75
- require 'shellwords'
76
- command << " -e #{Shellwords.escape(grep)}"
77
- end
78
- sh "cd test && exec #{command}"
73
+ command = "bundle exec rspec -c -f s --tty integration_tests/standalone_tests.rb"
74
+ if grep = string_option('E')
75
+ require 'shellwords'
76
+ command << " -e #{Shellwords.escape(grep)}"
77
+ end
78
+ sh "cd test && exec #{command}"
79
79
  end
80
80
 
81
81
  desc "Run native packaging tests"
82
82
  task 'test:integration:native_packaging' do
83
- command = "bundle exec rspec -c -f s --tty integration_tests/native_packaging_spec.rb"
84
- if boolean_option('SUDO')
85
- command = "#{PlatformInfo.ruby_sudo_command} -E #{command}"
86
- end
87
- if grep = string_option('E')
88
- require 'shellwords'
89
- command << " -e #{Shellwords.escape(grep)}"
90
- end
91
- case PlatformInfo.os_name
92
- when "linux"
93
- if PlatformInfo.linux_distro_tags.include?(:debian)
94
- command = "env NATIVE_PACKAGING_METHOD=deb " +
95
- "LOCATIONS_INI=/usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini " +
96
- command
97
- elsif PlatformInfo.linux_distro_tags.include?(:redhat)
98
- command = "env NATIVE_PACKAGING_METHOD=rpm " +
99
- "LOCATIONS_INI=/usr/lib/ruby/site_ruby/1.8/phusion_passenger/locations.ini " +
100
- command
101
- else
102
- abort "Unsupported Linux distribution"
103
- end
104
- when "macosx"
105
- # The tests put /usr/bin and /usr/sbin first in PATH, causing /usr/bin/ruby to be used.
106
- # We should run the tests in /usr/bin/ruby too, so that native_support is compiled for
107
- # the same Ruby.
108
- prefix = "env NATIVE_PACKAGING_METHOD=homebrew " +
109
- "LOCATIONS_INI=/usr/local/Cellar/passenger/#{VERSION_STRING}/libexec/lib/phusion_passenger/locations.ini"
110
- if PlatformInfo.in_rvm?
111
- prefix << " rvm-exec system /usr/bin/ruby -S"
112
- end
113
- command = "#{prefix} #{command}"
114
- else
115
- abort "Unsupported operating system"
116
- end
117
- sh "cd test && exec #{command}"
83
+ command = "bundle exec rspec -c -f s --tty integration_tests/native_packaging_spec.rb"
84
+ if boolean_option('SUDO')
85
+ command = "#{PlatformInfo.ruby_sudo_command} -E #{command}"
86
+ end
87
+ if grep = string_option('E')
88
+ require 'shellwords'
89
+ command << " -e #{Shellwords.escape(grep)}"
90
+ end
91
+ case PlatformInfo.os_name
92
+ when "linux"
93
+ if PlatformInfo.linux_distro_tags.include?(:debian)
94
+ command = "env NATIVE_PACKAGING_METHOD=deb " +
95
+ "LOCATIONS_INI=/usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini " +
96
+ command
97
+ elsif PlatformInfo.linux_distro_tags.include?(:redhat)
98
+ command = "env NATIVE_PACKAGING_METHOD=rpm " +
99
+ "LOCATIONS_INI=/usr/lib/ruby/site_ruby/1.8/phusion_passenger/locations.ini " +
100
+ command
101
+ else
102
+ abort "Unsupported Linux distribution"
103
+ end
104
+ when "macosx"
105
+ # The tests put /usr/bin and /usr/sbin first in PATH, causing /usr/bin/ruby to be used.
106
+ # We should run the tests in /usr/bin/ruby too, so that native_support is compiled for
107
+ # the same Ruby.
108
+ prefix = "env NATIVE_PACKAGING_METHOD=homebrew " +
109
+ "LOCATIONS_INI=/usr/local/Cellar/passenger/#{VERSION_STRING}/libexec/lib/phusion_passenger/locations.ini"
110
+ if PlatformInfo.in_rvm?
111
+ prefix << " rvm-exec system /usr/bin/ruby -S"
112
+ end
113
+ command = "#{prefix} #{command}"
114
+ else
115
+ abort "Unsupported operating system"
116
+ end
117
+ sh "cd test && exec #{command}"
118
118
  end
119
119
 
120
120
  dependencies = integration_test_dependencies(:_apache2)
121
121
  desc "Run the 'apache2' integration test infinitely, and abort if/when it fails"
122
122
  task 'test:restart' => dependencies do
123
- require 'shellwords'
124
- color_code_start = "\e[33m\e[44m\e[1m"
125
- color_code_end = "\e[0m"
126
- i = 1
127
- while true do
128
- puts "#{color_code_start}Test run #{i} (press Ctrl-C multiple times to abort)#{color_code_end}"
129
- command = "bundle exec rspec -c -f s --tty integration_tests/apache2_tests.rb"
130
- if grep = string_option('E')
131
- command << " -e #{Shellwords.escape(grep)}"
132
- end
133
- sh "cd test && exec #{command}"
134
- i += 1
135
- end
123
+ require 'shellwords'
124
+ color_code_start = "\e[33m\e[44m\e[1m"
125
+ color_code_end = "\e[0m"
126
+ i = 1
127
+ while true do
128
+ puts "#{color_code_start}Test run #{i} (press Ctrl-C multiple times to abort)#{color_code_end}"
129
+ command = "bundle exec rspec -c -f s --tty integration_tests/apache2_tests.rb"
130
+ if grep = string_option('E')
131
+ command << " -e #{Shellwords.escape(grep)}"
132
+ end
133
+ sh "cd test && exec #{command}"
134
+ i += 1
135
+ end
136
136
  end
data/build/misc.rb CHANGED
@@ -24,165 +24,165 @@
24
24
 
25
25
  desc "Run 'sloccount' to see how much code Passenger has"
26
26
  task :sloccount do
27
- ENV['LC_ALL'] = 'C'
28
- begin
29
- # sloccount doesn't recognize the scripts in
30
- # bin/ as Ruby, so we make symlinks with proper
31
- # extensions.
32
- tmpdir = ".sloccount"
33
- system "rm -rf #{tmpdir}"
34
- mkdir tmpdir
35
- Dir['bin/*'].each do |file|
36
- safe_ln file, "#{tmpdir}/#{File.basename(file)}.rb"
37
- end
38
- sh "sloccount", *Dir[
39
- "#{tmpdir}/*",
40
- "lib/phusion_passenger",
41
- "ext/apache2",
42
- "ext/nginx",
43
- "ext/common",
44
- "ext/oxt",
45
- "ext/phusion_passenger/*.c",
46
- "test/**/*.{cpp,rb,h}"
47
- ]
48
- ensure
49
- system "rm -rf #{tmpdir}"
50
- end
27
+ ENV['LC_ALL'] = 'C'
28
+ begin
29
+ # sloccount doesn't recognize the scripts in
30
+ # bin/ as Ruby, so we make symlinks with proper
31
+ # extensions.
32
+ tmpdir = ".sloccount"
33
+ system "rm -rf #{tmpdir}"
34
+ mkdir tmpdir
35
+ Dir['bin/*'].each do |file|
36
+ safe_ln file, "#{tmpdir}/#{File.basename(file)}.rb"
37
+ end
38
+ sh "sloccount", *Dir[
39
+ "#{tmpdir}/*",
40
+ "lib/phusion_passenger",
41
+ "ext/apache2",
42
+ "ext/nginx",
43
+ "ext/common",
44
+ "ext/oxt",
45
+ "ext/phusion_passenger/*.c",
46
+ "test/**/*.{cpp,rb,h}"
47
+ ]
48
+ ensure
49
+ system "rm -rf #{tmpdir}"
50
+ end
51
51
  end
52
52
 
53
53
  def extract_latest_news_contents_and_items
54
- # The text is in the following format:
55
- #
56
- # Release x.x.x
57
- # -------------
58
- #
59
- # * Text.
60
- # * More text.
61
- # * A header.
62
- # With yet more text.
63
- #
64
- # Release y.y.y
65
- # -------------
66
- # .....
67
- contents = File.read("CHANGELOG")
54
+ # The text is in the following format:
55
+ #
56
+ # Release x.x.x
57
+ # -------------
58
+ #
59
+ # * Text.
60
+ # * More text.
61
+ # * A header.
62
+ # With yet more text.
63
+ #
64
+ # Release y.y.y
65
+ # -------------
66
+ # .....
67
+ contents = File.read("CHANGELOG")
68
68
 
69
- # We're only interested in the latest release, so extract the text for that.
70
- contents =~ /\A(Release.*?)^(Release|Older releases)/m
71
- contents = $1
72
- contents.sub!(/\A.*?\n-+\n+/m, '')
73
- contents.sub!(/\n+\Z/, '')
69
+ # We're only interested in the latest release, so extract the text for that.
70
+ contents =~ /\A(Release.*?)^(Release|Older releases)/m
71
+ contents = $1
72
+ contents.sub!(/\A.*?\n-+\n+/m, '')
73
+ contents.sub!(/\n+\Z/, '')
74
74
 
75
- # Now split the text into individual items.
76
- items = contents.split(/^ \* /)
77
- items.shift while items.first == ""
75
+ # Now split the text into individual items.
76
+ items = contents.split(/^ \* /)
77
+ items.shift while items.first == ""
78
78
 
79
- return [contents, items]
79
+ return [contents, items]
80
80
  end
81
81
 
82
82
  desc "Convert the Changelog items for the latest release to HTML"
83
83
  task :changelog_as_html do
84
- require 'cgi'
85
- contents, items = extract_latest_news_contents_and_items
84
+ require 'cgi'
85
+ contents, items = extract_latest_news_contents_and_items
86
86
 
87
- puts "<ul>"
88
- items.each do |item|
89
- def format_paragraph(text)
90
- # Get rid of newlines: convert them into spaces.
91
- text.gsub!("\n", ' ')
92
- while text.index(' ')
93
- text.gsub!(' ', ' ')
94
- end
87
+ puts "<ul>"
88
+ items.each do |item|
89
+ def format_paragraph(text)
90
+ # Get rid of newlines: convert them into spaces.
91
+ text.gsub!("\n", ' ')
92
+ while text.index(' ')
93
+ text.gsub!(' ', ' ')
94
+ end
95
95
 
96
- # Auto-link to issue tracker.
97
- text.gsub!(/(bug #|issue #|GH-)(\d+)/i) do
98
- url = "https://github.com/phusion/passenger/issues/#{$2}"
99
- %Q(<{a href="#{url}"}>#{$1}#{$2}<{/a}>)
100
- end
96
+ # Auto-link to issue tracker.
97
+ text.gsub!(/(bug #|issue #|GH-)(\d+)/i) do
98
+ url = "https://github.com/phusion/passenger/issues/#{$2}"
99
+ %Q(<{a href="#{url}"}>#{$1}#{$2}<{/a}>)
100
+ end
101
101
 
102
- text.strip!
103
- text = CGI.escapeHTML(text)
104
- text.gsub!(%r(&lt;\{(.*?)\}&gt;(.*?)&lt;\{/(.*?)\}&gt;)) do
105
- "<#{CGI.unescapeHTML $1}>#{$2}</#{CGI.unescapeHTML $3}>"
106
- end
107
- text
108
- end
102
+ text.strip!
103
+ text = CGI.escapeHTML(text)
104
+ text.gsub!(%r(&lt;\{(.*?)\}&gt;(.*?)&lt;\{/(.*?)\}&gt;)) do
105
+ "<#{CGI.unescapeHTML $1}>#{$2}</#{CGI.unescapeHTML $3}>"
106
+ end
107
+ text
108
+ end
109
109
 
110
- puts "<li>" + format_paragraph(item.strip) + "</li>"
111
- end
112
- puts "</ul>"
110
+ puts "<li>" + format_paragraph(item.strip) + "</li>"
111
+ end
112
+ puts "</ul>"
113
113
  end
114
114
 
115
115
  desc "Convert the Changelog items for the latest release to Markdown"
116
116
  task :changelog_as_markdown do
117
- contents, items = extract_latest_news_contents_and_items
117
+ contents, items = extract_latest_news_contents_and_items
118
118
 
119
- # Auto-link to issue tracker.
120
- contents.gsub!(/(bug #|issue #|GH-)(\d+)/i) do
121
- url = "https://github.com/phusion/passenger/issues/#{$2}"
122
- %Q([#{$1}#{$2}](#{url}))
123
- end
119
+ # Auto-link to issue tracker.
120
+ contents.gsub!(/(bug #|issue #|GH-)(\d+)/i) do
121
+ url = "https://github.com/phusion/passenger/issues/#{$2}"
122
+ %Q([#{$1}#{$2}](#{url}))
123
+ end
124
124
 
125
- puts contents
125
+ puts contents
126
126
  end
127
127
 
128
128
  desc "Update CONTRIBUTORS file"
129
129
  task :contributors do
130
- entries = `git log --format='%aN' | sort -u`.split("\n")
131
- entries.delete "Hongli Lai"
132
- entries.delete "Hongli Lai (Phusion"
133
- entries.delete "Ninh Bui"
134
- entries.push "Ninh Bui (Phusion)"
135
- entries.delete "Phusion Dev"
136
- entries.delete "Tinco Andringa"
137
- entries.push "Tinco Andringa (Phusion)"
138
- entries.delete "Goffert van Gool"
139
- entries.push "Goffert van Gool (Phusion)"
140
- entries.delete "Gokulnath"
141
- entries.push "Gokulnath Manakkattil"
142
- entries.push "Sean Wilkinson"
143
- entries.push "Yichun Zhang"
144
- File.open("CONTRIBUTORS", "w") do |f|
145
- f.puts(entries.sort{ |a, b| a.downcase <=> b.downcase }.join("\n"))
146
- end
147
- puts "Updated CONTRIBUTORS"
130
+ entries = `git log --format='%aN' | sort -u`.split("\n")
131
+ entries.delete "Hongli Lai"
132
+ entries.delete "Hongli Lai (Phusion"
133
+ entries.delete "Ninh Bui"
134
+ entries.push "Ninh Bui (Phusion)"
135
+ entries.delete "Phusion Dev"
136
+ entries.delete "Tinco Andringa"
137
+ entries.push "Tinco Andringa (Phusion)"
138
+ entries.delete "Goffert van Gool"
139
+ entries.push "Goffert van Gool (Phusion)"
140
+ entries.delete "Gokulnath"
141
+ entries.push "Gokulnath Manakkattil"
142
+ entries.push "Sean Wilkinson"
143
+ entries.push "Yichun Zhang"
144
+ File.open("CONTRIBUTORS", "w") do |f|
145
+ f.puts(entries.sort{ |a, b| a.downcase <=> b.downcase }.join("\n"))
146
+ end
147
+ puts "Updated CONTRIBUTORS"
148
148
  end
149
149
 
150
150
  dependencies = [
151
- COMMON_LIBRARY.link_objects,
152
- LIBBOOST_OXT,
153
- LIBEV_TARGET,
154
- LIBEIO_TARGET
151
+ COMMON_LIBRARY.link_objects,
152
+ LIBBOOST_OXT,
153
+ LIBEV_TARGET,
154
+ LIBEIO_TARGET
155
155
  ].flatten.compact
156
156
  task :compile_app => dependencies do
157
- source = ENV['SOURCE'] || ENV['FILE'] || ENV['F']
158
- if !source
159
- STDERR.puts "Please specify the source filename with SOURCE=(...)"
160
- exit 1
161
- end
162
- if source =~ /\.h/
163
- File.open('_source.cpp', 'w') do |f|
164
- f.puts "#include \"#{source}\""
165
- end
166
- source = '_source.cpp'
167
- end
168
- object = source.sub(/\.cpp$/, '.o')
169
- exe = source.sub(/\.cpp$/, '')
170
- begin
171
- compile_cxx(source,
172
- "-DSTANDALONE -o #{object} " <<
173
- "-Iext -Iext/common #{LIBEV_CFLAGS} #{LIBEIO_CFLAGS} " <<
174
- "#{EXTRA_CXXFLAGS}")
175
- create_executable(exe, object,
176
- "-DSTANDALONE " <<
177
- "-Iext -Iext/common #{LIBEV_CFLAGS} #{LIBEIO_CFLAGS} " <<
178
- "#{EXTRA_CXXFLAGS} " <<
179
- "#{COMMON_LIBRARY.link_objects_as_string} " <<
180
- "#{LIBBOOST_OXT} " <<
181
- "#{LIBEV_LIBS} " <<
182
- "#{LIBEIO_LIBS} " <<
183
- "#{PlatformInfo.portability_cxx_ldflags} " <<
184
- "#{EXTRA_CXX_LDFLAGS}")
185
- ensure
186
- File.unlink('_source.cpp') rescue nil
187
- end
157
+ source = ENV['SOURCE'] || ENV['FILE'] || ENV['F']
158
+ if !source
159
+ STDERR.puts "Please specify the source filename with SOURCE=(...)"
160
+ exit 1
161
+ end
162
+ if source =~ /\.h/
163
+ File.open('_source.cpp', 'w') do |f|
164
+ f.puts "#include \"#{source}\""
165
+ end
166
+ source = '_source.cpp'
167
+ end
168
+ object = source.sub(/\.cpp$/, '.o')
169
+ exe = source.sub(/\.cpp$/, '')
170
+ begin
171
+ compile_cxx(source,
172
+ "-DSTANDALONE -o #{object} " <<
173
+ "-Iext -Iext/common #{LIBEV_CFLAGS} #{LIBEIO_CFLAGS} " <<
174
+ "#{EXTRA_CXXFLAGS}")
175
+ create_executable(exe, object,
176
+ "-DSTANDALONE " <<
177
+ "-Iext -Iext/common #{LIBEV_CFLAGS} #{LIBEIO_CFLAGS} " <<
178
+ "#{EXTRA_CXXFLAGS} " <<
179
+ "#{COMMON_LIBRARY.link_objects_as_string} " <<
180
+ "#{LIBBOOST_OXT} " <<
181
+ "#{LIBEV_LIBS} " <<
182
+ "#{LIBEIO_LIBS} " <<
183
+ "#{PlatformInfo.portability_cxx_ldflags} " <<
184
+ "#{EXTRA_CXX_LDFLAGS}")
185
+ ensure
186
+ File.unlink('_source.cpp') rescue nil
187
+ end
188
188
  end