All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mariano Lopez <mariano.lopez@linux.intel.com>
To: openembedded-core@lists.openembedded.org
Subject: Re: [PATCH 1/1] copyleft_filter.bbclass: Allow to filter on name
Date: Thu, 18 Jun 2015 14:26:24 -0500	[thread overview]
Message-ID: <55831B60.2020802@linux.intel.com> (raw)
In-Reply-To: <a28814625cb2316ef4c9b164cde11ee38bb95205.1433853790.git.mariano.lopez@linux.intel.com>

ping


On 06/09/2015 07:46 AM, mariano.lopez@linux.intel.com wrote:
> From: Mariano Lopez <mariano.lopez@linux.intel.com>
>
> The archiver uses a license based filter to provide the source code.
> This patch allows to search on name based on two new variables (COPYLEFT_PN_INCLUDE,
> COPYLEFT_PN_EXCLUDE). Both variables are empty by default.
> The filter by name has higher priority than the license filter.
>
> [YOCTO # 6929]
>
> Signed-off-by: Mariano Lopez <mariano.lopez@linux.intel.com>
> ---
>   meta/classes/archiver.bbclass        | 14 ++++++--------
>   meta/classes/copyleft_filter.bbclass | 25 +++++++++++++++++++++----
>   2 files changed, 27 insertions(+), 12 deletions(-)
>
> diff --git a/meta/classes/archiver.bbclass b/meta/classes/archiver.bbclass
> index b598aa3..7b5274d 100644
> --- a/meta/classes/archiver.bbclass
> +++ b/meta/classes/archiver.bbclass
> @@ -52,14 +52,12 @@ do_ar_original[dirs] = "${ARCHIVER_OUTDIR} ${ARCHIVER_WORKDIR}"
>   python () {
>       pn = d.getVar('PN', True)
>   
> -    if d.getVar('COPYLEFT_LICENSE_INCLUDE', True) or \
> -            d.getVar('COPYLEFT_LICENSE_EXCLUDE', True):
> -        included, reason = copyleft_should_include(d)
> -        if not included:
> -            bb.debug(1, 'archiver: %s is excluded: %s' % (pn, reason))
> -            return
> -        else:
> -            bb.debug(1, 'archiver: %s is included: %s' % (pn, reason))
> +    included, reason = copyleft_should_include(d)
> +    if not included:
> +        bb.debug(1, 'archiver: %s is excluded: %s' % (pn, reason))
> +        return
> +    else:
> +        bb.debug(1, 'archiver: %s is included: %s' % (pn, reason))
>   
>       ar_src = d.getVarFlag('ARCHIVER_MODE', 'src', True)
>       ar_dumpdata = d.getVarFlag('ARCHIVER_MODE', 'dumpdata', True)
> diff --git a/meta/classes/copyleft_filter.bbclass b/meta/classes/copyleft_filter.bbclass
> index 2c1d8f1..46be7f7 100644
> --- a/meta/classes/copyleft_filter.bbclass
> +++ b/meta/classes/copyleft_filter.bbclass
> @@ -25,6 +25,14 @@ COPYLEFT_AVAILABLE_RECIPE_TYPES = 'target native nativesdk cross crosssdk cross-
>   COPYLEFT_AVAILABLE_RECIPE_TYPES[type] = 'list'
>   COPYLEFT_AVAILABLE_RECIPE_TYPES[doc] = 'Space separated list of available recipe types'
>   
> +COPYLEFT_PN_INCLUDE ?= ''
> +COPYLEFT_PN_INCLUDE[type] = 'list'
> +COPYLEFT_PN_INCLUDE[doc] = 'Space separated list of recipe names to include'
> +
> +COPYLEFT_PN_EXCLUDE ?= ''
> +COPYLEFT_PN_EXCLUDE[type] = 'list'
> +COPYLEFT_PN_EXCLUDE[doc] = 'Space separated list of recipe names to exclude'
> +
>   def copyleft_recipe_type(d):
>       for recipe_type in oe.data.typed_value('COPYLEFT_AVAILABLE_RECIPE_TYPES', d):
>           if oe.utils.inherits(d, recipe_type):
> @@ -39,9 +47,11 @@ def copyleft_should_include(d):
>       import oe.license
>       from fnmatch import fnmatchcase as fnmatch
>   
> +    included, motive = False, 'recipe did not match anything'
> +
>       recipe_type = d.getVar('COPYLEFT_RECIPE_TYPE', True)
>       if recipe_type not in oe.data.typed_value('COPYLEFT_RECIPE_TYPES', d):
> -        return False, 'recipe type "%s" is excluded' % recipe_type
> +        include, motive = False, 'recipe type "%s" is excluded' % recipe_type
>   
>       include = oe.data.typed_value('COPYLEFT_LICENSE_INCLUDE', d)
>       exclude = oe.data.typed_value('COPYLEFT_LICENSE_EXCLUDE', d)
> @@ -53,10 +63,17 @@ def copyleft_should_include(d):
>       else:
>           if is_included:
>               if reason:
> -                return True, 'recipe has included licenses: %s' % ', '.join(reason)
> +                included, motive = True, 'recipe has included licenses: %s' % ', '.join(reason)
>               else:
> -                return False, 'recipe does not include a copyleft license'
> +                included, motive = False, 'recipe does not include a copyleft license'
>           else:
> -            return False, 'recipe has excluded licenses: %s' % ', '.join(reason)
> +            included, motive = False, 'recipe has excluded licenses: %s' % ', '.join(reason)
>   
> +    if any(fnmatch(d.getVar('PN', True), name) \
> +            for name in oe.data.typed_value('COPYLEFT_PN_INCLUDE', d)):
> +        included, motive =  True, 'recipe included by name'
> +    if any(fnmatch(d.getVar('PN', True), name) \
> +            for name in oe.data.typed_value('COPYLEFT_PN_EXCLUDE', d)):
> +        included, motive = False, 'recipe excluded by name'
>   
> +    return included, motive

-- 
Mariano Lopez


      parent reply	other threads:[~2015-06-18 19:26 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <cover.1433853790.git.mariano.lopez@linux.intel.com>
2015-06-09 12:46 ` [PATCH 1/1] copyleft_filter.bbclass: Allow to filter on name mariano.lopez
2015-06-15 15:27   ` Paul Eggleton
2015-06-18 19:26   ` Mariano Lopez [this message]

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=55831B60.2020802@linux.intel.com \
    --to=mariano.lopez@linux.intel.com \
    --cc=openembedded-core@lists.openembedded.org \
    /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.