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
data/build/debian.rb CHANGED
@@ -34,170 +34,170 @@ DEBIAN_ARCHS = string_option("DEBIAN_ARCHS", "i386 amd64").split(/[ ,]/)
34
34
  DEBIAN_ORIG_TARBALL_FILES = lambda { PhusionPassenger::Packaging.debian_orig_tarball_files }
35
35
 
36
36
  def create_debian_package_dir(distribution, output_dir = PKG_DIR)
37
- require 'time'
38
-
39
- variables = {
40
- :distribution => distribution
41
- }
42
-
43
- root = "#{output_dir}/#{distribution}"
44
- orig_tarball = File.expand_path("#{PKG_DIR}/#{DEBIAN_NAME}_#{PACKAGE_VERSION}.orig.tar.gz")
45
-
46
- sh "rm -rf #{root}"
47
- sh "mkdir -p #{root}"
48
- sh "cd #{root} && tar xzf #{orig_tarball}"
49
- sh "bash -c 'shopt -s dotglob && mv #{root}/#{DEBIAN_NAME}_#{PACKAGE_VERSION}/* #{root}'"
50
- sh "rmdir #{root}/#{DEBIAN_NAME}_#{PACKAGE_VERSION}"
51
- recursive_copy_files(Dir["debian.template/**/*"], root,
52
- true, variables)
53
- sh "mv #{root}/debian.template #{root}/debian"
54
- changelog = File.read("#{root}/debian/changelog")
55
- changelog =
56
- "#{DEBIAN_NAME} (#{DEBIAN_EPOCH}:#{PACKAGE_VERSION}-1~#{distribution}1) #{distribution}; urgency=low\n" +
57
- "\n" +
58
- " * Package built.\n" +
59
- "\n" +
60
- " -- #{MAINTAINER_NAME} <#{MAINTAINER_EMAIL}> #{Time.now.rfc2822}\n\n" +
61
- changelog
62
- File.open("#{root}/debian/changelog", "w") do |f|
63
- f.write(changelog)
64
- end
37
+ require 'time'
38
+
39
+ variables = {
40
+ :distribution => distribution
41
+ }
42
+
43
+ root = "#{output_dir}/#{distribution}"
44
+ orig_tarball = File.expand_path("#{PKG_DIR}/#{DEBIAN_NAME}_#{PACKAGE_VERSION}.orig.tar.gz")
45
+
46
+ sh "rm -rf #{root}"
47
+ sh "mkdir -p #{root}"
48
+ sh "cd #{root} && tar xzf #{orig_tarball}"
49
+ sh "bash -c 'shopt -s dotglob && mv #{root}/#{DEBIAN_NAME}_#{PACKAGE_VERSION}/* #{root}'"
50
+ sh "rmdir #{root}/#{DEBIAN_NAME}_#{PACKAGE_VERSION}"
51
+ recursive_copy_files(Dir["debian.template/**/*"], root,
52
+ true, variables)
53
+ sh "mv #{root}/debian.template #{root}/debian"
54
+ changelog = File.read("#{root}/debian/changelog")
55
+ changelog =
56
+ "#{DEBIAN_NAME} (#{DEBIAN_EPOCH}:#{PACKAGE_VERSION}-1~#{distribution}1) #{distribution}; urgency=low\n" +
57
+ "\n" +
58
+ " * Package built.\n" +
59
+ "\n" +
60
+ " -- #{MAINTAINER_NAME} <#{MAINTAINER_EMAIL}> #{Time.now.rfc2822}\n\n" +
61
+ changelog
62
+ File.open("#{root}/debian/changelog", "w") do |f|
63
+ f.write(changelog)
64
+ end
65
65
  end
66
66
 
67
67
  task 'debian:orig_tarball' => Packaging::PREGENERATED_FILES do
