Hello, Usually, files under /etc/ should be marked by CONFFILES so that package manager can handle it well when package ugprades.
Please feel free to let me know if you have any suggestions, and I will send patches later (including set CONFFILES for the recipes) if this is OK. [YOCTO #8413] Signed-off-by: Robert Yang <[email protected]> --- meta/classes/insane.bbclass | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/meta/classes/insane.bbclass b/meta/classes/insane.bbclass index fb04215..30fc41b 100644 --- a/meta/classes/insane.bbclass +++ b/meta/classes/insane.bbclass @@ -32,7 +32,7 @@ WARN_QA ?= "ldflags useless-rpaths rpaths staticdev libdir xorg-driver-abi \ installed-vs-shipped compile-host-path install-host-path \ pn-overrides infodir build-deps file-rdeps \ unknown-configure-option symlink-to-sysroot multilib \ - invalid-pkgconfig host-user-contaminated \ + invalid-pkgconfig host-user-contaminated conffiles \ " ERROR_QA ?= "dev-so debug-deps dev-deps debug-files arch pkgconfig la \ perms dep-cmp pkgvarcheck perm-config perm-line perm-link \ @@ -1020,6 +1020,36 @@ def package_qa_check_host_user(path, name, d, elf, messages): return False return True +QAPATHTEST[conffiles] = "package_qa_check_conffiles" +def package_qa_check_conffiles(path, name, d, elf, messages): + """ Check files in ${sysconfdir} are marked by CONFFILES """ + + if os.path.islink(path) or not os.path.exists(path): + return True + + sysconfdir = d.getVar('sysconfdir', True) + dest = d.getVar('PKGDEST', True) + sysconfdir_path = os.path.join(os.path.join(dest, name), \ + sysconfdir.lstrip('/')) + + if not path.startswith(sysconfdir_path): + return True + else: + conffiles = d.getVar('CONFFILES_%s' % name, True) + if conffiles == None: + conffiles = d.getVar('CONFFILES', True) or "" + conffiles = conffiles.split() + conf_orig_list = files_from_filevars(conffiles) + # PKGDEST + name + pkg_root = os.path.join(dest, name) + # Prepend "." to match items in files_from_filevars() + path_no_root = "." + path.replace(pkg_root, '') + if not conffiles or path_no_root not in conf_orig_list: + messages["conffiles"] = "%s: %s is not in CONFFILES" % (name, path) + return False + + return True + # The PACKAGE FUNC to scan each package python do_package_qa () { import subprocess -- 1.7.9.5 -- _______________________________________________ Openembedded-core mailing list [email protected] http://lists.openembedded.org/mailman/listinfo/openembedded-core
