Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
cave/paludis: dev-perl/WWW-RobotRules blocked
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Unsupported Software
View previous topic :: View next topic  
Author Message
andi456
Apprentice
Apprentice


Joined: 06 Mar 2005
Posts: 216
Location: Germany

PostPosted: Sat Apr 12, 2014 9:05 am    Post subject: cave/paludis: dev-perl/WWW-RobotRules blocked Reply with quote

Hi,

somehow the update of dev-perl/WWW-RobotRules is being blocked by cave:
Code:
u   dev-perl/WWW-RobotRules:0::gentoo 6.20.0 to ::installed replacing 6.10.0-r1
    build_options: symbols=split -dwarf_compress -optional_tests -trace work=tidyup
    Reasons: target, dev-perl/libwww-perl-6.50.0:0::installed
    8.85 kBytes to download

Total: 1 upgrades, 8.85 kBytes to download

I encountered the following errors:

!   dev-lang/perl
    Reasons: !!<dev-lang/perl-5.8.8-r8 from perl-core/Encode-2.470.0:0::installed, app-admin/perl-cleaner-2.7:0::installed, app-text/qpdf-4.1.0:0::installed, 66 more
    Unsuitable candidates:
      * dev-lang/perl-5.12.3-r1:0::gentoo
        Did not meet =dev-lang/perl-5.16*, use existing if possible, installing to / from virtual/perl-MIME-Base64-3.130.0-r2:0::installed
        Did not meet =dev-lang/perl-5.18*, use existing if possible, installing to / from virtual/perl-libnet-1.230.0:0::installed
        Did not meet >=dev-lang/perl-5.16, use existing if possible, installing to / from dev-perl/URI-1.600.0:0::installed (and 8 more)
        Did not meet dev-lang/perl:0/5.16=[-build(-)], use existing if possible, installing to / from dev-perl/libwww-perl-6.50.0:0::installed (and 2 more)
      * dev-lang/perl-5.12.4:0::gentoo
        Did not meet =dev-lang/perl-5.16*, use existing if possible, installing to / from virtual/perl-MIME-Base64-3.130.0-r2:0::installed
        Did not meet =dev-lang/perl-5.18*, use existing if possible, installing to / from virtual/perl-libnet-1.230.0:0::installed
        Did not meet >=dev-lang/perl-5.16, use existing if possible, installing to / from dev-perl/URI-1.600.0:0::installed (and 8 more)
        Did not meet dev-lang/perl:0/5.16=[-build(-)], use existing if possible, installing to / from dev-perl/libwww-perl-6.50.0:0::installed (and 2 more)
      * dev-lang/perl-5.12.4-r1:0::gentoo
        Did not meet =dev-lang/perl-5.16*, use existing if possible, installing to / from virtual/perl-MIME-Base64-3.130.0-r2:0::installed
        Did not meet =dev-lang/perl-5.18*, use existing if possible, installing to / from virtual/perl-libnet-1.230.0:0::installed
        Did not meet >=dev-lang/perl-5.16, use existing if possible, installing to / from dev-perl/URI-1.600.0:0::installed (and 8 more)
        Did not meet dev-lang/perl:0/5.16=[-build(-)], use existing if possible, installing to / from dev-perl/libwww-perl-6.50.0:0::installed (and 2 more)
      * dev-lang/perl-5.12.4-r2:0::gentoo
        Did not meet =dev-lang/perl-5.16*, use existing if possible, installing to / from virtual/perl-MIME-Base64-3.130.0-r2:0::installed
        Did not meet =dev-lang/perl-5.18*, use existing if possible, installing to / from virtual/perl-libnet-1.230.0:0::installed
        Did not meet >=dev-lang/perl-5.16, use existing if possible, installing to / from dev-perl/URI-1.600.0:0::installed (and 8 more)
        Did not meet dev-lang/perl:0/5.16=[-build(-)], use existing if possible, installing to / from dev-perl/libwww-perl-6.50.0:0::installed (and 2 more)
      * dev-lang/perl-5.12.5:0::gentoo
        Did not meet =dev-lang/perl-5.16*, use existing if possible, installing to / from virtual/perl-MIME-Base64-3.130.0-r2:0::installed
        Did not meet =dev-lang/perl-5.18*, use existing if possible, installing to / from virtual/perl-libnet-1.230.0:0::installed
        Did not meet >=dev-lang/perl-5.16, use existing if possible, installing to / from dev-perl/URI-1.600.0:0::installed (and 8 more)
        Did not meet dev-lang/perl:0/5.16=[-build(-)], use existing if possible, installing to / from dev-perl/libwww-perl-6.50.0:0::installed (and 2 more)
      * dev-lang/perl-5.14.1:0::gentoo
        Masked by repository
            Torsten Veller <tove@gentoo.org> (18 Jun 2011) Mask perl-5.14. See tracker bug #356171
        Did not meet =dev-lang/perl-5.16*, use existing if possible, installing to / from virtual/perl-MIME-Base64-3.130.0-r2:0::installed
        Did not meet =dev-lang/perl-5.18*, use existing if possible, installing to / from virtual/perl-libnet-1.230.0:0::installed
        Did not meet >=dev-lang/perl-5.16, use existing if possible, installing to / from dev-perl/URI-1.600.0:0::installed (and 8 more)
        Did not meet dev-lang/perl:0/5.16=[-build(-)], use existing if possible, installing to / from dev-perl/libwww-perl-6.50.0:0::installed (and 2 more)
      * dev-lang/perl-5.14.1-r1:0::gentoo
        Masked by repository
            Torsten Veller <tove@gentoo.org> (18 Jun 2011) Mask perl-5.14. See tracker bug #356171
        Did not meet =dev-lang/perl-5.16*, use existing if possible, installing to / from virtual/perl-MIME-Base64-3.130.0-r2:0::installed
        Did not meet =dev-lang/perl-5.18*, use existing if possible, installing to / from virtual/perl-libnet-1.230.0:0::installed
        Did not meet >=dev-lang/perl-5.16, use existing if possible, installing to / from dev-perl/URI-1.600.0:0::installed (and 8 more)
        Did not meet dev-lang/perl:0/5.16=[-build(-)], use existing if possible, installing to / from dev-perl/libwww-perl-6.50.0:0::installed (and 2 more)
      * dev-lang/perl-5.14.2:0::gentoo
        Masked by repository
            Torsten Veller <tove@gentoo.org> (18 Jun 2011) Mask perl-5.14. See tracker bug #356171
        Did not meet =dev-lang/perl-5.16*, use existing if possible, installing to / from virtual/perl-MIME-Base64-3.130.0-r2:0::installed
        Did not meet =dev-lang/perl-5.18*, use existing if possible, installing to / from virtual/perl-libnet-1.230.0:0::installed
        Did not meet >=dev-lang/perl-5.16, use existing if possible, installing to / from dev-perl/URI-1.600.0:0::installed (and 8 more)
        Did not meet dev-lang/perl:0/5.16=[-build(-)], use existing if possible, installing to / from dev-perl/libwww-perl-6.50.0:0::installed (and 2 more)
      * dev-lang/perl-5.16.0:0::gentoo
        Did not meet =dev-lang/perl-5.18*, use existing if possible, installing to / from virtual/perl-libnet-1.230.0:0::installed
        Did not meet dev-lang/perl:0/5.16=[-build(-)], use existing if possible, installing to / from dev-perl/libwww-perl-6.50.0:0::installed (and 2 more)
      * dev-lang/perl-5.16.1:0::gentoo
        Did not meet =dev-lang/perl-5.18*, use existing if possible, installing to / from virtual/perl-libnet-1.230.0:0::installed
        Did not meet dev-lang/perl:0/5.16=[-build(-)], use existing if possible, installing to / from dev-perl/libwww-perl-6.50.0:0::installed (and 2 more)
      * dev-lang/perl-5.16.2:0::gentoo
        Did not meet =dev-lang/perl-5.18*, use existing if possible, installing to / from virtual/perl-libnet-1.230.0:0::installed
        Did not meet dev-lang/perl:0/5.16=[-build(-)], use existing if possible, installing to / from dev-perl/libwww-perl-6.50.0:0::installed (and 2 more)
      * dev-lang/perl-5.16.2-r1:0::gentoo
        Did not meet =dev-lang/perl-5.18*, use existing if possible, installing to / from virtual/perl-libnet-1.230.0:0::installed
      * dev-lang/perl-5.16.3:0::gentoo
        Did not meet =dev-lang/perl-5.18*, use existing if possible, installing to / from virtual/perl-libnet-1.230.0:0::installed
      * dev-lang/perl-5.18.2:0::gentoo
        Did not meet =dev-lang/perl-5.16*, use existing if possible, installing to / from virtual/perl-MIME-Base64-3.130.0-r2:0::installed
        Did not meet dev-lang/perl:0/5.16=[-build(-)], use existing if possible, installing to / from dev-perl/libwww-perl-6.50.0:0::installed (and 2 more)

