summaryrefslogtreecommitdiff
path: root/sysutils/puppet/files
diff options
context:
space:
mode:
Diffstat (limited to 'sysutils/puppet/files')
-rw-r--r--sysutils/puppet/files/patch-2385203
-rw-r--r--sysutils/puppet/files/patch-define_batch13
-rw-r--r--sysutils/puppet/files/patch-package-name-with-dash13
-rw-r--r--sysutils/puppet/files/puppetmasterd.in18
4 files changed, 44 insertions, 203 deletions
diff --git a/sysutils/puppet/files/patch-2385 b/sysutils/puppet/files/patch-2385
deleted file mode 100644
index 7d33b2c1704a..000000000000
--- a/sysutils/puppet/files/patch-2385
+++ /dev/null
@@ -1,203 +0,0 @@
-http://reductivelabs.com/trac/puppet/changeset/2385
-http://reductivelabs.com/trac/puppet/ticket/565
-Index: test/util/utiltest.rb
-===================================================================
---- test/util/utiltest.rb (revision 2377)
-+++ test/util/utiltest.rb (revision 2385)
-@@ -277,11 +277,15 @@
- # Now try it with a single quote
- assert_nothing_raised do
- output = Puppet::Util.execute([command, "yay'test", "funtest"])
-- # output = Puppet::Util.execute(command)
--
- end
- assert_equal("yay'test\nfuntest\n", output)
-
-+ # Now make sure we can squelch output (#565)
-+ assert_nothing_raised do
-+ output = Puppet::Util.execute([command, "yay'test", "funtest"], :squelch => true)
-+ end
-+ assert_equal(nil, output)
-+
- # Now test that we correctly fail if the command returns non-zero
- assert_raise(Puppet::ExecutionFailure) do
- out = Puppet::Util.execute(["touch", "/no/such/file/could/exist"])
-@@ -289,7 +293,7 @@
-
- # And that we can tell it not to fail
- assert_nothing_raised() do
-- out = Puppet::Util.execute(["touch", "/no/such/file/could/exist"], false)
-+ out = Puppet::Util.execute(["touch", "/no/such/file/could/exist"], :failonfail => false)
- end
-
- if Process.uid == 0
-@@ -298,7 +302,7 @@
- group = nonrootgroup
- file = tempfile()
- assert_nothing_raised do
-- Puppet::Util.execute(["touch", file], true, user.name, group.name)
-+ Puppet::Util.execute(["touch", file], :uid => user.name, :gid => group.name)
- end
- assert(FileTest.exists?(file), "file was not created")
- assert_equal(user.uid, File.stat(file).uid, "uid was not set correctly")
-@@ -308,6 +312,24 @@
- # assert_equal(group.gid, File.stat(file).gid,
- # "gid was not set correctly")
- end
-+
-+ # (#565) Test the case of patricide.
-+ patricidecommand = tempfile()
-+ File.open(patricidecommand, "w") { |f|
-+ f.puts %{#!/bin/bash\n/bin/bash -c 'kill -TERM \$PPID' &;\n while [ 1 ]; do echo -n ''; done;\n}
-+ }
-+ File.chmod(0755, patricidecommand)
-+ assert_nothing_raised do
-+ output = Puppet::Util.execute([patricidecommand], :squelch => true)
-+ end
-+ assert_equal(nil, output)
-+ # See what happens if we try and read the pipe to the command...
-+ assert_raise(Puppet::ExecutionFailure) do
-+ output = Puppet::Util.execute([patricidecommand])
-+ end
-+ assert_nothing_raised do
-+ output = Puppet::Util.execute([patricidecommand], :failonfail => false)
-+ end
- end
-
- # Check whether execute() accepts strings in addition to arrays.
-Index: lib/puppet/util.rb
-===================================================================
---- lib/puppet/util.rb (revision 2377)
-+++ lib/puppet/util.rb (revision 2385)
-@@ -267,7 +267,8 @@
- end
-
- # Execute the desired command, and return the status and output.
-- def execute(command, failonfail = true, uid = nil, gid = nil)
-+ # def execute(command, failonfail = true, uid = nil, gid = nil)
-+ def execute(command, arguments = {:failonfail => true})
- if command.is_a?(Array)
- command = command.flatten.collect { |i| i.to_s }
- str = command.join(" ")
-@@ -284,30 +285,35 @@
- Puppet.debug "Executing '%s'" % str
- end
-
-- if uid
-- uid = Puppet::Util::SUIDManager.convert_xid(:uid, uid)
-+ if arguments[:uid]
-+ arguments[:uid] = Puppet::Util::SUIDManager.convert_xid(:uid, arguments[:uid])
- end
-- if gid
-- gid = Puppet::Util::SUIDManager.convert_xid(:gid, gid)
-+ if arguments[:gid]
-+ arguments[:gid] = Puppet::Util::SUIDManager.convert_xid(:gid, arguments[:gid])
- end
-
- @@os ||= Facter.value(:operatingsystem)
- output = nil
-- IO.popen("-") do |f|
-- if f
-- output = f.read
-+ child_pid, child_status = nil
-+ # The idea here is to avoid IO#read whenever possible.
-+ if arguments[:squelch]
-+ child_pid = Kernel.fork
-+ if child_pid
-+ # Parent process executes this
-+ child_status = Process.waitpid2(child_pid)[1]
- else
-+ # Child process executes this
- begin
- $stdin.reopen("/dev/null")
-- $stderr.close
-- $stderr = $stdout.dup
-- if gid
-- Process.egid = gid
-- Process.gid = gid unless @@os == "Darwin"
-+ $stdout.reopen("/dev/null")
-+ $stderr.reopen("/dev/null")
-+ if arguments[:gid]
-+ Process.egid = arguments[:gid]
-+ Process.gid = arguments[:gid] unless @@os == "Darwin"
- end
-- if uid
-- Process.euid = uid
-- Process.uid = uid unless @@os == "Darwin"
-+ if arguments[:uid]
-+ Process.euid = arguments[:uid]
-+ Process.uid = arguments[:uid] unless @@os == "Darwin"
- end
- if command.is_a?(Array)
- Kernel.exec(*command)
-@@ -317,13 +323,44 @@
- rescue => detail
- puts detail.to_s
- exit!(1)
-- end
-- end
-- end
-+ end # begin; rescue
-+ end # if child_pid; else
-+ else
-+ IO.popen("-") do |f|
-+ if f
-+ # Parent process executes this
-+ output = f.read
-+ else
-+ # Parent process executes this
-+ begin
-+ $stdin.reopen("/dev/null")
-+ $stderr.close
-+ $stderr = $stdout.dup
-+ if arguments[:gid]
-+ Process.egid = arguments[:gid]
-+ Process.gid = arguments[:gid] unless @@os == "Darwin"
-+ end
-+ if arguments[:uid]
-+ Process.euid = arguments[:uid]
-+ Process.uid = arguments[:uid] unless @@os == "Darwin"
-+ end
-+ if command.is_a?(Array)
-+ Kernel.exec(*command)
-+ else
-+ Kernel.exec(command)
-+ end
-+ rescue => detail
-+ puts detail.to_s
-+ exit!(1)
-+ end # begin; rescue
-+ end # if f; else
-+ end # IO.popen do |f|
-+ child_status = $?
-+ end # if arguments[:squelch]; else
-
-- if failonfail
-- unless $? == 0
-- raise ExecutionFailure, "Execution of '%s' returned %s: %s" % [str, $?.exitstatus, output]
-+ if arguments[:failonfail]
-+ unless child_status == 0
-+ raise ExecutionFailure, "Execution of '%s' returned %s: %s" % [str, child_status.inspect, output]
- end
- end
-
-Index: lib/puppet/provider/service/base.rb
-===================================================================
---- lib/puppet/provider/service/base.rb (revision 2377)
-+++ lib/puppet/provider/service/base.rb (revision 2385)
-@@ -114,12 +114,12 @@
- # A simple wrapper so execution failures are a bit more informative.
- def texecute(type, command, fof = true)
- begin
-- output = execute(command, fof)
-+ # #565: Services generally produce no output, so squelch them.
-+ execute(command, :failonfail => fof, :squelch => true)
- rescue Puppet::ExecutionFailure => detail
- @model.fail "Could not %s %s: %s" % [type, @model.ref, detail]
- end
--
-- return output
-+ return nil
- end
-
- # Use either a specified command or the default for our provider.
diff --git a/sysutils/puppet/files/patch-define_batch b/sysutils/puppet/files/patch-define_batch
new file mode 100644
index 000000000000..e97ffddaa161
--- /dev/null
+++ b/sysutils/puppet/files/patch-define_batch
@@ -0,0 +1,13 @@
+always define PATCH. without it, puppetd hangs when upgrading INTERACTIVE port.
+http://reductivelabs.com/trac/puppet/ticket/624
+--- lib/puppet/provider/package/ports.rb.orig Tue May 8 14:55:34 2007
++++ lib/puppet/provider/package/ports.rb Tue May 8 14:55:57 2007
+@@ -19,7 +19,7 @@
+ # -p: create a package
+ # -N: install if the package is missing, otherwise upgrade
+ # -P: prefer binary packages
+- cmd = %w{-p -N -P} << @model[:name]
++ cmd = %w{-p -N -P -M BATCH=yes} << @model[:name]
+
+ output = portupgrade(*cmd)
+ if output =~ /\*\* No such /
diff --git a/sysutils/puppet/files/patch-package-name-with-dash b/sysutils/puppet/files/patch-package-name-with-dash
new file mode 100644
index 000000000000..93b60bc6dfa0
--- /dev/null
+++ b/sysutils/puppet/files/patch-package-name-with-dash
@@ -0,0 +1,13 @@
+support package that contains '-' in its name, like syslog-ng
+http://reductivelabs.com/trac/puppet/ticket/628
+--- lib/puppet/provider/package/ports.rb.orig Wed May 9 17:12:39 2007
++++ lib/puppet/provider/package/ports.rb Wed May 9 17:13:57 2007
+@@ -47,7 +47,7 @@
+ match = $2
+ info = $3
+
+- unless pkgstuff =~ /^(\w+)-([0-9].+)$/
++ unless pkgstuff =~ /^(\S+)-([^-\s]+)$/
+ raise Puppet::PackageError,
+ "Could not match package info '%s'" % pkgstuff
+ end
diff --git a/sysutils/puppet/files/puppetmasterd.in b/sysutils/puppet/files/puppetmasterd.in
index bb8e7370c28f..cdb817faf448 100644
--- a/sysutils/puppet/files/puppetmasterd.in
+++ b/sysutils/puppet/files/puppetmasterd.in
@@ -8,6 +8,9 @@
# Add the following lines to /etc/rc.conf to enable puppetmasterd:
#
# puppetmasterd_enable="YES"
+# puppetmasterd_confdir: Set to %%PREFIX%%/etc/puppet by default
+# puppetmasterd_flags: Set to --confdir $puppetmasterd_confdir --rundir /var/run" by default
+#
. %%RC_SUBR%%
@@ -16,6 +19,21 @@ rcvar=`set_rcvar`
command="%%PREFIX%%/bin/${name}"
command_interpreter="%%PREFIX%%/bin/ruby18"
+start_precmd="puppetmasterd_checkconfig"
+restart_precmd="puppetmasterd_checkconfig"
+
+puppetmasterd_checkconfig() {
+ echo -n "Performing sanity check of ${name} configuration: "
+ ${command} --parseonly ${puppetmasterd_flags} >/dev/null 2>&1
+ rv=$?
+ if [ $rv != 0 ]; then
+ echo "FAILED, ${name} exited with status ${rv}"
+ ${command} --parseonly ${puppetmasterd_flags}
+ return 1
+ else
+ echo "OK"
+ fi
+}
load_rc_config "$name"
: ${puppetmasterd_enable="NO"}