Issue #3123 has been updated by Thomas Bellman.
I suspect /bin/sh on your systems do not support the <() syntax. Try this:
<pre>
$ irb
irb(main):001:0> system("diff -q <(echo a) <(echo a)")
</pre>
I don't have Ubuntu or MacOS, so I don't know what kind of /bin/sh you
have, but I get
<pre>
sh: -c: line 0: syntax error near unexpected token `('
sh: -c: line 0: `diff -q <(echo a) <(echo a)'
=> false
</pre>
So the command always returns failure, which is consistent with the
behaviour you see. Unfortunately Puppet just throws away standard error
from such commands, making it difficult to debug those kinds of errors.
----------------------------------------
Bug #3123: onlyif and unless do not work when using subshell with in the
statement
http://projects.reductivelabs.com/issues/3123
Author: Chris Blumentritt
Status: Unreviewed
Priority: Normal
Assigned to:
Category: exec
Target version:
Affected version: 0.25.3
Keywords:
Branch:
Feel free to change that subject as I don't really know how to explain the
problem. I have a situation where I have to diff the output of commands. This
can be done by doing something like:
diff <(echo a) <(echo a)
This will return an exit status of 0
diff <(echo a) <(echo b)
This will return an exit status of 1
unless and only if seems to ignore this and always run the command specified in
the exec statement
Attached is a manifest to reproduce the problem. Below is a debug trace of the
out put when running the attached manifest. I have verified this with 0.25.1
and 0.25.3 on karmic and 0.25.3 in snow leopard (those are the only versions I
tried).
tornado:scratch$ puppet --trace --debug exectest.pp
debug: Creating default schedules
debug: Failed to load library 'shadow' for feature 'libshadow'
debug: Failed to load library 'selinux' for feature 'selinux'
info: Applying configuration version '1264667348'
debug: //Exec[test unless exit 1]: Executing check 'diff -q <(echo a) <(echo b)'
debug: Executing 'diff -q <(echo a) <(echo b)'
debug: //Exec[test unless exit 1]: Changing returns
debug: //Exec[test unless exit 1]: 1 change(s)
debug: //Exec[test unless exit 1]: Executing 'echo foo > /tmp/exec-unless1'
debug: Executing 'echo foo > /tmp/exec-unless1'
notice: //Exec[test unless exit 1]/returns: executed successfully
debug: //Exec[test unless exit 0]: Executing check 'diff -q <(echo a) <(echo a)'
debug: Executing 'diff -q <(echo a) <(echo a)'
debug: //Exec[test unless exit 0]: Changing returns
debug: //Exec[test unless exit 0]: 1 change(s)
debug: //Exec[test unless exit 0]: Executing 'echo foo > /tmp/exec-unless0'
debug: Executing 'echo foo > /tmp/exec-unless0'
notice: //Exec[test unless exit 0]/returns: executed successfully
debug: //Exec[test onlyif exit 0]: Executing check 'diff -q <(echo a) <(echo a)'
debug: Executing 'diff -q <(echo a) <(echo a)'
debug: //Exec[test onlyif exit 0]: Changing returns
debug: //Exec[test onlyif exit 0]: 1 change(s)
debug: //Exec[test onlyif exit 0]: Executing 'echo foo > /tmp/exec-onlyif0'
debug: Executing 'echo foo > /tmp/exec-onlyif0'
notice: //Exec[test onlyif exit 0]/returns: executed successfully
debug: //Exec[test onlyif exit 1]: Executing check 'diff -q <(echo a) <(echo
b)'
debug: Executing 'diff -q <(echo a) <(echo b)'
debug: //Exec[test onlyif exit 1]: Changing returns
debug: //Exec[test onlyif exit 1]: 1 change(s)
debug: //Exec[test onlyif exit 1]: Executing 'echo foo > /tmp/exec-onlyif1'
debug: Executing 'echo foo > /tmp/exec-onlyif1'
notice: //Exec[test onlyif exit 1]/returns: executed successfully
debug: Finishing transaction 2166971880 with 4 changes
--
You have received this notification because you have either subscribed to it,
or are involved in it.
To change your notification preferences, please click here:
http://reductivelabs.com/redmine/my/account
--
You received this message because you are subscribed to the Google Groups
"Puppet Bugs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/puppet-bugs?hl=en.