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
@@ -0,0 +1,48 @@
1
+ //////////////////////////////////////////////////////////////////////////////
2
+ //
3
+ // (C) Copyright 2011-2012 Vicente J. Botet Escriba
4
+ // Software License, Version 1.0. (See accompanying file
5
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6
+ //
7
+ // See http://www.boost.org/libs/thread for documentation.
8
+ //
9
+ //////////////////////////////////////////////////////////////////////////////
10
+
11
+ #ifndef BOOST_THREAD_DETAIL_IS_CONVERTIBLE_HPP
12
+ #define BOOST_THREAD_DETAIL_IS_CONVERTIBLE_HPP
13
+
14
+ #include <boost/type_traits/is_convertible.hpp>
15
+ #include <boost/thread/detail/move.hpp>
16
+
17
+ namespace boost
18
+ {
19
+ namespace thread_detail
20
+ {
21
+ template <typename T1, typename T2>
22
+ struct is_convertible : boost::is_convertible<T1,T2> {};
23
+
24
+ #if defined BOOST_NO_CXX11_RVALUE_REFERENCES
25
+
26
+ #if defined(BOOST_INTEL_CXX_VERSION) && (BOOST_INTEL_CXX_VERSION <= 1300)
27
+
28
+ #if defined BOOST_THREAD_USES_MOVE
29
+ template <typename T1, typename T2>
30
+ struct is_convertible<
31
+ rv<T1> &,
32
+ rv<rv<T2> > &
33
+ > : false_type {};
34
+ #endif
35
+
36
+ #elif defined __GNUC__ && (__GNUC__ < 4 || ( __GNUC__ == 4 && __GNUC_MINOR__ <= 4 ))
37
+
38
+ template <typename T1, typename T2>
39
+ struct is_convertible<T1&, T2&> : boost::is_convertible<T1, T2> {};
40
+ #endif
41
+
42
+ #endif
43
+ }
44
+
45
+ } // namespace boost
46
+
47
+
48
+ #endif // BOOST_THREAD_DETAIL_MEMORY_HPP
@@ -0,0 +1,45 @@
1
+ // Distributed under the Boost Software License, Version 1.0. (See
2
+ // accompanying file LICENSE_1_0.txt or copy at
3
+ // http://www.boost.org/LICENSE_1_0.txt)
4
+ // (C) Copyright 2012 Vicente J. Botet Escriba
5
+
6
+ #ifndef BOOST_THREAD_DETAIL_LOCKABLE_WRAPPER_HPP
7
+ #define BOOST_THREAD_DETAIL_LOCKABLE_WRAPPER_HPP
8
+
9
+ #include <boost/thread/detail/config.hpp>
10
+
11
+ #if ! defined BOOST_THREAD_NO_CXX11_HDR_INITIALIZER_LIST
12
+ #include <initializer_list>
13
+ #endif
14
+ #include <boost/config/abi_prefix.hpp>
15
+
16
+ namespace boost
17
+ {
18
+
19
+ #if ! defined BOOST_THREAD_NO_CXX11_HDR_INITIALIZER_LIST
20
+ namespace thread_detail
21
+ {
22
+ template <typename Mutex>
23
+ struct lockable_wrapper
24
+ {
25
+ Mutex* m;
26
+ explicit lockable_wrapper(Mutex& m_) :
27
+ m(&m_)
28
+ {}
29
+ };
30
+ template <typename Mutex>
31
+ struct lockable_adopt_wrapper
32
+ {
33
+ Mutex* m;
34
+ explicit lockable_adopt_wrapper(Mutex& m_) :
35
+ m(&m_)
36
+ {}
37
+ };
38
+ }
39
+ #endif
40
+
41
+ }
42
+
43
+ #include <boost/config/abi_suffix.hpp>
44
+
45
+ #endif // header
@@ -0,0 +1,83 @@
1
+ // Copyright (C) 2012 Vicente J. Botet Escriba
2
+ //
3
+ // Distributed under the Boost Software License, Version 1.0. (See accompanying
4
+ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5
+
6
+ #ifndef BOOST_THREAD_DETAIL_LOG_HPP
7
+ #define BOOST_THREAD_DETAIL_LOG_HPP
8
+
9
+ #include <boost/thread/detail/config.hpp>
10
+ #if defined BOOST_THREAD_USES_LOG
11
+ #include <boost/thread/recursive_mutex.hpp>
12
+ #include <boost/thread/lock_guard.hpp>
13
+ #if defined BOOST_THREAD_USES_LOG_THREAD_ID
14
+ #include <boost/thread/thread.hpp>
15
+ #endif
16
+ #include <iostream>
17
+
18
+ namespace boost
19
+ {
20
+ namespace thread_detail
21
+ {
22
+ inline boost::recursive_mutex& terminal_mutex()
23
+ {
24
+ static boost::recursive_mutex mtx;
25
+ return mtx;
26
+ }
27
+
28
+ }
29
+ }
30
+ #if defined BOOST_THREAD_USES_LOG_THREAD_ID
31
+
32
+ #define BOOST_THREAD_LOG \
33
+ { \
34
+ boost::lock_guard<boost::recursive_mutex> _lk_(boost::thread_detail::terminal_mutex()); \
35
+ std::cout << boost::this_thread::get_id() << " - "<<__FILE__<<"["<<__LINE__<<"] " <<std::dec
36
+ #else
37
+
38
+ #define BOOST_THREAD_LOG \
39
+ { \
40
+ boost::lock_guard<boost::recursive_mutex> _lk_(boost::thread_detail::terminal_mutex()); \
41
+ std::cout << __FILE__<<"["<<__LINE__<<"] " <<std::dec
42
+
43
+ #endif
44
+ #define BOOST_THREAD_END_LOG \
45
+ std::dec << std::endl; \
46
+ }
47
+
48
+ #else
49
+
50
+ namespace boost
51
+ {
52
+ namespace thread_detail
53
+ {
54
+ struct dummy_stream_t
55
+ {
56
+ };
57
+
58
+ template <typename T>
59
+ inline dummy_stream_t const& operator<<(dummy_stream_t const& os, T)
60
+ {
61
+ return os;
62
+ }
63
+
64
+ inline dummy_stream_t const& operator<<(dummy_stream_t const& os, dummy_stream_t const&)
65
+ {
66
+ return os;
67
+ }
68
+
69
+
70
+ BOOST_CONSTEXPR_OR_CONST dummy_stream_t dummy_stream = {};
71
+
72
+ }
73
+ }
74
+
75
+ #define BOOST_THREAD_LOG if (true) {} else boost::thread_detail::dummy_stream
76
+ #define BOOST_THREAD_END_LOG boost::thread_detail::dummy_stream
77
+
78
+ #endif
79
+
80
+ #define BOOST_THREAD_TRACE BOOST_THREAD_LOG << BOOST_THREAD_END_LOG
81
+
82
+
83
+ #endif // header
@@ -0,0 +1,224 @@
1
+ // Copyright (C) 2012-2013 Vicente J. Botet Escriba
2
+ //
3
+ // Distributed under the Boost Software License, Version 1.0. (See accompanying
4
+ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5
+
6
+ // 2013/04 Vicente J. Botet Escriba
7
+ // Provide implementation up to 10 parameters when BOOST_NO_CXX11_VARIADIC_TEMPLATES is defined.
8
+ // 2012/11 Vicente J. Botet Escriba
9
+ // Adapt to boost libc++ implementation
10
+
11
+ //===----------------------------------------------------------------------===//
12
+ //
13
+ // The LLVM Compiler Infrastructure
14
+ //
15
+ // This file is dual licensed under the MIT and the University of Illinois Open
16
+ // Source Licenses. See LICENSE.TXT for details.
17
+ //
18
+ // The make_tuple_indices C++11 code is based on the one from libcxx.
19
+ //===----------------------------------------------------------------------===//
20
+
21
+ #ifndef BOOST_THREAD_DETAIL_MAKE_TUPLE_INDICES_HPP
22
+ #define BOOST_THREAD_DETAIL_MAKE_TUPLE_INDICES_HPP
23
+
24
+ #include <boost/config.hpp>
25
+ #include <boost/static_assert.hpp>
26
+
27
+ namespace boost
28
+ {
29
+ namespace detail
30
+ {
31
+
32
+ #if ! defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
33
+ // make_tuple_indices
34
+
35
+ template <std::size_t...> struct tuple_indices
36
+ {};
37
+
38
+ template <std::size_t Sp, class IntTuple, std::size_t Ep>
39
+ struct make_indices_imp;
40
+
41
+ template <std::size_t Sp, std::size_t ...Indices, std::size_t Ep>
42
+ struct make_indices_imp<Sp, tuple_indices<Indices...>, Ep>
43
+ {
44
+ typedef typename make_indices_imp<Sp+1, tuple_indices<Indices..., Sp>, Ep>::type type;
45
+ };
46
+
47
+ template <std::size_t Ep, std::size_t ...Indices>
48
+ struct make_indices_imp<Ep, tuple_indices<Indices...>, Ep>
49
+ {
50
+ typedef tuple_indices<Indices...> type;
51
+ };
52
+
53
+ template <std::size_t Ep, std::size_t Sp = 0>
54
+ struct make_tuple_indices
55
+ {
56
+ BOOST_STATIC_ASSERT_MSG(Sp <= Ep, "make_tuple_indices input error");
57
+ typedef typename make_indices_imp<Sp, tuple_indices<>, Ep>::type type;
58
+ };
59
+ #else
60
+
61
+ // - tuple forward declaration -----------------------------------------------
62
+ template <
63
+ std::size_t T0 = 0, std::size_t T1 = 0, std::size_t T2 = 0,
64
+ std::size_t T3 = 0, std::size_t T4 = 0, std::size_t T5 = 0,
65
+ std::size_t T6 = 0, std::size_t T7 = 0, std::size_t T8 = 0,
66
+ std::size_t T9 = 0>
67
+ class tuple_indices {};
68
+
69
+ template <std::size_t Sp, class IntTuple, std::size_t Ep>
70
+ struct make_indices_imp;
71
+
72
+ template <std::size_t Sp, std::size_t Ep>
73
+ struct make_indices_imp<Sp, tuple_indices<>, Ep>
74
+ {
75
+ typedef typename make_indices_imp<Sp+1, tuple_indices<Sp>, Ep>::type type;
76
+ };
77
+ template <std::size_t Sp, std::size_t I0, std::size_t Ep>
78
+ struct make_indices_imp<Sp, tuple_indices<I0>, Ep>
79
+ {
80
+ typedef typename make_indices_imp<Sp+1, tuple_indices<I0, Sp>, Ep>::type type;
81
+ };
82
+ template <std::size_t Sp, std::size_t I0, std::size_t I1, std::size_t Ep>
83
+ struct make_indices_imp<Sp, tuple_indices<I0, I1>, Ep>
84
+ {
85
+ typedef typename make_indices_imp<Sp+1, tuple_indices<I0, I1, Sp>, Ep>::type type;
86
+ };
87
+ template <std::size_t Sp, std::size_t I0, std::size_t I1, std::size_t I2, std::size_t Ep>
88
+ struct make_indices_imp<Sp, tuple_indices<I0, I1 , I2>, Ep>
89
+ {
90
+ typedef typename make_indices_imp<Sp+1, tuple_indices<I0, I1, I2, Sp>, Ep>::type type;
91
+ };
92
+ template <std::size_t Sp, std::size_t I0, std::size_t I1, std::size_t I2, std::size_t I3, std::size_t Ep>
93
+ struct make_indices_imp<Sp, tuple_indices<I0, I1 , I2, I3>, Ep>
94
+ {
95
+ typedef typename make_indices_imp<Sp+1, tuple_indices<I0, I1, I2, I3, Sp>, Ep>::type type;
96
+ };
97
+ template <std::size_t Sp, std::size_t I0, std::size_t I1, std::size_t I2, std::size_t I3, std::size_t I4, std::size_t Ep>
98
+ struct make_indices_imp<Sp, tuple_indices<I0, I1 , I2, I3, I4>, Ep>
99
+ {
100
+ typedef typename make_indices_imp<Sp+1, tuple_indices<I0, I1, I2, I3, I4, Sp>, Ep>::type type;
101
+ };
102
+ template <std::size_t Sp, std::size_t I0, std::size_t I1, std::size_t I2, std::size_t I3, std::size_t I4, std::size_t I5, std::size_t Ep>
103
+ struct make_indices_imp<Sp, tuple_indices<I0, I1 , I2, I3, I4, I5>, Ep>
104
+ {
105
+ typedef typename make_indices_imp<Sp+1, tuple_indices<I0, I1, I2, I3, I4, I5, Sp>, Ep>::type type;
106
+ };
107
+ template <std::size_t Sp, std::size_t I0, std::size_t I1, std::size_t I2, std::size_t I3, std::size_t I4, std::size_t I5
108
+ , std::size_t I6
109
+ , std::size_t Ep>
110
+ struct make_indices_imp<Sp, tuple_indices<I0, I1 , I2, I3, I4, I5, I6>, Ep>
111
+ {
112
+ typedef typename make_indices_imp<Sp+1, tuple_indices<I0, I1, I2, I3, I4, I5, I6, Sp>, Ep>::type type;
113
+ };
114
+ template <std::size_t Sp, std::size_t I0, std::size_t I1, std::size_t I2, std::size_t I3, std::size_t I4, std::size_t I5
115
+ , std::size_t I6
116
+ , std::size_t I7
117
+ , std::size_t Ep>
118
+ struct make_indices_imp<Sp, tuple_indices<I0, I1 , I2, I3, I4, I5, I6, I7>, Ep>
119
+ {
120
+ typedef typename make_indices_imp<Sp+1, tuple_indices<I0, I1, I2, I3, I4, I5, I6, I7, Sp>, Ep>::type type;
121
+ };
122
+ template <std::size_t Sp, std::size_t I0, std::size_t I1, std::size_t I2, std::size_t I3, std::size_t I4, std::size_t I5
123
+ , std::size_t I6
124
+ , std::size_t I7
125
+ , std::size_t I8
126
+ , std::size_t Ep>
127
+ struct make_indices_imp<Sp, tuple_indices<I0, I1 , I2, I3, I4, I5, I6, I7, I8>, Ep>
128
+ {
129
+ typedef typename make_indices_imp<Sp+1, tuple_indices<I0, I1, I2, I3, I4, I5, I6, I7, I8, Sp>, Ep>::type type;
130
+ };
131
+ // template <std::size_t Sp, std::size_t I0, std::size_t I1, std::size_t I2, std::size_t I3, std::size_t I4, std::size_t I5
132
+ // , std::size_t I6
133
+ // , std::size_t I7
134
+ // , std::size_t I8
135
+ // , std::size_t I9
136
+ // , std::size_t Ep>
137
+ // struct make_indices_imp<Sp, tuple_indices<I0, I1 , I2, I3, I4, I5, I6, I7, I8, I9>, Ep>
138
+ // {
139
+ // typedef typename make_indices_imp<Sp+1, tuple_indices<I0, I1, I2, I3, I4, I5, I6, I7, I8, I9, Sp>, Ep>::type type;
140
+ // };
141
+
142
+ template <std::size_t Ep>
143
+ struct make_indices_imp<Ep, tuple_indices<>, Ep>
144
+ {
145
+ typedef tuple_indices<> type;
146
+ };
147
+ template <std::size_t Ep, std::size_t I0>
148
+ struct make_indices_imp<Ep, tuple_indices<I0>, Ep>
149
+ {
150
+ typedef tuple_indices<I0> type;
151
+ };
152
+ template <std::size_t Ep, std::size_t I0, std::size_t I1>
153
+ struct make_indices_imp<Ep, tuple_indices<I0, I1>, Ep>
154
+ {
155
+ typedef tuple_indices<I0, I1> type;
156
+ };
157
+ template <std::size_t Ep, std::size_t I0, std::size_t I1, std::size_t I2>
158
+ struct make_indices_imp<Ep, tuple_indices<I0, I1, I2>, Ep>
159
+ {
160
+ typedef tuple_indices<I0, I1, I2> type;
161
+ };
162
+ template <std::size_t Ep, std::size_t I0, std::size_t I1, std::size_t I2, std::size_t I3>
163
+ struct make_indices_imp<Ep, tuple_indices<I0, I1, I2, I3>, Ep>
164
+ {
165
+ typedef tuple_indices<I0, I1, I2, I3> type;
166
+ };
167
+ template <std::size_t Ep, std::size_t I0, std::size_t I1, std::size_t I2, std::size_t I3, std::size_t I4>
168
+ struct make_indices_imp<Ep, tuple_indices<I0, I1, I2, I3, I4>, Ep>
169
+ {
170
+ typedef tuple_indices<I0, I1, I2, I3, I4> type;
171
+ };
172
+ template <std::size_t Ep, std::size_t I0, std::size_t I1, std::size_t I2, std::size_t I3, std::size_t I4, std::size_t I5>
173
+ struct make_indices_imp<Ep, tuple_indices<I0, I1, I2, I3, I4, I5>, Ep>
174
+ {
175
+ typedef tuple_indices<I0, I1, I2, I3, I4, I5> type;
176
+ };
177
+ template <std::size_t Ep, std::size_t I0, std::size_t I1, std::size_t I2, std::size_t I3, std::size_t I4, std::size_t I5
178
+ , std::size_t I6
179
+ >
180
+ struct make_indices_imp<Ep, tuple_indices<I0, I1, I2, I3, I4, I5, I6>, Ep>
181
+ {
182
+ typedef tuple_indices<I0, I1, I2, I3, I4, I5, I6> type;
183
+ };
184
+ template <std::size_t Ep, std::size_t I0, std::size_t I1, std::size_t I2, std::size_t I3, std::size_t I4, std::size_t I5
185
+ , std::size_t I6
186
+ , std::size_t I7
187
+ >
188
+ struct make_indices_imp<Ep, tuple_indices<I0, I1, I2, I3, I4, I5, I6, I7>, Ep>
189
+ {
190
+ typedef tuple_indices<I0, I1, I2, I3, I4, I5, I6, I7> type;
191
+ };
192
+ template <std::size_t Ep, std::size_t I0, std::size_t I1, std::size_t I2, std::size_t I3, std::size_t I4, std::size_t I5
193
+ , std::size_t I6
194
+ , std::size_t I7
195
+ , std::size_t I8
196
+ >
197
+ struct make_indices_imp<Ep, tuple_indices<I0, I1, I2, I3, I4, I5, I6, I7, I8>, Ep>
198
+ {
199
+ typedef tuple_indices<I0, I1, I2, I3, I4, I5, I6, I7, I8> type;
200
+ };
201
+
202
+ template <std::size_t Ep, std::size_t I0, std::size_t I1, std::size_t I2, std::size_t I3, std::size_t I4, std::size_t I5
203
+ , std::size_t I6
204
+ , std::size_t I7
205
+ , std::size_t I8
206
+ , std::size_t I9
207
+ >
208
+ struct make_indices_imp<Ep, tuple_indices<I0, I1, I2, I3, I4, I5, I6, I7, I8, I9>, Ep>
209
+ {
210
+ typedef tuple_indices<I0, I1, I2, I3, I4, I5, I6, I7, I8, I9> type;
211
+ };
212
+
213
+ template <std::size_t Ep, std::size_t Sp = 0>
214
+ struct make_tuple_indices
215
+ {
216
+ BOOST_STATIC_ASSERT_MSG(Sp <= Ep, "make_tuple_indices input error");
217
+ typedef typename make_indices_imp<Sp, tuple_indices<>, Ep>::type type;
218
+ };
219
+
220
+ #endif
221
+ }
222
+ }
223
+
224
+ #endif // header
@@ -17,7 +17,8 @@
17
17
  #endif
18
18
 
19
19
  #include <boost/thread/detail/delete.hpp>
20
- #include <boost/move/move.hpp>
20
+ #include <boost/move/utility.hpp>
21
+ #include <boost/move/traits.hpp>
21
22
  #include <boost/config/abi_prefix.hpp>
22
23
 
23
24
  namespace boost
@@ -26,7 +27,7 @@ namespace boost
26
27
  namespace detail
27
28
  {
28
29
  template <typename T>
29
- struct has_move_emulation_enabled_aux_dummy_specialization;
30
+ struct enable_move_utility_emulation_dummy_specialization;
30
31
  template<typename T>
31
32
  struct thread_move_t
32
33
  {
@@ -49,6 +50,7 @@ namespace boost
49
50
  };
50
51
  }
51
52
 
53
+ #if !defined BOOST_THREAD_USES_MOVE
52
54
 
53
55
  #ifndef BOOST_NO_SFINAE
54
56
  template<typename T>
@@ -63,11 +65,14 @@ namespace boost
63
65
  {
64
66
  return t;
65
67
  }
68
+
69
+ #endif //#if !defined BOOST_THREAD_USES_MOVE
66
70
  }
