On Wed, 2021-10-27 at 20:05 +0200, Peter Kjellerstedt wrote: > The empty-dirs QA check verifies that all directories specified in > QA_EMPTY_DIRS are empty. It is possible to specify why a directory is > expected to be empty by defining QA_EMPTY_DIRS_RECOMMENDATION:<path>, > which will then be included in the error message if the directory is > not empty. If it is not specified for a directory, then "but it is > expected to be empty" will be used. > > Signed-off-by: Peter Kjellerstedt <peter.kjellerst...@axis.com> > --- > > PATCHv2: No changes. > > meta/classes/insane.bbclass | 33 ++++++++++++++++++++++++++++++++- > meta/conf/documentation.conf | 2 ++ > 2 files changed, 34 insertions(+), 1 deletion(-) > > diff --git a/meta/classes/insane.bbclass > b/meta/classes/insane.bbclass > index 1e2f1b768a..1675adf6ac 100644 > --- a/meta/classes/insane.bbclass > +++ b/meta/classes/insane.bbclass > @@ -37,7 +37,7 @@ ERROR_QA ?= "dev-so debug-deps dev-deps debug-files > arch pkgconfig la \ > configure-gettext perllocalpod shebang-size \ > already-stripped installed-vs-shipped ldflags compile- > host-path \ > install-host-path pn-overrides unknown-configure-option > \ > - useless-rpaths rpaths staticdev \ > + useless-rpaths rpaths staticdev empty-dirs \ > " > # Add usrmerge QA check based on distro feature > ERROR_QA:append = "${@bb.utils.contains('DISTRO_FEATURES', > 'usrmerge', ' usrmerge', '', d)}" > @@ -50,6 +50,21 @@ ALL_QA = "${WARN_QA} ${ERROR_QA}" > > UNKNOWN_CONFIGURE_WHITELIST ?= "--enable-nls --disable-nls -- > disable-silent-rules --disable-dependency-tracking --with-libtool- > sysroot --disable-static" > > +# This is a list of directories that are expected to be empty. > +QA_EMPTY_DIRS ?= " \ > + /dev/pts \ > + /media \ > + /proc \ > + /run \ > + /tmp \ > + ${localstatedir}/run \ > + ${localstatedir}/volatile \ > +" > +# It is possible to specify why a directory is expected to be empty > by defining > +# QA_EMPTY_DIRS_RECOMMENDATION:<path>, which will then be included > in the error > +# message if the directory is not empty. If it is not specified for > a directory, > +# then "but it is expected to be empty" will be used. > +
One thing I've just noticed is that this is more strictly limited to ensuring certain directories are empty, rather than ensuring certain paths (which may include the existance of an empty directory or a file). Could this be modified to allow wildcard entries, as with the proposal I originally submitted? > def package_qa_clean_path(path, d, pkg=None): > """ > Remove redundant paths from the path for display. If pkg isn't > set then > @@ -885,6 +900,22 @@ def package_qa_check_unlisted_pkg_lics(package, > d, messages): > "listed in LICENSE" % (package, ' > '.join(unlisted))) > return False > > +QAPKGTEST[empty-dirs] = "package_qa_check_empty_dirs" > +def package_qa_check_empty_dirs(pkg, d, messages): > + """ > + Check for the existence of files in directories that are > expected to be > + empty. > + """ > + > + pkgd = oe.path.join(d.getVar('PKGDEST'), pkg) > + for dir in (d.getVar('QA_EMPTY_DIRS') or "").split(): > + empty_dir = oe.path.join(pkgd, dir) > + if os.path.exists(empty_dir) and os.listdir(empty_dir): > + recommendation = > (d.getVar('QA_EMPTY_DIRS_RECOMMENDATION:' + dir) or > + "but it is expected to be empty") > + msg = "%s installs files in %s, %s" % (pkg, dir, > recommendation) > + oe.qa.add_message(messages, "empty-dirs", msg) > + > def package_qa_check_encoding(keys, encode, d): > def check_encoding(key, enc): > sane = True > diff --git a/meta/conf/documentation.conf > b/meta/conf/documentation.conf > index 80ad8e10d5..45cd01374a 100644 > --- a/meta/conf/documentation.conf > +++ b/meta/conf/documentation.conf > @@ -345,6 +345,8 @@ PYPI_SRC_URI[doc] = "The URI to use to fetch from > pypi, default uses pythonhoste > > #Q > > +QA_EMPTY_DIRS[doc] = "A list of directories that are expected to be > empty." > +QA_EMPTY_DIRS_RECOMMENDATION[doc] = "This specifies a recommendation > for a directory why it must be empty, which will be included in the > error message if the directory is not empty." > QMAKE_PROFILES[doc] = "Specifies your own subset of .pro files to be > built for use with qmake." > > #R > > >
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#157579): https://lists.openembedded.org/g/openembedded-core/message/157579 Mute This Topic: https://lists.openembedded.org/mt/86634477/21656 Group Owner: openembedded-core+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-