passenger 4.0.20 → 4.0.21

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 (496) hide show
  1. checksums.yaml +8 -8
  2. checksums.yaml.gz.asc +7 -7
  3. data.tar.gz.asc +7 -7
  4. data/.gitignore +1 -0
  5. data/.travis.yml +1 -1
  6. data/NEWS +15 -0
  7. data/README.md +5 -3
  8. data/Rakefile +1 -0
  9. data/bin/passenger-config +1 -5
  10. data/bin/passenger-install-apache2-module +53 -5
  11. data/bin/passenger-install-nginx-module +19 -6
  12. data/bin/passenger-memory-stats +3 -3
  13. data/build/agents.rb +11 -8
  14. data/build/apache2.rb +9 -5
  15. data/build/basics.rb +15 -21
  16. data/build/common_library.rb +16 -6
  17. data/build/cplusplus_support.rb +5 -5
  18. data/build/cxx_tests.rb +3 -3
  19. data/build/documentation.rb +1 -1
  20. data/build/misc.rb +4 -37
  21. data/build/node_tests.rb +29 -0
  22. data/build/oxt_tests.rb +1 -1
  23. data/build/packaging.rb +29 -10
  24. data/build/preprocessor.rb +2 -1
  25. data/build/test_basics.rb +15 -6
  26. data/debian.template/locations.ini.template +1 -0
  27. data/debian.template/passenger.install.template +1 -0
  28. data/dev/copy_boost_headers.rb +7 -3
  29. data/dev/run_travis.sh +32 -16
  30. data/doc/Users guide Apache.idmap.txt +22 -34
  31. data/doc/Users guide Apache.txt +20 -234
  32. data/doc/Users guide Nginx.idmap.txt +84 -66
  33. data/doc/Users guide Nginx.txt +50 -1
  34. data/doc/Users guide Standalone.idmap.txt +74 -0
  35. data/doc/Users guide Standalone.txt +22 -9
  36. data/doc/Users guide.txt +51 -0
  37. data/doc/users_guide_snippets/environment_variables.txt +0 -3
  38. data/doc/users_guide_snippets/installation.txt +337 -380
  39. data/doc/users_guide_snippets/installation/run_installer.txt +58 -0
  40. data/doc/users_guide_snippets/installation/verify_running_epilogue.txt +6 -0
  41. data/doc/users_guide_snippets/support_information.txt +2 -9
  42. data/doc/users_guide_snippets/troubleshooting/default.txt +112 -0
  43. data/doc/users_guide_snippets/troubleshooting/rails.txt +56 -0
  44. data/doc/users_guide_snippets/where_to_get_support.txt +9 -0
  45. data/ext/apache2/Bucket.h +1 -1
  46. data/ext/apache2/Configuration.hpp +0 -44
  47. data/ext/apache2/CreateDirConfig.cpp +1 -1
  48. data/ext/apache2/CreateDirConfig.cpp.erb +1 -1
  49. data/ext/apache2/Hooks.cpp +28 -21
  50. data/ext/apache2/MergeDirConfig.cpp +1 -0
  51. data/ext/apache2/MergeDirConfig.cpp.erb +1 -1
  52. data/ext/apache2/SetHeaders.cpp +73 -0
  53. data/ext/apache2/SetHeaders.cpp.erb +88 -0
  54. data/ext/boost/algorithm/string/detail/find_format.hpp +5 -5
  55. data/ext/boost/algorithm/string/detail/find_format_all.hpp +5 -5
  56. data/ext/boost/algorithm/string/detail/finder.hpp +1 -1
  57. data/ext/boost/algorithm/string/formatter.hpp +2 -2
  58. data/ext/boost/assert.hpp +6 -1
  59. data/ext/boost/atomic.hpp +18 -0
  60. data/ext/boost/atomic/atomic.hpp +241 -0
  61. data/ext/boost/atomic/detail/base.hpp +585 -0
  62. data/ext/boost/atomic/detail/cas32strong.hpp +885 -0
  63. data/ext/boost/atomic/detail/cas32weak.hpp +947 -0
  64. data/ext/boost/atomic/detail/cas64strong.hpp +443 -0
  65. data/ext/boost/atomic/detail/config.hpp +54 -0
  66. data/ext/boost/atomic/detail/gcc-alpha.hpp +368 -0
  67. data/ext/boost/atomic/detail/gcc-armv6plus.hpp +252 -0
  68. data/ext/boost/atomic/detail/gcc-cas.hpp +157 -0
  69. data/ext/boost/atomic/detail/gcc-ppc.hpp +2850 -0
  70. data/ext/boost/atomic/detail/gcc-sparcv9.hpp +1259 -0
  71. data/ext/boost/atomic/detail/gcc-x86.hpp +1766 -0
  72. data/ext/boost/atomic/detail/generic-cas.hpp +206 -0
  73. data/ext/boost/atomic/detail/interlocked.hpp +200 -0
  74. data/ext/boost/atomic/detail/linux-arm.hpp +189 -0
  75. data/ext/boost/atomic/detail/lockpool.hpp +97 -0
  76. data/ext/boost/atomic/detail/platform.hpp +62 -0
  77. data/ext/boost/atomic/detail/type-classification.hpp +45 -0
  78. data/ext/boost/chrono/config.hpp +8 -3
  79. data/ext/boost/chrono/duration.hpp +9 -10
  80. data/ext/boost/chrono/system_clocks.hpp +1 -1
  81. data/ext/boost/chrono/time_point.hpp +4 -3
  82. data/ext/boost/config/auto_link.hpp +53 -52
  83. data/ext/boost/config/compiler/borland.hpp +1 -0
  84. data/ext/boost/config/compiler/clang.hpp +24 -1
  85. data/ext/boost/config/compiler/codegear.hpp +1 -0
  86. data/ext/boost/config/compiler/common_edg.hpp +1 -0
  87. data/ext/boost/config/compiler/cray.hpp +1 -0
  88. data/ext/boost/config/compiler/digitalmars.hpp +1 -0
  89. data/ext/boost/config/compiler/gcc.hpp +29 -3
  90. data/ext/boost/config/compiler/gcc_xml.hpp +2 -1
  91. data/ext/boost/config/compiler/hp_acc.hpp +1 -0
  92. data/ext/boost/config/compiler/intel.hpp +1 -1
  93. data/ext/boost/config/compiler/metrowerks.hpp +1 -0
  94. data/ext/boost/config/compiler/mpw.hpp +1 -0
  95. data/ext/boost/config/compiler/pathscale.hpp +1 -0
  96. data/ext/boost/config/compiler/pgi.hpp +1 -0
  97. data/ext/boost/config/compiler/sunpro_cc.hpp +1 -0
  98. data/ext/boost/config/compiler/vacpp.hpp +3 -2
  99. data/ext/boost/config/compiler/visualc.hpp +25 -11
  100. data/ext/boost/config/platform/vxworks.hpp +353 -15
  101. data/ext/boost/config/select_compiler_config.hpp +4 -4
  102. data/ext/boost/config/stdlib/dinkumware.hpp +10 -3
  103. data/ext/boost/config/stdlib/libstdcpp3.hpp +2 -1
  104. data/ext/boost/config/suffix.hpp +45 -19
  105. data/ext/boost/date_time/format_date_parser.hpp +1 -11
  106. data/ext/boost/date_time/strings_from_facet.hpp +5 -3
  107. data/ext/boost/detail/atomic_redef_macros.hpp +19 -0
  108. data/ext/boost/detail/atomic_undef_macros.hpp +39 -0
  109. data/ext/boost/detail/endian.hpp +52 -4
  110. data/ext/boost/detail/scoped_enum_emulation.hpp +10 -10
  111. data/ext/boost/detail/select_type.hpp +36 -0
  112. data/ext/boost/exception/current_exception_cast.hpp +1 -1
  113. data/ext/boost/exception/detail/error_info_impl.hpp +3 -5
  114. data/ext/boost/exception/detail/exception_ptr.hpp +3 -3
  115. data/ext/boost/exception/detail/is_output_streamable.hpp +1 -1
  116. data/ext/boost/exception/detail/object_hex_dump.hpp +1 -1
  117. data/ext/boost/exception/detail/type_info.hpp +1 -1
  118. data/ext/boost/exception/diagnostic_information.hpp +15 -14
  119. data/ext/boost/exception/exception.hpp +1 -1
  120. data/ext/boost/exception/get_error_info.hpp +1 -1
  121. data/ext/boost/exception/info.hpp +12 -13
  122. data/ext/boost/exception/to_string.hpp +6 -1
  123. data/ext/boost/exception/to_string_stub.hpp +9 -1
  124. data/ext/boost/foreach.hpp +5 -5
  125. data/ext/boost/function/function_template.hpp +6 -6
  126. data/ext/boost/functional/hash/detail/float_functions.hpp +90 -0
  127. data/ext/boost/functional/hash/detail/hash_float.hpp +11 -2
  128. data/ext/boost/functional/hash/extensions.hpp +14 -2
  129. data/ext/boost/functional/hash/hash.hpp +26 -5
  130. data/ext/boost/get_pointer.hpp +17 -2
  131. data/ext/boost/integer_traits.hpp +1 -1
  132. data/ext/boost/lexical_cast.hpp +615 -395
  133. data/ext/boost/libs/atomic/lockpool.cpp +24 -0
  134. data/ext/boost/libs/system/src/error_code.cpp +25 -18
  135. data/ext/boost/libs/thread/src/future.cpp +7 -5
  136. data/ext/boost/libs/thread/src/pthread/once.cpp +9 -3
  137. data/ext/boost/libs/thread/src/pthread/once_atomic.cpp +90 -0
  138. data/ext/boost/libs/thread/src/pthread/thread.cpp +129 -95
  139. data/ext/boost/libs/thread/src/pthread/timeconv.inl +20 -1
  140. data/ext/boost/limits.hpp +1 -1
  141. data/ext/boost/math/policies/policy.hpp +10 -0
  142. data/ext/boost/math/special_functions/detail/round_fwd.hpp +17 -4
  143. data/ext/boost/math/special_functions/fpclassify.hpp +114 -45
  144. data/ext/boost/math/special_functions/math_fwd.hpp +195 -83
  145. data/ext/boost/math/special_functions/sign.hpp +13 -8
  146. data/ext/boost/math/tools/config.hpp +38 -16
  147. data/ext/boost/move/algorithm.hpp +275 -0
  148. data/ext/boost/move/core.hpp +332 -0
  149. data/ext/boost/move/detail/config_begin.hpp +23 -0
  150. data/ext/boost/move/detail/config_end.hpp +20 -0
  151. data/ext/boost/move/detail/meta_utils.hpp +158 -0
  152. data/ext/boost/move/iterator.hpp +298 -0
  153. data/ext/boost/move/move.hpp +10 -1256
  154. data/ext/boost/move/traits.hpp +142 -0
  155. data/ext/boost/move/utility.hpp +194 -0
  156. data/ext/boost/mpl/assert.hpp +72 -4
  157. data/ext/boost/noncopyable.hpp +15 -3
  158. data/ext/boost/pointer_to_other.hpp +55 -0
  159. data/ext/boost/range/concepts.hpp +4 -4
  160. data/ext/boost/range/detail/extract_optional_type.hpp +1 -1
  161. data/ext/boost/range/empty.hpp +1 -1
  162. data/ext/boost/range/iterator_range_core.hpp +4 -1
  163. data/ext/boost/range/iterator_range_io.hpp +2 -2
  164. data/ext/boost/ratio/config.hpp +6 -0
  165. data/ext/boost/ratio/detail/overflow_helpers.hpp +2 -2
  166. data/ext/boost/smart_ptr/allocate_shared_array.hpp +250 -0
  167. data/ext/boost/smart_ptr/detail/allocate_array_helper.hpp +169 -0
  168. data/ext/boost/smart_ptr/detail/array_deleter.hpp +124 -0
  169. data/ext/boost/smart_ptr/detail/array_traits.hpp +53 -0
  170. data/ext/boost/smart_ptr/detail/array_utility.hpp +178 -0
  171. data/ext/boost/smart_ptr/detail/make_array_helper.hpp +157 -0
  172. data/ext/boost/smart_ptr/detail/operator_bool.hpp +16 -9
  173. data/ext/boost/smart_ptr/detail/shared_count.hpp +78 -7
  174. data/ext/boost/smart_ptr/detail/sp_convertible.hpp +15 -0
  175. data/ext/boost/smart_ptr/detail/sp_counted_base.hpp +12 -6
  176. data/ext/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp +1 -0
  177. data/ext/boost/smart_ptr/detail/sp_counted_base_aix.hpp +1 -0
  178. data/ext/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +1 -0
  179. data/ext/boost/smart_ptr/detail/sp_counted_base_cw_x86.hpp +1 -0
  180. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp +1 -0
  181. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +1 -0
  182. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp +1 -0
  183. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp +1 -0
  184. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp +1 -0
  185. data/ext/boost/smart_ptr/detail/sp_counted_base_nt.hpp +1 -0
  186. data/ext/boost/smart_ptr/detail/sp_counted_base_pt.hpp +1 -0
  187. data/ext/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp +162 -0
  188. data/ext/boost/smart_ptr/detail/sp_counted_base_solaris.hpp +1 -0
  189. data/ext/boost/smart_ptr/detail/sp_counted_base_spin.hpp +1 -0
  190. data/ext/boost/smart_ptr/detail/sp_counted_base_sync.hpp +1 -0
  191. data/ext/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +1 -0
  192. data/ext/boost/smart_ptr/detail/sp_counted_impl.hpp +15 -0
  193. data/ext/boost/smart_ptr/detail/sp_forward.hpp +39 -0
  194. data/ext/boost/smart_ptr/detail/sp_has_sync.hpp +19 -3
  195. data/ext/boost/smart_ptr/detail/sp_if_array.hpp +31 -0
  196. data/ext/boost/smart_ptr/detail/sp_nullptr_t.hpp +45 -0
  197. data/ext/boost/smart_ptr/detail/spinlock_gcc_arm.hpp +5 -12
  198. data/ext/boost/smart_ptr/enable_shared_from_this.hpp +4 -4
  199. data/ext/boost/smart_ptr/make_shared.hpp +5 -1060
  200. data/ext/boost/smart_ptr/make_shared_array.hpp +247 -0
  201. data/ext/boost/smart_ptr/make_shared_object.hpp +1128 -0
  202. data/ext/boost/smart_ptr/scoped_array.hpp +32 -7
  203. data/ext/boost/smart_ptr/scoped_ptr.hpp +31 -5
  204. data/ext/boost/smart_ptr/shared_array.hpp +135 -20
  205. data/ext/boost/smart_ptr/shared_ptr.hpp +444 -126
  206. data/ext/boost/smart_ptr/weak_ptr.hpp +39 -28
  207. data/ext/boost/static_assert.hpp +74 -17
  208. data/ext/boost/system/error_code.hpp +76 -68
  209. data/ext/boost/system/system_error.hpp +5 -1
  210. data/ext/boost/thread/barrier.hpp +6 -2
  211. data/ext/boost/thread/completion_latch.hpp +233 -0
  212. data/ext/boost/thread/condition.hpp +6 -1
  213. data/ext/boost/thread/detail/async_func.hpp +571 -0
  214. data/ext/boost/thread/detail/config.hpp +248 -40
  215. data/ext/boost/thread/detail/counter.hpp +93 -0
  216. data/ext/boost/thread/detail/delete.hpp +12 -0
  217. data/ext/boost/thread/detail/invoke.hpp +1351 -0
  218. data/ext/boost/thread/detail/is_convertible.hpp +48 -0
  219. data/ext/boost/thread/detail/lockable_wrapper.hpp +45 -0
  220. data/ext/boost/thread/detail/log.hpp +83 -0
  221. data/ext/boost/thread/detail/make_tuple_indices.hpp +224 -0
  222. data/ext/boost/thread/detail/move.hpp +32 -16
  223. data/ext/boost/thread/detail/thread.hpp +236 -41
  224. data/ext/boost/thread/detail/thread_group.hpp +55 -9
  225. data/ext/boost/thread/detail/thread_interruption.hpp +4 -1
  226. data/ext/boost/thread/exceptions.hpp +2 -0
  227. data/ext/boost/thread/externally_locked.hpp +351 -0
  228. data/ext/boost/thread/externally_locked_stream.hpp +170 -0
  229. data/ext/boost/thread/future.hpp +2517 -455
  230. data/ext/boost/thread/future_error_code.hpp +61 -0
  231. data/ext/boost/thread/is_locked_by_this_thread.hpp +39 -0
  232. data/ext/boost/thread/latch.hpp +142 -0
  233. data/ext/boost/thread/lock_algorithms.hpp +468 -0
  234. data/ext/boost/thread/lock_concepts.hpp +197 -0
  235. data/ext/boost/thread/lock_factories.hpp +78 -0
  236. data/ext/boost/thread/lock_guard.hpp +88 -0
  237. data/ext/boost/thread/lock_options.hpp +31 -0
  238. data/ext/boost/thread/lock_traits.hpp +45 -0
  239. data/ext/boost/thread/lock_types.hpp +1226 -0
  240. data/ext/boost/thread/lockable_adapter.hpp +226 -0
  241. data/ext/boost/thread/lockable_concepts.hpp +157 -0
  242. data/ext/boost/thread/lockable_traits.hpp +207 -0
  243. data/ext/boost/thread/locks.hpp +5 -1816
  244. data/ext/boost/thread/mutex.hpp +33 -1
  245. data/ext/boost/thread/null_mutex.hpp +243 -0
  246. data/ext/boost/thread/once.hpp +10 -1
  247. data/ext/boost/thread/poly_lockable.hpp +68 -0
  248. data/ext/boost/thread/poly_lockable_adapter.hpp +89 -0
  249. data/ext/boost/thread/poly_shared_lockable.hpp +135 -0
  250. data/ext/boost/thread/poly_shared_lockable_adapter.hpp +170 -0
  251. data/ext/boost/thread/pthread/condition_variable.hpp +74 -26
  252. data/ext/boost/thread/pthread/condition_variable_fwd.hpp +54 -27
  253. data/ext/boost/thread/pthread/mutex.hpp +101 -38
  254. data/ext/boost/thread/pthread/once.hpp +459 -44
  255. data/ext/boost/thread/pthread/once_atomic.hpp +313 -0
  256. data/ext/boost/thread/pthread/recursive_mutex.hpp +19 -10
  257. data/ext/boost/thread/pthread/shared_mutex.hpp +226 -61
  258. data/ext/boost/thread/pthread/shared_mutex_assert.hpp +724 -0
  259. data/ext/boost/thread/pthread/thread_data.hpp +53 -50
  260. data/ext/boost/thread/pthread/timespec.hpp +96 -12
  261. data/ext/boost/thread/recursive_mutex.hpp +44 -1
  262. data/ext/boost/thread/reverse_lock.hpp +3 -2
  263. data/ext/boost/thread/scoped_thread.hpp +285 -0
  264. data/ext/boost/thread/shared_lock_guard.hpp +2 -1
  265. data/ext/boost/thread/shared_mutex.hpp +23 -0
  266. data/ext/boost/thread/strict_lock.hpp +235 -0
  267. data/ext/boost/thread/sync_bounded_queue.hpp +594 -0
  268. data/ext/boost/thread/sync_queue.hpp +516 -0
  269. data/ext/boost/thread/synchronized_value.hpp +1001 -0
  270. data/ext/boost/thread/testable_mutex.hpp +148 -0
  271. data/ext/boost/thread/thread.hpp +1 -13
  272. data/ext/boost/thread/thread_functors.hpp +57 -0
  273. data/ext/boost/thread/thread_guard.hpp +46 -0
  274. data/ext/boost/thread/thread_only.hpp +29 -0
  275. data/ext/boost/thread/v2/shared_mutex.hpp +1062 -0
  276. data/ext/boost/thread/v2/thread.hpp +37 -10
  277. data/ext/boost/thread/xtime.hpp +2 -1
  278. data/ext/boost/token_functions.hpp +16 -16
  279. data/ext/boost/type_traits/add_lvalue_reference.hpp +26 -0
  280. data/ext/boost/type_traits/add_reference.hpp +1 -1
  281. data/ext/boost/type_traits/add_rvalue_reference.hpp +4 -4
  282. data/ext/boost/type_traits/aligned_storage.hpp +13 -0
  283. data/ext/boost/type_traits/common_type.hpp +11 -12
  284. data/ext/boost/type_traits/config.hpp +1 -1
  285. data/ext/boost/type_traits/detail/common_type_imp.hpp +1 -1
  286. data/ext/boost/type_traits/detail/has_binary_operator.hpp +1 -1
  287. data/ext/boost/type_traits/detail/is_function_ptr_tester.hpp +1 -1
  288. data/ext/boost/type_traits/has_left_shift.hpp +49 -0
  289. data/ext/boost/type_traits/has_right_shift.hpp +49 -0
  290. data/ext/boost/type_traits/has_trivial_move_assign.hpp +57 -0
  291. data/ext/boost/type_traits/has_trivial_move_constructor.hpp +57 -0
  292. data/ext/boost/type_traits/intrinsics.hpp +18 -2
  293. data/ext/boost/type_traits/is_abstract.hpp +1 -1
  294. data/ext/boost/type_traits/is_array.hpp +1 -1
  295. data/ext/boost/type_traits/is_const.hpp +1 -1
  296. data/ext/boost/type_traits/is_convertible.hpp +78 -17
  297. data/ext/boost/type_traits/is_function.hpp +6 -1
  298. data/ext/boost/type_traits/is_integral.hpp +6 -1
  299. data/ext/boost/type_traits/is_nothrow_move_assignable.hpp +84 -0
  300. data/ext/boost/type_traits/is_nothrow_move_constructible.hpp +84 -0
  301. data/ext/boost/type_traits/is_pod.hpp +3 -1
  302. data/ext/boost/type_traits/is_rvalue_reference.hpp +1 -1
  303. data/ext/boost/type_traits/is_volatile.hpp +1 -1
  304. data/ext/boost/type_traits/make_signed.hpp +153 -0
  305. data/ext/boost/type_traits/make_unsigned.hpp +16 -0
  306. data/ext/boost/type_traits/remove_const.hpp +1 -1
  307. data/ext/boost/type_traits/remove_cv.hpp +1 -1
  308. data/ext/boost/type_traits/remove_reference.hpp +1 -1
  309. data/ext/boost/type_traits/remove_volatile.hpp +1 -1
  310. data/ext/boost/unordered/detail/allocate.hpp +1120 -0
  311. data/ext/boost/unordered/detail/buckets.hpp +876 -0
  312. data/ext/boost/unordered/detail/equivalent.hpp +680 -0
  313. data/ext/boost/unordered/detail/extract_key.hpp +183 -0
  314. data/ext/boost/unordered/detail/fwd.hpp +23 -0
  315. data/ext/boost/unordered/detail/table.hpp +861 -0
  316. data/ext/boost/unordered/detail/unique.hpp +622 -0
  317. data/ext/boost/unordered/detail/util.hpp +260 -0
  318. data/ext/boost/unordered/unordered_map.hpp +1652 -0
  319. data/ext/boost/unordered/unordered_map_fwd.hpp +65 -0
  320. data/ext/boost/unordered/unordered_set.hpp +1549 -0
  321. data/ext/boost/unordered/unordered_set_fwd.hpp +63 -0
  322. data/ext/boost/unordered_map.hpp +18 -0
  323. data/ext/boost/unordered_set.hpp +18 -0
  324. data/ext/boost/utility/addressof.hpp +2 -2
  325. data/ext/boost/utility/result_of.hpp +8 -1
  326. data/ext/boost/version.hpp +2 -2
  327. data/ext/common/Account.h +1 -1
  328. data/ext/common/AccountsDatabase.h +1 -1
  329. data/ext/common/AgentsStarter.cpp +3 -1
  330. data/ext/common/AgentsStarter.h +2 -2
  331. data/ext/common/ApplicationPool2/AppTypes.cpp +24 -6
  332. data/ext/common/ApplicationPool2/AppTypes.h +17 -8
  333. data/ext/common/ApplicationPool2/Common.h +12 -12
  334. data/ext/common/ApplicationPool2/DirectSpawner.h +2 -2
  335. data/ext/common/ApplicationPool2/DummySpawner.h +3 -3
  336. data/ext/common/ApplicationPool2/Group.h +6 -6
  337. data/ext/common/ApplicationPool2/Implementation.cpp +19 -19
  338. data/ext/common/ApplicationPool2/PipeWatcher.h +5 -5
  339. data/ext/common/ApplicationPool2/Pool.h +21 -21
  340. data/ext/common/ApplicationPool2/Process.h +6 -6
  341. data/ext/common/ApplicationPool2/Session.h +1 -1
  342. data/ext/common/ApplicationPool2/SmartSpawner.h +24 -12
  343. data/ext/common/ApplicationPool2/Socket.h +2 -2
  344. data/ext/common/ApplicationPool2/Spawner.h +64 -14
  345. data/ext/common/ApplicationPool2/SpawnerFactory.h +7 -7
  346. data/ext/common/ApplicationPool2/SuperGroup.h +5 -5
  347. data/ext/common/BackgroundEventLoop.cpp +4 -4
  348. data/ext/common/BackgroundEventLoop.h +1 -1
  349. data/ext/common/Constants.h +13 -1
  350. data/ext/common/EventedBufferedInput.h +8 -8
  351. data/ext/common/Exceptions.cpp +71 -0
  352. data/ext/common/Exceptions.h +60 -7
  353. data/ext/common/FileDescriptor.h +4 -4
  354. data/ext/common/MessageClient.h +1 -1
  355. data/ext/common/MessageServer.h +5 -5
  356. data/ext/common/MultiLibeio.cpp +3 -3
  357. data/ext/common/MultiLibeio.h +2 -2
  358. data/ext/common/RandomGenerator.h +11 -11
  359. data/ext/common/ResourceLocator.h +8 -1
  360. data/ext/common/SafeLibev.h +12 -12
  361. data/ext/common/ServerInstanceDir.h +11 -3
  362. data/ext/common/UnionStation.h +10 -10
  363. data/ext/common/Utils.cpp +11 -13
  364. data/ext/common/Utils.h +9 -9
  365. data/ext/common/Utils/BlockingQueue.h +10 -10
  366. data/ext/common/Utils/BufferedIO.h +1 -1
  367. data/ext/common/Utils/CachedFileStat.hpp +2 -2
  368. data/ext/common/Utils/FileChangeChecker.h +1 -1
  369. data/ext/common/Utils/HashMap.h +13 -4
  370. data/ext/common/Utils/IOUtils.cpp +33 -10
  371. data/ext/common/Utils/IniFile.h +3 -3
  372. data/ext/common/Utils/Lock.h +2 -2
  373. data/ext/common/Utils/MessagePassing.h +10 -10
  374. data/ext/common/Utils/ProcessMetricsCollector.h +24 -6
  375. data/ext/common/Utils/ScopeGuard.h +5 -5
  376. data/ext/common/Utils/jsoncpp.cpp +2 -0
  377. data/ext/common/agents/HelperAgent/FileBackedPipe.h +26 -26
  378. data/ext/common/agents/HelperAgent/Main.cpp +18 -18
  379. data/ext/common/agents/HelperAgent/RequestHandler.cpp +4 -4
  380. data/ext/common/agents/HelperAgent/RequestHandler.h +30 -21
  381. data/ext/common/agents/LoggingAgent/AdminController.h +1 -1
  382. data/ext/common/agents/LoggingAgent/FilterSupport.h +13 -11
  383. data/ext/common/agents/LoggingAgent/LoggingServer.h +11 -11
  384. data/ext/common/agents/LoggingAgent/Main.cpp +9 -9
  385. data/ext/common/agents/LoggingAgent/RemoteSender.h +3 -3
  386. data/ext/common/agents/SpawnPreparer.cpp +1 -0
  387. data/ext/common/agents/Watchdog/AgentWatcher.cpp +8 -7
  388. data/ext/common/agents/Watchdog/Main.cpp +81 -73
  389. data/ext/common/agents/Watchdog/ServerInstanceDirToucher.cpp +1 -1
  390. data/ext/libev/Changes +57 -0
  391. data/ext/libev/LICENSE +2 -1
  392. data/ext/libev/Makefile.in +110 -50
  393. data/ext/libev/README +8 -8
  394. data/ext/libev/aclocal.m4 +1503 -861
  395. data/ext/libev/config.guess +290 -304
  396. data/ext/libev/config.sub +77 -198
  397. data/ext/libev/configure +1735 -890
  398. data/ext/libev/configure.ac +3 -2
  399. data/ext/libev/ev++.h +6 -6
  400. data/ext/libev/ev.c +541 -214
  401. data/ext/libev/ev.h +106 -100
  402. data/ext/libev/ev_epoll.c +1 -1
  403. data/ext/libev/ev_kqueue.c +20 -4
  404. data/ext/libev/ev_vars.h +15 -16
  405. data/ext/libev/ev_win32.c +12 -2
  406. data/ext/libev/ev_wrap.h +162 -160
  407. data/ext/libev/event.c +29 -6
  408. data/ext/libev/event.h +9 -2
  409. data/ext/libev/ltmain.sh +2632 -1384
  410. data/ext/nginx/ConfigurationCommands.c +1 -1
  411. data/ext/nginx/ConfigurationCommands.c.erb +3 -1
  412. data/ext/nginx/ContentHandler.c +25 -2
  413. data/ext/nginx/CreateLocationConfig.c +1 -0
  414. data/ext/nginx/CreateLocationConfig.c.erb +1 -1
  415. data/ext/nginx/MergeLocationConfig.c +1 -0
  416. data/ext/nginx/MergeLocationConfig.c.erb +1 -1
  417. data/ext/nginx/config +12 -0
  418. data/ext/oxt/dynamic_thread_group.hpp +7 -4
  419. data/ext/oxt/system_calls.cpp +5 -1
  420. data/ext/oxt/system_calls.hpp +3 -0
  421. data/helper-scripts/node-loader.js +117 -249
  422. data/lib/phusion_passenger.rb +27 -5
  423. data/lib/phusion_passenger/abstract_installer.rb +104 -9
  424. data/lib/phusion_passenger/admin_tools/memory_stats.rb +10 -9
  425. data/lib/phusion_passenger/apache2/config_options.rb +6 -3
  426. data/lib/phusion_passenger/common_library.rb +7 -1
  427. data/lib/phusion_passenger/constants.rb +6 -0
  428. data/lib/phusion_passenger/loader_shared_helpers.rb +7 -4
  429. data/lib/phusion_passenger/nginx/config_options.rb +2 -1
  430. data/lib/phusion_passenger/packaging.rb +3 -0
  431. data/lib/phusion_passenger/platform_info/apache.rb +43 -6
  432. data/lib/phusion_passenger/platform_info/apache_detector.rb +15 -5
  433. data/lib/phusion_passenger/platform_info/compiler.rb +167 -32
  434. data/lib/phusion_passenger/platform_info/cxx_portability.rb +133 -77
  435. data/lib/phusion_passenger/platform_info/depcheck.rb +17 -7
  436. data/lib/phusion_passenger/platform_info/depcheck_specs/apache2.rb +3 -3
  437. data/lib/phusion_passenger/platform_info/depcheck_specs/compiler_toolchain.rb +4 -4
  438. data/lib/phusion_passenger/platform_info/depcheck_specs/ruby.rb +5 -6
  439. data/lib/phusion_passenger/platform_info/linux.rb +2 -1
  440. data/lib/phusion_passenger/platform_info/operating_system.rb +1 -1
  441. data/lib/phusion_passenger/platform_info/ruby.rb +18 -3
  442. data/lib/phusion_passenger/standalone/runtime_installer.rb +6 -2
  443. data/lib/phusion_passenger/standalone/start_command.rb +8 -2
  444. data/lib/phusion_passenger/utils/ansi_colors.rb +9 -0
  445. data/lib/phusion_passenger/utils/hosts_file_parser.rb +4 -2
  446. data/node_lib/phusion_passenger/httplib_emulation.js +141 -0
  447. data/node_lib/phusion_passenger/line_reader.js +154 -0
  448. data/node_lib/phusion_passenger/request_handler.js +65 -0
  449. data/node_lib/phusion_passenger/session_protocol_parser.js +113 -0
  450. data/resources/templates/apache2/deployment_example.txt.erb +2 -1
  451. data/resources/templates/apache2/installing_against_a_different_apache.txt.erb +14 -0
  452. data/resources/templates/apache2/multiple_apache_installations_detected.txt.erb +15 -0
  453. data/resources/templates/apache2/possible_solutions_for_compilation_and_installation_problems.txt.erb +4 -5
  454. data/resources/templates/general_error_with_html.html.template +1 -1
  455. data/resources/templates/installer_common/gem_install_permission_problems.txt.erb +17 -0
  456. data/resources/templates/installer_common/low_amount_of_memory_warning.txt.erb +6 -4
  457. data/resources/templates/installer_common/world_inaccessible_directories.txt.erb +16 -0
  458. data/resources/templates/nginx/deployment_example.txt.erb +2 -1
  459. data/resources/templates/nginx/possible_solutions_for_compilation_and_installation_problems.txt.erb +4 -5
  460. data/resources/templates/standalone/config.erb +1 -0
  461. data/test/cxx/ApplicationPool2/DirectSpawnerTest.cpp +3 -3
  462. data/test/cxx/ApplicationPool2/PoolTest.cpp +4 -4
  463. data/test/cxx/ApplicationPool2/ProcessTest.cpp +5 -5
  464. data/test/cxx/ApplicationPool2/SmartSpawnerTest.cpp +5 -5
  465. data/test/cxx/ApplicationPool2/SpawnerTestCases.cpp +1 -1
  466. data/test/cxx/EventedBufferedInputTest.cpp +6 -6
  467. data/test/cxx/FileBackedPipeTest.cpp +1 -1
  468. data/test/cxx/MessagePassingTest.cpp +1 -1
  469. data/test/cxx/MessageServerTest.cpp +4 -4
  470. data/test/cxx/RequestHandlerTest.cpp +7 -7
  471. data/test/cxx/UnionStationTest.cpp +2 -2
  472. data/test/node/line_reader_spec.js +338 -0
  473. data/test/node/spec_helper.js +27 -0
  474. data/test/ruby/standalone/runtime_installer_spec.rb +2 -1
  475. metadata +131 -22
  476. metadata.gz.asc +7 -7
  477. data/ext/boost/functional/hash/detail/container_fwd_0x.hpp +0 -29
  478. data/ext/boost/lambda/core.hpp +0 -79
  479. data/ext/boost/lambda/detail/actions.hpp +0 -174
  480. data/ext/boost/lambda/detail/arity_code.hpp +0 -110
  481. data/ext/boost/lambda/detail/function_adaptors.hpp +0 -789
  482. data/ext/boost/lambda/detail/is_instance_of.hpp +0 -104
  483. data/ext/boost/lambda/detail/lambda_config.hpp +0 -48
  484. data/ext/boost/lambda/detail/lambda_functor_base.hpp +0 -615
  485. data/ext/boost/lambda/detail/lambda_functors.hpp +0 -324
  486. data/ext/boost/lambda/detail/lambda_fwd.hpp +0 -74
  487. data/ext/boost/lambda/detail/lambda_traits.hpp +0 -578
  488. data/ext/boost/lambda/detail/member_ptr.hpp +0 -737
  489. data/ext/boost/lambda/detail/operator_actions.hpp +0 -139
  490. data/ext/boost/lambda/detail/operator_lambda_func_base.hpp +0 -271
  491. data/ext/boost/lambda/detail/operator_return_type_traits.hpp +0 -917
  492. data/ext/boost/lambda/detail/operators.hpp +0 -370
  493. data/ext/boost/lambda/detail/ret.hpp +0 -325
  494. data/ext/boost/lambda/detail/return_type_traits.hpp +0 -282
  495. data/ext/boost/lambda/detail/select_functions.hpp +0 -74
  496. data/ext/boost/lambda/lambda.hpp +0 -34
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- OWI3NGM4NmQ1MmJmNjRiYWNmZDFkNDFjZWZkZjg4YWEyMzllOTk1OA==
4
+ M2ZhMjE5NTJiOGE0ZDIyZWM1NTBjMGNhZGViNDBlNGY0ZjM5NjlhOQ==
5
5
  data.tar.gz: !binary |-
