[yocto] [PATCH] update-rc.d: support enable/disable function
Changqing Li
changqing.li at windriver.com
Sun Nov 25 19:35:15 PST 2018
Ping
On 11/9/18 5:44 PM, changqing.li at windriver.com wrote:
> From: Changqing Li <changqing.li at windriver.com>
>
> Add support of enable/disable function, so that user can keep
> previous config after upgrade package
>
> Signed-off-by: Changqing Li <changqing.li at windriver.com>
> ---
> update-rc.d | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 70 insertions(+)
>
> diff --git a/update-rc.d b/update-rc.d
> index e07cf85..1ba97d3 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,43 @@ makelinks()
> done
> }
>
> +renamelink()
> +{
> + local oldstartstop newstartstop lev oldnn newnn
> + if [ "x$1" = "xS" ]; then
> + oldstartstop="K"
> + newstartstop="S"
> + else
> + oldstartstop="S"
> + newstartstop="K"
> + fi
> +
> + lev=$2
> + 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
> +
> +}
> +
> +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 +259,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 +296,31 @@ 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