passenger 4.0.48 → 4.0.49

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of passenger might be problematic. Click here for more details.

Files changed (218) hide show
  1. checksums.yaml +8 -8
  2. checksums.yaml.gz.asc +7 -7
  3. data.tar.gz.asc +7 -7
  4. data/.editorconfig +36 -2
  5. data/.travis.yml +1 -1
  6. data/CHANGELOG +16 -0
  7. data/Rakefile +0 -1
  8. data/build/apache2.rb +4 -4
  9. data/build/common_library.rb +18 -18
  10. data/build/cplusplus_support.rb +2 -2
  11. data/build/documentation.rb +1 -1
  12. data/build/integration_tests.rb +12 -4
  13. data/build/misc.rb +12 -7
  14. data/build/packaging.rb +14 -14
  15. data/build/preprocessor.rb +10 -10
  16. data/build/rake_extensions.rb +11 -11
  17. data/build/ruby_extension.rb +2 -2
  18. data/dev/ci/inituidgid +24 -0
  19. data/dev/ci/run_jenkins.sh +57 -0
  20. data/dev/ci/run_rpm_tests.sh +77 -0
  21. data/dev/{run_travis.sh → ci/run_travis.sh} +60 -4
  22. data/doc/Users guide Nginx.txt +2 -2
  23. data/doc/users_guide_snippets/environment_variables.txt +0 -2
  24. data/doc/users_guide_snippets/tips.txt +20 -1
  25. data/ext/apache2/Bucket.cpp +18 -18
  26. data/ext/apache2/Bucket.h +4 -4
  27. data/ext/apache2/Configuration.cpp +7 -7
  28. data/ext/apache2/Configuration.hpp +43 -43
  29. data/ext/apache2/DirectoryMapper.h +5 -5
  30. data/ext/apache2/Hooks.cpp +142 -142
  31. data/ext/apache2/MergeDirConfig.cpp +40 -40
  32. data/ext/common/Account.h +17 -17
  33. data/ext/common/AccountsDatabase.h +9 -9
  34. data/ext/common/AgentsStarter.cpp +2 -2
  35. data/ext/common/AgentsStarter.h +40 -40
  36. data/ext/common/ApplicationPool2/Common.h +10 -6
  37. data/ext/common/ApplicationPool2/ComponentInfo.h +2 -2
  38. data/ext/common/ApplicationPool2/DirectSpawner.h +17 -17
  39. data/ext/common/ApplicationPool2/DummySpawner.h +5 -5
  40. data/ext/common/ApplicationPool2/Group.h +54 -38
  41. data/ext/common/ApplicationPool2/Implementation.cpp +76 -49
  42. data/ext/common/ApplicationPool2/Options.h +98 -91
  43. data/ext/common/ApplicationPool2/Pool.h +70 -69
  44. data/ext/common/ApplicationPool2/Process.h +21 -21
  45. data/ext/common/ApplicationPool2/Session.h +11 -11
  46. data/ext/common/ApplicationPool2/SmartSpawner.h +60 -60
  47. data/ext/common/ApplicationPool2/Socket.h +19 -19
  48. data/ext/common/ApplicationPool2/Spawner.h +64 -72
  49. data/ext/common/ApplicationPool2/SpawnerFactory.h +4 -4
  50. data/ext/common/ApplicationPool2/SuperGroup.h +41 -41
  51. data/ext/common/BackgroundEventLoop.cpp +1 -1
  52. data/ext/common/BackgroundEventLoop.h +2 -2
  53. data/ext/common/Constants.h +1 -1
  54. data/ext/common/EventedBufferedInput.h +5 -5
  55. data/ext/common/EventedClient.h +51 -51
  56. data/ext/common/EventedMessageServer.h +39 -39
  57. data/ext/common/EventedServer.h +32 -32
  58. data/ext/common/Exceptions.h +23 -23
  59. data/ext/common/FileDescriptor.h +18 -18
  60. data/ext/common/Logging.cpp +1 -1
  61. data/ext/common/MessageClient.h +27 -27
  62. data/ext/common/MessageReadersWriters.h +79 -79
  63. data/ext/common/MessageServer.h +59 -59
  64. data/ext/common/RandomGenerator.h +12 -12
  65. data/ext/common/ResourceLocator.h +8 -8
  66. data/ext/common/SafeLibev.h +54 -25
  67. data/ext/common/ServerInstanceDir.h +31 -31
  68. data/ext/common/StaticString.h +50 -48
  69. data/ext/common/Utils.cpp +73 -78
  70. data/ext/common/Utils.h +6 -6
  71. data/ext/common/Utils/Base64.cpp +3 -3
  72. data/ext/common/Utils/Base64.h +7 -7
  73. data/ext/common/Utils/BlockingQueue.h +9 -9
  74. data/ext/common/Utils/BufferedIO.h +17 -17
  75. data/ext/common/Utils/CachedFileStat.hpp +16 -16
  76. data/ext/common/Utils/Dechunker.h +25 -25
  77. data/ext/common/Utils/FileChangeChecker.h +10 -10
  78. data/ext/common/Utils/MemZeroGuard.h +5 -5
  79. data/ext/common/Utils/MemoryBarrier.h +1 -1
  80. data/ext/common/Utils/MessageIO.h +61 -61
  81. data/ext/common/Utils/ProcessMetricsCollector.h +40 -40
  82. data/ext/common/Utils/ScopeGuard.h +7 -7
  83. data/ext/common/Utils/SpeedMeter.h +1 -1
  84. data/ext/common/Utils/StrIntUtils.cpp +13 -13
  85. data/ext/common/Utils/StrIntUtils.h +3 -3
  86. data/ext/common/Utils/StringScanning.h +5 -5
  87. data/ext/common/Utils/SystemMetricsCollector.h +2 -2
  88. data/ext/common/Utils/SystemTime.h +10 -10
  89. data/ext/common/Utils/Template.h +2 -2
  90. data/ext/common/Utils/Timer.h +6 -6
  91. data/ext/common/Utils/VariantMap.h +29 -29
  92. data/ext/common/agents/Base.cpp +19 -19
  93. data/ext/common/agents/HelperAgent/AgentOptions.h +1 -1
  94. data/ext/common/agents/HelperAgent/FileBackedPipe.h +6 -6
  95. data/ext/common/agents/HelperAgent/Main.cpp +44 -43
  96. data/ext/common/agents/HelperAgent/RequestHandler.cpp +4 -4
  97. data/ext/common/agents/HelperAgent/RequestHandler.h +29 -28
  98. data/ext/common/agents/HelperAgent/ScgiRequestParser.h +56 -50
  99. data/ext/common/agents/LoggingAgent/AdminController.h +8 -8
  100. data/ext/common/agents/LoggingAgent/DataStoreId.h +17 -17
  101. data/ext/common/agents/LoggingAgent/FilterSupport.h +167 -167
  102. data/ext/common/agents/LoggingAgent/LoggingServer.h +122 -122
  103. data/ext/common/agents/LoggingAgent/Main.cpp +7 -7
  104. data/ext/common/agents/LoggingAgent/RemoteSender.h +54 -54
  105. data/ext/common/agents/SpawnPreparer.cpp +4 -4
  106. data/ext/common/agents/TempDirToucher.c +2 -2
  107. data/ext/common/agents/Watchdog/AgentWatcher.cpp +47 -47
  108. data/ext/common/agents/Watchdog/HelperAgentWatcher.cpp +7 -7
  109. data/ext/common/agents/Watchdog/LoggingAgentWatcher.cpp +7 -7
  110. data/ext/common/agents/Watchdog/Main.cpp +22 -22
  111. data/ext/common/agents/Watchdog/ServerInstanceDirToucher.cpp +9 -9
  112. data/ext/libeio/eio.c +1 -1
  113. data/ext/nginx/Configuration.c +30 -30
  114. data/ext/nginx/Configuration.h +1 -1
  115. data/ext/nginx/ContentHandler.c +54 -54
  116. data/ext/nginx/ContentHandler.h +3 -3
  117. data/ext/nginx/StaticContentHandler.c +2 -2
  118. data/ext/nginx/ngx_http_passenger_module.c +21 -21
  119. data/ext/oxt/detail/backtrace_enabled.hpp +1 -1
  120. data/ext/oxt/detail/context.hpp +1 -1
  121. data/ext/oxt/detail/spin_lock_darwin.hpp +4 -4
  122. data/ext/oxt/detail/spin_lock_gcc_x86.hpp +3 -3
  123. data/ext/oxt/detail/spin_lock_pthreads.hpp +4 -4
  124. data/ext/oxt/detail/tracable_exception_disabled.hpp +1 -1
  125. data/ext/oxt/dynamic_thread_group.hpp +18 -18
  126. data/ext/oxt/implementation.cpp +9 -8
  127. data/ext/oxt/macros.hpp +2 -2
  128. data/ext/oxt/system_calls.cpp +11 -11
  129. data/ext/oxt/system_calls.hpp +13 -13
  130. data/ext/oxt/thread.hpp +22 -14
  131. data/ext/ruby/passenger_native_support.c +55 -55
  132. data/lib/phusion_passenger.rb +24 -24
  133. data/lib/phusion_passenger/common_library.rb +2 -0
  134. data/lib/phusion_passenger/loader_shared_helpers.rb +18 -18
  135. data/lib/phusion_passenger/packaging.rb +9 -4
  136. data/lib/phusion_passenger/platform_info/apache.rb +45 -31
  137. data/lib/phusion_passenger/platform_info/compiler.rb +11 -11
  138. data/lib/phusion_passenger/rack/thread_handler_extension.rb +1 -1
  139. data/lib/phusion_passenger/request_handler/thread_handler.rb +8 -8
  140. data/lib/phusion_passenger/standalone/app_finder.rb +16 -16
  141. data/lib/phusion_passenger/standalone/command.rb +22 -22
  142. data/packaging/rpm/LICENSE.txt +19 -0
  143. data/packaging/rpm/Makefile +13 -0
  144. data/packaging/rpm/README.md +41 -0
  145. data/packaging/rpm/Vagrantfile +38 -0
  146. data/{rpm/Vagrantfile → packaging/rpm/Vagrantfile.centos} +0 -0
  147. data/packaging/rpm/build +170 -0
  148. data/packaging/rpm/create_project +41 -0
  149. data/packaging/rpm/git_update +88 -0
  150. data/packaging/rpm/image/Dockerfile +37 -0
  151. data/packaging/rpm/image/Gemfile +3 -0
  152. data/packaging/rpm/image/Gemfile.lock +12 -0
  153. data/packaging/rpm/image/RPM-GPG-KEY-amazon-ga +19 -0
  154. data/packaging/rpm/image/amazon2014-i386.cfg +96 -0
  155. data/packaging/rpm/image/amazon2014-x86_64.cfg +96 -0
  156. data/packaging/rpm/image/site-defaults.cfg +168 -0
  157. data/packaging/rpm/internal/build_tasks.rb +238 -0
  158. data/packaging/rpm/internal/dummygpg +11 -0
  159. data/packaging/rpm/internal/exec_build +42 -0
  160. data/packaging/rpm/internal/get_distro_arch +14 -0
  161. data/packaging/rpm/internal/get_distro_id +10 -0
  162. data/packaging/rpm/internal/git_update +27 -0
  163. data/packaging/rpm/internal/inituidgid +17 -0
  164. data/packaging/rpm/internal/my_init +344 -0
  165. data/packaging/rpm/internal/python27 +3 -0
  166. data/packaging/rpm/internal/repo_update +46 -0
  167. data/packaging/rpm/internal/setuser +26 -0
  168. data/packaging/rpm/internal/tracking_helper +40 -0
  169. data/packaging/rpm/jenkins_release +99 -0
  170. data/packaging/rpm/lib/build_tasks_support.rb +402 -0
  171. data/packaging/rpm/lib/preprocessor.rb +341 -0
  172. data/packaging/rpm/nginx_spec/404.html +119 -0
  173. data/packaging/rpm/nginx_spec/50x.html +119 -0
  174. data/packaging/rpm/nginx_spec/index.html +116 -0
  175. data/packaging/rpm/nginx_spec/nginx-auto-cc-gcc.patch +13 -0
  176. data/packaging/rpm/nginx_spec/nginx-logo.png +0 -0
  177. data/packaging/rpm/nginx_spec/nginx-upgrade +13 -0
  178. data/packaging/rpm/nginx_spec/nginx-upgrade.8 +151 -0
  179. data/packaging/rpm/nginx_spec/nginx.conf +131 -0
  180. data/packaging/rpm/nginx_spec/nginx.init +144 -0
  181. data/packaging/rpm/nginx_spec/nginx.logrotate +13 -0
  182. data/packaging/rpm/nginx_spec/nginx.service +15 -0
  183. data/packaging/rpm/nginx_spec/nginx.spec.template +559 -0
  184. data/packaging/rpm/nginx_spec/nginx.sysconfig +4 -0
  185. data/packaging/rpm/nginx_spec/passenger.conf +9 -0
  186. data/packaging/rpm/nginx_spec/poweredby.png +0 -0
  187. data/{rpm → packaging/rpm/passenger_spec}/apache-passenger.conf.in +0 -0
  188. data/{rpm → packaging/rpm/passenger_spec}/config.json +0 -0
  189. data/{rpm → packaging/rpm/passenger_spec}/passenger.logrotate +0 -0
  190. data/{rpm → packaging/rpm/passenger_spec}/passenger.spec.template +58 -31
  191. data/{rpm → packaging/rpm/passenger_spec}/passenger_dynamic_thread_group.patch +0 -0
  192. data/{rpm → packaging/rpm/passenger_spec}/passenger_tests_default_config_example.patch +0 -0
  193. data/{rpm → packaging/rpm/passenger_spec}/rubygem-passenger-4.0.18-GLIBC_HAVE_LONG_LONG.patch +0 -0
  194. data/{rpm → packaging/rpm/passenger_spec}/rubygem-passenger-4.0.18-gcc47-include-sys_types.patch +0 -0
  195. data/packaging/rpm/repo_update +114 -0
  196. data/packaging/rpm/setup-system +60 -0
  197. data/packaging/rpm/shell +10 -0
  198. data/resources/templates/standalone/config.erb +3 -1
  199. data/test/config.json.rpm-automation +1 -1
  200. data/test/cxx/ApplicationPool2/DirectSpawnerTest.cpp +11 -11
  201. data/test/cxx/ApplicationPool2/OptionsTest.cpp +5 -5
  202. data/test/cxx/ApplicationPool2/PoolTest.cpp +129 -89
  203. data/test/cxx/ApplicationPool2/ProcessTest.cpp +15 -15
  204. data/test/cxx/ApplicationPool2/SmartSpawnerTest.cpp +22 -22
  205. data/test/cxx/ApplicationPool2/SpawnerTestCases.cpp +11 -11
  206. data/test/cxx/ScgiRequestParserTest.cpp +75 -61
  207. data/test/cxx/UtilsTest.cpp +86 -85
  208. data/test/gdbinit.example +3 -0
  209. data/test/integration_tests/nginx_tests.rb +3 -3
  210. data/test/integration_tests/source_packaging_test.rb +3 -1
  211. data/test/stub/nginx/nginx.conf.erb +8 -1
  212. data/test/support/nginx_controller.rb +7 -7
  213. metadata +62 -17
  214. metadata.gz.asc +7 -7
  215. data/build/rpm.rb +0 -128
  216. data/dev/rpmtool +0 -21
  217. data/dev/test_rpm_packaging.sh +0 -28
  218. data/rpm/get_distro_id.py +0 -4