67
71
 
68
72
  #if ! defined BOOST_NO_CXX11_RVALUE_REFERENCES
69
73
 
70
74
  #define BOOST_THREAD_RV_REF(TYPE) BOOST_RV_REF(TYPE)
75
+ #define BOOST_THREAD_RV_REF_2_TEMPL_ARGS(TYPE) BOOST_RV_REF_2_TEMPL_ARGS(TYPE)
71
76
  #define BOOST_THREAD_RV_REF_BEG BOOST_RV_REF_BEG
72
77
  #define BOOST_THREAD_RV_REF_END BOOST_RV_REF_END
73
78
  #define BOOST_THREAD_RV(V) V
@@ -77,16 +82,17 @@ namespace boost
77
82
  #define BOOST_THREAD_DCL_MOVABLE_BEG(T) \
78
83
  namespace detail { \
79
84
  template <typename T> \
80
- struct has_move_emulation_enabled_aux_dummy_specialization<
85
+ struct enable_move_utility_emulation_dummy_specialization<
81
86
 
82
87
  #define BOOST_THREAD_DCL_MOVABLE_END > \
83
- : integral_constant<bool, true> \
88
+ : integral_constant<bool, false> \
84
89
  {}; \
85
90
  }
86
91
 
87
92
  #elif ! defined BOOST_NO_CXX11_RVALUE_REFERENCES && defined BOOST_MSVC
