passenger 5.0.4 → 5.0.5

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 (550) hide show
  1. checksums.yaml +8 -8
  2. checksums.yaml.gz.asc +7 -7
  3. data.tar.gz.asc +7 -7
  4. data/.editorconfig +10 -0
  5. data/CHANGELOG +21 -0
  6. data/build/agents.rb +2 -2
  7. data/build/apache2.rb +6 -5
  8. data/build/common_library.rb +22 -7
  9. data/build/cxx_tests.rb +0 -3
  10. data/build/misc.rb +1 -1
  11. data/dev/parse_file_descriptor_log +119 -0
  12. data/doc/CloudLicensingConfiguration.html +387 -0
  13. data/doc/Design and Architecture.html +2430 -0
  14. data/doc/Packaging.html +488 -0
  15. data/doc/Security of user switching support.html +1833 -0
  16. data/doc/ServerOptimizationGuide.html +659 -0
  17. data/doc/ServerOptimizationGuide.txt.md +8 -0
  18. data/doc/Users guide Apache.html +9116 -0
  19. data/doc/Users guide Apache.idmap.txt +6 -2
  20. data/doc/Users guide Apache.txt +26 -7
  21. data/doc/Users guide Nginx.html +9025 -0
  22. data/doc/Users guide Nginx.idmap.txt +7 -3
  23. data/doc/Users guide Nginx.txt +29 -6
  24. data/doc/Users guide Standalone.html +3983 -0
  25. data/doc/Users guide.html +1748 -0
  26. data/doc/users_guide_snippets/installation.txt +4 -4
  27. data/ext/apache2/Configuration.cpp +16 -5
  28. data/ext/apache2/Configuration.hpp +4 -2
  29. data/ext/apache2/Hooks.cpp +44 -19
  30. data/ext/boost/libs/thread/src/pthread/once.cpp +2 -0
  31. data/ext/boost/libs/thread/src/pthread/once_atomic.cpp +6 -0
  32. data/ext/common/AgentsStarter.h +3 -2
  33. data/ext/common/ApplicationPool2/DirectSpawner.h +14 -4
  34. data/ext/common/ApplicationPool2/DummySpawner.h +12 -7
  35. data/ext/common/ApplicationPool2/Implementation.cpp +1 -1
  36. data/ext/common/ApplicationPool2/Process.h +2 -1
  37. data/ext/common/ApplicationPool2/Session.h +6 -6
  38. data/ext/common/ApplicationPool2/SmartSpawner.h +19 -4
  39. data/ext/common/ApplicationPool2/Socket.h +59 -27
  40. data/ext/common/ApplicationPool2/Spawner.h +2 -2
  41. data/ext/common/BackgroundEventLoop.cpp +6 -1
  42. data/ext/common/Constants.h +1 -1
  43. data/ext/common/EventedClient.h +1 -1
  44. data/ext/common/EventedServer.h +2 -2
  45. data/ext/common/FileDescriptor.h +25 -6
  46. data/ext/common/Logging.cpp +107 -52
  47. data/ext/common/Logging.h +146 -19
  48. data/ext/common/MessageClient.h +2 -2
  49. data/ext/common/MessageServer.h +3 -2
  50. data/ext/common/RandomGenerator.h +8 -7
  51. data/ext/common/SafeLibev.h +5 -1
  52. data/ext/common/ServerKit/AcceptLoadBalancer.h +9 -4
  53. data/ext/common/ServerKit/FdSinkChannel.h +5 -2
  54. data/ext/common/ServerKit/FdSourceChannel.h +5 -2
  55. data/ext/common/ServerKit/FileBufferedChannel.h +2 -0
  56. data/ext/common/ServerKit/FileBufferedFdSinkChannel.h +7 -2
  57. data/ext/common/ServerKit/HttpServer.h +6 -0
  58. data/ext/common/ServerKit/Server.h +40 -3
  59. data/ext/common/StaticString.h +20 -0
  60. data/ext/common/UnionStation/Connection.h +3 -1
  61. data/ext/common/UnionStation/Core.h +6 -4
  62. data/ext/common/Utils.cpp +4 -3
  63. data/ext/common/Utils/DateParsing.h +19 -5
  64. data/ext/common/Utils/FastStringStream.h +183 -0
  65. data/ext/common/Utils/IOUtils.cpp +47 -28
  66. data/ext/common/Utils/IOUtils.h +56 -12
  67. data/ext/common/Utils/MessagePassing.h +3 -3
  68. data/ext/common/Utils/ProcessMetricsCollector.h +2 -2
  69. data/ext/common/Utils/ScopeGuard.h +16 -5
  70. data/ext/common/Utils/SpeedMeter.h +2 -2
  71. data/ext/common/Utils/StrIntUtils.cpp +6 -6
  72. data/ext/common/Utils/StrIntUtils.h +2 -1
  73. data/ext/common/agents/Base.cpp +56 -4
  74. data/ext/common/agents/Base.h +2 -1
  75. data/ext/common/agents/HelperAgent/AdminServer.h +122 -11
  76. data/ext/common/agents/HelperAgent/Main.cpp +16 -5
  77. data/ext/common/agents/HelperAgent/OptionParser.h +7 -1
  78. data/ext/common/agents/HelperAgent/RequestHandler.h +1 -1
  79. data/ext/common/agents/HelperAgent/RequestHandler/Hooks.cpp +10 -1
  80. data/ext/common/agents/HelperAgent/RequestHandler/Request.h +8 -0
  81. data/ext/common/agents/HelperAgent/RequestHandler/TurboCaching.h +4 -3
  82. data/ext/common/agents/LoggingAgent/AdminServer.h +57 -11
  83. data/ext/common/agents/LoggingAgent/LoggingServer.h +3 -3
  84. data/ext/common/agents/LoggingAgent/Main.cpp +11 -3
  85. data/ext/common/agents/Watchdog/AdminServer.h +53 -11
  86. data/ext/common/agents/Watchdog/AgentWatcher.cpp +3 -3
  87. data/ext/common/agents/Watchdog/Main.cpp +13 -6
  88. data/ext/libeio/ecb.h +1 -1
  89. data/ext/libev/ev.c +13 -1
  90. data/ext/libev/ev.h +3 -0
  91. data/ext/nginx/Configuration.c +28 -6
  92. data/ext/nginx/Configuration.h +2 -1
  93. data/ext/nginx/ngx_http_passenger_module.c +5 -4
  94. data/ext/oxt/dynamic_thread_group.hpp +38 -5
  95. data/lib/phusion_passenger.rb +1 -1
  96. data/lib/phusion_passenger/common_library.rb +9 -5
  97. data/lib/phusion_passenger/config/reopen_logs_command.rb +2 -2
  98. data/lib/phusion_passenger/packaging.rb +23 -37
  99. data/passenger.gemspec +21 -21
  100. metadata +4 -453
  101. metadata.gz.asc +7 -7
  102. data/.gitignore +0 -68
  103. data/.travis.yml +0 -16
  104. data/Gemfile +0 -17
  105. data/Gemfile.lock +0 -39
  106. data/Vagrantfile +0 -54
  107. data/debian.template/README.Debian +0 -15
  108. data/debian.template/changelog +0 -316
  109. data/debian.template/compat +0 -1
  110. data/debian.template/control.erb +0 -91
  111. data/debian.template/copyright +0 -385
  112. data/debian.template/libapache2-mod-passenger.install +0 -3
  113. data/debian.template/libapache2-mod-passenger.postinst +0 -36
  114. data/debian.template/libapache2-mod-passenger.prerm +0 -15
  115. data/debian.template/locations.ini.erb +0 -14
  116. data/debian.template/passenger-dev.install.erb +0 -3
  117. data/debian.template/passenger-doc.install.erb +0 -2
  118. data/debian.template/passenger.conf +0 -6
  119. data/debian.template/passenger.docs +0 -4
  120. data/debian.template/passenger.install.erb +0 -14
  121. data/debian.template/passenger.load +0 -3
  122. data/debian.template/passenger.manpages +0 -3
  123. data/debian.template/patches/series +0 -0
  124. data/debian.template/rules.erb +0 -76
  125. data/debian.template/source/format +0 -1
  126. data/ext/common/EventedBufferedInput.h +0 -458
  127. data/packaging/rpm/LICENSE.txt +0 -19
  128. data/packaging/rpm/Makefile +0 -13
  129. data/packaging/rpm/README.md +0 -41
  130. data/packaging/rpm/Vagrantfile +0 -38
  131. data/packaging/rpm/Vagrantfile.centos +0 -30
  132. data/packaging/rpm/build +0 -170
  133. data/packaging/rpm/create_project +0 -41
  134. data/packaging/rpm/git_update +0 -88
  135. data/packaging/rpm/image/Dockerfile +0 -37
  136. data/packaging/rpm/image/Gemfile +0 -3
  137. data/packaging/rpm/image/Gemfile.lock +0 -12
  138. data/packaging/rpm/image/RPM-GPG-KEY-amazon-ga +0 -19
  139. data/packaging/rpm/image/amazon2014-i386.cfg +0 -96
  140. data/packaging/rpm/image/amazon2014-x86_64.cfg +0 -96
  141. data/packaging/rpm/image/site-defaults.cfg +0 -168
  142. data/packaging/rpm/internal/build_tasks.rb +0 -238
  143. data/packaging/rpm/internal/dummygpg +0 -11
  144. data/packaging/rpm/internal/exec_build +0 -42
  145. data/packaging/rpm/internal/get_distro_arch +0 -14
  146. data/packaging/rpm/internal/get_distro_id +0 -10
  147. data/packaging/rpm/internal/git_update +0 -27
  148. data/packaging/rpm/internal/inituidgid +0 -17
  149. data/packaging/rpm/internal/my_init +0 -344
  150. data/packaging/rpm/internal/python27 +0 -3
  151. data/packaging/rpm/internal/repo_update +0 -46
  152. data/packaging/rpm/internal/setuser +0 -26
  153. data/packaging/rpm/internal/tracking_helper +0 -40
  154. data/packaging/rpm/jenkins_release +0 -99
  155. data/packaging/rpm/lib/build_tasks_support.rb +0 -402
  156. data/packaging/rpm/lib/preprocessor.rb +0 -341
  157. data/packaging/rpm/nginx_spec/404.html +0 -119
  158. data/packaging/rpm/nginx_spec/50x.html +0 -119
  159. data/packaging/rpm/nginx_spec/index.html +0 -116
  160. data/packaging/rpm/nginx_spec/nginx-auto-cc-gcc.patch +0 -13
  161. data/packaging/rpm/nginx_spec/nginx-logo.png +0 -0
  162. data/packaging/rpm/nginx_spec/nginx-upgrade +0 -13
  163. data/packaging/rpm/nginx_spec/nginx-upgrade.8 +0 -151
  164. data/packaging/rpm/nginx_spec/nginx.conf +0 -131
  165. data/packaging/rpm/nginx_spec/nginx.init +0 -144
  166. data/packaging/rpm/nginx_spec/nginx.logrotate +0 -13
  167. data/packaging/rpm/nginx_spec/nginx.service +0 -15
  168. data/packaging/rpm/nginx_spec/nginx.spec.template +0 -560
  169. data/packaging/rpm/nginx_spec/nginx.sysconfig +0 -4
  170. data/packaging/rpm/nginx_spec/passenger.conf +0 -9
  171. data/packaging/rpm/nginx_spec/poweredby.png +0 -0
  172. data/packaging/rpm/passenger_spec/apache-passenger.conf.in +0 -26
  173. data/packaging/rpm/passenger_spec/config.json +0 -30
  174. data/packaging/rpm/passenger_spec/passenger.logrotate +0 -7
  175. data/packaging/rpm/passenger_spec/passenger.spec.template +0 -478
  176. data/packaging/rpm/passenger_spec/passenger_dynamic_thread_group.patch +0 -16
  177. data/packaging/rpm/passenger_spec/passenger_tests_default_config_example.patch +0 -44
  178. data/packaging/rpm/passenger_spec/rubygem-passenger-4.0.18-GLIBC_HAVE_LONG_LONG.patch +0 -21
  179. data/packaging/rpm/repo_update +0 -114
  180. data/packaging/rpm/setup-system +0 -61
  181. data/packaging/rpm/shell +0 -10
  182. data/test/.rspec +0 -4
  183. data/test/config.json.example +0 -42
  184. data/test/config.json.rpm-automation +0 -15
  185. data/test/config.json.travis +0 -15
  186. data/test/config.json.vagrant +0 -30
  187. data/test/cxx/ApplicationPool2/DirectSpawnerTest.cpp +0 -124
  188. data/test/cxx/ApplicationPool2/OptionsTest.cpp +0 -30
  189. data/test/cxx/ApplicationPool2/PoolTest.cpp +0 -2062
  190. data/test/cxx/ApplicationPool2/ProcessTest.cpp +0 -130
  191. data/test/cxx/ApplicationPool2/SmartSpawnerTest.cpp +0 -243
  192. data/test/cxx/ApplicationPool2/SpawnerTestCases.cpp +0 -823
  193. data/test/cxx/BufferedIOTest.cpp +0 -364
  194. data/test/cxx/CachedFileStatTest.cpp +0 -402
  195. data/test/cxx/CxxTestMain.cpp +0 -181
  196. data/test/cxx/DataStructures/LStringTest.cpp +0 -275
  197. data/test/cxx/DataStructures/StringKeyTableTest.cpp +0 -199
  198. data/test/cxx/DateParsingTest.cpp +0 -75
  199. data/test/cxx/DechunkerTest.cpp +0 -250
  200. data/test/cxx/EventedBufferedInputTest.cpp +0 -758
  201. data/test/cxx/EventedClientTest.cpp +0 -523
  202. data/test/cxx/FileChangeCheckerTest.cpp +0 -331
  203. data/test/cxx/FileDescriptorTest.cpp +0 -69
  204. data/test/cxx/FilterSupportTest.cpp +0 -433
  205. data/test/cxx/IOUtilsTest.cpp +0 -861
  206. data/test/cxx/MemoryKit/MbufTest.cpp +0 -213
  207. data/test/cxx/MessageIOTest.cpp +0 -360
  208. data/test/cxx/MessagePassingTest.cpp +0 -81
  209. data/test/cxx/MessageReadersWritersTest.cpp +0 -576
  210. data/test/cxx/MessageServerTest.cpp +0 -393
  211. data/test/cxx/ProcessMetricsCollectorTest.cpp +0 -123
  212. data/test/cxx/RequestHandlerTest.cpp +0 -1463
  213. data/test/cxx/ResponseCacheTest.cpp +0 -322
  214. data/test/cxx/ServerKit/ChannelTest.cpp +0 -1467
  215. data/test/cxx/ServerKit/CookieUtilsTest.cpp +0 -274
  216. data/test/cxx/ServerKit/FileBufferedChannelTest.cpp +0 -992
  217. data/test/cxx/ServerKit/HeaderTableTest.cpp +0 -177
  218. data/test/cxx/ServerKit/HttpServerTest.cpp +0 -1580
  219. data/test/cxx/ServerKit/ServerTest.cpp +0 -408
  220. data/test/cxx/StaticStringTest.cpp +0 -220
  221. data/test/cxx/StringMapTest.cpp +0 -131
  222. data/test/cxx/SystemTimeTest.cpp +0 -37
  223. data/test/cxx/TemplateTest.cpp +0 -118
  224. data/test/cxx/TestSupport.cpp +0 -207
  225. data/test/cxx/TestSupport.h +0 -333
  226. data/test/cxx/UnionStationTest.cpp +0 -741
  227. data/test/cxx/Utils/StrIntUtilsTest.cpp +0 -39
  228. data/test/cxx/UtilsTest.cpp +0 -672
  229. data/test/cxx/VariantMapTest.cpp +0 -191
  230. data/test/gdbinit.example +0 -34
  231. data/test/integration_tests/apache2_tests.rb +0 -585
  232. data/test/integration_tests/downloaded_binaries_tests.rb +0 -185
  233. data/test/integration_tests/native_packaging_spec.rb +0 -368
  234. data/test/integration_tests/nginx_tests.rb +0 -402
  235. data/test/integration_tests/shared/example_webapp_tests.rb +0 -289
  236. data/test/integration_tests/source_packaging_test.rb +0 -201
  237. data/test/integration_tests/spec_helper.rb +0 -22
  238. data/test/integration_tests/standalone_tests.rb +0 -392
  239. data/test/node/line_reader_spec.js +0 -338
  240. data/test/node/spec_helper.js +0 -65
  241. data/test/oxt/backtrace_test.cpp +0 -88
  242. data/test/oxt/counter.hpp +0 -55
  243. data/test/oxt/dynamic_thread_group_test.cpp +0 -131
  244. data/test/oxt/oxt_test_main.cpp +0 -27
  245. data/test/oxt/spin_lock_test.cpp +0 -59
  246. data/test/oxt/syscall_interruption_test.cpp +0 -39
  247. data/test/ruby/debug_logging_spec.rb +0 -145
  248. data/test/ruby/message_channel_spec.rb +0 -196
  249. data/test/ruby/rack/loader_spec.rb +0 -42
  250. data/test/ruby/rack/preloader_spec.rb +0 -48
  251. data/test/ruby/rails3.0/loader_spec.rb +0 -26
  252. data/test/ruby/rails3.0/preloader_spec.rb +0 -32
  253. data/test/ruby/rails3.1/loader_spec.rb +0 -26
  254. data/test/ruby/rails3.1/preloader_spec.rb +0 -32
  255. data/test/ruby/rails3.2/loader_spec.rb +0 -26
  256. data/test/ruby/rails3.2/preloader_spec.rb +0 -32
  257. data/test/ruby/rails4.0/loader_spec.rb +0 -28
  258. data/test/ruby/rails4.0/preloader_spec.rb +0 -34
  259. data/test/ruby/rails4.1/loader_spec.rb +0 -28
  260. data/test/ruby/rails4.1/preloader_spec.rb +0 -34
  261. data/test/ruby/request_handler_spec.rb +0 -747
  262. data/test/ruby/shared/loader_sharedspec.rb +0 -247
  263. data/test/ruby/shared/rails/union_station_extensions_sharedspec.rb +0 -357
  264. data/test/ruby/shared/ruby_loader_sharedspec.rb +0 -55
  265. data/test/ruby/spec_helper.rb +0 -114
  266. data/test/ruby/standalone/runtime_installer_spec.rb +0 -402
  267. data/test/ruby/union_station_spec.rb +0 -288
  268. data/test/ruby/utils/file_system_watcher_spec.rb +0 -229
  269. data/test/ruby/utils/hosts_file_parser.rb +0 -258
  270. data/test/ruby/utils/tee_input_spec.rb +0 -235
  271. data/test/ruby/utils/unseekable_socket_spec.rb +0 -66
  272. data/test/ruby/utils_spec.rb +0 -41
  273. data/test/stub/apache2/httpd.conf.erb +0 -122
  274. data/test/stub/apache2/mime.types +0 -748
  275. data/test/stub/garbage1.dat +0 -0
  276. data/test/stub/garbage2.dat +0 -0
  277. data/test/stub/garbage3.dat +0 -0
  278. data/test/stub/http_request.yml +0 -23
  279. data/test/stub/index.html +0 -1
  280. data/test/stub/nginx/koi-utf +0 -109
  281. data/test/stub/nginx/koi-win +0 -103
  282. data/test/stub/nginx/mime.types +0 -70
  283. data/test/stub/nginx/nginx.conf.erb +0 -70
  284. data/test/stub/nginx/win-utf +0 -126
  285. data/test/stub/node/app.js +0 -133
  286. data/test/stub/node/public/.gitignore +0 -0
  287. data/test/stub/node/tmp/.gitignore +0 -0
  288. data/test/stub/rack/config.ru +0 -95
  289. data/test/stub/rack/library.rb +0 -16
  290. data/test/stub/rack/public/.gitignore +0 -0
  291. data/test/stub/rack/start.rb +0 -52
  292. data/test/stub/rack/tmp/.gitignore +0 -0
  293. data/test/stub/rails3.0/.gitignore +0 -4
  294. data/test/stub/rails3.0/Gemfile +0 -22
  295. data/test/stub/rails3.0/Gemfile.lock +0 -80
  296. data/test/stub/rails3.0/Rakefile +0 -10
  297. data/test/stub/rails3.0/app/controllers/application_controller.rb +0 -4
  298. data/test/stub/rails3.0/app/helpers/application_helper.rb +0 -2
  299. data/test/stub/rails3.0/app/views/layouts/application.html.erb +0 -14
  300. data/test/stub/rails3.0/config.ru +0 -4
  301. data/test/stub/rails3.0/config/application.rb +0 -48
  302. data/test/stub/rails3.0/config/boot.rb +0 -13
  303. data/test/stub/rails3.0/config/database.yml +0 -22
  304. data/test/stub/rails3.0/config/environment.rb +0 -5
  305. data/test/stub/rails3.0/config/environments/development.rb +0 -19
  306. data/test/stub/rails3.0/config/environments/production.rb +0 -48
  307. data/test/stub/rails3.0/config/environments/test.rb +0 -32
  308. data/test/stub/rails3.0/config/initializers/backtrace_silencers.rb +0 -7
  309. data/test/stub/rails3.0/config/initializers/inflections.rb +0 -10
  310. data/test/stub/rails3.0/config/initializers/mime_types.rb +0 -5
  311. data/test/stub/rails3.0/config/initializers/passenger.rb +0 -2
  312. data/test/stub/rails3.0/config/initializers/secret_token.rb +0 -7
  313. data/test/stub/rails3.0/config/initializers/session_store.rb +0 -8
  314. data/test/stub/rails3.0/config/locales/en.yml +0 -5
  315. data/test/stub/rails3.0/config/routes.rb +0 -58
  316. data/test/stub/rails3.0/db/seeds.rb +0 -7
  317. data/test/stub/rails3.0/doc/README_FOR_APP +0 -2
  318. data/test/stub/rails3.0/lib/tasks/.gitkeep +0 -0
  319. data/test/stub/rails3.0/log/.gitignore +0 -0
  320. data/test/stub/rails3.0/public/404.html +0 -26
  321. data/test/stub/rails3.0/public/422.html +0 -26
  322. data/test/stub/rails3.0/public/500.html +0 -26
  323. data/test/stub/rails3.0/public/favicon.ico +0 -0
  324. data/test/stub/rails3.0/public/index.html +0 -279
  325. data/test/stub/rails3.0/public/robots.txt +0 -5
  326. data/test/stub/rails3.0/public/stylesheets/.gitkeep +0 -0
  327. data/test/stub/rails3.0/script/rails +0 -9
  328. data/test/stub/rails3.0/test/performance/browsing_test.rb +0 -9
  329. data/test/stub/rails3.0/test/test_helper.rb +0 -13
  330. data/test/stub/rails3.0/vendor/plugins/.gitkeep +0 -0
  331. data/test/stub/rails3.1/.gitignore +0 -15
  332. data/test/stub/rails3.1/Gemfile +0 -37
  333. data/test/stub/rails3.1/Gemfile.lock +0 -115
  334. data/test/stub/rails3.1/README +0 -261
  335. data/test/stub/rails3.1/Rakefile +0 -7
  336. data/test/stub/rails3.1/app/assets/images/rails.png +0 -0
  337. data/test/stub/rails3.1/app/assets/stylesheets/application.css +0 -7
  338. data/test/stub/rails3.1/app/controllers/application_controller.rb +0 -3
  339. data/test/stub/rails3.1/app/helpers/application_helper.rb +0 -2
  340. data/test/stub/rails3.1/app/mailers/.gitkeep +0 -0
  341. data/test/stub/rails3.1/app/models/.gitkeep +0 -0
  342. data/test/stub/rails3.1/app/views/layouts/application.html.erb +0 -14
  343. data/test/stub/rails3.1/config.ru +0 -4
  344. data/test/stub/rails3.1/config/application.rb +0 -48
  345. data/test/stub/rails3.1/config/boot.rb +0 -6
  346. data/test/stub/rails3.1/config/database.yml +0 -25
  347. data/test/stub/rails3.1/config/environment.rb +0 -5
  348. data/test/stub/rails3.1/config/environments/development.rb +0 -30
  349. data/test/stub/rails3.1/config/environments/production.rb +0 -60
  350. data/test/stub/rails3.1/config/environments/test.rb +0 -39
  351. data/test/stub/rails3.1/config/initializers/backtrace_silencers.rb +0 -7
  352. data/test/stub/rails3.1/config/initializers/inflections.rb +0 -10
  353. data/test/stub/rails3.1/config/initializers/mime_types.rb +0 -5
  354. data/test/stub/rails3.1/config/initializers/passenger.rb +0 -2
  355. data/test/stub/rails3.1/config/initializers/secret_token.rb +0 -7
  356. data/test/stub/rails3.1/config/initializers/session_store.rb +0 -8
  357. data/test/stub/rails3.1/config/initializers/wrap_parameters.rb +0 -14
  358. data/test/stub/rails3.1/config/locales/en.yml +0 -5
  359. data/test/stub/rails3.1/config/routes.rb +0 -58
  360. data/test/stub/rails3.1/db/seeds.rb +0 -7
  361. data/test/stub/rails3.1/doc/README_FOR_APP +0 -2
  362. data/test/stub/rails3.1/lib/assets/.gitkeep +0 -0
  363. data/test/stub/rails3.1/lib/tasks/.gitkeep +0 -0
  364. data/test/stub/rails3.1/log/.gitkeep +0 -0
  365. data/test/stub/rails3.1/public/404.html +0 -26
  366. data/test/stub/rails3.1/public/422.html +0 -26
  367. data/test/stub/rails3.1/public/500.html +0 -26
  368. data/test/stub/rails3.1/public/favicon.ico +0 -0
  369. data/test/stub/rails3.1/public/index.html +0 -241
  370. data/test/stub/rails3.1/public/robots.txt +0 -5
  371. data/test/stub/rails3.1/script/rails +0 -6
  372. data/test/stub/rails3.1/test/fixtures/.gitkeep +0 -0
  373. data/test/stub/rails3.1/test/functional/.gitkeep +0 -0
  374. data/test/stub/rails3.1/test/integration/.gitkeep +0 -0
  375. data/test/stub/rails3.1/test/performance/browsing_test.rb +0 -12
  376. data/test/stub/rails3.1/test/test_helper.rb +0 -13
  377. data/test/stub/rails3.1/test/unit/.gitkeep +0 -0
  378. data/test/stub/rails3.1/vendor/assets/stylesheets/.gitkeep +0 -0
  379. data/test/stub/rails3.1/vendor/plugins/.gitkeep +0 -0
  380. data/test/stub/rails3.2/.gitignore +0 -15
  381. data/test/stub/rails3.2/Gemfile +0 -39
  382. data/test/stub/rails3.2/Gemfile.lock +0 -113
  383. data/test/stub/rails3.2/Rakefile +0 -7
  384. data/test/stub/rails3.2/app/assets/images/rails.png +0 -0
  385. data/test/stub/rails3.2/app/assets/stylesheets/application.css +0 -13
  386. data/test/stub/rails3.2/app/controllers/application_controller.rb +0 -3
  387. data/test/stub/rails3.2/app/helpers/application_helper.rb +0 -2
  388. data/test/stub/rails3.2/app/mailers/.gitkeep +0 -0
  389. data/test/stub/rails3.2/app/models/.gitkeep +0 -0
  390. data/test/stub/rails3.2/app/views/layouts/application.html.erb +0 -14
  391. data/test/stub/rails3.2/config.ru +0 -4
  392. data/test/stub/rails3.2/config/application.rb +0 -62
  393. data/test/stub/rails3.2/config/boot.rb +0 -6
  394. data/test/stub/rails3.2/config/database.yml +0 -25
  395. data/test/stub/rails3.2/config/environment.rb +0 -5
  396. data/test/stub/rails3.2/config/environments/development.rb +0 -37
  397. data/test/stub/rails3.2/config/environments/production.rb +0 -67
  398. data/test/stub/rails3.2/config/environments/test.rb +0 -37
  399. data/test/stub/rails3.2/config/initializers/backtrace_silencers.rb +0 -7
  400. data/test/stub/rails3.2/config/initializers/inflections.rb +0 -15
  401. data/test/stub/rails3.2/config/initializers/mime_types.rb +0 -5
  402. data/test/stub/rails3.2/config/initializers/passenger.rb +0 -2
  403. data/test/stub/rails3.2/config/initializers/secret_token.rb +0 -7
  404. data/test/stub/rails3.2/config/initializers/session_store.rb +0 -8
  405. data/test/stub/rails3.2/config/initializers/wrap_parameters.rb +0 -14
  406. data/test/stub/rails3.2/config/locales/en.yml +0 -5
  407. data/test/stub/rails3.2/config/routes.rb +0 -58
  408. data/test/stub/rails3.2/db/seeds.rb +0 -7
  409. data/test/stub/rails3.2/doc/README_FOR_APP +0 -2
  410. data/test/stub/rails3.2/lib/assets/.gitkeep +0 -0
  411. data/test/stub/rails3.2/lib/tasks/.gitkeep +0 -0
  412. data/test/stub/rails3.2/log/.gitkeep +0 -0
  413. data/test/stub/rails3.2/public/404.html +0 -26
  414. data/test/stub/rails3.2/public/422.html +0 -26
  415. data/test/stub/rails3.2/public/500.html +0 -25
  416. data/test/stub/rails3.2/public/favicon.ico +0 -0
  417. data/test/stub/rails3.2/public/index.html +0 -241
  418. data/test/stub/rails3.2/public/robots.txt +0 -5
  419. data/test/stub/rails3.2/script/rails +0 -6
  420. data/test/stub/rails3.2/test/fixtures/.gitkeep +0 -0
  421. data/test/stub/rails3.2/test/functional/.gitkeep +0 -0
  422. data/test/stub/rails3.2/test/integration/.gitkeep +0 -0
  423. data/test/stub/rails3.2/test/performance/browsing_test.rb +0 -12
  424. data/test/stub/rails3.2/test/test_helper.rb +0 -13
  425. data/test/stub/rails3.2/test/unit/.gitkeep +0 -0
  426. data/test/stub/rails3.2/vendor/assets/stylesheets/.gitkeep +0 -0
  427. data/test/stub/rails3.2/vendor/plugins/.gitkeep +0 -0
  428. data/test/stub/rails4.0/.gitignore +0 -16
  429. data/test/stub/rails4.0/Gemfile +0 -45
  430. data/test/stub/rails4.0/Gemfile.lock +0 -126
  431. data/test/stub/rails4.0/README.rdoc +0 -28
  432. data/test/stub/rails4.0/Rakefile +0 -6
  433. data/test/stub/rails4.0/app/assets/images/.keep +0 -0
  434. data/test/stub/rails4.0/app/assets/javascripts/application.js +0 -16
  435. data/test/stub/rails4.0/app/assets/stylesheets/application.css +0 -13
  436. data/test/stub/rails4.0/app/controllers/application_controller.rb +0 -5
  437. data/test/stub/rails4.0/app/controllers/concerns/.keep +0 -0
  438. data/test/stub/rails4.0/app/helpers/application_helper.rb +0 -2
  439. data/test/stub/rails4.0/app/mailers/.keep +0 -0
  440. data/test/stub/rails4.0/app/models/.keep +0 -0
  441. data/test/stub/rails4.0/app/models/concerns/.keep +0 -0
  442. data/test/stub/rails4.0/app/views/layouts/application.html.erb +0 -14
  443. data/test/stub/rails4.0/bin/bundle +0 -3
  444. data/test/stub/rails4.0/bin/rails +0 -4
  445. data/test/stub/rails4.0/bin/rake +0 -4
  446. data/test/stub/rails4.0/config.ru +0 -4
  447. data/test/stub/rails4.0/config/application.rb +0 -23
  448. data/test/stub/rails4.0/config/boot.rb +0 -4
  449. data/test/stub/rails4.0/config/database.yml +0 -25
  450. data/test/stub/rails4.0/config/environment.rb +0 -5
  451. data/test/stub/rails4.0/config/environments/development.rb +0 -29
  452. data/test/stub/rails4.0/config/environments/production.rb +0 -80
  453. data/test/stub/rails4.0/config/environments/test.rb +0 -36
  454. data/test/stub/rails4.0/config/initializers/backtrace_silencers.rb +0 -7
  455. data/test/stub/rails4.0/config/initializers/filter_parameter_logging.rb +0 -4
  456. data/test/stub/rails4.0/config/initializers/inflections.rb +0 -16
  457. data/test/stub/rails4.0/config/initializers/mime_types.rb +0 -5
  458. data/test/stub/rails4.0/config/initializers/passenger.rb +0 -2
  459. data/test/stub/rails4.0/config/initializers/secret_token.rb +0 -12
  460. data/test/stub/rails4.0/config/initializers/session_store.rb +0 -3
  461. data/test/stub/rails4.0/config/initializers/wrap_parameters.rb +0 -14
  462. data/test/stub/rails4.0/config/locales/en.yml +0 -23
  463. data/test/stub/rails4.0/config/routes.rb +0 -57
  464. data/test/stub/rails4.0/db/seeds.rb +0 -7
  465. data/test/stub/rails4.0/lib/assets/.keep +0 -0
  466. data/test/stub/rails4.0/lib/tasks/.keep +0 -0
  467. data/test/stub/rails4.0/log/.keep +0 -0
  468. data/test/stub/rails4.0/public/404.html +0 -58
  469. data/test/stub/rails4.0/public/422.html +0 -58
  470. data/test/stub/rails4.0/public/500.html +0 -57
  471. data/test/stub/rails4.0/public/favicon.ico +0 -0
  472. data/test/stub/rails4.0/public/robots.txt +0 -5
  473. data/test/stub/rails4.0/test/controllers/.keep +0 -0
  474. data/test/stub/rails4.0/test/fixtures/.keep +0 -0
  475. data/test/stub/rails4.0/test/helpers/.keep +0 -0
  476. data/test/stub/rails4.0/test/integration/.keep +0 -0
  477. data/test/stub/rails4.0/test/mailers/.keep +0 -0
  478. data/test/stub/rails4.0/test/models/.keep +0 -0
  479. data/test/stub/rails4.0/test/test_helper.rb +0 -15
  480. data/test/stub/rails4.0/vendor/assets/javascripts/.keep +0 -0
  481. data/test/stub/rails4.0/vendor/assets/stylesheets/.keep +0 -0
  482. data/test/stub/rails4.1/.gitignore +0 -16
  483. data/test/stub/rails4.1/Gemfile +0 -45
  484. data/test/stub/rails4.1/Gemfile.lock +0 -129
  485. data/test/stub/rails4.1/README.rdoc +0 -28
  486. data/test/stub/rails4.1/Rakefile +0 -6
  487. data/test/stub/rails4.1/app/assets/images/.keep +0 -0
  488. data/test/stub/rails4.1/app/assets/javascripts/application.js +0 -16
  489. data/test/stub/rails4.1/app/assets/stylesheets/application.css +0 -13
  490. data/test/stub/rails4.1/app/controllers/application_controller.rb +0 -5
  491. data/test/stub/rails4.1/app/controllers/concerns/.keep +0 -0
  492. data/test/stub/rails4.1/app/helpers/application_helper.rb +0 -2
  493. data/test/stub/rails4.1/app/mailers/.keep +0 -0
  494. data/test/stub/rails4.1/app/models/.keep +0 -0
  495. data/test/stub/rails4.1/app/models/concerns/.keep +0 -0
  496. data/test/stub/rails4.1/app/views/layouts/application.html.erb +0 -14
  497. data/test/stub/rails4.1/bin/bundle +0 -3
  498. data/test/stub/rails4.1/bin/rails +0 -4
  499. data/test/stub/rails4.1/bin/rake +0 -4
  500. data/test/stub/rails4.1/config.ru +0 -4
  501. data/test/stub/rails4.1/config/application.rb +0 -23
  502. data/test/stub/rails4.1/config/boot.rb +0 -4
  503. data/test/stub/rails4.1/config/database.yml +0 -25
  504. data/test/stub/rails4.1/config/environment.rb +0 -5
  505. data/test/stub/rails4.1/config/environments/development.rb +0 -29
  506. data/test/stub/rails4.1/config/environments/production.rb +0 -80
  507. data/test/stub/rails4.1/config/environments/test.rb +0 -36
  508. data/test/stub/rails4.1/config/initializers/backtrace_silencers.rb +0 -7
  509. data/test/stub/rails4.1/config/initializers/filter_parameter_logging.rb +0 -4
  510. data/test/stub/rails4.1/config/initializers/inflections.rb +0 -16
  511. data/test/stub/rails4.1/config/initializers/mime_types.rb +0 -5
  512. data/test/stub/rails4.1/config/initializers/passenger.rb +0 -5
  513. data/test/stub/rails4.1/config/initializers/secret_token.rb +0 -12
  514. data/test/stub/rails4.1/config/initializers/session_store.rb +0 -3
  515. data/test/stub/rails4.1/config/initializers/wrap_parameters.rb +0 -14
  516. data/test/stub/rails4.1/config/locales/en.yml +0 -23
  517. data/test/stub/rails4.1/config/routes.rb +0 -57
  518. data/test/stub/rails4.1/db/seeds.rb +0 -7
  519. data/test/stub/rails4.1/lib/assets/.keep +0 -0
  520. data/test/stub/rails4.1/lib/tasks/.keep +0 -0
  521. data/test/stub/rails4.1/log/.keep +0 -0
  522. data/test/stub/rails4.1/public/404.html +0 -58
  523. data/test/stub/rails4.1/public/422.html +0 -58
  524. data/test/stub/rails4.1/public/500.html +0 -57
  525. data/test/stub/rails4.1/public/favicon.ico +0 -0
  526. data/test/stub/rails4.1/public/robots.txt +0 -5
  527. data/test/stub/rails4.1/test/controllers/.keep +0 -0
  528. data/test/stub/rails4.1/test/fixtures/.keep +0 -0
  529. data/test/stub/rails4.1/test/helpers/.keep +0 -0
  530. data/test/stub/rails4.1/test/integration/.keep +0 -0
  531. data/test/stub/rails4.1/test/mailers/.keep +0 -0
  532. data/test/stub/rails4.1/test/models/.keep +0 -0
  533. data/test/stub/rails4.1/test/test_helper.rb +0 -15
  534. data/test/stub/rails4.1/vendor/assets/javascripts/.keep +0 -0
  535. data/test/stub/rails4.1/vendor/assets/stylesheets/.keep +0 -0
  536. data/test/stub/start_error.pl +0 -24
  537. data/test/stub/upload_data.txt +0 -494
  538. data/test/stub/wsgi/passenger_wsgi.py +0 -212
  539. data/test/stub/wsgi/public/.gitignore +0 -0
  540. data/test/stub/wsgi/tmp/.gitignore +0 -0
  541. data/test/support/allocate_memory.c +0 -14
  542. data/test/support/apache2_controller.rb +0 -258
  543. data/test/support/multipart.rb +0 -62
  544. data/test/support/nginx_controller.rb +0 -97
  545. data/test/support/placebo-preloader.rb +0 -88
  546. data/test/support/test_helper.rb +0 -455
  547. data/test/support/valgrind.h +0 -2539
  548. data/test/tut/tut.h +0 -1310
  549. data/test/tut/tut_reporter.h +0 -256
  550. data/test/valgrind-osx.supp +0 -7
