View previous topic :: View next topic |
Author |
Message |
andi456 Apprentice
Joined: 06 Mar 2005 Posts: 216 Location: Germany
|
Posted: Sat Apr 12, 2014 9:05 am Post subject: cave/paludis: dev-perl/WWW-RobotRules blocked |
|
|
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 |
|
|
TomWij Retired Dev
Joined: 04 Jul 2012 Posts: 1553
|
Posted: Sat Apr 12, 2014 9:07 am Post subject: |
|
|
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 |
|
|
andi456 Apprentice
Joined: 06 Mar 2005 Posts: 216 Location: Germany
|
Posted: Sun Apr 13, 2014 12:57 pm Post subject: |
|
|
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 |
|
|
TomWij Retired Dev
Joined: 04 Jul 2012 Posts: 1553
|
Posted: Sun Apr 13, 2014 1:45 pm Post subject: |
|
|
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 |
|
|
sera Retired Dev
Joined: 29 Feb 2008 Posts: 1017 Location: CET
|
Posted: Mon Apr 14, 2014 6:14 pm Post subject: |
|
|
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 |
|
|
Ant P. Watchman
Joined: 18 Apr 2009 Posts: 6920
|
Posted: Sat Apr 19, 2014 2:32 am Post subject: |
|
|
Try:
Code: | cave resolve -c world -D perl |
|
|
Back to top |
|
|
hasufell Retired Dev
Joined: 29 Oct 2011 Posts: 429
|
Posted: Mon Jul 28, 2014 9:22 pm Post subject: |
|
|
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 |
|
|
hasufell Retired Dev
Joined: 29 Oct 2011 Posts: 429
|
Posted: Mon Jul 28, 2014 10:05 pm Post subject: |
|
|
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 |
|
|
sera Retired Dev
Joined: 29 Feb 2008 Posts: 1017 Location: CET
|
Posted: Tue Jul 29, 2014 6:20 pm Post subject: |
|
|
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 |
|
|
|
|
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
|
|