How could I proceed to figure out, what I can do about this issue. It's a little confusing for me.

Regards Andreas
Back to top
View user's profile Send private message
TomWij
Retired Dev
Retired Dev


Joined: 04 Jul 2012
Posts: 1553

PostPosted: Sat Apr 12, 2014 9:07 am    Post subject: Reply with quote

Do an upgrade of the entire system such that you pull in the latest Perl and ensure it backtracks enough (if cave has a backtracking feature), as it is Perl that is blocking between version 5.16 and 5.18; after that, you might want to run `perl-cleaner --all` although I'm not sure if you are supposed to run that with cave as it might kick off an emerge.
Back to top
View user's profile Send private message
andi456
Apprentice
Apprentice


Joined: 06 Mar 2005
Posts: 216
Location: Germany

PostPosted: Sun Apr 13, 2014 12:57 pm    Post subject: Reply with quote

Running
Code:
emerge -pv dev-perl/WWW-RobotRules
Calculating dependencies... done!
[ebuild     U  ] dev-perl/WWW-RobotRules-6.20.0::gentoo [6.10.0-r1::__unknown__] 9 kB

doesn't indicate any problems. cave is a little bit more strict regarding dependencies it seems. My problem is to interpret the output that I posted above in order to find proper solution to the problem.

Regards Andreas
Back to top
View user's profile Send private message
TomWij
Retired Dev
Retired Dev


