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.
- data/CONTRIBUTING.md +61 -238
- data/Gemfile +32 -0
- data/Gemfile.lock +44 -0
- data/LICENSE +1 -1
- data/README_DEVELOPER.md +300 -5
- data/Rakefile +41 -37
- data/ext/build_defaults.yaml +20 -0
- data/ext/debian/README.Debian +8 -0
- data/ext/debian/README.source +2 -0
- data/ext/debian/TODO.Debian +1 -0
- data/ext/debian/changelog.erb +1104 -0
- data/ext/debian/compat +1 -0
- data/ext/debian/control +142 -0
- data/ext/debian/copyright +361 -0
- data/ext/debian/docs +1 -0
- data/ext/debian/fileserver.conf +17 -0
- data/ext/debian/puppet-common.dirs +8 -0
- data/ext/debian/puppet-common.install +3 -0
- data/ext/debian/puppet-common.lintian-overrides +7 -0
- data/ext/debian/puppet-common.manpages +2 -0
- data/ext/debian/puppet-common.postinst +35 -0
- data/ext/debian/puppet-common.postrm +32 -0
- data/ext/debian/puppet-el.dirs +1 -0
- data/ext/debian/puppet-el.emacsen-install +25 -0
- data/ext/debian/puppet-el.emacsen-remove +11 -0
- data/ext/debian/puppet-el.emacsen-startup +9 -0
- data/ext/debian/puppet-el.install +1 -0
- data/ext/debian/puppet-testsuite.install +3 -0
- data/ext/debian/puppet-testsuite.lintian-overrides +4 -0
- data/ext/debian/puppet.NEWS +86 -0
- data/ext/debian/puppet.conf +14 -0
- data/ext/debian/puppet.default +7 -0
- data/ext/debian/puppet.dirs +1 -0
- data/ext/debian/puppet.init +118 -0
- data/ext/debian/puppet.install +4 -0
- data/ext/debian/puppet.lintian-overrides +3 -0
- data/ext/debian/puppet.logrotate +11 -0
- data/ext/debian/puppet.manpages +36 -0
- data/ext/debian/puppet.postinst +20 -0
- data/ext/debian/puppet.postrm +20 -0
- data/ext/debian/puppet.preinst +20 -0
- data/ext/debian/puppetmaster-common.install +5 -0
- data/ext/debian/puppetmaster-common.manpages +5 -0
- data/ext/debian/puppetmaster-common.puppetqd.default +27 -0
- data/ext/debian/puppetmaster-common.puppetqd.init +84 -0
- data/ext/debian/puppetmaster-passenger.dirs +4 -0
- data/ext/debian/puppetmaster-passenger.postinst +66 -0
- data/ext/debian/puppetmaster-passenger.postrm +33 -0
- data/ext/debian/puppetmaster.NEWS +13 -0
- data/ext/debian/puppetmaster.README.debian +16 -0
- data/ext/debian/puppetmaster.default +38 -0
- data/ext/debian/puppetmaster.dirs +1 -0
- data/ext/debian/puppetmaster.init +158 -0
- data/ext/debian/puppetmaster.install +1 -0
- data/ext/debian/puppetmaster.lintian-overrides +3 -0
- data/ext/debian/puppetmaster.manpages +1 -0
- data/ext/debian/puppetmaster.postinst +20 -0
- data/ext/debian/puppetmaster.postrm +5 -0
- data/ext/debian/puppetmaster.preinst +22 -0
- data/ext/debian/rules +127 -0
- data/ext/debian/source/format +1 -0
- data/ext/debian/source/options +1 -0
- data/ext/debian/vim-puppet.README.Debian +13 -0
- data/ext/debian/vim-puppet.dirs +3 -0
- data/ext/debian/vim-puppet.yaml +5 -0
- data/ext/debian/watch +2 -0
- data/ext/emacs/puppet-mode.el +1 -0
- data/{conf → ext}/osx/PackageInfo.plist +0 -0
- data/{conf → ext}/osx/createpackage.sh +0 -0
- data/ext/osx/file_mapping.yaml +38 -0
- data/ext/osx/preflight.erb +37 -0
- data/{tasks/rake/templates → ext/osx}/prototype.plist.erb +0 -0
- data/ext/packaging/README-Solaris.md +117 -0
- data/ext/packaging/README.md +255 -0
- data/ext/packaging/spec/spec_helper.rb +12 -0
- data/ext/packaging/spec/tasks/00_utils_spec.rb +66 -0
- data/ext/packaging/tasks/00_utils.rake +382 -0
- data/ext/packaging/tasks/10_setupvars.rake +71 -0
- data/ext/packaging/tasks/20_setupextravars.rake +25 -0
- data/ext/packaging/tasks/apple.rake +201 -0
- data/ext/packaging/tasks/clean.rake +5 -0
- data/ext/packaging/tasks/deb.rake +108 -0
- data/ext/packaging/tasks/doc.rake +20 -0
- data/ext/packaging/tasks/fetch.rake +18 -0
- data/ext/packaging/tasks/gem.rake +68 -0
- data/ext/packaging/tasks/ips.rake +80 -0
- data/ext/packaging/tasks/mock.rake +126 -0
- data/ext/packaging/tasks/pe_deb.rake +9 -0
- data/ext/packaging/tasks/pe_remote.rake +45 -0
- data/ext/packaging/tasks/pe_rpm.rake +21 -0
- data/ext/packaging/tasks/pe_ship.rake +30 -0
- data/ext/packaging/tasks/pe_sign.rake +27 -0
- data/ext/packaging/tasks/pe_sles.rake +96 -0
- data/ext/packaging/tasks/release.rake +73 -0
- data/ext/packaging/tasks/remote_build.rake +78 -0
- data/ext/packaging/tasks/rpm.rake +52 -0
- data/ext/packaging/tasks/ship.rake +78 -0
- data/ext/packaging/tasks/sign.rake +82 -0
- data/ext/packaging/tasks/tag.rake +8 -0
- data/ext/packaging/tasks/tar.rake +68 -0
- data/ext/packaging/tasks/template.rake +13 -0
- data/ext/packaging/tasks/update.rake +16 -0
- data/ext/packaging/tasks/version.rake +21 -0
- data/ext/project_data.yaml +24 -0
- data/{conf/redhat/puppet.spec → ext/redhat/puppet.spec.erb} +18 -10
- data/install.rb +8 -8
- data/lib/puppet.rb +2 -6
- data/lib/puppet/agent/locker.rb +2 -0
- data/lib/puppet/application.rb +1 -1
- data/lib/puppet/application/agent.rb +1 -1
- data/lib/puppet/application/apply.rb +1 -1
- data/lib/puppet/application/cert.rb +5 -6
- data/lib/puppet/application/describe.rb +1 -1
- data/lib/puppet/application/device.rb +1 -1
- data/lib/puppet/application/doc.rb +1 -1
- data/lib/puppet/application/filebucket.rb +1 -1
- data/lib/puppet/application/inspect.rb +1 -1
- data/lib/puppet/application/kick.rb +1 -1
- data/lib/puppet/application/master.rb +1 -1
- data/lib/puppet/application/resource.rb +1 -1
- data/lib/puppet/defaults.rb +21 -3
- data/lib/puppet/external/dot.rb +1 -1
- data/lib/puppet/face/help/global.erb +1 -1
- data/lib/puppet/face/module/install.rb +1 -1
- data/lib/puppet/face/module/list.rb +1 -1
- data/lib/puppet/face/module/uninstall.rb +1 -1
- data/lib/puppet/face/node/clean.rb +23 -18
- data/lib/puppet/face/parser.rb +11 -2
- data/lib/puppet/file_collection.rb +16 -27
- data/lib/puppet/file_collection/lookup.rb +6 -16
- data/lib/puppet/file_serving/base.rb +4 -4
- data/lib/puppet/indirector/catalog/static_compiler.rb +3 -4
- data/lib/puppet/indirector/certificate/disabled_ca.rb +22 -0
- data/lib/puppet/indirector/certificate_request/disabled_ca.rb +22 -0
- data/lib/puppet/indirector/certificate_revocation_list/disabled_ca.rb +22 -0
- data/lib/puppet/indirector/face.rb +2 -2
- data/lib/puppet/indirector/key/disabled_ca.rb +22 -0
- data/lib/puppet/indirector/node/exec.rb +13 -1
- data/lib/puppet/indirector/request.rb +4 -0
- data/lib/puppet/metatype/manager.rb +17 -10
- data/lib/puppet/network/authstore.rb +1 -1
- data/lib/puppet/network/rights.rb +1 -2
- data/lib/puppet/node/environment.rb +1 -0
- data/lib/puppet/parameter/value.rb +9 -3
- data/lib/puppet/parser/ast.rb +1 -4
- data/lib/puppet/parser/files.rb +1 -1
- data/lib/puppet/parser/functions.rb +68 -22
- data/lib/puppet/parser/functions/create_resources.rb +2 -3
- data/lib/puppet/parser/functions/shellquote.rb +21 -25
- data/lib/puppet/parser/lexer.rb +40 -6
- data/lib/puppet/parser/relationship.rb +3 -1
- data/lib/puppet/parser/resource.rb +2 -3
- data/lib/puppet/parser/resource/param.rb +3 -5
- data/lib/puppet/parser/scope.rb +7 -4
- data/lib/puppet/property.rb +5 -3
- data/lib/puppet/provider.rb +5 -5
- data/lib/puppet/provider/aixobject.rb +1 -1
- data/lib/puppet/provider/augeas/augeas.rb +1 -1
- data/lib/puppet/provider/exec/windows.rb +1 -1
- data/lib/puppet/provider/file/windows.rb +10 -29
- data/lib/puppet/provider/group/groupadd.rb +2 -3
- data/lib/puppet/provider/group/ldap.rb +1 -1
- data/lib/puppet/provider/group/windows_adsi.rb +1 -1
- data/lib/puppet/provider/ldap.rb +5 -1
- data/lib/puppet/provider/nameservice.rb +3 -3
- data/lib/puppet/provider/nameservice/directoryservice.rb +2 -2
- data/lib/puppet/provider/package/gem.rb +6 -2
- data/lib/puppet/provider/package/portage.rb +4 -2
- data/lib/puppet/provider/parsedfile.rb +1 -1
- data/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +2 -2
- data/lib/puppet/provider/service/base.rb +2 -41
- data/lib/puppet/provider/service/daemontools.rb +1 -1
- data/lib/puppet/provider/service/launchd.rb +1 -1
- data/lib/puppet/provider/service/redhat.rb +6 -5
- data/lib/puppet/provider/service/runit.rb +1 -1
- data/lib/puppet/provider/service/service.rb +43 -0
- data/lib/puppet/provider/service/windows.rb +1 -8
- data/lib/puppet/provider/user/user_role_add.rb +2 -1
- data/lib/puppet/provider/user/useradd.rb +8 -3
- data/lib/puppet/provider/user/windows_adsi.rb +12 -1
- data/lib/puppet/provider/zone/solaris.rb +1 -1
- data/lib/puppet/rails/inventory_node.rb +26 -13
- data/lib/puppet/reports.rb +1 -1
- data/lib/puppet/resource.rb +20 -5
- data/lib/puppet/resource/status.rb +1 -1
- data/lib/puppet/ssl/certificate_authority.rb +2 -0
- data/lib/puppet/ssl/host.rb +31 -6
- data/lib/puppet/test/test_helper.rb +3 -1
- data/lib/puppet/transaction/event.rb +1 -1
- data/lib/puppet/transaction/report.rb +2 -2
- data/lib/puppet/type.rb +30 -25
- data/lib/puppet/type/augeas.rb +1 -1
- data/lib/puppet/type/cron.rb +2 -2
- data/lib/puppet/type/exec.rb +6 -6
- data/lib/puppet/type/file.rb +5 -15
- data/lib/puppet/type/file/content.rb +1 -1
- data/lib/puppet/type/file/ensure.rb +1 -1
- data/lib/puppet/type/file/mode.rb +1 -1
- data/lib/puppet/type/file/selcontext.rb +6 -2
- data/lib/puppet/type/file/source.rb +1 -1
- data/lib/puppet/type/mount.rb +1 -1
- data/lib/puppet/type/package.rb +1 -1
- data/lib/puppet/type/schedule.rb +1 -1
- data/lib/puppet/type/scheduled_task.rb +1 -1
- data/lib/puppet/type/tidy.rb +1 -1
- data/lib/puppet/type/whit.rb +16 -9
- data/lib/puppet/util.rb +27 -11
- data/lib/puppet/util/adsi.rb +25 -23
- data/lib/puppet/util/autoload.rb +1 -1
- data/lib/puppet/util/classgen.rb +1 -1
- data/lib/puppet/util/feature.rb +3 -1
- data/lib/puppet/util/fileparsing.rb +9 -9
- data/lib/puppet/util/filetype.rb +55 -40
- data/lib/puppet/util/instance_loader.rb +5 -5
- data/lib/puppet/util/instrumentation.rb +3 -5
- data/lib/puppet/util/log_paths.rb +1 -3
- data/lib/puppet/util/monkey_patches.rb +34 -8
- data/lib/puppet/util/platform.rb +7 -0
- data/lib/puppet/util/posix.rb +3 -3
- data/lib/puppet/util/provider_features.rb +2 -3
- data/lib/puppet/util/rdoc.rb +4 -3
- data/lib/puppet/util/reference.rb +1 -1
- data/lib/puppet/util/selinux.rb +31 -36
- data/lib/puppet/util/tagging.rb +28 -6
- data/lib/puppet/util/windows.rb +1 -0
- data/lib/puppet/util/windows/error.rb +1 -1
- data/lib/puppet/util/windows/process.rb +3 -3
- data/lib/puppet/util/windows/security.rb +9 -46
- data/lib/puppet/util/windows/sid.rb +96 -0
- data/lib/puppet/util/windows/user.rb +65 -2
- data/lib/puppet/util/zaml.rb +109 -59
- data/lib/puppet/version.rb +18 -0
- data/spec/fixtures/unit/util/filetype/aixtab_output +44 -0
- data/spec/fixtures/unit/util/filetype/suntab_output +9 -0
- data/spec/integration/defaults_spec.rb +26 -7
- data/spec/integration/parser/functions_spec.rb +0 -4
- data/spec/integration/util/file_locking_spec.rb +1 -1
- data/spec/integration/util/windows/security_spec.rb +3 -23
- data/spec/lib/puppet_spec/files.rb +3 -3
- data/spec/shared_contexts/platform.rb +8 -0
- data/spec/spec_helper.rb +6 -1
- data/spec/unit/application/queue_spec.rb +2 -1
- data/spec/unit/configurer_spec.rb +1 -1
- data/spec/unit/face/{instrumentation_data.rb → instrumentation_data_spec.rb} +0 -0
- data/spec/unit/face/{instrumentation_listener.rb → instrumentation_listener_spec.rb} +0 -0
- data/spec/unit/face/{instrumentation_probe.rb → instrumentation_probe_spec.rb} +0 -0
- data/spec/unit/indirector/catalog/static_compiler_spec.rb +194 -0
- data/spec/unit/indirector/certificate/disabled_ca_spec.rb +33 -0
- data/spec/unit/indirector/certificate_request/disabled_ca_spec.rb +33 -0
- data/spec/unit/indirector/certificate_revocation_list/disabled_ca_spec.rb +33 -0
- data/spec/unit/indirector/key/disabled_ca_spec.rb +33 -0
- data/spec/unit/indirector/request_spec.rb +22 -0
- data/spec/unit/network/http/webrick_spec.rb +0 -7
- data/spec/unit/node/environment_spec.rb +8 -8
- data/spec/unit/parser/ast_spec.rb +0 -5
- data/spec/unit/parser/collector_spec.rb +1 -0
- data/spec/unit/parser/files_spec.rb +2 -2
- data/spec/unit/parser/functions/create_resources_spec.rb +3 -4
- data/spec/unit/parser/functions/require_spec.rb +0 -6
- data/spec/unit/parser/functions/shellquote_spec.rb +0 -5
- data/spec/unit/parser/functions/template_spec.rb +6 -1
- data/spec/unit/parser/functions_spec.rb +73 -23
- data/spec/unit/parser/lexer_spec.rb +133 -8
- data/spec/unit/parser/relationship_spec.rb +24 -0
- data/spec/unit/parser/resource_spec.rb +0 -4
- data/spec/unit/parser/scope_spec.rb +2 -2
- data/spec/unit/property_spec.rb +21 -1
- data/spec/unit/provider/exec/posix_spec.rb +7 -6
- data/spec/unit/provider/file/windows_spec.rb +29 -29
- data/spec/unit/provider/group/groupadd_spec.rb +36 -30
- data/spec/unit/provider/group/windows_adsi_spec.rb +2 -2
- data/spec/unit/provider/package/gem_spec.rb +12 -0
- data/spec/unit/provider/scheduled_task/win32_taskscheduler_spec.rb +14 -11
- data/spec/unit/provider/service/redhat_spec.rb +11 -1
- data/spec/unit/provider/service/windows_spec.rb +19 -0
- data/spec/unit/provider/user/ldap_spec.rb +22 -8
- data/spec/unit/provider/user/user_role_add_spec.rb +12 -0
- data/spec/unit/provider/user/useradd_spec.rb +146 -118
- data/spec/unit/provider/user/windows_adsi_spec.rb +24 -2
- data/spec/unit/puppet_spec.rb +10 -0
- data/spec/unit/resource/status_spec.rb +1 -1
- data/spec/unit/resource_spec.rb +73 -0
- data/spec/unit/ssl/certificate_authority_spec.rb +25 -1
- data/spec/unit/ssl/host_spec.rb +73 -27
- data/spec/unit/ssl/key_spec.rb +0 -4
- data/spec/unit/transaction/event_spec.rb +1 -1
- data/spec/unit/type/exec_spec.rb +1 -1
- data/spec/unit/type/file/content_spec.rb +6 -4
- data/spec/unit/type/file/{ctime.rb → ctime_spec.rb} +0 -0
- data/spec/unit/type/file/{mtime.rb → mtime_spec.rb} +0 -0
- data/spec/unit/type/file/{type.rb → type_spec.rb} +0 -0
- data/spec/unit/type/file_spec.rb +2 -12
- data/spec/unit/type/host_spec.rb +14 -5
- data/spec/unit/type/mount_spec.rb +8 -0
- data/spec/unit/type/scheduled_task_spec.rb +2 -2
- data/spec/unit/util/adsi_spec.rb +23 -8
- data/spec/unit/util/command_line_spec.rb +11 -2
- data/spec/unit/util/feature_spec.rb +12 -1
- data/spec/unit/util/filetype_spec.rb +161 -55
- data/spec/unit/util/log_spec.rb +1 -1
- data/spec/unit/util/monkey_patches_spec.rb +7 -0
- data/spec/unit/util/rdoc_spec.rb +8 -2
- data/spec/unit/util/selinux_spec.rb +24 -32
- data/spec/unit/util/windows/sid_spec.rb +100 -0
- data/spec/unit/util/zaml_spec.rb +165 -25
- data/spec/unit/util_spec.rb +3 -9
- data/spec/watchr.rb +2 -6
- data/tasks/rake/gem.rake +4 -2
- data/tasks/rake/sign.rake +1 -1
- data/test/language/parser.rb +1 -0
- data/test/language/scope.rb +0 -5
- data/test/language/snippets.rb +1 -2
- data/test/lib/puppettest.rb +16 -27
- data/test/lib/puppettest/parsertesting.rb +0 -1
- data/test/network/authstore.rb +2 -4
- data/test/puppet/defaults.rb +0 -4
- data/test/util/fileparsing.rb +2 -6
- metadata +1706 -1617
- data/conf/osx/preflight +0 -24
- data/spec/spec.opts +0 -4
- data/spec/unit/file_collection/lookup_spec.rb +0 -45
- data/spec/unit/file_collection_spec.rb +0 -52
- data/tasks/rake/apple.rake +0 -176
- 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,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
|
+
|