[yocto] [update-rc.d][PATCH V3] update-rc.d: support enable/disable options
Changqing Li
changqing.li at windriver.com
Sun Jun 16 23:06:19 PDT 2019
ping
On 5/28/19 8:59 AM, Changqing Li wrote:
> ping
>
> On 4/30/19 2:56 PM, changqing.li at windriver.com wrote:
>> From: Changqing Li <changqing.li at windriver.com>
>>
>> Add support of enable/disable options, refer
>> https://manpages.debian.org/wheezy/sysv-rc/update-rc.d.8.en.html
>>
>> With support of these options, the usr can never change an existing
>> configuration even after upgrading a package. The program will only
>> install links if none are present, otherwise, it will keep
>> the previous configuration.
>>
>> preinst in update-rc.d.bbclass will delete all the links under
>> rcrunlevel.d, this behavior now conflicts with enable/disable
>> options. so remove preinst from the update-rc.d.bbclass
>>
>> [Yocto 12955]
>>
>> Signed-off-by: Changqing Li <changqing.li at windriver.com>
>> ---
>> update-rc.d | 81
>> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>> 1 file changed, 81 insertions(+)
>>
>> diff --git a/update-rc.d b/update-rc.d
>> index e07cf85..a7fb7bc 100644
>> --- a/update-rc.d
>> +++ b/update-rc.d
>> @@ -27,6 +27,7 @@ usage()
>> usage: update-rc.d [-n] [-f] [-r <root>] <basename> remove
>> update-rc.d [-n] [-r <root>] [-s] <basename> defaults [NN |
>> sNN kNN]
>> update-rc.d [-n] [-r <root>] [-s] <basename> start|stop NN
>> runlvl [runlvl] [...] .
>> + update-rc.d [-n] [-r <root>] [-s] <basename> enable|disable
>> [S|2|3|4|5]
>> -n: not really
>> -f: force
>> -v: verbose
>> @@ -101,6 +102,53 @@ makelinks()
>> done
>> }
>> +# function to disable/enable init script link of one run level
>> +# $1 should be K/S, means to disable/enable
>> +# $2 means which run level to disable/enable
>> +renamelink()
>> +{
>> + local oldstartstop newstartstop lev oldnn newnn
>> + if [ "x$1" = "xS" ]; then
>> + oldstartstop="K"
>> + newstartstop="S"
>> + else
>> + oldstartstop="S"
>> + newstartstop="K"
>> + fi
>> +
>> + lev=$2
>> + # modifies existing runlevel links for the script
>> /etc/init.d/name by renaming start links to stop link
>> + # or stop link to start link with a sequence number equal to
>> the difference of 100 minus the original sequence number.
>> + if ls ${etcd}${lev}.d/${oldstartstop}*${bn} >/dev/null 2>&1; then
>> + oldnn=`basename ${etcd}${lev}.d/${oldstartstop}*${bn}|cut
>> -c2-3`
>> + newnn=$[100-$oldnn]
>> + [ $verbose -eq 1 ] && echo "rename
>> ${etcd}${lev}.d/${oldstartstop}${oldnn}${bn} ->
>> ${etcd}${lev}.d/${newstartstop}${newnn}${bn}"
>> + if [ $notreally -eq 0 ];then
>> + mv ${etcd}${lev}.d/${oldstartstop}${oldnn}${bn}
>> ${etcd}${lev}.d/${newstartstop}${newnn}${bn}
>> + fi
>> + if [ $dostart -eq 1 ] && [ $newstartstop = "S" ] && [ $lev =
>> $RUNLEVEL ]; then
>> + $fn start || true
>> + fi
>> + fi
>> +
>> +}
>> +
>> +# function to disable/enable init script link
>> +# $1 should be K/S, means to disable/enable
>> +# $2 run level [S|2|3|4|5], optional, If no start runlevel is
>> +# specified after the disable or enable keywords
>> +# the script will attempt to modify links in all start runlevels
>> +renamelinks()
>> +{
>> + if [ $# -eq 2 ]; then
>> + renamelink $1 $2
>> + else
>> + for i in 2 3 4 5 S; do
>> + renamelink $1 $i
>> + done
>> + fi
>> +}
>> +
>> while [ $# -gt 0 ]; do
>> case $1 in
>> -n) notreally=1
>> @@ -221,6 +269,13 @@ case $1 in
>> ;;
>> start | stop)
>> + if [ $# -lt 4 ]
>> + then
>> + echo "Not enough arguments"
>> + usage
>> + exit 1
>> + fi
>> +
>> while [ $# -gt 0 ]; do
>> if [ $1 = "start" ]; then
>> letter=S
>> @@ -251,6 +306,32 @@ case $1 in
>> makelinks
>> ;;
>> + enable | disable)
>> + if [ $1 = "enable" ]; then
>> + letter=S
>> + elif [ $1 = "disable" ]; then
>> + letter=K
>> + else
>> + usage
>> + exit 1
>> + fi
>> + shift
>> + #
>> + if [ $# -gt 0 ]
>> + then
>> + case $1 in
>> + S|2|3|4|5)
>> + renamelinks $letter $1
>> + ;;
>> + *)
>> + usage
>> + exit 1
>> + ;;
>> + esac
>> + else
>> + renamelinks $letter
>> + fi
>> + ;;
>> *)
>> usage
>> exit 1
>
--
BRs
Sandy(Li Changqing)
More information about the yocto
mailing list