Patchwork perl: blacklist perl-module-cpanplus-internals-source-sqlite for perl-modules

login
register
mail settings
Submitter Roman Khimov
Date Jan. 8, 2011, 8:32 p.m.
Message ID <1294518772-24804-1-git-send-email-khimov@altell.ru>
Download mbox | patch
Permalink /patch/201/
State Accepted
Headers show

Comments

Roman Khimov - Jan. 8, 2011, 8:32 p.m.
It has runtime dependencies on libdbd-sqlite-perl and libdbix-simple-perl
which doesn't get built automatically if not required as build time dependency
for something.

It's not possible to add them as build time dependencies for
perl itself since they're in turn depend on perl making a circular dependency
(and they _really_ depend on perl because they build binaries, so no way to
cheat by making this recipes not to depend on perl).

It's also not correct to downgrade this runtime dependency to recommendation,
since the module is really unusable without its dependencies.

The most annoying thing about all this is that this dependency situation renders
perl-modules package uninstallable by itself, failing with something like:

 Collected errors:
  * satisfy_dependencies_for: Cannot satisfy the following dependencies for
 task-sdk-native:
  *    libdbd-sqlite-perl *    libdbix-simple-perl *

So the best way to solve it IMO is to just blacklist it from perl-modules
since the value of this module is questionable. It's experimental CPANPLUS
backend that's not used by default, you have to specifically configure your
perl to use it. And if you _really_ want to use it - the module package itself
will still contain proper dependencies, you just need to get them built and
installed.

The problem only exists in perl 5.10.1, but 5.8.8 doesn't have this module, so
blacklisting in common .inc doesn't hurt.

Signed-off-by: Roman I Khimov <khimov@altell.ru>
---
 recipes/perl/perl.inc       |    2 +-
 recipes/perl/perl_5.10.1.bb |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
Khem Raj - Jan. 8, 2011, 11:22 p.m.
On 1/8/2011 12:32 PM, Roman I Khimov wrote:
> It has runtime dependencies on libdbd-sqlite-perl and libdbix-simple-perl
> which doesn't get built automatically if not required as build time dependency
> for something.
>
> It's not possible to add them as build time dependencies for
> perl itself since they're in turn depend on perl making a circular dependency
> (and they _really_ depend on perl because they build binaries, so no way to
> cheat by making this recipes not to depend on perl).
>
> It's also not correct to downgrade this runtime dependency to recommendation,
> since the module is really unusable without its dependencies.
>
> The most annoying thing about all this is that this dependency situation renders
> perl-modules package uninstallable by itself, failing with something like:
>
>   Collected errors:
>    * satisfy_dependencies_for: Cannot satisfy the following dependencies for
>   task-sdk-native:
>    *    libdbd-sqlite-perl *    libdbix-simple-perl *
>
> So the best way to solve it IMO is to just blacklist it from perl-modules
> since the value of this module is questionable. It's experimental CPANPLUS
> backend that's not used by default, you have to specifically configure your
> perl to use it. And if you _really_ want to use it - the module package itself
> will still contain proper dependencies, you just need to get them built and
> installed.
>
> The problem only exists in perl 5.10.1, but 5.8.8 doesn't have this module, so
> blacklisting in common .inc doesn't hurt.
>
> Signed-off-by: Roman I Khimov<khimov@altell.ru>

Thanks for doing it. May be now distros can use 5.10.1 but 5.12.1 is 
already out :)

Acked-by: Khem Raj <raj.khem@gmail.com>

> ---
>   recipes/perl/perl.inc       |    2 +-
>   recipes/perl/perl_5.10.1.bb |    2 +-
>   2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/recipes/perl/perl.inc b/recipes/perl/perl.inc
> index ddde0b8..3d8b9bb 100644
> --- a/recipes/perl/perl.inc
> +++ b/recipes/perl/perl.inc
> @@ -1,7 +1,7 @@
>   # helper functions for perl
>   def all_perl_packages(d):
>       depchains = (d.getVar("DEPCHAIN_POST", True) or "").split()
> -    blacklist = ["perl-modules", "perl-misc", "perl-pod", "perl-doc"]
> +    blacklist = ["perl-modules", "perl-misc", "perl-pod", "perl-doc", "perl-module-cpanplus-internals-source-sqlite", "perl-module-cpanplus-internals-source-sqlite-tie"]
>       for pkg in d.getVar("PACKAGES", True).split():
>           if not pkg in blacklist and not any(pkg.endswith(post) for post in depchains):
>               yield pkg
> diff --git a/recipes/perl/perl_5.10.1.bb b/recipes/perl/perl_5.10.1.bb
> index 4e6bc33..33ddffe 100644
> --- a/recipes/perl/perl_5.10.1.bb
> +++ b/recipes/perl/perl_5.10.1.bb
> @@ -5,7 +5,7 @@ LICENSE = "Artistic|GPLv1+"
>   PRIORITY = "optional"
>   # We need gnugrep (for -I)
>   DEPENDS = "virtual/db perl-native grep-native"
> -PR = "r19"
> +PR = "r20"
>
>   # 5.10.1 has Module::Build built-in
>   PROVIDES += "libmodule-build-perl"

Patch

diff --git a/recipes/perl/perl.inc b/recipes/perl/perl.inc
index ddde0b8..3d8b9bb 100644
--- a/recipes/perl/perl.inc
+++ b/recipes/perl/perl.inc
@@ -1,7 +1,7 @@ 
 # helper functions for perl
 def all_perl_packages(d):
     depchains = (d.getVar("DEPCHAIN_POST", True) or "").split()
-    blacklist = ["perl-modules", "perl-misc", "perl-pod", "perl-doc"]
+    blacklist = ["perl-modules", "perl-misc", "perl-pod", "perl-doc", "perl-module-cpanplus-internals-source-sqlite", "perl-module-cpanplus-internals-source-sqlite-tie"]
     for pkg in d.getVar("PACKAGES", True).split():
         if not pkg in blacklist and not any(pkg.endswith(post) for post in depchains):
             yield pkg
diff --git a/recipes/perl/perl_5.10.1.bb b/recipes/perl/perl_5.10.1.bb
index 4e6bc33..33ddffe 100644
--- a/recipes/perl/perl_5.10.1.bb
+++ b/recipes/perl/perl_5.10.1.bb
@@ -5,7 +5,7 @@  LICENSE = "Artistic|GPLv1+"
 PRIORITY = "optional"
 # We need gnugrep (for -I)
 DEPENDS = "virtual/db perl-native grep-native"
-PR = "r19"
+PR = "r20"
 
 # 5.10.1 has Module::Build built-in
 PROVIDES += "libmodule-build-perl"