Patchwork insane.bbclass: add qa_package_check_name

login
register
mail settings
Submitter Constantin Musca
Date Nov. 13, 2012, 2:08 p.m.
Message ID <1352815729-7409-1-git-send-email-constantinx.musca@intel.com>
Download mbox | patch
Permalink /patch/38929/
State New
Headers show

Comments

Constantin Musca - Nov. 13, 2012, 2:08 p.m.
Check if package names match the [a-z0-9.+-]+ regular
expression

[YOCTO #3139]

Signed-off-by: Constantin Musca <constantinx.musca@intel.com>
---
 meta/classes/insane.bbclass | 12 ++++++++++++
 1 file changed, 12 insertions(+)
Richard Purdie - Nov. 13, 2012, 2:45 p.m.
On Tue, 2012-11-13 at 16:08 +0200, Constantin Musca wrote:
> Check if package names match the [a-z0-9.+-]+ regular
> expression
> 
> [YOCTO #3139]
> 
> Signed-off-by: Constantin Musca <constantinx.musca@intel.com>
> ---
>  meta/classes/insane.bbclass | 12 ++++++++++++
>  1 file changed, 12 insertions(+)
> 
> diff --git a/meta/classes/insane.bbclass b/meta/classes/insane.bbclass
> index d51d1a1..f22e620 100644
> --- a/meta/classes/insane.bbclass
> +++ b/meta/classes/insane.bbclass
> @@ -235,6 +235,15 @@ 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_name(name, d):
> +    """
> +    Check if the package name matches the [a-z0-9.+-]+ regular expression
> +    """
> +    import re
> +    pattern = re.compile("^[a-z0-9.+-]+$")


Please stash this somewhere outside the function. Compiling regexps is
expensive, using them is much less so. We'll get much performance if we
just compile it once.

Cheers,

Richard

> +    if not pattern.match(name):
> +        package_qa_handle_error("pkgname", "%s doesn't match the [a-z0-9.+-]+ regex\n" % name, d)
> +
>  def package_qa_check_libdir(d):
>      """
>      Check for wrong library installation paths. For instance, catch
> @@ -780,6 +789,9 @@ python do_package_qa () {
>                  errorchecks.append(g[testmatrix[e]])
>  
>          bb.note("Checking Package: %s" % package)
> +        # Check package name
> +        package_qa_check_name(package, d)
> +
>          path = "%s/%s" % (pkgdest, package)
>          if not package_qa_walk(path, warnchecks, errorchecks, skip, package, d):
>              walk_sane  = False

Patch

diff --git a/meta/classes/insane.bbclass b/meta/classes/insane.bbclass
index d51d1a1..f22e620 100644
--- a/meta/classes/insane.bbclass
+++ b/meta/classes/insane.bbclass
@@ -235,6 +235,15 @@  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_name(name, d):
+    """
+    Check if the package name matches the [a-z0-9.+-]+ regular expression
+    """
+    import re
+    pattern = re.compile("^[a-z0-9.+-]+$")
+    if not pattern.match(name):
+        package_qa_handle_error("pkgname", "%s doesn't match the [a-z0-9.+-]+ regex\n" % name, d)
+
 def package_qa_check_libdir(d):
     """
     Check for wrong library installation paths. For instance, catch
@@ -780,6 +789,9 @@  python do_package_qa () {
                 errorchecks.append(g[testmatrix[e]])
 
         bb.note("Checking Package: %s" % package)
+        # Check package name
+        package_qa_check_name(package, d)
+
         path = "%s/%s" % (pkgdest, package)
         if not package_qa_walk(path, warnchecks, errorchecks, skip, package, d):
             walk_sane  = False