[oe] [PATCH][meta-networking] systemd.bbclass: delete dangling symblink
Jian Liu
jian.liu at windriver.com
Wed Jul 8 03:23:15 UTC 2015
If only systemd is enabled, scripts of sysvinit under "/etc/init.d/"
will be deleted. But there may be some symblinks /etc/rc*/ that
points to the files under "/etc/init.d/". We need to delete them.
Signed-off-by: Jian Liu <jian.liu at windriver.com>
---
meta/classes/systemd.bbclass | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)
diff --git a/meta/classes/systemd.bbclass b/meta/classes/systemd.bbclass
index c34884b..ff3e0f8 100644
--- a/meta/classes/systemd.bbclass
+++ b/meta/classes/systemd.bbclass
@@ -184,6 +184,31 @@ do_install[postfuncs] += "rm_systemd_unitdir "
python rm_sysvinit_initddir (){
import shutil
sysv_initddir = oe.path.join(d.getVar("D", True), (d.getVar('INIT_D_DIR', True) or "/etc/init.d"))
+ sysv_rcdirs = []
+ cpath = oe.cachedpath.CachedPath()
+
+ def check_dangling_sym(file,inst_root):
+ if not cpath.islink(file):
+ return False
+
+ rtarget = cpath.realpath(file, inst_root, True, assume_dir = True)
+ if not cpath.lexists(rtarget):
+ return True
+
+ return False
+
+ # delete dangling symblink under rc*
+ def rm_sysv_rcdirs():
+ dest = d.getVar("D", True)
+ rcdirs = "rc.d rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d rcS.d"
+
+ for rcdir in rcdirs.split():
+ path = dest + "/etc/" + rcdir
+ for walk_root, walk_dirs, walk_files in cpath.walk(path):
+ for file in walk_files:
+ file = walk_root + "/" + file
+ if check_dangling_sym(file, walk_root):
+ sysv_rcdirs.append(file)
if bb.utils.contains('DISTRO_FEATURES', 'systemd', True, False, d) and \
not bb.utils.contains('DISTRO_FEATURES', 'sysvinit', True, False, d) and \
@@ -193,5 +218,9 @@ python rm_sysvinit_initddir (){
# If systemd_unitdir contains anything, delete sysv_initddir
if (os.path.exists(systemd_unitdir) and os.listdir(systemd_unitdir)):
shutil.rmtree(sysv_initddir)
+
+ rm_sysv_rcdirs()
+ for rcdir in sysv_rcdirs:
+ os.remove(rcdir)
}
do_install[postfuncs] += "rm_sysvinit_initddir "
--
1.8.5.2.233.g932f7e4
More information about the Openembedded-devel
mailing list