[Buildroot] [PATCH 04/11 RFC] support/scripts: do not display virtual packages in generated lists

Samuel Martin s.martin49 at gmail.com
Sat May 31 21:19:18 UTC 2014


Yann, all,

On Thu, May 29, 2014 at 10:38 PM, Yann E. MORIN <yann.morin.1998 at free.fr> wrote:
> From: "Yann E. MORIN" <yann.morin.1998 at free.fr>
>
> If a package has both a 'real' and a 'virtual' definition, consider it
> is a virtual package and do not display it in the generated package list.
>
> This is the case for jpeg and cryptodev, that are virtual packages, but
> also real (but empty) packages used to provide a prompt to enable/disable
> a choice to select an implementation. In this case, we do not want to
> list the virtul packages, but only its implementations.

s/virtul/virtual/
s/its implementations/their implementations/

>
> So, consider packages that are both real and virtual as virtual packages.
>
> Signed-off-by: "Yann E. MORIN" <yann.morin.1998 at free.fr>
> Cc: Samuel Martin <s.martin49 at gmail.com>
> ---
>  support/scripts/gen-manual-lists.py | 21 +++++++++++++++++++--
>  1 file changed, 19 insertions(+), 2 deletions(-)
>
> diff --git a/support/scripts/gen-manual-lists.py b/support/scripts/gen-manual-lists.py
> index 8dec089..10dbbd3 100644
> --- a/support/scripts/gen-manual-lists.py
> +++ b/support/scripts/gen-manual-lists.py
> @@ -278,13 +278,30 @@ class Buildroot:
>                      pkg_list.append(re.sub(r"(.*?)\.mk", r"\1", file_))
>              setattr(self, "_package_list", pkg_list)
>          for pkg in getattr(self, "_package_list"):
> -            if pattern.match(pkg):
> -                return True
> +            if type == 'real' or type == 'both':
> +                if pattern.match(pkg) and not self._exists_virt_symbol(pkg):
> +                    return True
>          return False
>
>      def _is_real_package(self, symbol):
>          return self._is_package(symbol, 'real')
>
> +    def _exists_virt_symbol(self, pkg_name):
> +        """ Return True if a symbol exists that defines the package as
> +        a virtual package, False otherwise
> +
> +        :param pkg_name:    The name of the package, for which to check if
> +                            a symbol exists defining it as a virtual package
> +
> +        """
> +        virt_pattern = "BR2_PACKAGE_HAS_" + pkg_name + "$"
> +        virt_pattern = re.sub("_", ".", virt_pattern)
> +        virt_pattern = re.compile(virt_pattern, re.IGNORECASE)
> +        for sym in self.config:
> +            if virt_pattern.match(sym.get_name()):
> +                return True
> +        return False
> +
>      def _get_pkg_name(self, symbol):
>          """ Return the package name of the specified symbol.
>
> --
> 1.8.3.2
>

With the typo fixed, you'll have my Acked-by.

Regards,

-- 
Samuel



More information about the buildroot mailing list