6
- NDhlZmE4OTZiYjE1ZGM4ZjY5MGQ4NmJmNDNlY2Q2MjZkMTA3NTRjYw==
6
+ YjZlMWNhZmYyYjU2OWYxMDJhNTFkYTA1ZGExNzIzOTQwMDViNjgxYQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- OGI1ZjJjZTU2YjRhYjk3ODZmNWM1NWEzNzQ2YWMyOGU2MjFmMjEwODhjNjNj
10
- ZGU4MTI1ZWI0YTA0Yjk2MTdmYWFkODA2Yzc0NzQxODc2NjJhZjQ5OTEyMTIx
11
- NjY0Njg3MDI2N2E2MmI1NjgwZDdiMjQxYTU4M2ViZTJjZTFkZDk=
9
+ ZjBkYmY3YTM4YTM5ODJkMTk3OTk3NDQzNWUzNzhhZWQ1YmIyZTUxYWQ2YTNj
10
+ ZjM1NWJlNmY1ZTE3MGVmZjdmMjUzZjc3MGJmZDM2MTUwNTJhMDY3NDE1M2Y1
11
+ ZmFiM2JmOTUxZjJmODQwNTA4OGQ0YjZjOGQ5MDJiZDQ4ZGU1NWM=
12
12
  data.tar.gz: !binary |-
13
- ZDlhMjFiYjE5OTY1MTMyM2VmNjIzYmM5MjE1NzRiMTFlMzRiODZiMzE4Mzgz
14
- NTkzMTY2NjRmMjM3ZDc0ZGIzZWYwNTNlZjUwNmIyMWQwOTA5NzI0YzI3OTRi
15
- ODY1ZDE5MGMyMGM4YzM4YzIwOWE4MGM5NmIwYjcyMmNjYWY3YWI=
13
+ MzY3ODg5NDk5YWFkMDk1YzgwODUzZjJkNDg2NWM4MTNhN2NjOGIyNGE1YjU3
14
+ ZDE2Y2M5MzdiNGFlODI1ZmJkZTc1YTRhMTBlYjgwYTg0N2M4NGIwOTdmMDAx
15
+ MDg0MTBiNzYwMWU4MDhmYmVmNGEwM2E5NmEzOWU0ZWYxZGIxMjc=
@@ -2,11 +2,11 @@
2
2
  Version: GnuPG/MacGPG2 v2.0.17 (Darwin)
3
3
  Comment: GPGTools - http://gpgtools.org
4
4
 
5
- iQEcBAABAgAGBQJSVR2DAAoJECrHRaUKISqMb4gH/0KcDsUi/7/IEPR9w+AUNXbi
6
- xop3xQSJqggT9HDPWhhsh0thwPVdAwWC8etDd/99RMEW6KQMnSwBr9DP8TbrjG5C
7
- LdstIpTF11l7lcqpc4cNdbq7giE2iriyOWjQzwKEr2UpAgNzbjCVM09Wz6KqIJrV
8
- aFUXSybIsr3N9gnPqdPwJ6Gp/0QyPDyMVXcNZzcOVvLlZ1EwNHDIsjBG1V0t+8o0
9
- HLCLb5FXvVrZ5DujwXfvaEeVLz+rpu7RpXrTxqbW5rHjFMn+oYgdMxidEavDgXBD
10
- TOUpkexYX/fUZd2EKxJWS+otVzN9HV7qnx1YKJQOwyVLfkK6kDgqOXQgPQYz+G8=
11
- =lBSY
5
+ iQEcBAABAgAGBQJSZ4W4AAoJECrHRaUKISqMThEH/ROJ//SeW8+MOTnL0+Xw74nZ
6
+ pRPCbTmu0ba/3v70aHDYFsqAwEZ+BYo1aBAl2GY37177OxHOdA1St7vYgKOtQRZ+
7
+ aSLDDfk0Yfz560U8uF/ngx0ngkXEieRC5VflR/iZYlXPz3ZefRr4b8Azr73jaqg1
8
+ LFOjjutN7zbYouwH6XEP1yxLYBForJ9/gmI6HDayjfExsVlNa0fOh+jbdXS/IZ2P
9
+ pUlgF9FXBhJUnwhwV74nV/K3fZnLbYu5SQNhWRQK+FTr7wofBoZqY/rC/15XxiMg
10
+ JndDcCKiw7QAAh9v2iJteKbIktnTsFLI2GvXXidfj6uZl6EwgkolkGpnGllU0fM=
11
+ =CXOE
12
12
  -----END PGP SIGNATURE-----
data.tar.gz.asc CHANGED
@@ -2,11 +2,11 @@
2
2
  Version: GnuPG/MacGPG2 v2.0.17 (Darwin)
3
3
  Comment: GPGTools - http://gpgtools.org
4
4
 
5
- iQEcBAABAgAGBQJSVR2DAAoJECrHRaUKISqMiO0H/AiYTBtbpvN5Q/WIYRo99pu5
6
- +VyZpUvISKG7+Mdqb8hEL+O/TvGYQsiCliOhF2UWAjTUdm+fXOXcs5KXWJV3wJZU
7
- +mzKZ9Xy0a6HLVyLQV3v+bMe5hNBDFx5YI4js0Vlhx9SGV3NQwxIgQ3sfqmmbdtw
8
- ieKmrLakgDuOHFxPmAibEL5Lv4R+rRlhldsoDoVmp8zuLJcxobaNkNkS1nXqvhha
9
- NeQjYetL4BisdneEwt1BeZusNHAON5Blt88SgQfbSkPB6Zz7PXxiuCRWfdxkJ9/d
10
- K9w5TTHXf+TL+OfnRZ9Aaz8vdcRdihNNaPWURgDwhGl2Q9k1BKmIPfxxfZsnBtY=
11
- =LZ+T
5
+ iQEcBAABAgAGBQJSZ4W4AAoJECrHRaUKISqMSmkH/2i54l0LeCiPf3VCaAtXD27R
6
+ cuOCDGm+qUJNBYib4hf2A/YNnJhCmgQ/NTuqthWTHCf9MKMeG6xiXAhafLghYDjR
7
+ nfVxTAM+ZvHxvPm/y1/fOgKoNAJu/ExKayaFnhtlusR6CeoWdLvRImYAObQ0ui9W
8
+ jydlntjZWkDU0dtuMICgkgEUxge/ss81msLBfvEqWILx8GJ7xIDR/89qagbfi1AB
9
+ HwQfigfgSHwxLIhjGhd3K5sLkZyD5gN01iLj99lO33wBcJRPCpJquvrrl+egybGN
10
+ OQNTDkmW7sKHRQPcX78uvlR5VlnfRSuP9RCL0aa25EdZkOlVxkuc6cR3OtgWXEs=
11
+ =JQt6
12
12
  -----END PGP SIGNATURE-----
data/.gitignore CHANGED
@@ -64,3 +64,4 @@ test/stub/zsfa/mycook
64
64
  test/stub/zsfa/foo
65
65
  test/support/allocate_memory
66
66
  pkg
67
+ node_modules
@@ -1,7 +1,7 @@
1
1
  language: ruby
2
2
 
3
3
  env:
4
- - TEST_CXX=1
4
+ - TEST_CXX=1 TEST_NODE=1
5
5
  - TEST_CXX=1 SUDO=1
6
6
  - TEST_RUBY=1 TEST_RUBY_VERSION=1.8.7 TEST_CLASSIC_RAILS=0
7
7
  - TEST_RUBY=1 TEST_RUBY_VERSION=1.9.3 TEST_CLASSIC_RAILS=0
data/NEWS CHANGED
@@ -1,3 +1,18 @@
1
+ Release 4.0.21
2
+ --------------
3
+
4
+ * [Nginx] Upgraded the preferred Nginx version to 1.4.3.
5
+ * Prelimenary OS X Mavericks support.
6
+ * Work around an Apache packaging bug in CentOS 5.
7
+ * Various user friendliness improvements in the documentation and the
8
+ installers.
9
+ * Fixed a bug in the always_restart.txt support. Phusion Passenger was
10
+ looking for it in the wrong directory.
11
+ * Many Solaris and Sun Studio compatibility fixes. Special thanks to
12
+ "mark" for his extensive assistance.
13
+ * [Standalone] The --temp-dir command line option has been introduced.
14
+
15
+
1
16
  Release 4.0.20
2
17
  --------------
3
18
 
data/README.md CHANGED
@@ -12,10 +12,12 @@ You can install either Phusion Passenger for Apache or for Nginx. Basically, ins
12
12
 
13
13
  ./bin/passenger-install-nginx-module
14
14
 
15
- That's it. :) However on some systems installation may require some more steps. You may have to run `sudo` or `rvmsudo`, and you may have to relax permissions on some directories, etc. Detailed fool-proof installation instructions can be found in the documentation:
15
+ -OR-
16
+
17
+ # From your application directory
18
+ ~/path-to-passenger/bin/passenger start
16
19
 
17
- * [Apache version](http://www.modrails.com/documentation/Users%20guide%20Apache.html#tarball_generic_install)
18
- * [Nginx version](http://www.modrails.com/documentation/Users%20guide%20Nginx.html#tarball_generic_install)
20
+ That's it. :) However on some systems installation may require some more steps. You may have to run `sudo` or `rvmsudo`, and you may have to relax permissions on some directories, etc. Detailed fool-proof installation instructions can be found in [the documentation](http://www.modrails.com/documentation/Users%20guide.html).
19
21
 
20
22
  For troubleshooting, configuration and tips, please also refer to the above documentation. For further support, please refer to [the Phusion Passenger support page](https://www.phusionpassenger.com/support).
21
23
 
data/Rakefile CHANGED
@@ -34,6 +34,7 @@ else
34
34
  require 'build/oxt_tests'
35
35
  require 'build/cxx_tests'
36
36
  require 'build/ruby_tests'
37
+ require 'build/node_tests'
37
38
  require 'build/integration_tests'
38
39
  require 'build/misc'
39
40
  require 'build/debian'
@@ -67,11 +67,7 @@ when "--includedir"
67
67
  when "--nginx-addon-dir"
68
68
  puts PhusionPassenger.nginx_module_source_dir
69
69
  when "--nginx-libs"
70
- text = "#{common_library.link_objects_as_string} #{PhusionPassenger.lib_dir}/common/libboost_oxt.a"
71
- if PhusionPassenger::PlatformInfo.has_math_library?
72
- text << " -lm"
73
- end
74
- puts text
70
+ puts "#{common_library.link_objects_as_string} #{PhusionPassenger.lib_dir}/common/libboost_oxt.a"
75
71
  when "--compiled"
76
72
  common_library.link_objects.each do |filename|
77
73
  if !File.exist?(filename)
@@ -36,8 +36,10 @@ PhusionPassenger.locate_directories
36
36
  ENV["PATH"] += ":/usr/sbin:/sbin:/usr/local/sbin"
37
37
 
38
38
  require 'optparse'
39
+ require 'stringio'
39
40
  require 'phusion_passenger/platform_info/ruby'
40
41
  require 'phusion_passenger/platform_info/apache'
42
+ require 'phusion_passenger/platform_info/apache_detector'
41
43
  require 'phusion_passenger/abstract_installer'
42
44
 
43
45
  class Installer < PhusionPassenger::AbstractInstaller
@@ -79,8 +81,12 @@ class Installer < PhusionPassenger::AbstractInstaller
79
81
  return [specs, ids]
80
82
  end
81
83
 
82
- def users_guide
83
- return "#{PhusionPassenger.doc_dir}/Users guide Apache.html"
84
+ def users_guide_path
85
+ return PhusionPassenger.apache2_doc_path
86
+ end
87
+
88
+ def users_guide_url
89
+ return APACHE2_DOC_URL
84
90
  end
85
91
 
86
92
  def run_steps
@@ -93,7 +99,10 @@ class Installer < PhusionPassenger::AbstractInstaller
93
99
 
94
100
  Dir.chdir(PASSENGER_ROOT)
95
101
  show_welcome_screen
102
+ check_gem_install_permission_problems || exit(1)
103
+ check_directory_accessible_by_web_server
96
104
  check_dependencies || exit(1)
105
+ check_whether_there_are_multiple_apache_installs || exit
97
106
  check_whether_apache_uses_compatible_mpm
98
107
  check_whether_os_is_broken
99
108
  check_whether_system_has_enough_ram
@@ -112,6 +121,43 @@ private
112
121
  render_template 'apache2/welcome', :version => VERSION_STRING
113
122
  wait
114
123
  end
124
+
125
+ def check_whether_there_are_multiple_apache_installs
126
+ new_screen
127
+ puts '<banner>Sanity checking Apache installation...</banner>'
128
+
129
+ output = StringIO.new
130
+ detector = PlatformInfo::ApacheDetector.new(output)
131
+ begin
132
+ detector.detect_all
133
+ detector.report
134
+ @apache2 = detector.result_for(PlatformInfo.apxs2)
135
+ if detector.results.size > 1
136
+ other_installs = detector.results - [@apache2]
137
+ render_template 'apache2/multiple_apache_installations_detected',
138
+ :current => @apache2,
139
+ :other_installs => other_installs
140
+ puts
141
+ if interactive?
142
+ result = prompt_confirmation "Are you sure you want to install " +
143
+ "against Apache #{@apache2.version} (#{@apache2.apxs2})?"
144
+ if !result
145
+ puts
146
+ line
147
+ render_template 'apache2/installing_against_a_different_apache',
148
+ :other_installs => other_installs
149
+ end
150
+ return result
151
+ else
152
+ puts '<yellow>Continuing installation because --auto is given.</yellow>'
153
+ end
154
+ else
155
+ return true
156
+ end
157
+ ensure
158
+ detector.finish
159
+ end
160
+ end
115
161
 
116
162
  def check_whether_apache_uses_compatible_mpm
117
163
  # 'httpd -V' output is in the form of:
@@ -199,7 +245,8 @@ private
199
245
  puts
200
246
  line
201
247
  render_template 'apache2/deployment_example',
202
- :users_guide => users_guide,
248
+ :users_guide_path => users_guide_path,
249
+ :users_guide_url => users_guide_url,
203
250
  :phusion_website => PHUSION_WEBSITE,
204
251
  :passenger_website => PASSENGER_WEBSITE
205
252
  end
@@ -207,8 +254,9 @@ private
207
254
  def show_possible_solutions_for_compilation_and_installation_problems
208
255
  new_screen
209
256
  render_template 'apache2/possible_solutions_for_compilation_and_installation_problems',
210
- :users_guide => users_guide,
211
- :passenger_website => PASSENGER_WEBSITE
257
+ :users_guide_path => users_guide_path,
258
+ :users_guide_url => users_guide_url,
259
+ :support_url => SUPPORT_URL
212
260
  end
213
261
  end
214
262
 
@@ -63,8 +63,12 @@ class Installer < PhusionPassenger::AbstractInstaller
63
63
  return [specs, ids]
64
64
  end
65
65
 
66
- def users_guide
67
- return "#{PhusionPassenger.doc_dir}/Users guide Nginx.html"
66
+ def users_guide_path
67
+ return PhusionPassenger.nginx_doc_path
68
+ end
69
+
70
+ def users_guide_url
71
+ return NGINX_DOC_URL
68
72
  end
69
73
 
70
74
  def run_steps
@@ -73,6 +77,8 @@ class Installer < PhusionPassenger::AbstractInstaller
73
77
  ENV['PATH'] = PhusionPassenger.bin_dir + ":" + ENV['PATH']
74
78
 
75
79
  show_welcome_screen
80
+ check_gem_install_permission_problems || exit(1)
81
+ check_directory_accessible_by_web_server
76
82
  check_nginx_module_sources_available || exit(1)
77
83
  check_dependencies || exit(1)
78
84
  if needs_compiling_support_files?
@@ -107,7 +113,10 @@ class Installer < PhusionPassenger::AbstractInstaller
107
113
  check_whether_we_can_write_to(nginx_prefix) || exit(1)
108
114
  nginx_config_already_exists_before_installing = nginx_config_exists?(nginx_prefix)
109
115
  if needs_compiling_support_files?
110
- compile_passenger_support_files || exit(1)
116
+ if !compile_passenger_support_files
117
+ show_possible_solutions_for_compilation_and_installation_problems
118
+ exit(1)
119
+ end
111
120
  end
112
121
  if install_nginx(nginx_source_dir, nginx_prefix, extra_nginx_configure_flags)
113
122
  if nginx_config_already_exists_before_installing || !locate_nginx_config_file(nginx_prefix)
@@ -382,6 +391,8 @@ private
382
391
  end
383
392
  end
384
393
  return true
394
+ rescue Interrupt
395
+ raise Aborted
385
396
  end
386
397
 
387
398
  def show_passenger_config_snippets(prefix)
@@ -397,7 +408,8 @@ private
397
408
  line
398
409
  puts
399
410
  render_template 'nginx/deployment_example',
400
- :users_guide => users_guide,
411
+ :users_guide_path => users_guide_path,
412
+ :users_guide_url => users_guide_url,
401
413
  :phusion_website => PHUSION_WEBSITE,
402
414
  :passenger_website => PASSENGER_WEBSITE
403
415
  end
@@ -406,8 +418,9 @@ private
406
418
  line
407
419
  puts
408
420
  render_template 'nginx/possible_solutions_for_compilation_and_installation_problems',
409
- :users_guide => users_guide,
410
- :passenger_website => PASSENGER_WEBSITE
421
+ :users_guide_path => users_guide_path,
422
+ :users_guide_url => users_guide_url,
423
+ :support_url => SUPPORT_URL
411
424
  end
412
425
 
413
426
  def locate_nginx_config_file(prefix)
@@ -30,6 +30,7 @@ require 'phusion_passenger'
30
30
  PhusionPassenger.locate_directories
31
31
 
32
32
  require 'phusion_passenger/platform_info'
33
+ require 'phusion_passenger/platform_info/ruby'
33
34
  require 'phusion_passenger/admin_tools/memory_stats'
34
35
 
35
36
  include PhusionPassenger
@@ -133,9 +134,8 @@ class App
133
134
  if @stats.platform_provides_private_dirty_rss_information? &&
134
135
  Process.euid != 0 &&
135
136
  @stats.root_privileges_required_for_private_dirty_rss?
136
- puts
137
- puts "*** WARNING: Please run this tool as root. Otherwise the " <<
138
- "private dirty RSS of processes cannot be determined."
137
+ puts "*** WARNING: Please run this tool with #{BOLD}#{PlatformInfo.ruby_sudo_command}#{RESET}. Otherwise the " <<
138
+ "private dirty RSS (a reliable metric for real memory usage) of processes cannot be determined."
139
139
  end
140
140
  end
141
141
 
@@ -41,7 +41,7 @@ file AGENT_OUTPUT_DIR + 'PassengerWatchdog' => dependencies do
41
41
  "-o #{AGENT_OUTPUT_DIR}PassengerWatchdog.o " <<
42
42
  "#{EXTRA_PRE_CXXFLAGS} " <<
43
43
  "-Iext -Iext/common " <<
44
- "#{PlatformInfo.portability_cflags} #{AGENT_CFLAGS} #{EXTRA_CXXFLAGS}")
44
+ "#{AGENT_CFLAGS} #{EXTRA_CXXFLAGS}")
45
45
  create_executable(AGENT_OUTPUT_DIR + 'PassengerWatchdog',
46
46
  "#{AGENT_OUTPUT_DIR}PassengerWatchdog.o " <<
47
47
  "#{watchdog_libs.link_objects_as_string} " <<
@@ -49,7 +49,8 @@ file AGENT_OUTPUT_DIR + 'PassengerWatchdog' => dependencies do
49
49
  "#{EXTRA_PRE_LDFLAGS} " <<
50
50
  "#{PlatformInfo.portability_ldflags} " <<
51
51
  "#{AGENT_LDFLAGS} " <<
52
- "#{EXTRA_LDFLAGS}")
52
+ "#{EXTRA_LDFLAGS} " <<
53
+ "#{EXTRA_CXX_LDFLAGS}")
53
54
  end
54
55
 
55
56
  helper_agent_libs = COMMON_LIBRARY.
@@ -94,7 +95,6 @@ file AGENT_OUTPUT_DIR + 'PassengerHelperAgent' => dependencies do
94
95
  "#{EXTRA_PRE_CXXFLAGS} " <<
95
96
  "-Iext -Iext/common " <<
96
97
  "#{AGENT_CFLAGS} #{LIBEV_CFLAGS} #{LIBEIO_CFLAGS} " <<
97
- "#{PlatformInfo.portability_cflags} " <<
98
98
  "#{EXTRA_CXXFLAGS}")
99
99
  create_executable("#{AGENT_OUTPUT_DIR}PassengerHelperAgent",
100
100
  "#{AGENT_OUTPUT_DIR}PassengerHelperAgent.o",
@@ -105,7 +105,8 @@ file AGENT_OUTPUT_DIR + 'PassengerHelperAgent' => dependencies do
105
105
  "#{LIBEIO_LIBS} " <<
106
106
  "#{PlatformInfo.portability_ldflags} " <<
107
107
  "#{AGENT_LDFLAGS} " <<
108
- "#{EXTRA_LDFLAGS}")
108
+ "#{EXTRA_LDFLAGS} " <<
109
+ "#{EXTRA_CXX_LDFLAGS}")
109
110
  end
110
111
 
111
112
  logging_agent_libs = COMMON_LIBRARY.only(:base, :logging_agent, 'AgentsBase.o',
@@ -137,7 +138,7 @@ file AGENT_OUTPUT_DIR + 'PassengerLoggingAgent' => dependencies do
137
138
  "#{AGENT_CFLAGS} #{LIBEV_CFLAGS} " <<
138
139
  "#{PlatformInfo.curl_flags} " <<
139
140
  "#{PlatformInfo.zlib_flags} " <<
140
- "#{PlatformInfo.portability_cflags} #{EXTRA_CXXFLAGS}")
141
+ "#{EXTRA_CXXFLAGS}")
141
142
  create_executable("#{AGENT_OUTPUT_DIR}PassengerLoggingAgent",
142
143
  "#{AGENT_OUTPUT_DIR}PassengerLoggingAgent.o",
143
144
  "#{logging_agent_libs.link_objects_as_string} " <<
@@ -148,7 +149,8 @@ file AGENT_OUTPUT_DIR + 'PassengerLoggingAgent' => dependencies do
148
149
  "#{PlatformInfo.zlib_libs} " <<
149
150
  "#{PlatformInfo.portability_ldflags} " <<
150
151
  "#{AGENT_LDFLAGS} " <<
151
- "#{EXTRA_LDFLAGS}")
152
+ "#{EXTRA_LDFLAGS} " <<
153
+ "#{EXTRA_CXX_LDFLAGS}")
152
154
  end
153
155
 
154
156
  spawn_preparer_libs = COMMON_LIBRARY.only('Utils/Base64.o')
@@ -163,11 +165,12 @@ file AGENT_OUTPUT_DIR + 'SpawnPreparer' => dependencies do
163
165
  'ext/common/agents/SpawnPreparer.cpp',
164
166
  "#{EXTRA_PRE_CXXFLAGS} #{EXTRA_PRE_LDFLAGS} " <<
165
167
  "-Iext -Iext/common " <<
166
- "#{AGENT_CFLAGS} #{PlatformInfo.portability_cflags} #{EXTRA_CXXFLAGS} " <<
168
+ "#{AGENT_CFLAGS} #{EXTRA_CXXFLAGS} " <<
167
169
  "#{spawn_preparer_libs.link_objects_as_string} " <<
168
170
  "#{LIBBOOST_OXT} " <<
169
171
  "#{PlatformInfo.portability_ldflags} " <<
170
- "#{EXTRA_LDFLAGS}")
172
+ "#{EXTRA_LDFLAGS} " <<
173
+ "#{EXTRA_CXX_LDFLAGS}")
171
174
  end
172
175
 
173
176
  file AGENT_OUTPUT_DIR + 'EnvPrinter' => 'ext/common/agents/EnvPrinter.c' do