68
- if File.exist?("#{PKG_DIR}/#{DEBIAN_NAME}_#{PACKAGE_VERSION}.orig.tar.gz")
69
- puts "WARNING: Debian orig tarball #{PKG_DIR}/#{DEBIAN_NAME}_#{PACKAGE_VERSION}.orig.tar.gz already exists. " +
70
- "It will not be regenerated. If you are sure that the orig tarball is outdated, please delete it " +
71
- "and rerun this task."
72
- else
73
- sh "mkdir -p #{PKG_DIR}"
74
- nginx_version = PhusionPassenger::PREFERRED_NGINX_VERSION
75
- local_nginx_tarball = File.expand_path("#{PKG_DIR}/nginx-#{nginx_version}.tar.gz")
76
- if File.exist?(local_nginx_tarball)
77
- puts "#{local_nginx_tarball} already exists"
78
- else
79
- sh "curl -L --fail -o #{local_nginx_tarball} http://nginx.org/download/nginx-#{nginx_version}.tar.gz"
80
- end
81
- sh "rm -rf #{PKG_DIR}/#{DEBIAN_NAME}_#{PACKAGE_VERSION}"
82
- sh "mkdir -p #{PKG_DIR}/#{DEBIAN_NAME}_#{PACKAGE_VERSION}"
83
- recursive_copy_files(DEBIAN_ORIG_TARBALL_FILES.call, "#{PKG_DIR}/#{DEBIAN_NAME}_#{PACKAGE_VERSION}")
84
- sh "cd #{PKG_DIR}/#{DEBIAN_NAME}_#{PACKAGE_VERSION} && tar xzf #{local_nginx_tarball}"
85
- sh "cd #{PKG_DIR} && find #{DEBIAN_NAME}_#{PACKAGE_VERSION} -print0 | xargs -0 touch -d '2013-10-27 00:00:00 UTC'"
86
- sh "cd #{PKG_DIR} && tar -c #{DEBIAN_NAME}_#{PACKAGE_VERSION} | gzip --no-name --best > #{DEBIAN_NAME}_#{PACKAGE_VERSION}.orig.tar.gz"
87
- end
68
+ if File.exist?("#{PKG_DIR}/#{DEBIAN_NAME}_#{PACKAGE_VERSION}.orig.tar.gz")
69
+ puts "WARNING: Debian orig tarball #{PKG_DIR}/#{DEBIAN_NAME}_#{PACKAGE_VERSION}.orig.tar.gz already exists. " +
70
+ "It will not be regenerated. If you are sure that the orig tarball is outdated, please delete it " +
71
+ "and rerun this task."
72
+ else
73
+ sh "mkdir -p #{PKG_DIR}"
74
+ nginx_version = PhusionPassenger::PREFERRED_NGINX_VERSION
75
+ local_nginx_tarball = File.expand_path("#{PKG_DIR}/nginx-#{nginx_version}.tar.gz")
76
+ if File.exist?(local_nginx_tarball)
77
+ puts "#{local_nginx_tarball} already exists"
78
+ else
79
+ sh "curl -L --fail -o #{local_nginx_tarball} http://nginx.org/download/nginx-#{nginx_version}.tar.gz"
80
+ end
81
+ sh "rm -rf #{PKG_DIR}/#{DEBIAN_NAME}_#{PACKAGE_VERSION}"
82
+ sh "mkdir -p #{PKG_DIR}/#{DEBIAN_NAME}_#{PACKAGE_VERSION}"
83
+ recursive_copy_files(DEBIAN_ORIG_TARBALL_FILES.call, "#{PKG_DIR}/#{DEBIAN_NAME}_#{PACKAGE_VERSION}")
84
+ sh "cd #{PKG_DIR}/#{DEBIAN_NAME}_#{PACKAGE_VERSION} && tar xzf #{local_nginx_tarball}"
85
+ sh "cd #{PKG_DIR} && find #{DEBIAN_NAME}_#{PACKAGE_VERSION} -print0 | xargs -0 touch -d '2013-10-27 00:00:00 UTC'"
86
+ sh "cd #{PKG_DIR} && tar -c #{DEBIAN_NAME}_#{PACKAGE_VERSION} | gzip --no-name --best > #{DEBIAN_NAME}_#{PACKAGE_VERSION}.orig.tar.gz"
87
+ end
88
88
  end
89
89
 
90
90
  desc "Build Debian source and binary package(s) for local testing"
91
91
  task 'debian:dev' do
