All of lore.kernel.org
 help / color / mirror / Atom feed
From: Richard Purdie <richard.purdie@linuxfoundation.org>
To: Radu Moisan <radu.moisan@intel.com>
Cc: openembedded-core@lists.openembedded.org
Subject: Re: [PATCH 1/1] insane.bbclass: add library dir sanity check
Date: Fri, 21 Sep 2012 11:19:32 +0100	[thread overview]
Message-ID: <1348222772.10108.46.camel@ted> (raw)
In-Reply-To: <f8aa3721ae0bbbb972063cf38be6339e11964a37.1348046845.git.radu.moisan@intel.com>

On Wed, 2012-09-19 at 12:32 +0300, Radu Moisan wrote:
> Check in ${PKGD} for libraries in wrong locations.
> Trigger a warning if so.
> Eg. Catch recipe installing /lib/bar.so when ${base_libdir}="lib32"
> or installing in /usr/lib64 when ${libdir}="/usr/lib"
> 
> [Yocto #2038]
> 
> Signed-off-by: Radu Moisan <radu.moisan@intel.com>
> ---
>  meta/classes/insane.bbclass |   39 ++++++++++++++++++++++++++++++++++++++-
>  1 file changed, 38 insertions(+), 1 deletion(-)
> 
> diff --git a/meta/classes/insane.bbclass b/meta/classes/insane.bbclass
> index e74eb3f..425e93a 100644
> --- a/meta/classes/insane.bbclass
> +++ b/meta/classes/insane.bbclass
> @@ -113,7 +113,7 @@ def package_qa_get_machine_dict():
>  
> 
>  # Currently not being used by default "desktop"
> -WARN_QA ?= "ldflags useless-rpaths rpaths unsafe-references-in-binaries unsafe-references-in-scripts staticdev"
> +WARN_QA ?= "ldflags useless-rpaths rpaths unsafe-references-in-binaries unsafe-references-in-scripts staticdev libdir"
>  ERROR_QA ?= "dev-so debug-deps dev-deps debug-files arch la2 pkgconfig la perms"
>  
>  def package_qa_clean_path(path,d):
> @@ -212,6 +212,40 @@ def package_qa_check_staticdev(path, name, d, elf, messages):
>          messages.append("non -staticdev package contains static .a library: %s path '%s'" % \
>                   (name, package_qa_clean_path(path,d)))
>  
> +def package_qa_check_libdir(d):
> +    """
> +    Check for wrong library installation paths. For instance, catch
> +    recipes installing /lib/bar.so when ${base_libdir}="lib32" or
> +    installing in /usr/lib64 when ${libdir}="/usr/lib"
> +    """
> +    import re
> +
> +    pkgd = d.getVar('PKGD', True)
> +    base_libdir = d.getVar("base_libdir",True) + os.sep
> +    libdir = d.getVar("libdir", True) + os.sep
> +    exec_prefix = d.getVar("exec_prefix", True) + os.sep
> +
> +    messages = []
> +    my_files = []
> +
> +    for root, dirs, files in os.walk(pkgd):
> +        for file in files:
> +            full_path = os.path.join(root,file)
> +            my_files.append(full_path[len(pkgd):])
> +
> +    lib_re = re.compile("^/lib.*\.so")
> +    exec_re = re.compile("^%s.*/lib*.\.so" % exec_prefix)
> +
> +    for file in my_files:
> +        if lib_re.match(file):
> +            if base_libdir not in file:
> +                messages.append("Found library in wrong location: %s" % file)
> +        if exec_re.match(file):
> +            if libdir not in file:
> +                messages.append("Found library in wrong location: %s" % file)
> +    if messages:
> +        package_qa_handle_error("libdir", "\n".join(messages), d)
> +
>  QAPATHTEST[debug-files] = "package_qa_check_dbg"
>  def package_qa_check_dbg(path, name, d, elf, messages):
>      """
> @@ -688,6 +722,9 @@ python do_package_qa () {
>              rdepends_sane = False
>  
> 
> +    if 'libdir' in (d.getVar("WARN_QA", True) or "").split():
> +        package_qa_check_libdir(d)


I merged this but added a follow up with one other tweak since this
wouldn't work in the case libdir was in ERROR_QA:

http://git.yoctoproject.org/cgit.cgi/poky/commit/?id=30b7781650e3ff092d04889beab2e87eaff29cdb

I had some other cleanup in mind so I wrote the patch as that was the
easiest way to explain it :)

Cheers,

Richard




  reply	other threads:[~2012-09-21 10:32 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-09-19  9:32 [PATCH 0/1]insane.bbclass: add library dir sanity check Radu Moisan
2012-09-19  9:32 ` [PATCH 1/1] insane.bbclass: " Radu Moisan
2012-09-21 10:19   ` Richard Purdie [this message]
2012-09-21 22:22 ` [PATCH 0/1]insane.bbclass: " Saul Wold

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=1348222772.10108.46.camel@ted \
    --to=richard.purdie@linuxfoundation.org \
    --cc=openembedded-core@lists.openembedded.org \
    --cc=radu.moisan@intel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.