FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > Gentoo > Gentoo Portage Developer

 
 
LinkBack Thread Tools
 
Old 08-20-2011, 08:10 PM
Matt Turner
 
Default Dependency calculation turning on USE flags?

Hi,

Portage does not turn on USE flags of a package to satisfy a
dependency, which is sometimes confusing.

See https://bugs.gentoo.org/372513

mattst88@localhost ~/projects/gentoo-x86/sci-chemistry $ emerge cns -vp

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild N ] sys-libs/libstdc++-v3-3.3.6 USE="(multilib) nls" 23,459 kB
[ebuild N ] app-shells/tcsh-6.16 USE="perl -catalogs" 869 kB
[ebuild N ] app-emulation/emul-linux-x86-compat-20100611
USE="(multilib)" 930 kB
[ebuild N ] virtual/libstdc++-3.3 0 kB
[ebuild N ] dev-lang/ifc-10.0.026-r1 40,378 kB
[ebuild N ] virtual/fortran-0 USE="openmp" 0 kB
[ebuild N F ] sci-chemistry/cns-1.2.1 USE="openmp" 31,981 kB

Total: 7 packages (7 new), Size of downloads: 97,614 kB
Fetch Restriction: 1 package (1 unsatisfied)
mattst88@localhost ~/projects/gentoo-x86/sci-chemistry $ USE=fortran
emerge cns -vp

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild R ~] sys-devel/gcc-4.5.2 USE="fortran* graphite gtk lto
mudflap (multilib) nls nptl openmp (-altivec) -bootstrap -build -doc
(-fixed-point) -gcj (-hardened) (-libffi) -multislot -nocxx -nopie
-nossp -objc -objc++ -objc-gc -test -vanilla (-n32%) (-n64%)" 0 kB
[ebuild N ] app-shells/tcsh-6.16 USE="perl -catalogs" 869 kB
[ebuild N ] virtual/fortran-0 USE="openmp" 0 kB
[ebuild N F ] sci-chemistry/cns-1.2.1 USE="openmp" 31,981 kB