88
93
 
89
94
  #define BOOST_THREAD_RV_REF(TYPE) BOOST_RV_REF(TYPE)
95
+ #define BOOST_THREAD_RV_REF_2_TEMPL_ARGS(TYPE) BOOST_RV_REF_2_TEMPL_ARGS(TYPE)
90
96
  #define BOOST_THREAD_RV_REF_BEG BOOST_RV_REF_BEG
91
97
  #define BOOST_THREAD_RV_REF_END BOOST_RV_REF_END
92
98
  #define BOOST_THREAD_RV(V) V
@@ -96,10 +102,10 @@ namespace boost
96
102
  #define BOOST_THREAD_DCL_MOVABLE_BEG(T) \
97
103
  namespace detail { \
98
104
  template <typename T> \
99
- struct has_move_emulation_enabled_aux_dummy_specialization<
105
+ struct enable_move_utility_emulation_dummy_specialization<
100
106
 
101
107
  #define BOOST_THREAD_DCL_MOVABLE_END > \
102
- : integral_constant<bool, true> \
108
+ : integral_constant<bool, false> \
103
109
  {}; \
104
110
  }
105
111
 
@@ -107,6 +113,7 @@ namespace boost
107
113
 
108
114
  #if defined BOOST_THREAD_USES_MOVE
