Re: [gentoo-portage-dev] [PATCH] QA warning for files in /var/{cache,lib,lock,run}/ or /run/ (bug 493154)
On Thursday 05 December 2013 15:57:17 sebastianlut...@gmx.de wrote: --- a/bin/misc-functions.sh +++ b/bin/misc-functions.sh @@ -242,6 +242,11 @@ install_qa_check() { [[ -d ${ED}/$x ]] f+= $x\n done + # It's ok create these directories, but not to install into them. (bug 493154) our style uses #12345 rather than (bug 12345) # It's ok create these directories, but not to install into them. #493154 + for x in var/cache var/lib var/lock var/run run ; do + [[ -d ${ED}/$x ]] [[ $(find ${ED}/${x} -prune -empty) = ]] f+= $x\n the -d check doesn't handle symlinks correctly ... baselayout would install /var/run - /run, and the -d would deref that to the real symlink. however, `find` will not descend into the symlink, so we end up being saved by that. we have -z for detecting empty output rather than comparing to an empty string non-builtin vars should use braces, so that'd be ${x}. i know some of the code in here doesn't follow that, but we should be marching in that direction with new code. if [[ -n $f ]] ; then eqawarn QA Notice: This ebuild installs into the following deprecated directories: this warning is incorrect for these paths. we need to create a new warning that clearly explains what is going on. i'll send out a new version. -mike signature.asc Description: This is a digitally signed message part.
[gentoo-portage-dev] [PATCH v2] QA warning for files in /var/{cache,lock,run}/ or /run/
From: Sebastian Luther sebastianlut...@gmx.de No warning will be issued if the directories are created, but are left empty. URL: https://bugs.gentoo.org/493154 --- bin/misc-functions.sh | 19 ++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/bin/misc-functions.sh b/bin/misc-functions.sh index bd99def..2c4d248 100755 --- a/bin/misc-functions.sh +++ b/bin/misc-functions.sh @@ -241,13 +241,30 @@ install_qa_check() { for x in etc/app-defaults usr/man usr/info usr/X11R6 usr/doc usr/locale ; do [[ -d ${ED}/$x ]] f+= $x\n done - if [[ -n $f ]] ; then eqawarn QA Notice: This ebuild installs into the following deprecated directories: eqawarn eqawarn $f fi + # It's ok create these directories, but not to install into them. #493154 + # TODO: We should add var/lib to this list. + f= + for x in var/cache var/lock var/run run ; do + if [[ ! -L ${ED}/${x} -d ${ED}/${x} ]] ; then + if [[ -z $(find ${ED}/${x} -prune -empty) ]] ; then + f+=$(cd ${ED}; find ${x} -printf ' %p\n') + fi + fi + done + if [[ -n ${f} ]] ; then + eqawarn QA Notice: This ebuild installs into paths that should be created at runtime. + eqawarn To fix, simply do not install into these directories. Instead, your package + eqawarn should create dirs on the fly at runtime as needed via init scripts/etc... + eqawarn + eqawarn ${f} + fi + set +f f= for x in ${ED}etc/udev/rules.d/* ${ED}lib*/udev/rules.d/* ; do -- 1.8.4.3