@@ -0,0 +1,19 @@
1
+ -----BEGIN PGP PUBLIC KEY BLOCK-----
2
+ Version: GnuPG v1.4.5 (GNU/Linux)
3
+
4
+ mQENBExJSwMBCACnEqXpleV7jQhOvXnVU+p/hH0gNjA6083uTduA1ZdrCTJZV/Cy
5
+ xi3xMK4Tnumcu+NOVNDWwY5dOr291SGmDqom+AoGFF5SyveTiYtAtz9vhhbXE1Aq
6
+ zk6mq+ivd26COSacM6IWsfWrTW/2rM9ydPh6Z4d8psroT+RLhiTZr9R+niQXLnbC
7
+ yTLQr2+gMjSdVwKtJ5SwABPRG4OtxrMyR+pyEEupD9t2a2dqj4mzy59Se1krl04O
8
+ 8NKMuTs8soyzEuYnFM2NIsjT4IsXVw94IrDLPknpiw5phkDNhYa5UfhLzOkdMIVH
9
+ +MeUp/MlV4YmQe9QQCW6A1vNBIZrHt5c1UYjABEBAAG0MUFtYXpvbiBMaW51eCBB
10
+ TUkgKEdBKSA8bGludXgtc2VjdXJpdHlAYW1hem9uLmNvbT6JATwEEwECACYCGwMG
11
+ CwkIBwMCBBUCCAMEFgIDAQIeAQIXgAUCTkHb3AUJC16SWQAKCRC8tKhbIcDznzqe
12
+ B/42yOjxbm9R1VWFg7xSp/aMtDDbmHuW9OCQQeIzJfheDOqczIEp4XLfMH9WiXEB
13
+ uxVGFVC6QnwgOg0e9rWoW8c25xPyFHe9mtqfr3Tmv40in1IbROtDoRzHHnxVDSmd
14
+ 1wbzUMGuQ8xcG5GhGRFx+zFcY/GJ/RWsK6daWT0Pv1zhqpG5asQKiFGJdenOj0JO
15
+ EdY2g1MxeeCe8PJPwuJcV1P4LoXQnVT3Ttd/zDcCuo4aA/Pu4t3lH478f5SzJvsW
16
+ nM7m471p5YtNWsZt8SvnVTfv+X09wTzSQ2njs87JQWj9+4NsHSQ8slSvTi9Zcqm9
17
+ AytaW43P8V1JGAfya+74ZDzL
18
+ =xQTk
19
+ -----END PGP PUBLIC KEY BLOCK-----
@@ -0,0 +1,96 @@
1
+ config_opts['root'] = 'amazon2014-i386'
2
+ config_opts['target_arch'] = 'i686'
3
+ config_opts['legal_host_arches'] = ('i386', 'i586', 'i686', 'x86_64')
4
+ config_opts['chroot_setup_cmd'] = 'groupinstall buildsys-build'
5
+ config_opts['dist'] = 'el6' # only useful for --resultdir variable subst
6
+
7
+ config_opts['yum.conf'] = """
8
+ [main]
9
+ cachedir=/var/cache/yum
10
+ debuglevel=1
11
+ reposdir=/dev/null
12
+ logfile=/var/log/yum.log
13
+ retries=20
14
+ obsoletes=1
15
+ gpgcheck=0
16
+ assumeyes=1
17
+ syslog_ident=mock
18
+ syslog_device=
19
+
20
+ # repos
21
+ [amzn-main]
22
+ name=amzn-main-Base
23
+ mirrorlist=http://repo.us-west-2.amazonaws.com/latest/main/mirror.list
24
+ mirror_expire=300
25
+ metadata_expire=300
26
+ priority=10
27
+ failovermethod=priority
28
+ fastestmirror_enabled=0
29
+ gpgcheck=1
30
+ gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-amazon-ga
31
+ enabled=1
32
+ retries=5
33
+ timeout=10
34
+ report_instanceid=yes
35
+
36
+ [amzn-nosrc]
37
+ name=amzn-nosrc-Base
38
+ mirrorlist=http://repo.us-west-2.amazonaws.com/latest/nosrc/mirror.list
39
+ mirror_expire=300
40
+ metadata_expire=300
41
+ priority=10
42
+ failovermethod=priority
43
+ fastestmirror_enabled=0
44
+ gpgcheck=0
45
+ gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-amazon-ga
46
+ enabled=0
47
+ retries=5
48
+ timeout=10
49
+ report_instanceid=yes
50
+
51
+ [amzn-preview]
52
+ name=amzn-preview-Base
53
+ mirrorlist=http://repo.us-west-2.amazonaws.com/latest/preview/mirror.list
54
+ mirror_expire=300
55
+ metadata_expire=300
56
+ priority=10
57
+ failovermethod=priority
58
+ fastestmirror_enabled=0
59
+ gpgcheck=1
60
+ gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-amazon-ga
61
+ enabled=0
62
+ retries=5
63
+ timeout=10
64
+ report_instanceid=yes
65
+
66
+ [amzn-updates]
67
+ name=amzn-updates-Base
68
+ mirrorlist=http://repo.us-west-2.amazonaws.com/latest/updates/mirror.list
69
+ mirror_expire=300
70
+ metadata_expire=300
71
+ priority=10
72
+ failovermethod=priority
73
+ fastestmirror_enabled=0
74
+ gpgcheck=1
75
+ gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-amazon-ga
76
+ enabled=1
77
+ retries=5
78
+ timeout=10
79
+ report_instanceid=yes
80
+
81
+ [epel]
82
+ name=epel
83
+ mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=i386
84
+ failovermethod=priority
85
+ enabled=1
86
+ gpgcheck=1
87
+ gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
88
+
89
+ [epel-testing]
90
+ name=epel-testing
91
+ mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=testing-epel6&arch=i386
92
+ failovermethod=priority
93
+ enabled=0
94
+ gpgcheck=1
95
+ gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
96
+ """
@@ -0,0 +1,96 @@
1
+ config_opts['root'] = 'amazon2014-x86_64'
2
+ config_opts['target_arch'] = 'x86_64'
3
+ config_opts['legal_host_arches'] = ('x86_64',)
4
+ config_opts['chroot_setup_cmd'] = 'groupinstall buildsys-build'
5
+ config_opts['dist'] = 'el6' # only useful for --resultdir variable subst
6
+
7
+ config_opts['yum.conf'] = """
8
+ [main]
9
+ cachedir=/var/cache/yum
10
+ debuglevel=1
11
+ reposdir=/dev/null
12
+ logfile=/var/log/yum.log
13
+ retries=20
14
+ obsoletes=1
15
+ gpgcheck=0
16
+ assumeyes=1
17
+ syslog_ident=mock
18
+ syslog_device=
19
+
20
+ # repos
21
+ [amzn-main]
22
+ name=amzn-main-Base
23
+ mirrorlist=http://repo.us-west-2.amazonaws.com/latest/main/mirror.list
24
+ mirror_expire=300
25
+ metadata_expire=300
26
+ priority=10
27
+ failovermethod=priority
28
+ fastestmirror_enabled=0
29
+ gpgcheck=1
30
+ gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-amazon-ga
31
+ enabled=1
32
+ retries=5
33
+ timeout=10
34
+ report_instanceid=yes
35
+
36
+ [amzn-nosrc]
37
+ name=amzn-nosrc-Base
38
+ mirrorlist=http://repo.us-west-2.amazonaws.com/latest/nosrc/mirror.list
39
+ mirror_expire=300
40
+ metadata_expire=300
41
+ priority=10
42
+ failovermethod=priority
43
+ fastestmirror_enabled=0
44
+ gpgcheck=0
45
+ gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-amazon-ga
46
+ enabled=0
47
+ retries=5
48
+ timeout=10
49
+ report_instanceid=yes
50
+
51
+ [amzn-preview]
52
+ name=amzn-preview-Base
53
+ mirrorlist=http://repo.us-west-2.amazonaws.com/latest/preview/mirror.list
54
+ mirror_expire=300
55
+ metadata_expire=300
56
+ priority=10
57
+ failovermethod=priority
58
+ fastestmirror_enabled=0
59
+ gpgcheck=1
60
+ gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-amazon-ga
61
+ enabled=0
62
+ retries=5
63
+ timeout=10
64
+ report_instanceid=yes
65
+
66
+ [amzn-updates]
67
+ name=amzn-updates-Base
68
+ mirrorlist=http://repo.us-west-2.amazonaws.com/latest/updates/mirror.list
69
+ mirror_expire=300
70
+ metadata_expire=300
71
+ priority=10
72
+ failovermethod=priority
73
+ fastestmirror_enabled=0
74
+ gpgcheck=1
75
+ gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-amazon-ga
76
+ enabled=1
77
+ retries=5
78
+ timeout=10
79
+ report_instanceid=yes
80
+
81
+ [epel]
82
+ name=epel
83
+ mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=x86_64
84
+ failovermethod=priority
85
+ enabled=1
86
+ gpgcheck=1
87
+ gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
88
+
89
+ [epel-testing]
90
+ name=epel-testing
91
+ mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=testing-epel6&arch=x86_64
92
+ failovermethod=priority
93
+ enabled=0
94
+ gpgcheck=1
95
+ gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
96
+ """
@@ -0,0 +1,168 @@
1
+ # mock defaults
2
+ # vim:tw=0:ts=4:sw=4:et:
3
+ #
4
+ # This config file is for site-specific default values that apply across all
5
+ # configurations. Options specified in this config file can be overridden in
6
+ # the individual mock config files.
7
+ #
8
+ # The site-defaults.cfg delivered by default has NO options set. Only set
9
+ # options here if you want to override the defaults.
10
+ #
11
+ # Entries in this file follow the same format as other mock config files.
12
+ # config_opts['foo'] = bar
13
+
14
+ #############################################################################
15
+ #
16
+ # Things that we recommend you set in site-defaults.cfg:
17
+ #
18
+ # config_opts['basedir'] = '/var/lib/mock/'
19
+ # config_opts['cache_topdir'] = '/var/cache/mock'
20
+ # Note: the path pointed to by basedir and cache_topdir must be owned
21
+ # by group 'mock' and must have mode: g+rws
22
+ # config_opts['rpmbuild_timeout'] = 0
23
+ # config_opts['use_host_resolv'] = True
24
+
25
+ # You can configure log format to pull from logging.ini formats of these names:
26
+ # config_opts['build_log_fmt_name'] = "unadorned"
27
+ # config_opts['root_log_fmt_name'] = "detailed"
28
+ # config_opts['state_log_fmt_name'] = "state"
29
+ #
30
+ # mock will normally set up a minimal chroot /dev.
31
+ # If you want to use a pre-configured /dev, disable this and use the bind-mount
32
+ # plugin to mount your special /dev
33
+ # config_opts['internal_dev_setup'] = True
34
+ #
35
+ # internal_setarch defaults to 'True' if the python 'ctypes' package is
36
+ # available. It is in the python std lib on >= python 2.5. On older versions,
37
+ # it is available as an addon. On systems w/o ctypes, it will default to 'False'
38
+ # config_opts['internal_setarch'] = False
39
+ #
40
+ # the cleanup_on_* options allow you to automatically clean and remove the
41
+ # mock build directory, but only take effect if --resultdir is used.
42
+ # config_opts provides fine-grained control. cmdline only has big hammer
43
+ #
44
+ # config_opts['cleanup_on_success'] = 1
45
+ # config_opts['cleanup_on_failure'] = 1
46
+
47
+ # if you want mock to automatically run createrepo on the rpms in your
48
+ # resultdir.
49
+ # config_opts['createrepo_on_rpms'] = False
50
+ # config_opts['createrepo_command'] = '/usr/bin/createrepo -d -q -x *.src.rpm'
51
+
52
+ # if you want mock to backup the contents of a result dir before clean
53
+ # config_opts['backup_on_clean'] = False
54
+ # config_opts('backup_base_dir'] = config_opts['basedir'] + "backup"
55
+
56
+
57
+ #############################################################################
58
+ #
59
+ # plugin related. Below are the defaults. Change to suit your site
60
+ # policy. site-defaults.cfg is a good place to do this.
61
+ #
62
+ # NOTE: Some of the caching options can theoretically affect build
63
+ # reproducability. Change with care.
64
+ #
65
+ # config_opts['plugin_conf']['package_state_enable'] = False
66
+ # config_opts['plugin_conf']['ccache_enable'] = True
67
+ # config_opts['plugin_conf']['ccache_opts']['max_cache_size'] = '4G'
68
+ config_opts['plugin_conf']['ccache_opts']['compress'] = True
69
+ config_opts['plugin_conf']['ccache_opts']['compress_level'] = 3
70
+ # config_opts['plugin_conf']['ccache_opts']['dir'] = "%(cache_topdir)s/%(root)s/ccache/"
71
+ # config_opts['plugin_conf']['yum_cache_enable'] = True
72
+ # config_opts['plugin_conf']['yum_cache_opts']['max_age_days'] = 30
73
+ # config_opts['plugin_conf']['yum_cache_opts']['dir'] = "%(cache_topdir)s/%(root)s/yum_cache/"
74
+ # config_opts['plugin_conf']['root_cache_enable'] = True
75
+ # config_opts['plugin_conf']['root_cache_opts']['max_age_days'] = 15
76
+ # config_opts['plugin_conf']['root_cache_opts']['dir'] = "%(cache_topdir)s/%(root)s/root_cache/"
77
+ # config_opts['plugin_conf']['root_cache_opts']['compress_program'] = "pigz"
78
+ # config_opts['plugin_conf']['root_cache_opts']['extension'] = ".gz"
79
+ # config_opts['plugin_conf']['root_cache_opts']['exclude_dirs'] = ["./proc", "./sys", "./dev",
80
+ # "./tmp/ccache", "./var/cache/yum" ]
81
+ #
82
+ # bind mount plugin is enabled by default but has no configured directories to
83
+ # mount
84
+ # config_opts['plugin_conf']['bind_mount_enable'] = True
85
+ # config_opts['plugin_conf']['bind_mount_opts']['dirs'].append(('/host/path', '/bind/mount/path/in/chroot/' ))
86
+ #
87
+ # config_opts['plugin_conf']['tmpfs_enable'] = False
88
+ # config_opts['plugin_conf']['tmpfs_opts']['required_ram_mb'] = 1024
89
+ # config_opts['plugin_conf']['tmpfs_opts']['max_fs_size'] = '512m'
90
+ # config_opts['plugin_conf']['tmpfs_opts']['mode'] = '0755'
91
+ # config_opts['plugin_conf']['chroot_scan_enable'] = False
92
+ # config_opts['plugin_conf']['chroot_scan_opts'] = [ "core(\.\d+)?", "\.log$",]
93
+
94
+ #############################################################################
95
+ #
96
+ # environment for chroot
97
+ #
98
+ # config_opts['environment']['TERM'] = 'vt100'
99
+ # config_opts['environment']['SHELL'] = '/bin/bash'
100
+ # config_opts['environment']['HOME'] = '/builddir'
101
+ # config_opts['environment']['HOSTNAME'] = 'mock'
102
+ # config_opts['environment']['PATH'] = '/usr/bin:/bin:/usr/sbin:/sbin'
103
+ # config_opts['environment']['PROMPT_COMMAND'] = 'echo -n "<mock-chroot>"'
104
+ # config_opts['environment']['LANG'] = os.environ.setdefault('LANG', 'en_US.UTF-8')
105
+ # config_opts['environment']['TZ'] = os.environ.setdefault('TZ', 'EST5EDT')
106
+
107
+ #############################################################################
108
+ #
109
+ # Things that you can change, but we dont recommend it:
110
+ # config_opts['chroothome'] = '/builddir'
111
+ # config_opts['clean'] = True
112
+
113
+ #############################################################################
114
+ #
115
+ # Things that must be adjusted if SCM integration is used:
116
+ #
117
+ # config_opts['scm'] = True
118
+ # config_opts['scm_opts']['method'] = 'git'
119
+ # config_opts['scm_opts']['cvs_get'] = 'cvs -d /srv/cvs co SCM_BRN SCM_PKG'
120
+ # config_opts['scm_opts']['git_get'] = 'git clone SCM_BRN git://localhost/SCM_PKG.git SCM_PKG'
121
+ # config_opts['scm_opts']['svn_get'] = 'svn co file:///srv/svn/SCM_PKG/SCM_BRN SCM_PKG'
122
+ # config_opts['scm_opts']['spec'] = 'SCM_PKG.spec'
123
+ # config_opts['scm_opts']['ext_src_dir'] = '/dev/null'
124
+ # config_opts['scm_opts']['write_tar'] = True
125
+ # config_opts['scm_opts']['git_timestamps'] = True
126
+ # config_opts['scm_opts']['exclude_vcs'] = True
127
+
128
+ # These options are also recognized but usually defined in cmd line
129
+ # with --scm-option package=<pkg> --scm-option branch=<branch>
130
+ # config_opts['scm_opts']['package'] = 'mypkg'
131
+ # config_opts['scm_opts']['branch'] = 'master'
132
+
133
+ #############################################################################
134
+ #
135
+ # Things that are best suited for individual chroot config files:
136
+ #
137
+ # MUST SET (in individual chroot cfg file):
138
+ # config_opts['root'] = 'name-of-yum-build-dir'
139
+ # config_opts['target_arch'] = 'i386'
140
+ # config_opts['yum.conf'] = ''
141
+ # config_opts['yum_common_opts'] = []
142
+ #
143
+ # CAN SET, defaults usually work ok:
144
+ # config_opts['chroot_setup_cmd'] = 'install buildsys-build'
145
+ # config_opts['log_config_file'] = 'logging.ini'
146
+ # config_opts['more_buildreqs']['srpm_name-version-release'] = 'dependencies'
147
+ # config_opts['macros']['%Add_your_macro_name_here'] = "add macro value here"
148
+ # config_opts['files']['path/name/no/leading/slash'] = "put file contents here."
149
+ # config_opts['chrootuid'] = os.getuid()
150
+ # config_opts['releasever'] = '20'
151
+
152
+ # If you change chrootgid, you must also change "mock" to the correct group
153
+ # name in this line of the mock PAM config:
154
+ # auth sufficient pam_succeed_if.so user ingroup mock use_uid quiet
155
+ # config_opts['chrootgid'] = grp.getgrnam("mock")[2]
156
+
157
+ # config_opts['useradd'] = '/usr/sbin/useradd -m -u %(uid)s -g %(gid)s -d %(home)s -n %(user)s' # Fedora/RedHat
158
+ #
159
+ # Security related
160
+ # config_opts['no_root_shells'] = False
161
+ #
162
+ # Proxy settings (https_proxy, ftp_proxy, and no_proxy can also be set)
163
+ # config_opts['http_proxy'] = 'http://localhost:3128'
164
+ #
165
+ # Extra dirs to be created when the chroot is initialized
166
+ # This is just a list of strings representing chroot paths such as:
167
+ # [ '/run/lock', ]
168
+ # config_opts['extra_chroot_dirs'] = []
@@ -0,0 +1,238 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../lib/preprocessor')
2
+ require File.expand_path(File.dirname(__FILE__) + '/../lib/build_tasks_support')
3
+
4
+ DISTROS = get_distros_option
5
+ ARCHS = get_archs_option
6
+ PASSENGER_VERSION = detect_passenger_version
7
+ NGINX_VERSION = detect_nginx_version
8
+
9
+ PASSENGER_RPM_NAME = enterprise? ? "passenger-enterprise" : "passenger"
10
+ PASSENGER_RPM_VERSION = string_option("FORCE_PASSENGER_VERSION", PASSENGER_VERSION)
11
+ PASSENGER_RPM_RELEASE = enterprise? ? 2 : 1
12
+ PASSENGER_TARBALL_NAME = enterprise? ? "passenger-enterprise-server" : "passenger"
13
+ PASSENGER_APACHE_MODULE_RPM_NAME = enterprise? ? "mod_passenger_enterprise" : "mod_passenger"
14
+ NGINX_RPM_NAME = "nginx"
15
+ NGINX_RPM_VERSION = NGINX_VERSION
16
+ NGINX_RPM_RELEASE = enterprise? ? "2.p#{PASSENGER_RPM_VERSION}" : "1.p#{PASSENGER_RPM_VERSION}"
17
+ SUPPORTED_DISTROS = {
18
+ "el6" => { :mock_chroot_name => "epel-6", :name => "Enterprise Linux 6" },
19
+ # We don't support RHEL 7 yet because EPEL 7 hasn't yet packaged rubygem-rack.
20
+ #"el7" => { :mock_chroot_name => "epel-7", :name => "Enterprise Linux 7" },
21
+ }
22
+
23
+ RPMBUILD_ROOT = ENV['RPMBUILD_ROOT'] || File.expand_path("~/rpmbuild")
24
+ RPM_SOURCES_DIR = "#{RPMBUILD_ROOT}/SOURCES"
25
+ RPM_SPECS_DIR = "#{RPMBUILD_ROOT}/SPECS"
26
+ RPM_SRPMS_DIR = "#{RPMBUILD_ROOT}/SRPMS"
27
+ MOCK_FLAGS = ""
28
+
29
+ initialize_tracking_database!
30
+ check_distros_supported!
31
+ check_archs_supported!
32
+ clean_bundler_env!
33
+ TrackingDatabase.instance # Initialize singleton.
34
+ STDOUT.sync = STDERR.sync = true
35
+ ENV['CACHING'] = 'false'
36
+
37
+
38
+ ##### Source tarballs and initialization #####
39
+
40
+ SOURCE_TASKS = ['source:passenger', 'source:nginx', 'source:packaging_additions']
41
+
42
+ register_tracking_category(:preparation, 'Preparation')
43
+
44
+ namespace :source do
45
+ register_tracking_task(:preparation, 'passenger')
46
+ desc "Create Passenger source tarball"
47
+ task :passenger do
48
+ track_task(:preparation, 'passenger') do |task|
49
+ task.sh "cd /passenger && rake package:set_official package:tarball PKG_DIR='#{RPM_SOURCES_DIR}'"
50
+ end
51
+ end
52
+
53
+ register_tracking_task(:preparation, 'nginx')
54
+ desc "Create Nginx source tarball"
55
+ task :nginx do
56
+ track_task(:preparation, 'nginx') do |task|
57
+ if File.exist?("/cache/nginx-#{NGINX_VERSION}.tar.gz")
58
+ task.sh "cp /cache/nginx-#{NGINX_VERSION}.tar.gz #{RPM_SOURCES_DIR}/"
59
+ else
60
+ task.sh "curl --fail -L -o #{RPM_SOURCES_DIR}/nginx-#{NGINX_VERSION}.tar.gz " +
61
+ "http://nginx.org/download/nginx-#{NGINX_VERSION}.tar.gz"
62
+ task.sh "cp #{RPM_SOURCES_DIR}/nginx-#{NGINX_VERSION}.tar.gz /cache/"
63
+ end
64
+ if File.exist?("/cache/nginx-#{NGINX_VERSION}.tar.gz.asc")
65
+ task.sh "cp /cache/nginx-#{NGINX_VERSION}.tar.gz.asc #{RPM_SOURCES_DIR}/"
66
+ else
67
+ task.sh "curl --fail -L -o #{RPM_SOURCES_DIR}/nginx-#{NGINX_VERSION}.tar.gz.asc " +
68
+ "http://nginx.org/download/nginx-#{NGINX_VERSION}.tar.gz.asc"
69
+ task.sh "cp #{RPM_SOURCES_DIR}/nginx-#{NGINX_VERSION}.tar.gz.asc /cache/"
70
+ end
71
+ end
72
+ end
73
+
74
+ register_tracking_task(:preparation, 'packaging_additions')
75
+ desc "Copy over various packaging sources"
76
+ task :packaging_additions do
77
+ track_task(:preparation, 'packaging_additions') do |task|
78
+ task.sh "cp -R /system/passenger_spec/* /system/nginx_spec/* #{RPM_SOURCES_DIR}/"
79
+ end
80
+ end
81
+ end
82
+
83
+
84
+ ##### Source RPMs #####
85
+
86
+ register_tracking_category(:srpm, 'Building source RPMs')
87
+
88
+ namespace :srpm do
89
+ ### Passenger ###
90
+
91
+ desc "Build Passenger SRPMs for all distributions"
92
+ task "passenger:all"
93
+
94
+ DISTROS.each do |distro_id|
95
+ distro = SUPPORTED_DISTROS[distro_id]
96
+
97
+ task "passenger:all" => "passenger:#{distro_id}"
98
+
99
+ register_tracking_task(:srpm, "passenger:#{distro_id}")
100
+ desc "Build Passenger SRPM for #{distro[:name]}"
101
+ task("passenger:#{distro_id}" => SOURCE_TASKS) do
102
+ track_task(:srpm, "passenger:#{distro_id}") do |task|
103
+ spec_target_dir = "#{RPM_SPECS_DIR}/#{distro_id}"
104
+ spec_target_file = "#{spec_target_dir}/#{PASSENGER_RPM_NAME}.spec"
105
+
106
+ task.sh "mkdir -p #{spec_target_dir}"
107
+ task.log "Preprocessing specfile"
108
+ begin
109
+ Preprocessor.new.start("/system/passenger_spec/passenger.spec.template",
110
+ spec_target_file,
111
+ :distribution => distro_id)
112
+ rescue Exception => e
113
+ task.log "Specfile preprocessing failed"
114
+ raise e
115
+ end
116
+
117
+ task.sh "rpmbuild -bs #{spec_target_file}"
118
+ ARCHS.each do |arch|
119
+ task.sh "mkdir -p /output/#{distro_id}-#{arch}"
120
+ task.sh "cp #{RPM_SRPMS_DIR}/#{passenger_srpm_name(distro_id)} /output/#{distro_id}-#{arch}/"
121
+ end
122
+ end
123
+ end
124
+ end
125
+
126
+ ### Nginx ###
127
+
128
+ desc "Build Nginx SRPMs for all distributions"
129
+ task "nginx:all"
130
+
131
+ DISTROS.each do |distro_id|
132
+ distro = SUPPORTED_DISTROS[distro_id]
133
+
134
+ task "nginx:all" => "nginx:#{distro_id}"
135
+
136
+ register_tracking_task(:srpm, "nginx:#{distro_id}")
137
+ desc "Build Nginx SRPM for #{distro[:name]}"
138
+ task("nginx:#{distro_id}" => SOURCE_TASKS) do
139
+ track_task(:srpm, "nginx:#{distro_id}") do |task|
140
+ spec_target_dir = "#{RPM_SPECS_DIR}/#{distro_id}"
141
+ spec_target_file = "#{spec_target_dir}/#{NGINX_RPM_NAME}.spec"
142
+
143
+ task.sh "mkdir -p #{spec_target_dir}"
144
+ task.log "Preprocessing specfile"
145
+ begin
146
+ Preprocessor.new.start("/system/nginx_spec/nginx.spec.template",
147
+ spec_target_file,
148
+ :distribution => distro_id)
149
+ rescue Exception => e
150
+ task.log "Specfile preprocessing failed"
151
+ raise e
152
+ end
153
+
154
+ task.sh "rpmbuild -bs #{spec_target_file}"
155
+ ARCHS.each do |arch|
156
+ task.sh "mkdir -p /output/#{distro_id}-#{arch}"
157
+ task.sh "cp #{RPM_SRPMS_DIR}/#{nginx_srpm_name(distro_id)} /output/#{distro_id}-#{arch}/"
158
+ end
159
+ end
160
+ end
161
+ end
162
+ end
163
+
164
+
165
+ ##### Binary RPMs #####
166
+
167
+ register_tracking_category(:rpm, 'Building binary RPMs')
168
+
169
+ namespace :rpm do
170
+ desc "Build RPMs for all distributions and all architectures"
171
+ task :all
172
+
173
+ ### Passenger ###
174
+
175
+ desc "Build Passenger RPMs for all distributions and all architectures"
176
+ task "passenger:all"
177
+
178
+ DISTROS.each do |distro_id|
179
+ distro = SUPPORTED_DISTROS[distro_id]
180
+
181
+ ARCHS.each do |arch|
182
+ task "all" => "^rpm:passenger:#{distro_id}:#{arch}"
183
+ task "passenger:all" => "^rpm:passenger:#{distro_id}:#{arch}"
184
+ register_tracking_task(:rpm, "passenger:#{distro_id}:#{arch}")
185
+
186
+ desc "Build Passenger RPM for #{distro[:name]}, #{arch}"
187
+ task("passenger:#{distro_id}:#{arch}" => ["srpm:passenger:#{distro_id}"]) do
188
+ track_task(:rpm, "passenger:#{distro_id}:#{arch}") do |task|
189
+ mock_chroot_name = "#{distro[:mock_chroot_name]}-#{arch}"
190
+ task.sh "/usr/bin/mock --verbose #{MOCK_FLAGS} " +
191
+ "-r #{mock_chroot_name} " +
192
+ "--resultdir '/output/#{distro_id}-#{arch}' " +
193
+ "--uniqueext passenger-#{distro_id}-#{arch} " +
194
+ "rebuild /output/#{distro_id}-#{arch}/#{passenger_srpm_name(distro_id)}"
195
+ end
196
+ end
197
+ end
198
+ end
199
+
200
+ ### Nginx ###
201
+
202
+ desc "Build Nginx RPMs for all distributions and all architectures"
203
+ task "nginx:all"
204
+
205
+ DISTROS.each do |distro_id|
206
+ distro = SUPPORTED_DISTROS[distro_id]
207
+
208
+ ARCHS.each do |arch|
209
+ task "all" => "^rpm:nginx:#{distro_id}:#{arch}"
210
+ task "nginx:all" => "^rpm:nginx:#{distro_id}:#{arch}"
211
+ register_tracking_task(:rpm, "nginx:#{distro_id}:#{arch}")
212
+
213
+ desc "Build Nginx RPM for #{distro[:name]}, #{arch}"
214
+ task("nginx:#{distro_id}:#{arch}" => ["srpm:nginx:#{distro_id}"]) do
215
+ track_task(:rpm, "nginx:#{distro_id}:#{arch}") do |task|
216
+ mock_chroot_name = "#{distro[:mock_chroot_name]}-#{arch}"
217
+ task.sh "/usr/bin/mock --verbose #{MOCK_FLAGS} " +
218
+ "-r #{mock_chroot_name} " +
219
+ "--resultdir '/output/#{distro_id}-#{arch}' " +
220
+ "--uniqueext nginx-#{distro_id}-#{arch} " +
221
+ "rebuild /output/#{distro_id}-#{arch}/#{nginx_srpm_name(distro_id)}"
222
+ end
223
+ end
224
+ end
225
+ end
226
+ end
227
+
228
+
229
+ ##### Misc #####
230
+
231
+ task :finish do
232
+ puts
233
+ puts "Finished"
234
+ MUTEX.synchronize do
235
+ TrackingDatabase.instance.set_finished!
236
+ dump_tracking_database
237
+ end
238
+ end