ping

On 5/28/19 8:59 AM, Changqing Li wrote:
ping

On 4/30/19 2:56 PM, changqing...@windriver.com wrote:
From: Changqing Li <changqing...@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...@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)

--
_______________________________________________
yocto mailing list
yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/yocto

Reply via email to