Joined: 04 Jul 2012
Posts: 1553

PostPosted: Sun Apr 13, 2014 1:45 pm    Post subject: Reply with quote

Note that there is a mailing list as well as a Trac for Paludis users; in case you don't find a response here, you might be able to get support faster there.
Back to top
View user's profile Send private message
sera
Retired Dev
Retired Dev


Joined: 29 Feb 2008
Posts: 1017
Location: CET

PostPosted: Mon Apr 14, 2014 6:14 pm    Post subject: Reply with quote

Andreas,

as TomWij already stated, this is caused by the pending perl update. There are two types of issues. First are the perl virtuals which got their dependency information changed after you installed them. Unlike Portage Paludis enforces consistency for the 'installed tree' and so those in-place changes need to be pulled in additionally, aka the virtual needs to be reinstalled. The others are caused by subslot dependencies. By updating perl the old version will be uninstalled and packages depending on said subslot will be broken by the uninstall. Those package need to be rebuilt as part of the same resolution.

Getting all those packages manually is tedious and time consuming, even more so as Paludis deduplicates the reasons for 'unable decisions '. To safe me from this headache I've written the following set:

Code:
$ cat /etc/paludis/sets/update-perl.rb
#!/usr/bin/ruby

require 'Paludis'

def recurse_spec(spec)
  needs_rebuild = false
  if spec.instance_of? Paludis::PackageDepSpec
    if spec.text().match('dev-lang/perl')
      if spec.text().match('^[~=]') || spec.text().match(':.*=')
        needs_rebuild = true
      else
        needs_rebuild = false
      end
    end
  elsif spec.instance_of? Paludis::BlockDepSpec
     # ignore
  else
    spec.each_entry { |s|
      if recurse_spec(s)
        needs_rebuild = true
      end
    }
  end
  return needs_rebuild
end