Total: 4 packages (3 new, 1 reinstall), Size of downloads: 32,849 kB
Fetch Restriction: 1 package (1 unsatisfied

I'm sure there are good reasons for this behavior, but I'm not sure
what they are.

I wonder if there's some way we can manage this kind of situation?
Perhaps portage could print alternative dependencies for virtuals,
similar to the very helpful recent "The following keyword changes are
necessary to proceed:" addition.

Another similar situation is with ACCEPT_LICENSES. Attempting to
emerge something like virtual/jre will suggest adding keywords for
dev-java/ibm-jdk-bin, even though I'm on a mips system and this
package will never run there. Suggesting other packages that fulfill
virtual/jre would be much easier to understand.

Thanks!
Matt
 
Old 08-20-2011, 10:22 PM
Kent Fredric
 
Default Dependency calculation turning on USE flags?

On 21 August 2011 08:10, Matt Turner <mattst88@gentoo.org> wrote:




See https://bugs.gentoo.org/372513

^ tldr version for everyone else.

This is due to the || condition in virtual/fortran



|| ( sys-devel/gcc[fortran,openmp?] sys-devel/gcc-apple[fortran,openmp?] dev-lang/ifc dev-lang/ekopath-bin )



Where gcc[fortran] takes precedence over ifc.




I wonder if there's some way we can manage this kind of situation?

Perhaps portage could print alternative dependencies for virtuals,

similar to the very helpful recent "The following keyword changes are

necessary to proceed:" addition.


*This usecases specifics aside, I'd welcome some sort of way to show that an "or" condition is occurring somewhere in the tree, but it'd have to be opt-in, instead of opt-out, as the potential for being very noisy is great ( you'll get a lot of noise if you hit virtual/perl-* for instance ).


And likewise, I'd love to have "some way" to produce some sort of graph for alternative merge trees that may work if you toggle some variable, but the amount of complexity to do this I'd imagine is quite large, and could easily be computationally expensive.


It would very likely need some limiting factor for how deep it did permutations at.

[ebuild *N * * ] sys-libs/libstdc++-v3-3.3.6 *USE="(multilib) nls" 23,459 kB

[ebuild *N * * ] app-shells/tcsh-6.16 *USE="perl -catalogs" 869 kB
# app-shells/tcsh-6.16 =>
#*** perl? (
#****** dev-lang/perl
#*** )

[ebuild *N * * ] app-emulation/emul-linux-x86-compat-20100611

USE="(multilib)" 930 kB

[ebuild *N * * ] virtual/libstdc++-3.3 *0 kB
#* virtual/libstdc++-3.3 =>
#*** || (
#***** =sys-libs/libstdc++-v3-bin-3.3*
#***** =sys-libs/libstdc++-v3-3.3*
#*** )

[ebuild *N * * ] dev-lang/ifc-10.0.026-r1 *40,378 kB
#* virtual/fortran-0* -openmp =>
#*** || (
#***** sys-devel/gcc +fortran
#***** sys-devel/gcc-apple +fortran
#***** dev-lang/ifc
#***** dev-lang/ekopath-bin

#*** )
# virtual/fortran-0* +openmp =>

#*** || (

#***** sys-devel/gcc +fortran

#***** sys-devel/gcc-apple +fortran

#***** dev-lang/ifc

#***** dev-lang/ekopath-bin

#*** )
#** || (
#****** sys-devel/gcc +fortran +openmp
#****** sys-devel/gcc-apple +fortran +openmp
#***** dev-lang/ifc


#***** dev-lang/ekopath-bin


#*** )

[ebuild *N * * ] virtual/fortran-0 *USE="openmp" 0 kB

[ebuild *N F * ] sci-chemistry/cns-1.2.1 *USE="openmp" 31,981 kB
Would be a sample output for depthlimit = 1

Note that in this example I have made a few omissions, some because I couldn't be bothered working out all the other ACCEPT_KEYWORDS stuff to mentally compute which of the above targets were actually possible to install and what ACCEPT_KEYWORDS permuations could be done, and others because they are for whatever reason "fixed dependencies", thus, showing only dependencies that user choices can impact.


ie: app-emulation/emul-linux-x86-compat-20100611* has different dependencies depending on the multilib USE flag, but that useflag is profile mandated so its pointless to show to a user.

Alternatively, you could let the user dictate what type of permutations to display/compute, ie:


*use-flag based permutations, keyword based permutations, mask-based permutations, ||() conditional OR* based permutations,* package-version/slot permutations etc.

For "package version/slot" permutations, it would display every variation on package/slot ( ie: slots/versions that are not the "current" version ) that were installable, or installable with some permutation ( if the depth of permutation is large enough ), so that a user could see a path of installation they wanted and twist user masks to make it happen.


Of course, this is all looking like harder and harder stuff to do ( programming is the gateway-drug for feature creep ) , but it would still be something nice to have on a theoretical magic computer that can do all computations in zero time.



--
Kent

perl -e* "print substr( "edrgmaM* SPA NOcomil.ic@tfrken", $_ * 3, 3 ) for ( 9,8,0,7,1,6,5,4,3,2 );"

http://kent-fredric.fox.geek.nz
 
Old 08-20-2011, 11:32 PM
Brian Dolbec
 
Default Dependency calculation turning on USE flags?

On Sun, 2011-08-21 at 10:22 +1200, Kent Fredric wrote:
>
> On 21 August 2011 08:10, Matt Turner <mattst88@gentoo.org> wrote:
>
> See https://bugs.gentoo.org/372513
>
> ^ tldr version for everyone else.
>
> This is due to the || condition in virtual/fortran
>
> || ( sys-devel/gcc[fortran,openmp?]
> sys-devel/gcc-apple[fortran,openmp?] dev-lang/ifc dev-lang/ekopath-bin
> )
>
> Where gcc[fortran] takes precedence over ifc.
>
>
>
> I wonder if there's some way we can manage this kind of
> situation?
> Perhaps portage could print alternative dependencies for
> virtuals,
> similar to the very helpful recent "The following keyword
> changes are
> necessary to proceed:" addition.
>
>
> This usecases specifics aside, I'd welcome some sort of way to show
> that an "or" condition is occurring somewhere in the tree, but it'd
> have to be opt-in, instead of opt-out, as the potential for being very
> noisy is great ( you'll get a lot of noise if you hit virtual/perl-*
> for instance ).
>
> And likewise, I'd love to have "some way" to produce some sort of
> graph for alternative merge trees that may work if you toggle some
> variable, but the amount of complexity to do this I'd imagine is quite
> large, and could easily be computationally expensive.
>
...

> Alternatively, you could let the user dictate what type of
> permutations to display/compute, ie:
>
> use-flag based permutations, keyword based permutations, mask-based
> permutations, ||() conditional OR based permutations,
> package-version/slot permutations etc.
>
> For "package version/slot" permutations, it would display every
> variation on package/slot ( ie: slots/versions that are not the
> "current" version ) that were installable, or installable with some
> permutation ( if the depth of permutation is large enough ), so that a
> user could see a path of installation they wanted and twist user masks
> to make it happen.
>
> Of course, this is all looking like harder and harder stuff to do
> ( programming is the gateway-drug for feature creep ) , but it would
> still be something nice to have on a theoretical magic computer that
> can do all computations in zero time.
>
>
> --
> Kent
>


Well, for something now, you can emerge porthole and look at the
Dependency view. It will display all options and show the recommended
versions of the dep package (still needs some small tweaks to handle
slots correctly). It is expandable (depth wise) until all deps are
satisfied. The deps are also dbl-click able to pop up the dep in
another window so you can view/change it's settings, merge, unmerge,
etc..

And no it would not be suitable for portage, it is a guis based treeview
and for human use only

But it can show you the alternatives for such cases. From there you can
decide how you want to set things for the merges.
--
Brian Dolbec <brian.dolbec@gmail.com>
 
Old 08-20-2011, 11:52 PM
Zac Medico
 
Default Dependency calculation turning on USE flags?

On 08/20/2011 03:22 PM, Kent Fredric wrote:
> On 21 August 2011 08:10, Matt Turner <mattst88@gentoo.org> wrote:
>
>>
>> See https://bugs.gentoo.org/372513
>>
>
> ^ tldr version for everyone else.
>
> This is due to the || condition in virtual/fortran
>
> || ( sys-devel/gcc[fortran,openmp?] sys-devel/gcc-apple[fortran,openmp?]
> dev-lang/ifc dev-lang/ekopath-bin )
>
> Where gcc[fortran] takes precedence over ifc.

The reason that portage chooses ifc when USE=fortran is disabled is that
this kind of behavior is sometimes desirable. It's discussed in bug 278729:

http://bugs.gentoo.org/show_bug.cgi?id=278729
--
Thanks,
Zac
 

Thread Tools




All times are GMT. The time now is 10:04 PM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright 2007 - 2008, www.linux-archive.org