92
- sh "rm -f #{PKG_DIR}/#{DEBIAN_NAME}_#{PACKAGE_VERSION}.orig.tar.gz"
93
- Rake::Task["debian:clean"].invoke
94
- Rake::Task["debian:orig_tarball"].invoke
95
- if string_option('DISTRO').nil?
96
- distributions = [File.read("/etc/lsb-release").scan(/^DISTRIB_CODENAME=(.+)/).first.first]
97
- else
98
- distributions = ALL_DISTRIBUTIONS
99
- end
100
- distributions.each do |distribution|
101
- create_debian_package_dir(distribution)
102
- sh "cd #{PKG_DIR}/#{distribution} && dpkg-checkbuilddeps"
103
- end
104
- distributions.each do |distribution|
105
- sh "cd #{PKG_DIR}/#{distribution} && env DEBUILD_DPKG_BUILDPACKAGE_OPTS=-F " +
106
- "debuild -e CCACHE_* -us -uc"
107
- end
92
+ sh "rm -f #{PKG_DIR}/#{DEBIAN_NAME}_#{PACKAGE_VERSION}.orig.tar.gz"
93
+ Rake::Task["debian:clean"].invoke
94
+ Rake::Task["debian:orig_tarball"].invoke
95
+ if string_option('DISTRO').nil?
96
+ distributions = [File.read("/etc/lsb-release").scan(/^DISTRIB_CODENAME=(.+)/).first.first]
97
+ else
98
+ distributions = ALL_DISTRIBUTIONS
99
+ end
100
+ distributions.each do |distribution|
101
+ create_debian_package_dir(distribution)
102
+ sh "cd #{PKG_DIR}/#{distribution} && dpkg-checkbuilddeps"
103
+ end
104
+ distributions.each do |distribution|
105
+ sh "cd #{PKG_DIR}/#{distribution} && env DEBUILD_DPKG_BUILDPACKAGE_OPTS=-F " +
106
+ "debuild -e CCACHE_* -us -uc"
107
+ end
108
108
  end
109
109
 
110
110
  desc "(Re)install the Debian binary packages built for local testing"
111
111
  task 'debian:dev:reinstall' do
112
- package_names = ["passenger", "passenger-dev",
113
- "passenger-doc", "libapache2-mod-passenger"]
114
- package_names.each do |name|
115
- if Dir["#{PKG_DIR}/#{name}_*.deb"].size > 1
116
- abort "Please ensure that #{PKG_DIR} only has 1 version of the Phusion Passenger packages."
117
- end
118
- end
119
- package_names.each do |name|
120
- if !system "sudo apt-get remove -y #{name}"
121
- if !$? || $?.exitstatus != 100
122
- abort
123
- end
124
- end
125
- end
126
- package_names.each do |name|
127
- filename = Dir["#{PKG_DIR}/#{name}_*.deb"].first
128
- sh "sudo gdebi -n #{filename}"
129
- end
112
+ package_names = ["passenger", "passenger-dev",
113
+ "passenger-doc", "libapache2-mod-passenger"]
114
+ package_names.each do |name|
115
+ if Dir["#{PKG_DIR}/#{name}_*.deb"].size > 1
116
+ abort "Please ensure that #{PKG_DIR} only has 1 version of the Phusion Passenger packages."
117
+ end
118
+ end
119
+ package_names.each do |name|
120
+ if !system "sudo apt-get remove -y #{name}"
121
+ if !$? || $?.exitstatus != 100
122
+ abort
123
+ end
124
+ end
125
+ end
126
+ package_names.each do |name|
127
+ filename = Dir["#{PKG_DIR}/#{name}_*.deb"].first
128
+ sh "sudo gdebi -n #{filename}"
129
+ end
130
130
  end
131
131
 
132
132
  desc "Build official Debian source packages"
133
133
  task 'debian:source_packages' => 'debian:orig_tarball' do
134
- if boolean_option('USE_CCACHE', false)
135
- # The resulting Debian rules file must not set USE_CCACHE.
136
- abort "USE_CCACHE must be returned off when running the debian:source_packages task."
137
- end
138
-
139
- pkg_dir = "#{PKG_DIR}/official"
140
- if File.exist?(pkg_dir)
141
- abort "#{pkg_dir} must not already exist when running the debian:source_packages task."
142
- end
143
- sh "mkdir #{pkg_dir}"
144
- sh "cd #{pkg_dir} && ln -s ../#{DEBIAN_NAME}_#{PACKAGE_VERSION}.orig.tar.gz ."
145
-
146
- ALL_DISTRIBUTIONS.each do |distribution|
147
- create_debian_package_dir(distribution, pkg_dir)
148
- end
149
- ALL_DISTRIBUTIONS.each do |distribution|
150
- sh "cd #{pkg_dir}/#{distribution} && env DEBUILD_DPKG_BUILDPACKAGE_OPTS=-S " +
151
- "debuild -us -uc"
152
- end
134
+ if boolean_option('USE_CCACHE', false)
135
+ # The resulting Debian rules file must not set USE_CCACHE.
136
+ abort "USE_CCACHE must be returned off when running the debian:source_packages task."
137
+ end
138
+
139
+ pkg_dir = "#{PKG_DIR}/official"
140
+ if File.exist?(pkg_dir)
141
+ abort "#{pkg_dir} must not already exist when running the debian:source_packages task."
142
+ end
143
+ sh "mkdir #{pkg_dir}"
144
+ sh "cd #{pkg_dir} && ln -s ../#{DEBIAN_NAME}_#{PACKAGE_VERSION}.orig.tar.gz ."
145
+
146
+ ALL_DISTRIBUTIONS.each do |distribution|
147
+ create_debian_package_dir(distribution, pkg_dir)
148
+ end
149
+ ALL_DISTRIBUTIONS.each do |distribution|
150
+ sh "cd #{pkg_dir}/#{distribution} && env DEBUILD_DPKG_BUILDPACKAGE_OPTS=-S " +
151
+ "debuild -us -uc"
152
+ end
153
153
  end
154
154
 
155
155
  def pbuilder_base_name(distribution, arch)
156
- if arch == "amd64"
157
- return distribution
158
- else
159
- return "#{distribution}-#{arch}"
160
- end
156
+ if arch == "amd64"
157
+ return distribution
158
+ else
159
+ return "#{distribution}-#{arch}"
160
+ end
161
161
  end
162
162
 
163
163
  def create_debian_binary_package_task(distribution, arch)
164
- task "debian:binary_package:#{distribution}_#{arch}" => 'debian:binary_packages:check' do
165
- require 'shellwords'
166
- base_name = "#{DEBIAN_NAME}_#{PACKAGE_VERSION}-1~#{distribution}1"
167
- logfile = "#{PKG_DIR}/official/passenger_#{distribution}_#{arch}.log"
168
- command = "cd #{PKG_DIR}/official && " +
169
- "pbuilder-dist #{distribution} #{arch} build #{base_name}.dsc " +
170
- "2>&1 | awk '{ print strftime(\"%Y-%m-%d %H:%M:%S -- \"), $0; fflush(); }'" +
171
- " | tee #{logfile}; test ${PIPESTATUS[0]} -eq 0"
172
- sh "bash -c #{Shellwords.escape(command)}"
173
- sh "echo Done >> #{logfile}"
174
- end
164
+ task "debian:binary_package:#{distribution}_#{arch}" => 'debian:binary_packages:check' do
165
+ require 'shellwords'
166
+ base_name = "#{DEBIAN_NAME}_#{PACKAGE_VERSION}-1~#{distribution}1"
167
+ logfile = "#{PKG_DIR}/official/passenger_#{distribution}_#{arch}.log"
168
+ command = "cd #{PKG_DIR}/official && " +
169
+ "pbuilder-dist #{distribution} #{arch} build #{base_name}.dsc " +
170
+ "2>&1 | awk '{ print strftime(\"%Y-%m-%d %H:%M:%S -- \"), $0; fflush(); }'" +
171
+ " | tee #{logfile}; test ${PIPESTATUS[0]} -eq 0"
172
+ sh "bash -c #{Shellwords.escape(command)}"
173
+ sh "echo Done >> #{logfile}"
174
+ end
175
175
  end
176
176
 
177
177
  DEBIAN_BINARY_PACKAGE_TASKS = []
178
178
  ALL_DISTRIBUTIONS.each do |distribution|
179
- DEBIAN_ARCHS.each do |arch|
180
- task = create_debian_binary_package_task(distribution, arch)
181
- DEBIAN_BINARY_PACKAGE_TASKS << task
182
- end
179
+ DEBIAN_ARCHS.each do |arch|
180
+ task = create_debian_binary_package_task(distribution, arch)
181
+ DEBIAN_BINARY_PACKAGE_TASKS << task
182
+ end
183
183
  end
184
184
 
185
185
  task 'debian:binary_packages:check' do