Paludis::Log.instance.log_level = Paludis::LogLevel::Warning
env = Paludis::EnvironmentFactory.instance.create('')
repo = env.fetch_repository('installed')

repo.category_names { |cat|
  repo.package_names(cat) { |qpn|
    repo.package_ids(qpn) { |pid|
      if pid["RDEPEND"]
        if recurse_spec(pid["RDEPEND"].parse_value())
          puts("* " + pid.name())
        end
      end
    }
  }
}


There is no native support for ruby sets in Paludis and so we need a wrapper

Code:
$ cat /etc/paludis/sets/update-perl.bash
#!/usr/bin/bash

exec ruby update-perl.rb


The dynamic set is implemented somewhat naively. A clean resolution isn't always guaranteed as there may be other reasons than the to be expected ones. Also there is most likely a more minimal set for your system though the overhead from reinstalling some virtuals that aren't strictly required to be reinstalled is negligible. Very cheap compared to me spending 15 minutes figuring out how to get Paludis to update perl anyway. Guess the same holds true for you. Last but not least it's not a replacement for perl-cleaner though that one will become obsolete due to subslots one day.

Anyway, there is plenty room to improve the set but so far it was sufficient for my needs and might be for yours.

The script uses the ruby bindings which you get with Paludis built with the ruby useflag enabled. To use the set issue
Code:
cave resolve update-perl


Regards Ralph
Back to top
View user's profile Send private message
Ant P.
Watchman
Watchman


Joined: 18 Apr 2009
Posts: 6920

PostPosted: Sat Apr 19, 2014 2:32 am    Post subject: Reply with quote

Try:
Code:
cave resolve -c world -D perl
Back to top
View user's profile Send private message
hasufell
Retired Dev
Retired Dev


Joined: 29 Oct 2011
Posts: 429

PostPosted: Mon Jul 28, 2014 9:22 pm    Post subject: Reply with quote

sera wrote:
The others are caused by subslot dependencies. By updating perl the old version will be uninstalled and packages depending on said subslot will be broken by the uninstall. Those package need to be rebuilt as part of the same resolution.

Getting all those packages manually is tedious and time consuming, even more so as Paludis deduplicates the reasons for 'unable decisions '.

I'm still not entirely sure if this is a specific dep resolution issue or if paludis doesn't resolve subslot changes at all and just considers them unmet dependencies.
Back to top
View user's profile Send private message
hasufell
Retired Dev
Retired Dev


Joined: 29 Oct 2011
Posts: 429

PostPosted: Mon Jul 28, 2014 10:05 pm    Post subject: Reply with quote

TomWij wrote:
Do an upgrade of the entire system such that you pull in the latest Perl and ensure it backtracks enough (if cave has a backtracking feature), as it is Perl that is blocking between version 5.16 and 5.18; after that, you might want to run `perl-cleaner --all` although I'm not sure if you are supposed to run that with cave as it might kick off an emerge.

read the manpage of perl-cleaner, it supports various package managers
Back to top
View user's profile Send private message
sera
Retired Dev
Retired Dev


Joined: 29 Feb 2008
Posts: 1017
Location: CET

PostPosted: Tue Jul 29, 2014 6:20 pm    Post subject: Reply with quote

hasufell wrote:
sera wrote:
The others are caused by subslot dependencies. By updating perl the old version will be uninstalled and packages depending on said subslot will be broken by the uninstall. Those package need to be rebuilt as part of the same resolution.

Getting all those packages manually is tedious and time consuming, even more so as Paludis deduplicates the reasons for 'unable decisions '.

I'm still not entirely sure if this is a specific dep resolution issue or if paludis doesn't resolve subslot changes at all and just considers them unmet dependencies.


What you already know, the virtuals issue is a consequence of static-dep package manager and a sort of dyn-dep tree ;)

Not adding packages to the resolution where the installed package with the same qualified package name gets broken by the very same resolution is more likely a bug than a feature. I'm only aware of a small conversation around the time EAPI 5 was added. In essence it didn't look straight forward and wasn't considered high priority. Best ask dleverton what the current state of affair is.
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Unsupported Software All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum