On Sun, 2021-08-01 at 00:56 +0100, Sam James wrote:
> This adds two tmpfiles related QA checks:
> 1) Verify packages don't install tmpfiles to /etc/tmpfiles.d, which
> is a deprecated location;
> 
> 2) Check whether packages inherit tmpfiles.eclass if they're
> installing files to /usr/lib/tmpfiles.d.
> 
> (This helps to catch packages not calling tmpfiles_process
> in pkg_postinst).
> 
> Signed-off-by: Sam James <s...@gentoo.org>
> ---
>  metadata/install-qa-check.d/60tmpfiles-paths | 37 ++++++++++++++++++++
>  1 file changed, 37 insertions(+)
>  create mode 100644 metadata/install-qa-check.d/60tmpfiles-paths
> 
> diff --git a/metadata/install-qa-check.d/60tmpfiles-paths 
> b/metadata/install-qa-check.d/60tmpfiles-paths
> new file mode 100644
> index 0000000000000..2c56c031bd1e3
> --- /dev/null
> +++ b/metadata/install-qa-check.d/60tmpfiles-paths
> @@ -0,0 +1,37 @@
> +# Copyright 2021 Gentoo Authors
> +# Distributed under the terms of the GNU General Public License v2
> +
> +# QA check: ensure that packages installing tmpfiles configuration inherit 
> the eclass
> +# Maintainer: Sam James <s...@gentoo.org>
> +
> +# Implements two checks:
> +# 1) Installation to /etc/tmpfiles.d (which is a deprecated location);
> +# 2) Installation of any tmpfiles to /usr/lib/tmpfiles.d without inheriting 
> the eclass
> +#    (needed for tmpfiles_process in pkg_postinst)
> +tmpfiles_check() {
> +     # Check 1
> +     # Scan image for files in /etc/tmpfiles.d which is a deprecated location
> +     if [[ -d "${ED}"/etc/tmpfiles.d/ ]] ; then

Nit: normally quoting is not necessary inside [[ ... ]].

> +             eqawarn "QA Notice: files installed to the deprecated 
> /etc/tmpfiles.d location"
> +             eqawarn "tmpfiles configuration files must be installed to 
> /usr/lib/tmpfiles.d!"
> +     fi
> +
> +     # Check 2
> +     # We're now going to check for whether we install files to 
> /usr/lib/tmpfiles.d without
> +     # inheriting the eclass (weak catch for ebuilds not calling 
> tmpfiles_process in pkg_postinst)
> +
> +     # No need to carry on if we're inheriting the eclass
> +     if has tmpfiles ${INHERITED} ; then
> +             return
> +     fi
> +
> +     if [[ -d "${ED}"/usr/lib/tmpfiles.d/ ]] ; then
> +             eqawarn "QA Notice: package is installing tmpfiles without 
> inheriting tmpfiles.eclass!"
> +             eqawarn "Packages must inherit tmpfiles.eclass then call 
> tmpfiles_process in pkg_postinst."
> +     fi
> +}
> +
> +tmpfiles_check
> +: # guarantee successful exit
> +
> +# vim:ft=sh

-- 
Best regards,
Michał Górny



Reply via email to