109
115
  #define BOOST_THREAD_RV_REF(TYPE) BOOST_RV_REF(TYPE)
116
+ #define BOOST_THREAD_RV_REF_2_TEMPL_ARGS(TYPE) BOOST_RV_REF_2_TEMPL_ARGS(TYPE)
110
117
  #define BOOST_THREAD_RV_REF_BEG BOOST_RV_REF_BEG
111
118
  #define BOOST_THREAD_RV_REF_END BOOST_RV_REF_END
112
119
  #define BOOST_THREAD_RV(V) V
@@ -115,10 +122,10 @@ namespace boost
115
122
  #define BOOST_THREAD_DCL_MOVABLE_BEG(T) \
116
123
  namespace detail { \
117
124
  template <typename T> \
118
- struct has_move_emulation_enabled_aux_dummy_specialization<
125
+ struct enable_move_utility_emulation_dummy_specialization<
119
126
 
120
127
  #define BOOST_THREAD_DCL_MOVABLE_END > \
121
- : integral_constant<bool, true> \
128
+ : integral_constant<bool, false> \
122
129
  {}; \
123
130
  }
124
131
 
@@ -132,17 +139,19 @@ namespace boost
132
139
 
133
140
  #define BOOST_THREAD_DCL_MOVABLE(TYPE) \