186
- pkg_dir = "#{PKG_DIR}/official"
187
- if !File.exist?(pkg_dir)
188
- abort "Please run rake debian:source_packages first."
189
- end
190
-
191
- pbuilder_dir = File.expand_path("~/pbuilder")
192
- ALL_DISTRIBUTIONS.each do |distribution|
193
- DEBIAN_ARCHS.each do |arch|
194
- pbase_name = pbuilder_base_name(distribution, arch) + "-base.tgz"
195
- if !File.exist?("#{pbuilder_dir}/#{pbase_name}")
196
- abort "Missing pbuilder environment for #{distribution}-#{arch}. " +
197
- "Please run this first: pbuilder-dist #{distribution} #{arch} create"
198
- end
199
- end
200
- end
186
+ pkg_dir = "#{PKG_DIR}/official"
187
+ if !File.exist?(pkg_dir)
188
+ abort "Please run rake debian:source_packages first."
189
+ end
190
+
191
+ pbuilder_dir = File.expand_path("~/pbuilder")
192
+ ALL_DISTRIBUTIONS.each do |distribution|
193
+ DEBIAN_ARCHS.each do |arch|
194
+ pbase_name = pbuilder_base_name(distribution, arch) + "-base.tgz"
195
+ if !File.exist?("#{pbuilder_dir}/#{pbase_name}")
196
+ abort "Missing pbuilder environment for #{distribution}-#{arch}. " +
197
+ "Please run this first: pbuilder-dist #{distribution} #{arch} create"
198
+ end
199
+ end
200
+ end
201
201
  end
202
202
 
203
203
  desc "Build official Debian binary packages"
@@ -205,11 +205,11 @@ task 'debian:binary_packages' => DEBIAN_BINARY_PACKAGE_TASKS
205
205
 
206
206
  desc "Clean Debian packaging products, except for orig tarball"
207
207
  task 'debian:clean' do
208
- files = Dir["#{PKG_DIR}/*.{changes,build,deb,dsc,upload}"]
209
- sh "rm -f #{files.join(' ')}"
210
- sh "rm -rf #{PKG_DIR}/official"
211
- ALL_DISTRIBUTIONS.each do |distribution|
212
- sh "rm -rf #{PKG_DIR}/#{distribution}"
213
- end
214
- sh "rm -rf #{PKG_DIR}/*.debian.tar.gz"
208
+ files = Dir["#{PKG_DIR}/*.{changes,build,deb,dsc,upload}"]
209
+ sh "rm -f #{files.join(' ')}"
210
+ sh "rm -rf #{PKG_DIR}/official"
211
+ ALL_DISTRIBUTIONS.each do |distribution|
212
+ sh "rm -rf #{PKG_DIR}/#{distribution}"
213
+ end
214
+ sh "rm -rf #{PKG_DIR}/*.debian.tar.gz"
215
215
  end
@@ -25,69 +25,69 @@ desc "Generate all documentation"
25
25
  task :doc => Packaging::ASCII_DOCS
26
26
 
27
27
  Packaging::ASCII_DOCS.each do |target|
28
- source = target.sub(/\.html$/, '.txt')
29
- file target => [source] + Dir["doc/users_guide_snippets/**/*"] do
30
- if target =~ /apache/i
31
- type = "apache"
32
- juvia_site_key = "5jpmkyjqlml8rktsfldfpbwth8ig7w9"
33
- elsif target =~ /nginx/i
34
- type = "nginx"
35
- juvia_site_key = "q0ptarhn8o9xanwomq8zkgewbtwffyz"
36
- elsif target =~ /standalone/i
37
- type = "standalone"
38
- juvia_site_key = "amggdy0k65hb4hbjg3dh7pnb9zd8dwy"
39
- else
40
- type = nil
41
- juvia_site_key = nil
42
- end
43
- command = "mizuho '#{source}'"
44
- command << " -a #{type}" if type
45
- if juvia_site_key
46
- command << " -c juvia --juvia-url http://juvia.phusion.nl --juvia-site-key #{juvia_site_key}"
47
- end
48
- sh(command)
49
- end
28
+ source = target.sub(/\.html$/, '.txt')
29
+ file target => [source] + Dir["doc/users_guide_snippets/**/*"] do
30
+ if target =~ /apache/i
31
+ type = "apache"
32
+ juvia_site_key = "5jpmkyjqlml8rktsfldfpbwth8ig7w9"
33
+ elsif target =~ /nginx/i
34
+ type = "nginx"
35
+ juvia_site_key = "q0ptarhn8o9xanwomq8zkgewbtwffyz"
36
+ elsif target =~ /standalone/i
37
+ type = "standalone"
38
+ juvia_site_key = "amggdy0k65hb4hbjg3dh7pnb9zd8dwy"
39
+ else
40
+ type = nil
41
+ juvia_site_key = nil
42
+ end
43
+ command = "mizuho '#{source}'"
44
+ command << " -a #{type}" if type
45
+ if juvia_site_key
46
+ command << " -c juvia --juvia-url http://juvia.phusion.nl --juvia-site-key #{juvia_site_key}"
47
+ end
48
+ sh(command)
49
+ end
50
50
 
