mirror of
https://git.yoctoproject.org/poky
synced 2026-06-01 13:09:50 +00:00
systemd.bbclass: Clean up empty parent directories
Previously, rm_systemd_unitdir() would remove one parent directory of
${systemd_unitdir} if it was empty after removing ${systemd_unitdir}.
rm_sysvinit_initddir() would not remove any parent directory. Thus, if
the only directory created in /etc was /etc/init.d, an empty /etc would
remain after the cleanup and would be packaged.
Simplify rm_systemd_unitdir() and rm_sysvinit_initddir() by rewriting
them in shell, and use rmdir -p to remove all empty parent directories.
(From OE-Core rev: 73159c0bbc636a08934f47690885d75fd37b701a)
Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
5f38058630
commit
36fb595c62
@@ -208,33 +208,28 @@ python systemd_populate_packages() {
|
|||||||
|
|
||||||
PACKAGESPLITFUNCS =+ "systemd_populate_packages"
|
PACKAGESPLITFUNCS =+ "systemd_populate_packages"
|
||||||
|
|
||||||
python rm_systemd_unitdir (){
|
rm_systemd_unitdir() {
|
||||||
import shutil
|
rm -rf ${D}${systemd_unitdir}
|
||||||
if not bb.utils.contains('DISTRO_FEATURES', 'systemd', True, False, d):
|
# Change into ${D} and use a relative path with rmdir -p to avoid
|
||||||
systemd_unitdir = oe.path.join(d.getVar("D"), d.getVar('systemd_unitdir'))
|
# having it remove ${D} if it becomes empty.
|
||||||
if os.path.exists(systemd_unitdir):
|
(cd ${D} && rmdir -p $(dirname ${systemd_unitdir#/}) 2>/dev/null || :)
|
||||||
shutil.rmtree(systemd_unitdir)
|
|
||||||
systemd_libdir = os.path.dirname(systemd_unitdir)
|
|
||||||
if (os.path.exists(systemd_libdir) and not os.listdir(systemd_libdir)):
|
|
||||||
os.rmdir(systemd_libdir)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
python rm_sysvinit_initddir (){
|
rm_sysvinit_initddir() {
|
||||||
import shutil
|
local sysv_initddir=${INIT_D_DIR}
|
||||||
sysv_initddir = oe.path.join(d.getVar("D"), (d.getVar('INIT_D_DIR') or "/etc/init.d"))
|
: ${sysv_initddir:=${sysconfdir}/init.d}
|
||||||
|
|
||||||
if bb.utils.contains('DISTRO_FEATURES', 'systemd', True, False, d) and \
|
# If systemd_system_unitdir contains anything, delete sysv_initddir
|
||||||
not bb.utils.contains('DISTRO_FEATURES', 'sysvinit', True, False, d) and \
|
if [ "$(ls -A ${D}${systemd_system_unitdir} 2>/dev/null)" ]; then
|
||||||
os.path.exists(sysv_initddir):
|
rm -rf ${D}$sysv_initddir
|
||||||
systemd_system_unitdir = oe.path.join(d.getVar("D"), d.getVar('systemd_system_unitdir'))
|
rmdir -p $(dirname ${D}$sysv_initddir) 2>/dev/null || :
|
||||||
|
fi
|
||||||
# If systemd_system_unitdir contains anything, delete sysv_initddir
|
|
||||||
if (os.path.exists(systemd_system_unitdir) and os.listdir(systemd_system_unitdir)):
|
|
||||||
shutil.rmtree(sysv_initddir)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
do_install[postfuncs] += "${RMINITDIR} "
|
do_install[postfuncs] += "${RMINITDIR}"
|
||||||
RMINITDIR:class-target = " rm_sysvinit_initddir rm_systemd_unitdir "
|
RMINITDIR = " \
|
||||||
RMINITDIR:class-nativesdk = " rm_sysvinit_initddir rm_systemd_unitdir "
|
${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '', 'rm_systemd_unitdir', d)} \
|
||||||
RMINITDIR = ""
|
${@'rm_sysvinit_initddir' if bb.utils.contains('DISTRO_FEATURES', 'systemd', True, False, d) and \
|
||||||
|
not bb.utils.contains('DISTRO_FEATURES', 'sysvinit', True, False, d) else ''} \
|
||||||
|
"
|
||||||
|
RMINITDIR:class-native = ""
|
||||||
|
|||||||
Reference in New Issue
Block a user