134
141
  template <> \
135
- struct has_move_emulation_enabled_aux< TYPE > \
136
- : BOOST_MOVE_BOOST_NS::integral_constant<bool, true> \
137
- {};
142
+ struct enable_move_utility_emulation< TYPE > \
143
+ { \
144
+ static const bool value = false; \
145
+ };
138
146
 
139
147
  #define BOOST_THREAD_DCL_MOVABLE_BEG(T) \
140
148
  template <typename T> \
141
- struct has_move_emulation_enabled_aux<
149
+ struct enable_move_utility_emulation<
142
150
 
143
151
  #define BOOST_THREAD_DCL_MOVABLE_END > \
144
- : BOOST_MOVE_BOOST_NS::integral_constant<bool, true> \
145
- {};
152
+ { \
153
+ static const bool value = false; \
154
+ };
146
155
 
147
156
  #endif
148
157
 
@@ -227,19 +236,26 @@ namespace detail
227
236
 
228
237
 
229
238
 
230
- #ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
231
239
  namespace boost
232
240
  { namespace thread_detail
233
241
  {
242
+ #ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
234
243
  template <class T>
235
244
  typename decay<T>::type
236
245
  decay_copy(T&& t)
237
246
  {
238
247
  return boost::forward<T>(t);
239
248
  }
249
+ #else
250
+ template <class T>
251
+ typename decay<T>::type
252
+ decay_copy(BOOST_THREAD_FWD_REF(T) t)
253
+ {
254
+ return boost::forward<T>(t);
240
255
  }
241
- }
242
256
  #endif
257
+ }
258
+ }
243
259
 
244
260
  #include <boost/config/abi_suffix.hpp>
245
261