tech-userlevel archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Making powerd=YES default



On 01.08.2011 16:17, Martin Husemann wrote:
>> So now, I suggest you propose an alternative, so that we can make some
>> progress. Thanks.
> 
> But I did! If postinstall just checks wether there is a powerd= line in
> rc.conf (even if it would not be required functionally), everything is
> fine. You could slightly tweak the failure message to hint at this
> possibility, but I wouldn't mind to just keep it as in your suggested
> patch.

It isn't easy: by design, rc.conf executes /etc/defaults/rc.conf by default:

# Load the defaults in from /etc/defaults/rc.conf (if it's readable).
# These can be overridden below.
#
if [ -r /etc/defaults/rc.conf ]; then
        . /etc/defaults/rc.conf
fi

So I can't easily know where the powerd=NO line comes from
(/etc/defaults/rc.conf or /etc/rc.conf).

Grepping for it is not really deterministic; anyone is free to add shell
semantic, and hide the value of "powerd" behind shell commands.

Hacking around this without patching /etc/rc.conf (two steps needed, one
to patch, and another one to test value) requires a modification from
/etc/defaults/rc.conf:

Index: etc/defaults/rc.conf
===================================================================
RCS file: /cvsroot/src/etc/defaults/rc.conf,v
retrieving revision 1.113
diff -u -p -u -p -r1.113 rc.conf
--- etc/defaults/rc.conf        27 May 2011 09:28:42 -0000      1.113
+++ etc/defaults/rc.conf        1 Aug 2011 15:20:58 -0000
@@ -26,6 +26,12 @@
 #
 #rc_fast_and_loose=YES

+# If RC_SKIP_DEFAULTS is set, ignore the rest of the file. Used to
distinguish
+# /etc/defaults/rc.conf and /etc/rc.conf contents.
+if [ -z "${RC_SKIP_DEFAULTS}" ]; then
+       return
+fi
+
 # If rc_silent is true then /etc/rc will suppress most output to
 # the console.  The default is taken from the AB_SILENT flag passed
 # from the boot loader to the kernel in the boothowto(9) variable.

Obviously, for the first time, this has to be applied _before_ testing
the rcvar value. Which means that upon postinstall, "check" => "fix" =>
"check" won't return deterministic results upon first update.

We might as well provide a MD /etc/defaults/rc.conf file, things are
becoming ugly there...

-- 
Jean-Yves Migeon
jeanyves.migeon%free.fr@localhost


Home | Main Index | Thread Index | Old Index