@@ -57,10 +57,14 @@ APACHE2_MODULE_INPUT_FILES = {
57
57
  APACHE2_MODULE_OBJECTS = APACHE2_MODULE_INPUT_FILES.keys
58
58
  APACHE2_MOD_PASSENGER_O = APACHE2_OUTPUT_DIR + "mod_passenger.o"
59
59
 
60
+ APACHE2_MODULE_CFLAGS =
61
+ "#{EXTRA_PRE_CFLAGS} " <<
62
+ "-Iext -Iext/common #{PlatformInfo.apache2_module_cflags} " <<
63
+ "#{EXTRA_CFLAGS}"
60
64
  APACHE2_MODULE_CXXFLAGS =
61
65
  "#{EXTRA_PRE_CXXFLAGS} " <<
62
66
  "-Iext -Iext/common #{PlatformInfo.apache2_module_cflags} " <<
63
- "#{PlatformInfo.portability_cflags} #{EXTRA_CXXFLAGS}"
67
+ "#{EXTRA_CXXFLAGS}"
64
68
 
65
69
  APACHE2_MODULE_BOOST_OXT_LIBRARY = define_libboost_oxt_task("apache2",
66
70
  APACHE2_OUTPUT_DIR + "module_libboost_oxt",
@@ -78,7 +82,8 @@ auto_generated_sources = [
78
82
  'ext/apache2/ConfigurationFields.hpp',
79
83
  'ext/apache2/CreateDirConfig.cpp',
80
84
  'ext/apache2/MergeDirConfig.cpp',
81
- 'ext/apache2/ConfigurationSetters.cpp'
85
+ 'ext/apache2/ConfigurationSetters.cpp',
86
+ 'ext/apache2/SetHeaders.cpp'
82
87
  ]
83
88
 
84
89
 
@@ -121,20 +126,19 @@ file APACHE2_MODULE => dependencies do
121
126
  linkflags =
122
127
  "#{EXTRA_PRE_CXXFLAGS} #{EXTRA_PRE_LDFLAGS} " <<
123
128
  "#{PlatformInfo.apache2_module_cflags} " <<
124
- "#{PlatformInfo.portability_cflags} " <<
125
129
  "#{EXTRA_CXXFLAGS} " <<
126
130
  "#{APACHE2_MODULE_COMMON_LIBRARIES.join(' ')} " <<
127
131
  "#{APACHE2_MODULE_BOOST_OXT_LIBRARY} " <<
128
132
  "#{PlatformInfo.apache2_module_ldflags} " <<
129
133
  "#{PlatformInfo.portability_ldflags} " <<
130
- "#{EXTRA_LDFLAGS} "
134
+ "#{EXTRA_LDFLAGS} #{EXTRA_CXX_LDFLAGS} "
131
135
 
132
136
  create_shared_library(APACHE2_MODULE, sources, linkflags)
133
137
  end
134
138
 
135
139
  file APACHE2_MOD_PASSENGER_O => ['ext/apache2/mod_passenger.c'] do
136
140
  compile_c('ext/apache2/mod_passenger.c',
137
- "#{APACHE2_MODULE_CXXFLAGS} -o #{APACHE2_MOD_PASSENGER_O}")
141
+ "#{APACHE2_MODULE_CFLAGS} -o #{APACHE2_MOD_PASSENGER_O}")
138
142
  end
139
143
 
140
144
  task :clean => 'apache2:clean'
@@ -1,5 +1,5 @@
1
1
  # Phusion Passenger - https://www.phusionpassenger.com/
2
- # Copyright (c) 2010, 2011, 2012 Phusion
2
+ # Copyright (c) 2010-2013 Phusion
3
3
  #
4
4
  # "Phusion Passenger" is a trademark of Hongli Lai & Ninh Bui.
5
5
  #
@@ -138,50 +138,44 @@ LIBEXT = PlatformInfo.library_extension
138
138
  USE_DMALLOC = boolean_option('USE_DMALLOC')
139
139
  USE_EFENCE = boolean_option('USE_EFENCE')
140
140
  USE_ASAN = boolean_option('USE_ASAN')
141
- OPTIMIZATION_FLAGS = "#{PlatformInfo.debugging_cflags} -DPASSENGER_DEBUG -DBOOST_DISABLE_ASSERTS -fcommon".strip
142
- OPTIMIZATION_FLAGS << " -O" if OPTIMIZE
143
- OPTIMIZATION_FLAGS << " -feliminate-unused-debug-symbols -feliminate-unused-debug-types" if PlatformInfo.compiler_supports_feliminate_unused_debug?
144
- OPTIMIZATION_FLAGS << " -fvisibility=hidden -DVISIBILITY_ATTRIBUTE_SUPPORTED" if PlatformInfo.compiler_supports_visibility_flag?
145
- OPTIMIZATION_FLAGS << " -Wno-attributes" if PlatformInfo.compiler_supports_visibility_flag? &&
146
- PlatformInfo.compiler_visibility_flag_generates_warnings? &&
147
- PlatformInfo.compiler_supports_wno_attributes_flag?
148
- OPTIMIZATION_FLAGS << " -fno-omit-frame-pointers" if USE_ASAN
149
141
 
150
142
  # Agent-specific compiler flags.
151
143
  AGENT_CFLAGS = ""
152
- AGENT_CFLAGS << " -faddress-sanitizer" if USE_ASAN
144
+ AGENT_CFLAGS << " #{PlatformInfo.adress_sanitizer_flag}" if USE_ASAN
153
145
  AGENT_CFLAGS.strip!
154
146
 
155
147
  # Agent-specific linker flags.
156
148
  AGENT_LDFLAGS = ""
157
149
  AGENT_LDFLAGS << " #{PlatformInfo.dmalloc_ldflags}" if USE_DMALLOC
158
150
  AGENT_LDFLAGS << " #{PlatformInfo.electric_fence_ldflags}" if USE_EFENCE
159
- AGENT_LDFLAGS << " -faddress-sanitizer" if USE_ASAN
151
+ AGENT_LDFLAGS << " #{PlatformInfo.adress_sanitizer_flag}" if USE_ASAN
160
152
  # Extra linker flags for backtrace_symbols() to generate useful output (see AgentsBase.cpp).
161
153
  AGENT_LDFLAGS << " #{PlatformInfo.export_dynamic_flags}"
162
154
  # Enable dead symbol elimination on OS X.
163
- AGENT_LDFLAGS << " -Wl,-dead_strip" if RUBY_PLATFORM =~ /darwin/
155
+ AGENT_LDFLAGS << " -Wl,-dead_strip" if PlatformInfo.os_name == "macosx"
164
156
  AGENT_LDFLAGS.strip!
165
157
 
166
158
  # Extra compiler flags that should always be passed to the C/C++ compiler.
167
159
  # These should be included first in the command string, before anything else.
168
160
  EXTRA_PRE_CFLAGS = string_option('EXTRA_PRE_CFLAGS', '').gsub("\n", " ")
169
161
  EXTRA_PRE_CXXFLAGS = string_option('EXTRA_PRE_CXXFLAGS', '').gsub("\n", " ")
170
- # These should be included last in the command string, even after PlatformInfo.portability_cflags.
171
- EXTRA_CXXFLAGS = "-Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-long-long"
172
- EXTRA_CXXFLAGS << " -Wno-missing-field-initializers" if PlatformInfo.compiler_supports_wno_missing_field_initializers_flag?
173
- EXTRA_CXXFLAGS << " -mno-tls-direct-seg-refs" if PlatformInfo.requires_no_tls_direct_seg_refs? && PlatformInfo.compiler_supports_no_tls_direct_seg_refs_option?
174
- # Work around Clang warnings in ev++.h.
175
- EXTRA_CXXFLAGS << " -Wno-ambiguous-member-template" if PlatformInfo.cxx_is_clang?
176
- EXTRA_CXXFLAGS << " #{OPTIMIZATION_FLAGS}" if !OPTIMIZATION_FLAGS.empty?
162
+ # These should be included last in the command string.
163
+ EXTRA_CFLAGS = PlatformInfo.default_extra_cflags.dup
164
+ EXTRA_CFLAGS << " " << string_option('EXTRA_CFLAGS').gsub("\n", " ") if string_option('EXTRA_CFLAGS')
165
+ EXTRA_CXXFLAGS = PlatformInfo.default_extra_cxxflags.dup
177
166
  EXTRA_CXXFLAGS << " " << string_option('EXTRA_CXXFLAGS').gsub("\n", " ") if string_option('EXTRA_CXXFLAGS')
178
- EXTRA_CXXFLAGS << " -DPASSENGER_DISABLE_THREAD_LOCAL_STORAGE" if !boolean_option('PASSENGER_THREAD_LOCAL_STORAGE', true)
167
+ [EXTRA_CFLAGS, EXTRA_CXXFLAGS].each do |flags|
168
+ flags << " -fno-omit-frame-pointers" if USE_ASAN
169
+ flags << " -DPASSENGER_DISABLE_THREAD_LOCAL_STORAGE" if !boolean_option('PASSENGER_THREAD_LOCAL_STORAGE', true)
170
+ end
179
171
 
180
172
  # Extra linker flags that should always be passed to the linker.
181
173
  # These should be included first in the command string, before anything else.
182
174
  EXTRA_PRE_LDFLAGS = string_option('EXTRA_PRE_LDFLAGS', '').gsub("\n", " ")
183
175
  # These should be included last in the command string, even after PlatformInfo.portability_ldflags.
184
- EXTRA_LDFLAGS = string_option('EXTRA_LDFLAGS', '').gsub("\n", " ")
176
+ EXTRA_LDFLAGS = string_option('EXTRA_LDFLAGS', '').gsub("\n", " ")
177
+ EXTRA_C_LDFLAGS = string_option('EXTRA_C_LDFLAGS', '').gsub("\n", " ")
178
+ EXTRA_CXX_LDFLAGS = string_option('EXTRA_CXX_LDFLAGS', '').gsub("\n", " ")
185
179
 
186
180
 
187
181
  AGENT_OUTPUT_DIR = string_option('AGENT_OUTPUT_DIR', OUTPUT_DIR + "agents") + "/"