@@ -1,3 +0,0 @@
1
- #!/bin/sh
2
- export LD_LIBRARY_PATH=/opt/rh/python27/root/usr/lib64:/opt/rh/python27/root/usr/lib
3
- exec /opt/rh/python27/root/usr/bin/python2.7 "$@"
@@ -1,46 +0,0 @@
1
- #!/bin/bash
2
- set -e
3
-
4
- /system/internal/inituidgid
5
-
6
- ### Import signing key.
7
- /system/internal/setuser app /tools/silence-unless-failed \
8
- gpg --batch --trust-model always --import /params/signing_key
9
-
10
- ### Make GPG non-interactive.
11
- mv /usr/bin/gpg2 /usr/bin/gpg2.real
12
- rm /usr/bin/gpg
13
- cp /system/internal/dummygpg /usr/bin/gpg
14
-
15
- ### Sign packages.
16
- echo " --> Signing packages"
17
- /system/internal/setuser app \
18
- rpm --resign --define '%_signature gpg' --define "%_gpg_name $SIGNING_KEY" \
19
- /packages/*/*.rpm
20
-
21
- ### Import into repo.
22
- cd /packages
23
- PACKAGES=(*/*.rpm)
24
- DIRS=()
25
- echo " --> Importing ${#PACKAGES[*]} packages"
26
-
27
- for F in "${PACKAGES[@]}"; do
28
- DIR=`dirname "$F"`
29
- DIRS+=("$DIR")
30
-
31
- mkdir -p "/repo/$DIR"
32
- echo " $F"
33
- cp "$F" "/repo/$DIR/"
34
- done
35
-
36
- # $DIRS is now an array of distro-architecture directory names.
37
- # We remove duplicates.
38
- OUTPUT=`ruby -e 'puts ARGV.uniq.join("\n")' "${DIRS[@]}"`
39
- IFS=$'\n'
40
- DIRS=("$OUTPUT")
41
-
42
- # Create a repo for each distro-architecture directory.
43
- for DIR in ${DIRS[@]}; do
44
- echo " --> Updating $DIR"
45
- (cd "/repo/$DIR" && createrepo .)
46
- done
@@ -1,26 +0,0 @@
1
- #!/system/internal/python27
2
- import sys, os, pwd
3
-
4
- if len(sys.argv) < 3:
5
- sys.stderr.write("Usage: /sbin/setuser USERNAME COMMAND [args..]\n")
6
- sys.exit(1)
7
-
8
- def abort(message):
9
- sys.stderr.write("setuser: %s\n" % message)
10
- sys.exit(1)
11
-
12
- username = sys.argv[1]
13
- try:
14
- user = pwd.getpwnam(username)
15
- except KeyError:
16
- abort("user %s not found" % username)
17
- os.initgroups(username, user.pw_gid)
18
- os.setgid(user.pw_gid)
19
- os.setuid(user.pw_uid)
20
- os.environ['USER'] = username
21
- os.environ['HOME'] = user.pw_dir
22
- os.environ['UID'] = str(user.pw_uid)
23
- try:
24
- os.execvp(sys.argv[2], sys.argv[2:])
25
- except OSError as e:
26
- abort("cannot execute %s: %s" % (sys.argv[2], str(e)))
@@ -1,40 +0,0 @@
1
- #!/bin/bash
2
- # Adds timestamps to all lines on stdin, and prints them to stdout as well as a log file.
3
- # The version printed to stdout has the specified prefix on each line.
4
-
5
- set -e
6
- set -o pipefail
7
-
8
- PREFIX="$1"
9
- LOGFILE="$2"
10
- shift
11
- shift
12
-
13
- function cleanup()
14
- {
15
- local pids=`jobs -p`
16
- set +e
17
- if [[ "$pids" != "" ]]; then
18
- kill $pids >/dev/null 2>/dev/null
19
- fi
20
- if [[ "$TEMPDIR" != "" ]]; then
21
- rm -rf "$TEMPDIR"
22
- fi
23
- }
24
-
25
- function add_timestamps()
26
- {
27
- gawk '{ print strftime("%Y-%m-%d %H:%M:%S --"), $0; fflush(); }'
28
- }
29
-
30
- function forward_multiple()
31
- {
32
- while read LINE; do
33
- echo "$LINE" >&3
34
- echo "${PREFIX}: ${LINE}"
35
- done
36
- }
37
-
38
- trap cleanup EXIT
39
- exec 3>>"$LOGFILE"
40
- "$@" 2>&1 | add_timestamps | forward_multiple
@@ -1,99 +0,0 @@
1
- #!/bin/bash
2
- set -e
3
-
4
- SELFROOT=`dirname "$0"`
5
- SELFROOT=`cd "$SELFROOT" && pwd`
6
-
7
- PROJECT_DIR=
8
- PASSENGER_DIR=
9
- CONCURRENCY=1
10
- EXTRA_ARGS=
11
-
12
- function run()
13
- {
14
- echo "$ $@"
15
- "$@"
16
- }
17
-
18
- function cleanup()
19
- {
20
- set +e
21
- local pids=`jobs -p`
22
- if [[ "$pids" != "" ]]; then
23
- kill $pids >/dev/null 2>/dev/null
24
- fi
25
- }
26
-
27
- function usage()
28
- {
29
- echo "Usage: ./jenkins_release [OPTIONS]"
30
- echo "Build RPMs and YUM repository. To be invoked from Jenkins."
31
- echo
32
- echo "Required options:"
33
- echo " -p PATH Path to a project"
34
- echo
35
- echo "Optional options:"
36
- echo " -P PATH Path to Phusion Passenger source directory"
37
- echo " -j CONCURRENCY Build concurrency (default: $CONCURRENCY)"
38
- echo " -O ARG Extra arguments to pass to build script"
39
- }
40
-
41
- function parse_options()
42
- {
43
- local OPTIND=1
44
- local opt
45
- while getopts "p:P:j:O:h" opt; do
46
- case "$opt" in
47
- p)
48
- PROJECT_DIR="$OPTARG"
49
- ;;
50
- P)
51
- PASSENGER_DIR="$OPTARG"
52
- ;;
53
- j)
54
- CONCURRENCY="$OPTARG"
55
- ;;
56
- O)
57
- EXTRA_ARGS="$OPTARG"
58
- ;;
59
- h)
60
- usage
61
- exit
62
- ;;
63
- *)
64
- return 1
65
- ;;
66
- esac
67
- done
68
-
69
- if [[ "$PROJECT_DIR" = "" ]]; then
70
- echo "Please specify a project using -p."
71
- exit 1
72
- fi
73
- }
74
-
75
- parse_options "$@"
76
-
77
- if [[ `whoami` != jenkins ]]; then
78
- echo "This script may only be run from Jenkins."
79
- exit 1
80
- fi
81
-
82
- echo "$ cd $SELFROOT"
83
- cd "$SELFROOT"
84
-
85
- BUILD_ARGS=(
86
- -p "$PROJECT_DIR"
87
- -j "$CONCURRENCY"
88
- -l
89
- $EXTRA_ARGS
90
- )
91
- if [[ "$PASSENGER_DIR" != "" ]]; then
92
- BUILD_ARGS+=(-P "$PASSENGER_DIR")
93
- fi
94
-
95
- run ./build "${BUILD_ARGS[@]}"
96
- run ./repo_update \
97
- -p "$PROJECT_DIR" \
98
- -s auto-software-signing@phusion.nl \
99
- -x /etc/passenger_rpm_automation/signing_passphrase
@@ -1,402 +0,0 @@
1
- require 'fileutils'
2
- require 'thread'
3
- require 'stringio'
4
- require 'singleton'
5
- require File.expand_path(File.dirname(__FILE__) + '/preprocessor')
6
-
7
- MUTEX = Mutex.new
8
- SUPPORTED_ARCHS = ['i386', 'x86_64']
9
-
10
- class TrackingDatabase
11
- include Singleton
12
-
13
- attr_accessor :thread
14
- attr_accessor :category_list
15
- attr_reader :start_time
16
-
17
- def initialize
18
- @category_list = []
19
- @categories = {}
20
- @start_time = Time.now
21
- @finished = false
22
- end
23
-
24
- def register_category(name, description)
25
- category = TrackingCategory.new(name, description)
26
- @category_list << category
27
- @categories[name] = category
28
- end
29
-
30
- def [](name)
31
- @categories[name]
32
- end
33
-
34
- def each_category
35
- @category_list.each do |category|
36
- yield category
37
- end
38
- end
39
-
40
- def set_finished!
41
- @finished = true
42
- end
43
-
44
- def finished?
45
- @finished
46
- end
47
-
48
- def has_errors?
49
- each_category do |category|
50
- category.each_task do |task|
51
- if task.state == :error
52
- return true
53
- end
54
- end
55
- end
56
- false
57
- end
58
-
59
- #### Thread-safe methods ####
60
-
61
- def duration_description
62
- distance_of_time_in_hours_and_minutes(@start_time, Time.now)
63
- end
64
- end
65
-
66
- class TrackingCategory
67
- attr_reader :name, :description
68
-
69
- def initialize(name, description)
70
- @name = name
71
- @description = description
72
- @task_list = []
73
- @tasks = {}
74
- end
75
-
76
- def register_task(name)
77
- task = TrackingTask.new(name, self)
78
- @task_list << task
79
- @tasks[name] = task
80
- end
81
-
82
- def [](name)
83
- @tasks[name]
84
- end
85
-
86
- def each_task
87
- @task_list.each do |task|
88
- yield task
89
- end
90
- end
91
- end
92
-
93
- class TrackingTask
94
- attr_accessor :state
95
- attr_accessor :start_time
96
-
97
- def initialize(name, category)
98
- @name = name
99
- @category = category
100
- @state = :not_started
101
- end
102
-
103
- def set_running!
104
- @state = :running
105
- @start_time = Time.now
106
- end
107
-
108
- def set_done!
109
- @state = :done
110
- @end_time = Time.now
111
- end
112
-
113
- def set_error!
114
- @state = :error
115
- @end_time = Time.now
116
- end
117
-
118
- def state_name
119
- state.to_s.gsub('_', ' ')
120
- end
121
-
122
- def elapsed
123
- if @start_time
124
- (@end_time || Time.now) - @start_time
125
- else
126
- nil
127
- end
128
- end
129
-
130
- def duration_description
131
- if @start_time
132
- distance_of_time_in_hours_and_minutes(@start_time, @end_time || Time.now)
133
- else
134
- nil
135
- end
136
- end
137
-
138
- #### Thread-safe methods ####
139
-
140
- attr_reader :name, :category
141
-
142
- def display_name
143
- name.to_s.gsub(/[:\.]/, ' ')
144
- end
145
-
146
- def sh(command)
147
- sh_with_tracking("#{category.name}:#{name}", command)
148
- end
149
-
150
- def log(message)
151
- track_log("#{category.name}:#{name}", message)
152
- end
153
- end
154
-
155
- def recursive_copy_files(files, destination_dir, preprocess = false, variables = {})
156
- if !STDOUT.tty?
157
- puts "Copying files..."
158
- end
159
- files.each_with_index do |filename, i|
160
- dir = File.dirname(filename)
161
- if !File.exist?("#{destination_dir}/#{dir}")
162
- FileUtils.mkdir_p("#{destination_dir}/#{dir}")
163
- end
164
- if !File.directory?(filename)
165
- if preprocess && filename =~ /\.template$/
166
- real_filename = filename.sub(/\.template$/, '')
167
- FileUtils.install(filename, "#{destination_dir}/#{real_filename}", :preserve => true)
168
- Preprocessor.new.start(filename, "#{destination_dir}/#{real_filename}",
169
- variables)
170
- else
171
- FileUtils.install(filename, "#{destination_dir}/#{filename}", :preserve => true)
172
- end
173
- end
174
- if STDOUT.tty?
175
- printf "\r[%5d/%5d] [%3.0f%%] Copying files...", i + 1, files.size, i * 100.0 / files.size
176
- STDOUT.flush
177
- end
178
- end
179
- if STDOUT.tty?
180
- printf "\r[%5d/%5d] [%3.0f%%] Copying files...\n", files.size, files.size, 100
181
- end
182
- end
183
-
184
- def string_option(name, default_value = nil)
185
- value = ENV[name]
186
- if value.nil? || value.empty?
187
- default_value
188
- else
189
- value
190
- end
191
- end
192
-
193
- def boolean_option(name, default_value = false)
194
- value = ENV[name]
195
- if value.nil? || value.empty?
196
- default_value
197
- else
198
- value == "yes" || value == "on" || value == "true" || value == "1"
199
- end
200
- end
201
-
202
- def get_distros_option
203
- if distros = string_option('DISTROS')
204
- distros.split(/[, ]/)
205
- else
206
- abort("Please set the DISTROS option.")
207
- end
208
- end
209
-
210
- def get_archs_option
211
- if archs = string_option('ARCHS')
212
- archs.split(/[, ]/)
213
- else
214
- abort("Please set the ARCHS option.")
215
- end
216
- end
217
-
218
- def load_passenger
219
- if !defined?(PhusionPassenger)
220
- require "/passenger/lib/phusion_passenger"
221
- PhusionPassenger.locate_directories
222
- PhusionPassenger.require_passenger_lib "constants"
223
- end
224
- end
225
-
226
- def detect_passenger_version
227
- load_passenger
228
- PhusionPassenger::VERSION_STRING
229
- end
230
-
231
- def detect_nginx_version
232
- load_passenger
233
- PhusionPassenger::PREFERRED_NGINX_VERSION
234
- end
235
-
236
- def enterprise?
237
- load_passenger
238
- defined?(PhusionPassenger::PASSENGER_IS_ENTERPRISE) &&
239
- PhusionPassenger::PASSENGER_IS_ENTERPRISE
240
- end
241
-
242
- def initialize_tracking_database!
243
- TrackingDatabase.instance
244
- TrackingDatabase.instance.thread = Thread.new do
245
- Thread.current.abort_on_exception = true
246
- while true
247
- sleep 5
248
- MUTEX.synchronize do
249
- dump_tracking_database(false)
250
- end
251
- end
252
- end
253
- end
254
-
255
- def check_distros_supported!
256
- DISTROS.each do |distro_id|
257
- if !SUPPORTED_DISTROS[distro_id]
258
- abort("Unsupported distribution: #{distro_id}. Supported distributions are: #{SUPPORTED_DISTROS.keys.join(' ')}")
259
- end
260
- end
261
- end
262
-
263
- def check_archs_supported!
264
- ARCHS.each do |arch|
265
- if !SUPPORTED_ARCHS.include?(arch)
266
- abort("Unsupported architecture: #{arch}. Supported architectures are: #{SUPPORTED_ARCHS.keys.join(' ')}")
267
- end
268
- end
269
- end
270
-
271
- def clean_bundler_env!
272
- clean_env = nil
273
- Bundler.with_clean_env do
274
- clean_env = ENV.to_hash
275
- end
276
- ENV.replace(clean_env)
277
- end
278
-
279
- def register_tracking_category(name, description)
280
- TrackingDatabase.instance.register_category(name, description)
281
- end
282
-
283
- def register_tracking_task(category_name, task_name)
284
- TrackingDatabase.instance[category_name].register_task(task_name)
285
- end
286
-
287
- def track_task(category_name, task_name)
288
- succeeded = false
289
- task = nil
290
- MUTEX.synchronize do
291
- category = TrackingDatabase.instance[category_name]
292
- task = category[task_name]
293
- task.set_running!
294
- puts "----- Task started: #{category.description} -> #{task_name} -----"
295
- dump_tracking_database
296
- end
297
- begin
298
- yield(task)
299
- succeeded = true
300
- puts
301
- ensure
302
- if succeeded
303
- task.set_done!
304
- puts "----- Task done: #{task.category.description} -> #{task_name} -----"
305
- else
306
- task.set_error!
307
- puts "----- Task errored: #{task.category.description} -> #{task_name} -----"
308
- end
309
- dump_tracking_database
310
- end
311
- end
312
-
313
- def dump_tracking_database(print_to_stdout = true)
314
- io = StringIO.new
315
- io.puts "Current time: #{format_time(Time.now)}"
316
- io.puts "Start time : #{format_time(TrackingDatabase.instance.start_time)}"
317
- io.puts "Duration : #{TrackingDatabase.instance.duration_description}"
318
- if TrackingDatabase.instance.finished?
319
- io.puts "*** FINISHED ***"
320
- end
321
- if TrackingDatabase.instance.has_errors?
322
- io.puts "*** THERE WERE ERRORS ***"
323
- end
324
-
325
- io.puts
326
- TrackingDatabase.instance.each_category do |category|
327
- io.puts "#{category.description}:"
328
- category.each_task do |task|
329
- io.printf " * %-25s: %-12s\n",
330
- task.display_name,
331
- task.state_name
332
- if task.start_time
333
- io.printf " %25s started %s\n", nil, format_time(task.start_time)
334
- end
335
- if desc = task.duration_description
336
- io.printf " %25s duration %s\n", nil, desc
337
- end
338
- end
339
- io.puts
340
- end
341
-
342
- if print_to_stdout
343
- puts "---------------------------------------------"
344
- puts io.string
345
- puts "---------------------------------------------"
346
- end
347
-
348
- File.open("/output/log/state.log", "w") do |f|
349
- f.write(io.string)
350
- end
351
- end
352
-
353
- def distance_of_time_in_hours_and_minutes(from_time, to_time)
354
- from_time = from_time.to_time if from_time.respond_to?(:to_time)
355
- to_time = to_time.to_time if to_time.respond_to?(:to_time)
356
- dist = (to_time - from_time).to_i
357
- minutes = (dist.abs / 60).round
358
- hours = minutes / 60
359
- minutes = minutes - (hours * 60)
360
- seconds = dist - (hours * 3600) - (minutes * 60)
361
-
362
- words = ''
363
- words << "#{hours} #{hours > 1 ? 'hours' : 'hour' } " if hours > 0
364
- words << "#{minutes} min " if minutes > 0
365
- words << "#{seconds} sec"
366
- words
367
- end
368
-
369
- def passenger_srpm_name(distro_id)
370
- "#{PASSENGER_RPM_NAME}-#{PASSENGER_RPM_VERSION}-#{PASSENGER_RPM_RELEASE}.#{distro_id}.src.rpm"
371
- end
372
-
373
- def nginx_srpm_name(distro_id)
374
- "#{NGINX_RPM_NAME}-#{NGINX_RPM_VERSION}-#{NGINX_RPM_RELEASE}.#{distro_id}.src.rpm"
375
- end
376
-
377
- def format_time(time)
378
- time.strftime("%Y-%m-%d %H:%M:%S")
379
- end
380
-
381
- def logfile_path_for_tracking_name(name)
382
- name = name.gsub(/[: ]/, '.')
383
- "/output/log/#{name}.log"
384
- end
385
-
386
- def sh_with_tracking(name, command)
387
- logfile = logfile_path_for_tracking_name(name)
388
- time = format_time(Time.now)
389
- puts "#{name}: #{time} -- #{command}"
390
- if !system("/system/internal/tracking_helper", name, logfile, "/bin/bash", "-c", command)
391
- abort "*** Command failed: #{command}"
392
- end
393
- end
394
-
395
- def track_log(name, message)
396
- time = format_time(Time.now)
397
- message = "#{name}: #{time} -- #{message}"
398
- puts message
399
- File.open(logfile_path_for_tracking_name(name), "a") do |f|
400
- f.puts(message)
401
- end
402
- end