puppet 2.7.19 → 2.7.20.rc1

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

Potentially problematic release.


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

Files changed (324) hide show
  1. data/CONTRIBUTING.md +61 -238
  2. data/Gemfile +32 -0
  3. data/Gemfile.lock +44 -0
  4. data/LICENSE +1 -1
  5. data/README_DEVELOPER.md +300 -5
  6. data/Rakefile +41 -37
  7. data/ext/build_defaults.yaml +20 -0
  8. data/ext/debian/README.Debian +8 -0
  9. data/ext/debian/README.source +2 -0
  10. data/ext/debian/TODO.Debian +1 -0
  11. data/ext/debian/changelog.erb +1104 -0
  12. data/ext/debian/compat +1 -0
  13. data/ext/debian/control +142 -0
  14. data/ext/debian/copyright +361 -0
  15. data/ext/debian/docs +1 -0
  16. data/ext/debian/fileserver.conf +17 -0
  17. data/ext/debian/puppet-common.dirs +8 -0
  18. data/ext/debian/puppet-common.install +3 -0
  19. data/ext/debian/puppet-common.lintian-overrides +7 -0
  20. data/ext/debian/puppet-common.manpages +2 -0
  21. data/ext/debian/puppet-common.postinst +35 -0
  22. data/ext/debian/puppet-common.postrm +32 -0
  23. data/ext/debian/puppet-el.dirs +1 -0
  24. data/ext/debian/puppet-el.emacsen-install +25 -0
  25. data/ext/debian/puppet-el.emacsen-remove +11 -0
  26. data/ext/debian/puppet-el.emacsen-startup +9 -0
  27. data/ext/debian/puppet-el.install +1 -0
  28. data/ext/debian/puppet-testsuite.install +3 -0
  29. data/ext/debian/puppet-testsuite.lintian-overrides +4 -0
  30. data/ext/debian/puppet.NEWS +86 -0
  31. data/ext/debian/puppet.conf +14 -0
  32. data/ext/debian/puppet.default +7 -0
  33. data/ext/debian/puppet.dirs +1 -0
  34. data/ext/debian/puppet.init +118 -0
  35. data/ext/debian/puppet.install +4 -0
  36. data/ext/debian/puppet.lintian-overrides +3 -0
  37. data/ext/debian/puppet.logrotate +11 -0
  38. data/ext/debian/puppet.manpages +36 -0
  39. data/ext/debian/puppet.postinst +20 -0
  40. data/ext/debian/puppet.postrm +20 -0
  41. data/ext/debian/puppet.preinst +20 -0
  42. data/ext/debian/puppetmaster-common.install +5 -0
  43. data/ext/debian/puppetmaster-common.manpages +5 -0
  44. data/ext/debian/puppetmaster-common.puppetqd.default +27 -0
  45. data/ext/debian/puppetmaster-common.puppetqd.init +84 -0
  46. data/ext/debian/puppetmaster-passenger.dirs +4 -0
  47. data/ext/debian/puppetmaster-passenger.postinst +66 -0
  48. data/ext/debian/puppetmaster-passenger.postrm +33 -0
  49. data/ext/debian/puppetmaster.NEWS +13 -0
  50. data/ext/debian/puppetmaster.README.debian +16 -0
  51. data/ext/debian/puppetmaster.default +38 -0
  52. data/ext/debian/puppetmaster.dirs +1 -0
  53. data/ext/debian/puppetmaster.init +158 -0
  54. data/ext/debian/puppetmaster.install +1 -0
  55. data/ext/debian/puppetmaster.lintian-overrides +3 -0
  56. data/ext/debian/puppetmaster.manpages +1 -0
  57. data/ext/debian/puppetmaster.postinst +20 -0
  58. data/ext/debian/puppetmaster.postrm +5 -0
  59. data/ext/debian/puppetmaster.preinst +22 -0
  60. data/ext/debian/rules +127 -0
  61. data/ext/debian/source/format +1 -0
  62. data/ext/debian/source/options +1 -0
  63. data/ext/debian/vim-puppet.README.Debian +13 -0
  64. data/ext/debian/vim-puppet.dirs +3 -0
  65. data/ext/debian/vim-puppet.yaml +5 -0
  66. data/ext/debian/watch +2 -0
  67. data/ext/emacs/puppet-mode.el +1 -0
  68. data/{conf → ext}/osx/PackageInfo.plist +0 -0
  69. data/{conf → ext}/osx/createpackage.sh +0 -0
  70. data/ext/osx/file_mapping.yaml +38 -0
  71. data/ext/osx/preflight.erb +37 -0
  72. data/{tasks/rake/templates → ext/osx}/prototype.plist.erb +0 -0
  73. data/ext/packaging/README-Solaris.md +117 -0
  74. data/ext/packaging/README.md +255 -0
  75. data/ext/packaging/spec/spec_helper.rb +12 -0
  76. data/ext/packaging/spec/tasks/00_utils_spec.rb +66 -0
  77. data/ext/packaging/tasks/00_utils.rake +382 -0
  78. data/ext/packaging/tasks/10_setupvars.rake +71 -0
  79. data/ext/packaging/tasks/20_setupextravars.rake +25 -0
  80. data/ext/packaging/tasks/apple.rake +201 -0
  81. data/ext/packaging/tasks/clean.rake +5 -0
  82. data/ext/packaging/tasks/deb.rake +108 -0
  83. data/ext/packaging/tasks/doc.rake +20 -0
  84. data/ext/packaging/tasks/fetch.rake +18 -0
  85. data/ext/packaging/tasks/gem.rake +68 -0
  86. data/ext/packaging/tasks/ips.rake +80 -0
  87. data/ext/packaging/tasks/mock.rake +126 -0
  88. data/ext/packaging/tasks/pe_deb.rake +9 -0
  89. data/ext/packaging/tasks/pe_remote.rake +45 -0
  90. data/ext/packaging/tasks/pe_rpm.rake +21 -0
  91. data/ext/packaging/tasks/pe_ship.rake +30 -0
  92. data/ext/packaging/tasks/pe_sign.rake +27 -0
  93. data/ext/packaging/tasks/pe_sles.rake +96 -0
  94. data/ext/packaging/tasks/release.rake +73 -0
  95. data/ext/packaging/tasks/remote_build.rake +78 -0
  96. data/ext/packaging/tasks/rpm.rake +52 -0
  97. data/ext/packaging/tasks/ship.rake +78 -0
  98. data/ext/packaging/tasks/sign.rake +82 -0
  99. data/ext/packaging/tasks/tag.rake +8 -0
  100. data/ext/packaging/tasks/tar.rake +68 -0
  101. data/ext/packaging/tasks/template.rake +13 -0
  102. data/ext/packaging/tasks/update.rake +16 -0
  103. data/ext/packaging/tasks/version.rake +21 -0
  104. data/ext/project_data.yaml +24 -0
  105. data/{conf/redhat/puppet.spec → ext/redhat/puppet.spec.erb} +18 -10
  106. data/install.rb +8 -8
  107. data/lib/puppet.rb +2 -6
  108. data/lib/puppet/agent/locker.rb +2 -0
  109. data/lib/puppet/application.rb +1 -1
  110. data/lib/puppet/application/agent.rb +1 -1
  111. data/lib/puppet/application/apply.rb +1 -1
  112. data/lib/puppet/application/cert.rb +5 -6
  113. data/lib/puppet/application/describe.rb +1 -1
  114. data/lib/puppet/application/device.rb +1 -1
  115. data/lib/puppet/application/doc.rb +1 -1
  116. data/lib/puppet/application/filebucket.rb +1 -1
  117. data/lib/puppet/application/inspect.rb +1 -1
  118. data/lib/puppet/application/kick.rb +1 -1
  119. data/lib/puppet/application/master.rb +1 -1
  120. data/lib/puppet/application/resource.rb +1 -1
  121. data/lib/puppet/defaults.rb +21 -3
  122. data/lib/puppet/external/dot.rb +1 -1
  123. data/lib/puppet/face/help/global.erb +1 -1
  124. data/lib/puppet/face/module/install.rb +1 -1
  125. data/lib/puppet/face/module/list.rb +1 -1
  126. data/lib/puppet/face/module/uninstall.rb +1 -1
  127. data/lib/puppet/face/node/clean.rb +23 -18
  128. data/lib/puppet/face/parser.rb +11 -2
  129. data/lib/puppet/file_collection.rb +16 -27
  130. data/lib/puppet/file_collection/lookup.rb +6 -16
  131. data/lib/puppet/file_serving/base.rb +4 -4
  132. data/lib/puppet/indirector/catalog/static_compiler.rb +3 -4
  133. data/lib/puppet/indirector/certificate/disabled_ca.rb +22 -0
  134. data/lib/puppet/indirector/certificate_request/disabled_ca.rb +22 -0
  135. data/lib/puppet/indirector/certificate_revocation_list/disabled_ca.rb +22 -0
  136. data/lib/puppet/indirector/face.rb +2 -2
  137. data/lib/puppet/indirector/key/disabled_ca.rb +22 -0
  138. data/lib/puppet/indirector/node/exec.rb +13 -1
  139. data/lib/puppet/indirector/request.rb +4 -0
  140. data/lib/puppet/metatype/manager.rb +17 -10
  141. data/lib/puppet/network/authstore.rb +1 -1
  142. data/lib/puppet/network/rights.rb +1 -2
  143. data/lib/puppet/node/environment.rb +1 -0
  144. data/lib/puppet/parameter/value.rb +9 -3
  145. data/lib/puppet/parser/ast.rb +1 -4
  146. data/lib/puppet/parser/files.rb +1 -1
  147. data/lib/puppet/parser/functions.rb +68 -22
  148. data/lib/puppet/parser/functions/create_resources.rb +2 -3
  149. data/lib/puppet/parser/functions/shellquote.rb +21 -25
  150. data/lib/puppet/parser/lexer.rb +40 -6
  151. data/lib/puppet/parser/relationship.rb +3 -1
  152. data/lib/puppet/parser/resource.rb +2 -3
  153. data/lib/puppet/parser/resource/param.rb +3 -5
  154. data/lib/puppet/parser/scope.rb +7 -4
  155. data/lib/puppet/property.rb +5 -3
  156. data/lib/puppet/provider.rb +5 -5
  157. data/lib/puppet/provider/aixobject.rb +1 -1
  158. data/lib/puppet/provider/augeas/augeas.rb +1 -1
  159. data/lib/puppet/provider/exec/windows.rb +1 -1
  160. data/lib/puppet/provider/file/windows.rb +10 -29
  161. data/lib/puppet/provider/group/groupadd.rb +2 -3
  162. data/lib/puppet/provider/group/ldap.rb +1 -1
  163. data/lib/puppet/provider/group/windows_adsi.rb +1 -1
  164. data/lib/puppet/provider/ldap.rb +5 -1
  165. data/lib/puppet/provider/nameservice.rb +3 -3
  166. data/lib/puppet/provider/nameservice/directoryservice.rb +2 -2
  167. data/lib/puppet/provider/package/gem.rb +6 -2
  168. data/lib/puppet/provider/package/portage.rb +4 -2
  169. data/lib/puppet/provider/parsedfile.rb +1 -1
  170. data/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +2 -2
  171. data/lib/puppet/provider/service/base.rb +2 -41
  172. data/lib/puppet/provider/service/daemontools.rb +1 -1
  173. data/lib/puppet/provider/service/launchd.rb +1 -1
  174. data/lib/puppet/provider/service/redhat.rb +6 -5
  175. data/lib/puppet/provider/service/runit.rb +1 -1
  176. data/lib/puppet/provider/service/service.rb +43 -0
  177. data/lib/puppet/provider/service/windows.rb +1 -8
  178. data/lib/puppet/provider/user/user_role_add.rb +2 -1
  179. data/lib/puppet/provider/user/useradd.rb +8 -3
  180. data/lib/puppet/provider/user/windows_adsi.rb +12 -1
  181. data/lib/puppet/provider/zone/solaris.rb +1 -1
  182. data/lib/puppet/rails/inventory_node.rb +26 -13
  183. data/lib/puppet/reports.rb +1 -1
  184. data/lib/puppet/resource.rb +20 -5
  185. data/lib/puppet/resource/status.rb +1 -1
  186. data/lib/puppet/ssl/certificate_authority.rb +2 -0
  187. data/lib/puppet/ssl/host.rb +31 -6
  188. data/lib/puppet/test/test_helper.rb +3 -1
  189. data/lib/puppet/transaction/event.rb +1 -1
  190. data/lib/puppet/transaction/report.rb +2 -2
  191. data/lib/puppet/type.rb +30 -25
  192. data/lib/puppet/type/augeas.rb +1 -1
  193. data/lib/puppet/type/cron.rb +2 -2
  194. data/lib/puppet/type/exec.rb +6 -6
  195. data/lib/puppet/type/file.rb +5 -15
  196. data/lib/puppet/type/file/content.rb +1 -1
  197. data/lib/puppet/type/file/ensure.rb +1 -1
  198. data/lib/puppet/type/file/mode.rb +1 -1
  199. data/lib/puppet/type/file/selcontext.rb +6 -2
  200. data/lib/puppet/type/file/source.rb +1 -1
  201. data/lib/puppet/type/mount.rb +1 -1
  202. data/lib/puppet/type/package.rb +1 -1
  203. data/lib/puppet/type/schedule.rb +1 -1
  204. data/lib/puppet/type/scheduled_task.rb +1 -1
  205. data/lib/puppet/type/tidy.rb +1 -1
  206. data/lib/puppet/type/whit.rb +16 -9
  207. data/lib/puppet/util.rb +27 -11
  208. data/lib/puppet/util/adsi.rb +25 -23
  209. data/lib/puppet/util/autoload.rb +1 -1
  210. data/lib/puppet/util/classgen.rb +1 -1
  211. data/lib/puppet/util/feature.rb +3 -1
  212. data/lib/puppet/util/fileparsing.rb +9 -9
  213. data/lib/puppet/util/filetype.rb +55 -40
  214. data/lib/puppet/util/instance_loader.rb +5 -5
  215. data/lib/puppet/util/instrumentation.rb +3 -5
  216. data/lib/puppet/util/log_paths.rb +1 -3
  217. data/lib/puppet/util/monkey_patches.rb +34 -8
  218. data/lib/puppet/util/platform.rb +7 -0
  219. data/lib/puppet/util/posix.rb +3 -3
  220. data/lib/puppet/util/provider_features.rb +2 -3
  221. data/lib/puppet/util/rdoc.rb +4 -3
  222. data/lib/puppet/util/reference.rb +1 -1
  223. data/lib/puppet/util/selinux.rb +31 -36
  224. data/lib/puppet/util/tagging.rb +28 -6
  225. data/lib/puppet/util/windows.rb +1 -0
  226. data/lib/puppet/util/windows/error.rb +1 -1
  227. data/lib/puppet/util/windows/process.rb +3 -3
  228. data/lib/puppet/util/windows/security.rb +9 -46
  229. data/lib/puppet/util/windows/sid.rb +96 -0
  230. data/lib/puppet/util/windows/user.rb +65 -2
  231. data/lib/puppet/util/zaml.rb +109 -59
  232. data/lib/puppet/version.rb +18 -0
  233. data/spec/fixtures/unit/util/filetype/aixtab_output +44 -0
  234. data/spec/fixtures/unit/util/filetype/suntab_output +9 -0
  235. data/spec/integration/defaults_spec.rb +26 -7
  236. data/spec/integration/parser/functions_spec.rb +0 -4
  237. data/spec/integration/util/file_locking_spec.rb +1 -1
  238. data/spec/integration/util/windows/security_spec.rb +3 -23
  239. data/spec/lib/puppet_spec/files.rb +3 -3
  240. data/spec/shared_contexts/platform.rb +8 -0
  241. data/spec/spec_helper.rb +6 -1
  242. data/spec/unit/application/queue_spec.rb +2 -1
  243. data/spec/unit/configurer_spec.rb +1 -1
  244. data/spec/unit/face/{instrumentation_data.rb → instrumentation_data_spec.rb} +0 -0
  245. data/spec/unit/face/{instrumentation_listener.rb → instrumentation_listener_spec.rb} +0 -0
  246. data/spec/unit/face/{instrumentation_probe.rb → instrumentation_probe_spec.rb} +0 -0
  247. data/spec/unit/indirector/catalog/static_compiler_spec.rb +194 -0
  248. data/spec/unit/indirector/certificate/disabled_ca_spec.rb +33 -0
  249. data/spec/unit/indirector/certificate_request/disabled_ca_spec.rb +33 -0
  250. data/spec/unit/indirector/certificate_revocation_list/disabled_ca_spec.rb +33 -0
  251. data/spec/unit/indirector/key/disabled_ca_spec.rb +33 -0
  252. data/spec/unit/indirector/request_spec.rb +22 -0
  253. data/spec/unit/network/http/webrick_spec.rb +0 -7
  254. data/spec/unit/node/environment_spec.rb +8 -8
  255. data/spec/unit/parser/ast_spec.rb +0 -5
  256. data/spec/unit/parser/collector_spec.rb +1 -0
  257. data/spec/unit/parser/files_spec.rb +2 -2
  258. data/spec/unit/parser/functions/create_resources_spec.rb +3 -4
  259. data/spec/unit/parser/functions/require_spec.rb +0 -6
  260. data/spec/unit/parser/functions/shellquote_spec.rb +0 -5
  261. data/spec/unit/parser/functions/template_spec.rb +6 -1
  262. data/spec/unit/parser/functions_spec.rb +73 -23
  263. data/spec/unit/parser/lexer_spec.rb +133 -8
  264. data/spec/unit/parser/relationship_spec.rb +24 -0
  265. data/spec/unit/parser/resource_spec.rb +0 -4
  266. data/spec/unit/parser/scope_spec.rb +2 -2
  267. data/spec/unit/property_spec.rb +21 -1
  268. data/spec/unit/provider/exec/posix_spec.rb +7 -6
  269. data/spec/unit/provider/file/windows_spec.rb +29 -29
  270. data/spec/unit/provider/group/groupadd_spec.rb +36 -30
  271. data/spec/unit/provider/group/windows_adsi_spec.rb +2 -2
  272. data/spec/unit/provider/package/gem_spec.rb +12 -0
  273. data/spec/unit/provider/scheduled_task/win32_taskscheduler_spec.rb +14 -11
  274. data/spec/unit/provider/service/redhat_spec.rb +11 -1
  275. data/spec/unit/provider/service/windows_spec.rb +19 -0
  276. data/spec/unit/provider/user/ldap_spec.rb +22 -8
  277. data/spec/unit/provider/user/user_role_add_spec.rb +12 -0
  278. data/spec/unit/provider/user/useradd_spec.rb +146 -118
  279. data/spec/unit/provider/user/windows_adsi_spec.rb +24 -2
  280. data/spec/unit/puppet_spec.rb +10 -0
  281. data/spec/unit/resource/status_spec.rb +1 -1
  282. data/spec/unit/resource_spec.rb +73 -0
  283. data/spec/unit/ssl/certificate_authority_spec.rb +25 -1
  284. data/spec/unit/ssl/host_spec.rb +73 -27
  285. data/spec/unit/ssl/key_spec.rb +0 -4
  286. data/spec/unit/transaction/event_spec.rb +1 -1
  287. data/spec/unit/type/exec_spec.rb +1 -1
  288. data/spec/unit/type/file/content_spec.rb +6 -4
  289. data/spec/unit/type/file/{ctime.rb → ctime_spec.rb} +0 -0
  290. data/spec/unit/type/file/{mtime.rb → mtime_spec.rb} +0 -0
  291. data/spec/unit/type/file/{type.rb → type_spec.rb} +0 -0
  292. data/spec/unit/type/file_spec.rb +2 -12
  293. data/spec/unit/type/host_spec.rb +14 -5
  294. data/spec/unit/type/mount_spec.rb +8 -0
  295. data/spec/unit/type/scheduled_task_spec.rb +2 -2
  296. data/spec/unit/util/adsi_spec.rb +23 -8
  297. data/spec/unit/util/command_line_spec.rb +11 -2
  298. data/spec/unit/util/feature_spec.rb +12 -1
  299. data/spec/unit/util/filetype_spec.rb +161 -55
  300. data/spec/unit/util/log_spec.rb +1 -1
  301. data/spec/unit/util/monkey_patches_spec.rb +7 -0
  302. data/spec/unit/util/rdoc_spec.rb +8 -2
  303. data/spec/unit/util/selinux_spec.rb +24 -32
  304. data/spec/unit/util/windows/sid_spec.rb +100 -0
  305. data/spec/unit/util/zaml_spec.rb +165 -25
  306. data/spec/unit/util_spec.rb +3 -9
  307. data/spec/watchr.rb +2 -6
  308. data/tasks/rake/gem.rake +4 -2
  309. data/tasks/rake/sign.rake +1 -1
  310. data/test/language/parser.rb +1 -0
  311. data/test/language/scope.rb +0 -5
  312. data/test/language/snippets.rb +1 -2
  313. data/test/lib/puppettest.rb +16 -27
  314. data/test/lib/puppettest/parsertesting.rb +0 -1
  315. data/test/network/authstore.rb +2 -4
  316. data/test/puppet/defaults.rb +0 -4
  317. data/test/util/fileparsing.rb +2 -6
  318. metadata +1706 -1617
  319. data/conf/osx/preflight +0 -24
  320. data/spec/spec.opts +0 -4
  321. data/spec/unit/file_collection/lookup_spec.rb +0 -45
  322. data/spec/unit/file_collection_spec.rb +0 -52
  323. data/tasks/rake/apple.rake +0 -176
  324. data/test/puppet/errortest.rb +0 -19
@@ -0,0 +1,73 @@
1
+ # These tasks are "release" chains that couple as much of the release process for a package as possible
2
+
3
+ namespace :pl do
4
+ desc "Release gem, e.g. package:gem, pl:ship_gem"
5
+ task :release_gem do
6
+ invoke_task("package:gem")
7
+ if confirm_ship(FileList["pkg/*.gem"])
8
+ invoke_task("pl:ship_gem")
9
+ end
10
+ end if @build_gem
11
+
12
+ desc "Release deb RCs, e.g. package:tar, pl:{deb_all_rc, sign_deb_changes, ship_debs}"
13
+ task :release_deb_rc do
14
+ load_keychain if has_tool('keychain')
15
+ invoke_task("pl:deb_all_rc")
16
+ invoke_task("pl:sign_deb_changes")
17
+ if confirm_ship(FileList["pkg/deb/**/*"])
18
+ invoke_task("pl:ship_debs")
19
+ end
20
+ end
21
+
22
+ desc "Release deb FINALs, e.g. package:tar, pl:{deb_all, sign_deb_changes, ship_debs}"
23
+ task :release_deb_final do
24
+ load_keychain if has_tool('keychain')
25
+ invoke_task("pl:deb_all")
26
+ invoke_task("pl:sign_deb_changes")
27
+ if confirm_ship(FileList["pkg/deb/**/*"])
28
+ invoke_task("pl:ship_debs")
29
+ end
30
+ end
31
+
32
+ desc "Release rpm RCs, e.g. package:tar, pl:{mock_rc, sign_rpms, ship_rpms, update_yum_repo}"
33
+ task :release_rpm_rc do
34
+ invoke_task("pl:mock_rc")
35
+ invoke_task("pl:sign_rpms")
36
+ if confirm_ship(FileList["pkg/el/**/*", "pkg/fedora/**/*"])
37
+ invoke_task("pl:ship_rpms")
38
+ invoke_task("pl:remote_update_yum_repo")
39
+ end
40
+ end
41
+
42
+ desc "Release rpm FINALs, e.g. package:tar, pl:{mock_final, sign_rpms, ship_rpms, update_yum_repo}"
43
+ task :release_rpm_final do
44
+ invoke_task("pl:mock_final")
45
+ invoke_task("pl:sign_rpms")
46
+ if confirm_ship(FileList["pkg/el/**/*", "pkg/fedora/**/*"])
47
+ invoke_task("pl:ship_rpms")
48
+ invoke_task("pl:remote_update_yum_repo")
49
+ end
50
+ end
51
+
52
+ if File.exist?("#{ENV['HOME']}/.packaging/#{@builder_data_file}")
53
+ desc "Release tarball, e.g. package:tar, pl:{sign_tar, ship_tar}"
54
+ task :release_tar => ['pl:fetch', 'pl:load_extras'] do
55
+ invoke_task("package:tar")
56
+ invoke_task("pl:sign_tar")
57
+ if confirm_ship(FileList["pkg/*tar.gz*"])
58
+ Rake::Task["pl:ship_tar"].execute
59
+ end
60
+ end
61
+
62
+ desc "Release dmg, e.g. package:apple, pl:ship_dmg"
63
+ task :release_dmg => ['pl:fetch', 'pl:load_extras'] do
64
+ sh "rvmsudo rake package:apple"
65
+ if confirm_ship(FileList["pkg/apple/*.dmg"])
66
+ Rake::Task["pl:ship_dmg"].execute
67
+ end
68
+ end if @build_dmg
69
+ end
70
+ end
71
+
72
+
73
+
@@ -0,0 +1,78 @@
1
+ # Tasks for remote building on builder hosts
2
+ if File.exist?("#{ENV['HOME']}/.packaging/#{@builder_data_file}")
3
+ namespace 'pl' do
4
+ task :remote_build, :host, :treeish, :task do |t, args|
5
+ host = args.host
6
+ treeish = args.treeish
7
+ task = args.task
8
+ remote_repo = remote_bootstrap(host, treeish)
9
+ STDOUT.puts "Beginning package build on #{host}"
10
+ remote_ssh_cmd(host, "cd #{remote_repo} ; rake #{task} ANSWER_OVERRIDE=no")
11
+ rsync_from("#{remote_repo}/pkg/", host, 'pkg/')
12
+ remote_ssh_cmd(host, "rm -rf #{remote_repo}")
13
+ STDOUT.puts "packages from #{host} staged in pkg/ directory"
14
+ end
15
+
16
+ desc "Execute release_deb_rc full build set on remote debian build host"
17
+ task :remote_deb_rc => ['pl:fetch', 'pl:load_extras'] do
18
+ Rake::Task["pl:remote_build"].reenable
19
+ Rake::Task["pl:remote_build"].invoke(@deb_build_host, 'HEAD', "pl:release_deb_rc")
20
+ end
21
+
22
+ desc "Execute release_deb_final full build set on remote debian build host"
23
+ task :remote_deb_final => ['pl:fetch', 'pl:load_extras'] do
24
+ Rake::Task["pl:remote_build"].reenable
25
+ Rake::Task["pl:remote_build"].invoke(@deb_build_host, 'HEAD', "pl:release_deb_final")
26
+ end
27
+
28
+ desc "Execute release_rpm_rc full build set on remote rpm build host"
29
+ task :remote_rpm_rc => ['pl:fetch', 'pl:load_extras'] do
30
+ Rake::Task["pl:remote_build"].reenable
31
+ Rake::Task["pl:remote_build"].invoke(@rpm_build_host, 'HEAD', "pl:release_rpm_rc")
32
+ end
33
+
34
+ desc "Execute release_deb_final full build set on remote rpm build host"
35
+ task :remote_rpm_final => ['pl:fetch', 'pl:load_extras'] do
36
+ Rake::Task["pl:remote_build"].reenable
37
+ Rake::Task["pl:remote_build"].invoke(@rpm_build_host, 'HEAD', "pl:release_rpm_final")
38
+ end
39
+
40
+ desc "Execute package:apple on remote apple build host"
41
+ task :remote_dmg => ['pl:fetch', 'pl:load_extras'] do
42
+ # Because we use rvmsudo for apple, we end up replicating the :remote_build task
43
+ host = @osx_build_host
44
+ treeish = 'HEAD'
45
+ task = "package:apple"
46
+ remote_repo = remote_bootstrap(host, treeish)
47
+ puts "Beginning package build on #{host}"
48
+ remote_ssh_cmd(host, "cd #{remote_repo} ; rvmsudo rake #{task}")
49
+ rsync_from("#{remote_repo}/pkg/apple", host, 'pkg/')
50
+ remote_ssh_cmd(host, "sudo rm -rf #{remote_repo}")
51
+ STDOUT.puts "packages from #{host} staged in pkg/ directory"
52
+ end if @build_dmg
53
+
54
+ desc "UBER RC build: build and ship RC tar, gem (as applicable), remote dmg, remote deb, remote rpm"
55
+ task :uber_rc do
56
+ Rake::Task["package:gem"].invoke if @build_gem
57
+ Rake::Task["pl:remote_deb_rc"].invoke
58
+ Rake::Task["pl:remote_rpm_rc"].execute
59
+ Rake::Task["pl:remote_dmg"].execute if @build_dmg
60
+ Rake::Task["package:tar"].execute
61
+ Rake::Task["pl:sign_tar"].invoke
62
+ Rake::Task["pl:uber_ship"].execute
63
+ Rake::Task["pl:remote_freight_devel"].invoke
64
+ end
65
+
66
+ desc "UBER FINAL build: build and ship FINAL tar, gem (as applicable), remote dmg, remote deb, remote rpm"
67
+ task :uber_final do
68
+ Rake::Task["package:gem"].invoke if @build_gem
69
+ Rake::Task["pl:remote_deb_final"].invoke
70
+ Rake::Task["pl:remote_rpm_final"].execute
71
+ Rake::Task["pl:remote_dmg"].execute if @build_dmg
72
+ Rake::Task["package:tar"].execute
73
+ Rake::Task["pl:sign_tar"].invoke
74
+ Rake::Task["pl:uber_ship"].execute
75
+ Rake::Task["pl:remote_freight_final"].invoke
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,52 @@
1
+ def build_rpm(buildarg = "-bs")
2
+ check_tool('rpmbuild')
3
+ temp = get_temp
4
+ dist = find_dist_version
5
+ rpm_define = "#{dist} --define \"%_topdir #{temp}\" "
6
+ rpm_old_version = '--define "_source_filedigest_algorithm 1" --define "_binary_filedigest_algorithm 1" \
7
+ --define "_binary_payload w9.gzdio" --define "_source_payload w9.gzdio" \
8
+ --define "_default_patch_fuzz 2"'
9
+ args = rpm_define + ' ' + rpm_old_version
10
+ mkdir_pr temp, 'pkg/rpm', 'pkg/srpm', "#{temp}/SOURCES", "#{temp}/SPECS"
11
+ if @sign_tar
12
+ Rake::Task["pl:sign_tar"].invoke
13
+ cp_p "pkg/#{@name}-#{@version}.tar.gz.asc", "#{temp}/SOURCES"
14
+ end
15
+ cp_p "pkg/#{@name}-#{@version}.tar.gz", "#{temp}/SOURCES"
16
+ erb "ext/redhat/#{@name}.spec.erb", "#{temp}/SPECS/#{@name}.spec"
17
+ sh "rpmbuild #{args} #{buildarg} --nodeps #{temp}/SPECS/#{@name}.spec"
18
+ mv FileList["#{temp}/SRPMS/*.rpm"], "pkg/srpm"
19
+ mv FileList["#{temp}/RPMS/*/*.rpm"], "pkg/rpm"
20
+ rm_rf temp
21
+ puts
22
+ output = FileList['pkg/*/*.rpm']
23
+ puts "Wrote:"
24
+ output.each do | line |
25
+ puts line
26
+ end
27
+ end
28
+
29
+ def find_dist_version()
30
+ if File.exists?('/etc/fedora-release')
31
+ nil
32
+ elsif File.exists?('/etc/redhat-release')
33
+ dist = %x{rpm -q --qf \"%{VERSION}\" $(rpm -q --whatprovides /etc/redhat-release )}
34
+ unless dist.to_i > 5
35
+ return "--define \"%dist .el#{dist}\""
36
+ end
37
+ nil
38
+ end
39
+ end
40
+
41
+ namespace :package do
42
+ desc "Create srpm from this git repository (unsigned)"
43
+ task :srpm => :tar do
44
+ build_rpm("-bs")
45
+ end
46
+
47
+ desc "Create .rpm from this git repository (unsigned)"
48
+ task :rpm => :tar do
49
+ build_rpm("-ba")
50
+ end
51
+ end
52
+
@@ -0,0 +1,78 @@
1
+ namespace :pl do
2
+ desc "Ship mocked rpms to #{@yum_host}"
3
+ task :ship_rpms do
4
+ rsync_to('pkg/el', @yum_host, @yum_repo_path)
5
+ rsync_to('pkg/fedora', @yum_host, @yum_repo_path)
6
+ end
7
+
8
+ desc "Update remote rpm repodata on #{@yum_host}"
9
+ task :remote_update_yum_repo do
10
+ STDOUT.puts "Really run remote repo update on #{@yum_host}? [y,n]"
11
+ if ask_yes_or_no
12
+ remote_ssh_cmd(@yum_host, '/var/lib/gems/1.8/gems/rake-0.9.2.2/bin/rake -f /opt/repository/Rakefile mk_repo')
13
+ end
14
+ end
15
+
16
+ desc "Ship cow-built debs to #{@apt_host}"
17
+ task :ship_debs do
18
+ rsync_to('pkg/deb/', @apt_host, @apt_repo_path)
19
+ end
20
+
21
+ desc "freight RCs to devel repos on #{@apt_host}"
22
+ task :remote_freight_devel do
23
+ STDOUT.puts "Really run remote freight RC command on #{@apt_host}? [y,n]"
24
+ if ask_yes_or_no
25
+ override = "OVERRIDE=1" if ENV['OVERRIDE']
26
+ # assume we're building in cows when we ship, since that's what the repo supports
27
+ # allow OVERRIDE as well for cases where we intend to ship final-style versions to devel repos and vice versa
28
+ remote_ssh_cmd(@apt_host, "/var/lib/gems/1.8/gems/rake-0.9.2.2/bin/rake -f /opt/repository/Rakefile devel COW=1 #{override}")
29
+ end
30
+ end
31
+
32
+ desc "remote freight final packages to PRODUCTION repos on #{@apt_host}"
33
+ task :remote_freight_final do
34
+ STDOUT.puts "Really run remote freight final command on #{@apt_host}? [y,n]"
35
+ if ask_yes_or_no
36
+ override = "OVERRIDE=1" if ENV['OVERRIDE']
37
+ remote_ssh_cmd(@apt_host, "/var/lib/gems/1.8/gems/rake-0.9.2.2/bin/rake -f /opt/repository/Rakefile community COW=1 #{override}")
38
+ end
39
+ end
40
+
41
+ desc "Update remote ips repository on #{@ips_host}"
42
+ task :update_ips_repo do
43
+ rsync_to('pkg/ips/pkgs', @ips_host, @ips_store)
44
+ remote_ssh_cmd(@ips_host, "pkgrecv -s #{@ips_store}/pkgs/#{@name}@#{@ipsversion}.p5p -d #{@ips_repo} \\*")
45
+ remote_ssh_cmd(@ips_host, "pkgrepo refresh -s #{@ips_repo}")
46
+ remote_ssh_cmd(@ips_host, "/usr/sbin/svcadm restart svc:/application/pkg/server")
47
+ end if @build_ips
48
+
49
+ desc "Ship built gem to rubygems"
50
+ task :ship_gem do
51
+ ship_gem("pkg/#{@name}-#{@gemversion}.gem")
52
+ end if @build_gem
53
+
54
+ if File.exist?("#{ENV['HOME']}/.packaging/#{@builder_data_file}")
55
+ desc "ship apple dmg to #{@yum_host}"
56
+ task :ship_dmg => ['pl:fetch', 'pl:load_extras'] do
57
+ rsync_to('pkg/apple/*.dmg', @yum_host, @dmg_path)
58
+ end if @build_dmg
59
+
60
+ desc "ship tarball and signature to #{@yum_host}"
61
+ task :ship_tar => ['pl:fetch', 'pl:load_extras'] do
62
+ rsync_to("pkg/#{@name}-#{@version}.tar.gz*", @yum_host, @tarball_path)
63
+ end
64
+
65
+ desc "UBER ship: ship all the things in pkg"
66
+ task :uber_ship => ['pl:fetch', 'pl:load_extras'] do
67
+ if confirm_ship(FileList["pkg/**/*"])
68
+ ENV['ANSWER_OVERRIDE'] = 'yes'
69
+ Rake::Task["pl:ship_gem"].invoke if @build_gem
70
+ Rake::Task["pl:ship_rpms"].invoke
71
+ Rake::Task["pl:ship_debs"].invoke
72
+ Rake::Task["pl:ship_dmg"].execute if @build_dmg
73
+ Rake::Task["pl:ship_tar"].execute
74
+ end
75
+ end
76
+ end
77
+ end
78
+
@@ -0,0 +1,82 @@
1
+ def sign_el5(rpm)
2
+ %x{rpm --define '%_gpg_name #{@gpg_name}' --define '%__gpg_sign_cmd %{__gpg} gpg --force-v3-sigs --digest-algo=sha1 --batch --no-verbose --no-armor --passphrase-fd 3 --no-secmem-warning -u %{_gpg_name} -sbo %{__signature_filename} %{__plaintext_filename}' --addsign #{rpm} > /dev/null}
3
+ end
4
+
5
+ def sign_modern(rpm)
6
+ %x{rpm --define '%_gpg_name #{@gpg_name}' --addsign #{rpm} > /dev/null}
7
+ end
8
+
9
+ def rpm_has_sig(rpm)
10
+ %x{rpm -Kv #{rpm} | grep "#{@gpg_key.downcase}" &> /dev/null}
11
+ $?.success?
12
+ end
13
+
14
+ def sign_deb_changes(file)
15
+ %x{debsign --re-sign -k#{@gpg_key} #{file}}
16
+ end
17
+
18
+ # requires atleast a self signed prvate key and certificate pair
19
+ def sign_ips(pkg)
20
+ %x{pkgsign -s pkg/ips/repo/ -k #{@privatekey_pem} -c #{@certificate_pem} #{@name}@#{@ipsversion}}
21
+ %x{rm -f #{pkg}}
22
+ %x{pkgrecv -s pkg/ips/repo -a -d #{pkg} #{@name}@#{@ipsversion}}
23
+ end
24
+
25
+ namespace :pl do
26
+ desc "Sign the tarball, defaults to PL key, pass GPG_KEY to override or edit build_defaults"
27
+ task :sign_tar do
28
+ unless File.exist? "pkg/#{@name}-#{@version}.tar.gz"
29
+ STDERR.puts "No tarball exists. Try rake package:tar?"
30
+ exit 1
31
+ end
32
+ load_keychain if has_tool('keychain')
33
+ gpg_sign_file "pkg/#{@name}-#{@version}.tar.gz"
34
+ end
35
+
36
+ desc "Sign mocked rpms, Defaults to PL Key, pass KEY to override"
37
+ task :sign_rpms do
38
+ el5_rpms = Dir["pkg/el/5/**/*.rpm"].join(' ')
39
+ modern_rpms = (Dir["pkg/el/6/**/*.rpm"] + Dir["pkg/fedora/**/*.rpm"]).join(' ')
40
+ unless el5_rpms.empty?
41
+ puts "Signing el5 rpms..."
42
+ sign_el5(el5_rpms)
43
+ end
44
+
45
+ unless modern_rpms.empty?
46
+ puts "Signing el6 and fedora rpms..."
47
+ sign_modern(modern_rpms)
48
+ end
49
+ end
50
+
51
+ desc "Sign ips package, Defaults to PL Key, pass KEY to override"
52
+ task :sign_ips do
53
+ ips_pkgs = Dir["pkg/ips/pkgs/*.p5p"].join(' ')
54
+ puts "Signing ips packages..."
55
+ sign_ips ips_pkgs
56
+ end if @build_ips
57
+
58
+ desc "Check if all rpms are signed"
59
+ task :check_rpm_sigs do
60
+ signed = TRUE
61
+ rpms = Dir["pkg/el/5/**/*.rpm"] + Dir["pkg/el/6/**/*.rpm"] + Dir["pkg/fedora/**/*.rpm"]
62
+ print 'Checking rpm signatures'
63
+ rpms.each do |rpm|
64
+ if rpm_has_sig rpm
65
+ print '.'
66
+ else
67
+ puts "#{rpm} is unsigned."
68
+ signed = FALSE
69
+ end
70
+ end
71
+ exit 1 unless signed
72
+ puts "All rpms signed"
73
+ end
74
+
75
+ desc "Sign generated debian changes files. Defaults to PL Key, pass KEY to override"
76
+ task :sign_deb_changes do
77
+ load_keychain if has_tool('keychain')
78
+ sign_deb_changes("pkg/deb/*/*.changes") unless Dir["pkg/deb/*/*.changes"].empty?
79
+ sign_deb_changes("pkg/deb/*.changes") unless Dir["pkg/deb/*.changes"].empty?
80
+ end
81
+ end
82
+
@@ -0,0 +1,8 @@
1
+ namespace 'pl' do
2
+ desc "Tag this repository, requires a TAG, e.g. TAG=1.1.1"
3
+ task "tag" do
4
+ check_var('TAG', ENV['TAG'])
5
+ git_tag(ENV['TAG'])
6
+ end
7
+ end
8
+
@@ -0,0 +1,68 @@
1
+ namespace :package do
2
+ desc "Create a source tar archive"
3
+ task :tar => [ :clean ] do
4
+ Rake::Task["package:doc"].invoke if @build_doc
5
+ tar = ENV['TAR'] || 'tar'
6
+ workdir = "pkg/#{@name}-#{@version}"
7
+ mkdir_p(workdir)
8
+
9
+ # The list of files to install in the tarball
10
+ install = FileList.new
11
+
12
+ # It is nice to use arrays in YAML to represent array content, but we used
13
+ # to support a mode where a space-separated string was used. Support both
14
+ # to allow a gentle migration to a modern style...
15
+ patterns =
16
+ case @files
17
+ when String
18
+ STDERR.puts "warning: `files` should be an array, not a string"
19
+ @files.split(' ')
20
+
21
+ when Array
22
+ @files
23
+
24
+ else
25
+ raise "`files` must be a string or an array!"
26
+ end
27
+
28
+ # We need to add our list of file patterns from the configuration; this
29
+ # used to be a list of "things to copy recursively", which would install
30
+ # editor backup files and other nasty things.
31
+ #
32
+ # This handles that case correctly, with a deprecation warning, to augment
33
+ # our FileList with the right things to put in place.
34
+ #
35
+ # Eventually, when all our projects are migrated to the new standard, we
36
+ # can drop this in favour of just pushing the patterns directly into the
37
+ # FileList and eliminate many lines of code and comment.
38
+ patterns.each do |pattern|
39
+ if File.directory?(pattern) and not Dir[pattern + "/**/*"].empty?
40
+ install.add(pattern + "/**/*")
41
+ else
42
+ install.add(pattern)
43
+ end
44
+ end
45
+
46
+ # Transfer all the files and symlinks into the working directory...
47
+ install = install.select { |x| File.file?(x) or File.symlink?(x) or empty_dir?(x) }
48
+
49
+ install.each do |file|
50
+ if empty_dir?(file)
51
+ mkpath(File.join(workdir,file), :verbose => false)
52
+ else
53
+ mkpath(File.dirname( File.join(workdir, file) ), :verbose => false)
54
+ cp_p(file, File.join(workdir, file), :verbose => false)
55
+ end
56
+ end
57
+
58
+ tar_excludes = @tar_excludes.nil? ? [] : @tar_excludes.split(' ')
59
+ tar_excludes << "ext/#{@packaging_repo}"
60
+ Rake::Task["package:template"].invoke(workdir)
61
+ cd "pkg" do
62
+ sh "#{tar} --exclude #{tar_excludes.join(" --exclude ")} -zcf #{@name}-#{@version}.tar.gz #{@name}-#{@version}"
63
+ end
64
+ rm_rf(workdir)
65
+ puts
66
+ puts "Wrote #{`pwd`.strip}/pkg/#{@name}-#{@version}.tar.gz"
67
+ end
68
+ end
@@ -0,0 +1,13 @@
1
+ # utility task to lay down packaging artifact files from erb templates
2
+ namespace :package do
3
+ task :template, :workdir do |t, args|
4
+ workdir = args.workdir
5
+
6
+ FileList["#{workdir}/ext/**/*.erb"].each do |template|
7
+ # process the template, stripping off the ERB extension
8
+ erb(template, template[0..-5])
9
+ rm_f(template)
10
+ end
11
+ end
12
+ end
13
+