From: Martyn Welch <martyn.welch@collabora.com>
To: Peter Kjellerstedt <peter.kjellerstedt@axis.com>,
openembedded-core@lists.openembedded.org
Subject: Re: [OE-core] [PATCHv2 2/2] insane.bbclass: Add a check for directories that are expected to be empty
Date: Thu, 28 Oct 2021 09:22:11 +0100 [thread overview]
Message-ID: <d21db240f21e6b2f3b9752784ea4d448caf16044.camel@collabora.com> (raw)
In-Reply-To: <20211027180522.19680-2-pkj@axis.com>
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.kjellerstedt@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 (#157564):
> https://lists.openembedded.org/g/openembedded-core/message/157564
> Mute This Topic: https://lists.openembedded.org/mt/86634477/6512429
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe:
> https://lists.openembedded.org/g/openembedded-core/unsub [
> martyn.welch@collabora.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
next prev parent reply other threads:[~2021-10-28 8:22 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-27 18:05 [PATCHv2 1/2] systemd: Do not install anything in /var/volatile Peter Kjellerstedt
2021-10-27 18:05 ` [PATCHv2 2/2] insane.bbclass: Add a check for directories that are expected to be empty Peter Kjellerstedt
2021-10-28 8:22 ` Martyn Welch [this message]
[not found] ` <16B224206AAEB8D4.30289@lists.openembedded.org>
2021-10-28 11:53 ` [OE-core] " Martyn Welch
2021-10-28 14:24 ` Alexandre Belloni
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=d21db240f21e6b2f3b9752784ea4d448caf16044.camel@collabora.com \
--to=martyn.welch@collabora.com \
--cc=openembedded-core@lists.openembedded.org \
--cc=peter.kjellerstedt@axis.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox