Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 4 Apr 2017 20:18:36 -0700
From:      Ngie Cooper <yaneurabeya@gmail.com>
To:        Cy Schubert <Cy.Schubert@komquats.com>
Cc:        =?utf-8?Q?Dag-Erling_Sm=C3=B8rgrav?= <des@FreeBSD.org>, src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   Re: svn commit: r316487 - head/etc
Message-ID:  <58CC0B95-0423-429E-BA73-0F0BD3A2ABBE@gmail.com>
In-Reply-To: <201704050305.v3535VE2006000@slippy.cwsent.com>
References:  <201704050305.v3535VE2006000@slippy.cwsent.com>

next in thread | previous in thread | raw e-mail | index | archive | help

> On Apr 4, 2017, at 20:05, Cy Schubert <Cy.Schubert@komquats.com> wrote:
>=20
> In message <201704041143.v34BhVNA046204@repo.freebsd.org>,=20
> =3D?UTF-8?Q?Dag-Erling
> _Sm=3Dc3=3Db8rgrav?=3D writes:
>> Author: des
>> Date: Tue Apr  4 11:43:31 2017
>> New Revision: 316487
>> URL: https://svnweb.freebsd.org/changeset/base/316487
>>=20
>> Log:
>>  Allow command modifiers (fast, quiet etc.) to be stacked in any order.
>>  Add a "debug" modifier that sets rc_debug.
>>=20
>>  MFC after:    3 weeks
>>=20
>> Modified:
>>  head/etc/rc.subr
>>=20
>> Modified: head/etc/rc.subr
>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=

>> =3D
>> --- head/etc/rc.subr    Tue Apr  4 08:17:03 2017    (r316486)
>> +++ head/etc/rc.subr    Tue Apr  4 11:43:31 2017    (r316487)
>> @@ -703,10 +703,11 @@ check_startmsgs()
>> #    If argument has a given prefix, then change the operation as follows=
:
>> #        Prefix    Operation
>> #        ------    ---------
>> -#        fast    Skip the pid check, and set rc_fast=3Dyes, rc_quiet=3Dy=
es
>> -#        force    Set ${rcvar} to YES, and set rc_force=3Dyes
>> -#        one    Set ${rcvar} to YES
>> -#        quiet    Don't output some diagnostics, and set rc_quiet=3Dyes
>> +#        debug    Enable debugging messages and set rc_debug to yes
>> +#        fast    Skip the pid check and set rc_fast and rc_quiet to yes
>> +#        force    Skip sanity checks and set ${rcvar} and rc_force to ye=
s
>> +#        one    Set ${rcvar} and set rc_one to yes
>> +#        quiet    Don't output some diagnostics, and set rc_quiet to yes=

>> #
>> #    The following globals are used:
>> #
>> @@ -856,6 +857,8 @@ check_startmsgs()
>> #    rc_arg        Argument to command, after fast/force/one processing
>> #            performed
>> #
>> +#    rc_debug    True if "debug" was provided
>> +#
>> #    rc_flags    Flags to start the default command with.
>> #            Defaults to ${name}_flags, unless overridden
>> #            by $flags from the environment.
>> @@ -863,9 +866,11 @@ check_startmsgs()
>> #
>> #    rc_pid        PID of command (if appropriate)
>> #
>> -#    rc_fast        Not empty if "fast" was provided (q.v.)
>> +#    rc_fast        Not empty if "fast" was provided
>> +#
>> +#    rc_force    Not empty if "force" was provided
>> #
>> -#    rc_force    Not empty if "force" was provided (q.v.)
>> +#    rc_one        Not empty if "one" was provided
>> #
>> #    rc_quiet    Not empty if "quiet" was provided
>> #
>> @@ -884,34 +889,47 @@ run_rc_command()
>>    shift 1
>>    rc_extra_args=3D"$*"
>>=20
>> -    _rc_prefix=3D
>> -    case "$rc_arg" in
>> -    fast*)                # "fast" prefix; don't check pid
>> -        rc_arg=3D${rc_arg#fast}
>> -        rc_fast=3Dyes
>> -        rc_quiet=3Dyes
>> -        ;;
>> -    force*)                # "force" prefix; always run
>> -        rc_force=3Dyes
>> -        _rc_prefix=3Dforce
>> -        rc_arg=3D${rc_arg#${_rc_prefix}}
>> -        if [ -n "${rcvar}" ]; then
>> -            eval ${rcvar}=3DYES
>> -        fi
>> -        ;;
>> -    one*)                # "one" prefix; set ${rcvar}=3Dyes
>> -        _rc_prefix=3Done
>> -        rc_arg=3D${rc_arg#${_rc_prefix}}
>> +    : ${rc_debug:=3Dno} ${rc_fast:=3Dno} ${rc_force:=3Dno} ${rc_one:=3Dn=
o} ${rc_qui
>> et:=3Dno}
>> +    while :; do
>> +        case "$rc_arg" in
>> +        debug*)            # "debug" prefix; enable debugging
>> +            rc_debug=3Dyes
>> +            rc_quiet=3Dno
>> +            rc_arg=3D${rc_arg#debug}
>> +            _rc_prefix=3D"${_rc_prefix}debug"
>> +            ;;
>> +        fast*)            # "fast" prefix; don't check pid
>> +            rc_fast=3Dyes
>> +            rc_quiet=3Dyes
>> +            rc_arg=3D${rc_arg#fast}
>> +            _rc_prefix=3D"${_rc_prefix}fast"
>> +            ;;
>> +        force*)            # "force" prefix; always run
>> +            rc_force=3Dyes
>> +            rc_arg=3D${rc_arg#force}
>> +            _rc_prefix=3D"${_rc_prefix}force"
>> +            ;;
>> +        one*)            # "one" prefix; set ${rcvar}=3Dyes
>> +            rc_one=3Dyes
>> +            rc_arg=3D${rc_arg#one}
>> +            _rc_prefix=3D"${_rc_prefix}one"
>> +            ;;
>> +        quiet*)            # "quiet" prefix; omit some messages
>> +            rc_quiet=3Dyes
>> +            rc_arg=3D${rc_arg#quiet}
>> +            _rc_prefix=3D"${_rc_prefix}quiet"
>> +            ;;
>> +        *)
>> +            break
>> +            ;;
>> +        esac
>> +    done
>> +    if checkyesno rc_force || checkyesno rc_one ; then
>>        if [ -n "${rcvar}" ]; then
>>            eval ${rcvar}=3DYES
>>        fi
>> -        ;;
>> -    quiet*)                # "quiet" prefix; omit some messages
>> -        _rc_prefix=3Dquiet
>> -        rc_arg=3D${rc_arg#${_rc_prefix}}
>> -        rc_quiet=3Dyes
>> -        ;;
>> -    esac
>> +    fi
>> +    debug "_rc_prefix=3D${_rc_prefix}"
>>=20
>>    eval _override_command=3D\$${name}_program
>>    command=3D${_override_command:-$command}
>>=20
>>=20
>=20
>=20
> Hi des,
>=20
> This patch caused some boot failures because the contents of rc_force were=
=20
> redefined from "yes" (for yes) and NULL (for no) to the words "yes" and=20=

> "no". This in turn caused etc/rc.d/dhclient to assume force when $rc_force=
=20
> was not NULL (test -z failed). Interfaces with static IP addresses invoked=
=20
> rc.d/dhclient through devd. The attached patch should make all instances=20=

> $rc_force consistent with your change.

This deserves relnotes (for sure), and it might cause issues in downstream c=
onsumers (ports, etc) :/...
-Ngie=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?58CC0B95-0423-429E-BA73-0F0BD3A2ABBE>