51
- task :clean do
52
- if boolean_option('CLEAN_DOCS', true)
53
- sh "rm -f '#{target}'"
54
- end
55
- end
51
+ task :clean do
52
+ if boolean_option('CLEAN_DOCS', true)
53
+ sh "rm -f '#{target}'"
54
+ end
55
+ end
56
56
  end
57
57
 
58
58
  def create_markdown_compilation_task(target)
59
- source = target.sub(/\.html$/, '.txt.md')
60
- dependencies = [
61
- source,
62
- 'doc/templates/markdown.html.erb',
63
- 'doc/templates/bootstrap.min.css'
64
- ]
59
+ source = target.sub(/\.html$/, '.txt.md')
60
+ dependencies = [
61
+ source,
62
+ 'doc/templates/markdown.html.erb',
63
+ 'doc/templates/bootstrap.min.css'
64
+ ]
65
65
 
66
- file(target => dependencies) do
67
- sh "bluecloth -f #{source} > #{target}.tmp"
68
- begin
69
- puts "Creating #{target}"
70
- require 'erb'
71
- template = ERB.new(File.read('doc/templates/markdown.html.erb'))
72
- title = File.basename(target, '.html').gsub(/([A-Z])/, ' \1').strip
73
- content = File.read("#{target}.tmp")
74
- css = File.read('doc/templates/bootstrap.min.css')
75
- data = template.result(binding)
76
- File.open(target, 'w') do |f|
77
- f.write(data)
78
- end
79
- ensure
80
- sh "rm -f #{target}.tmp"
81
- end
82
- end
66
+ file(target => dependencies) do
67
+ sh "bluecloth -f #{source} > #{target}.tmp"
68
+ begin
69
+ puts "Creating #{target}"
70
+ require 'erb'
71
+ template = ERB.new(File.read('doc/templates/markdown.html.erb'))
72
+ title = File.basename(target, '.html').gsub(/([A-Z])/, ' \1').strip
73
+ content = File.read("#{target}.tmp")
74
+ css = File.read('doc/templates/bootstrap.min.css')
75
+ data = template.result(binding)
76
+ File.open(target, 'w') do |f|
77
+ f.write(data)
78
+ end
79
+ ensure
80
+ sh "rm -f #{target}.tmp"
81
+ end
82
+ end
83
83
 
84
- task :doc => target
84
+ task :doc => target
85
85
 
86
- task :clean do
87
- if boolean_option('CLEAN_DOCS', true)
88
- sh "rm -f #{target}"
89
- end
90
- end
86
+ task :clean do
87
+ if boolean_option('CLEAN_DOCS', true)
88
+ sh "rm -f #{target}"
89
+ end
90
+ end
91
91
  end
92
92
 
93
93
  create_markdown_compilation_task('doc/Packaging.html')
@@ -96,6 +96,6 @@ create_markdown_compilation_task('doc/ServerOptimizationGuide.html')
96
96
 
97
97
  desc "Upload documentation to the Phusion web server"
98
98
  task 'doc:rsync' => :doc do
99
- sh "cd doc && rsync -rv --progress --partial-dir=.rsync-partial --human-readable . " +
100
- "shell.phusion.nl:/home/phusion/websites/passenger_docs/"
99
+ sh "cd doc && rsync -rv --progress --partial-dir=.rsync-partial --human-readable . " +
100
+ "shell.phusion.nl:/home/phusion/websites/passenger_docs/"
101
101
  end