Re: Aw: Re: Re: [gentoo-user] Updating portage, continued

2019-06-10 Thread Rich Freeman
On Mon, Jun 10, 2019 at 5:39 PM n952162  wrote:
>
> On 06/06/19 06:00, n952...@web.de wrote:
>
> In trying to update portage (before I update my system), I have this:
>
> !!! All ebuilds that could satisfy 
> ">=dev-python/setuptools-34[python_targets_pypy(-)?,pn_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_pypy(-),-pyth-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)]"
>  have been mas
> !!! One of the following masked packages is required to complete your request:
> - dev-python/setuptools-::gentoo (masked by: EAPI 7)
> - dev-python/setuptools-41.0.1::gentoo (masked by: EAPI 7)
> - dev-python/setuptools-41.0.0::gentoo (masked by: EAPI 7)
> - dev-python/setuptools-40.9.0::gentoo (masked by: EAPI 7)
> - dev-python/setuptools-40.8.0::gentoo (masked by: EAPI 7)
> - dev-python/setuptools-40.7.3::gentoo (masked by: EAPI 7)
> - dev-python/setuptools-40.6.3::gentoo (masked by: backtracking: slot 
> conflict)
> - dev-python/setuptools-36.7.2::gentoo (masked by: backtracking: slot 
> conflict)
>
> Looking at https://packages.gentoo.org/packages/dev-python/setuptools shows 
> that the only two versions stable for am64 are 40.6.3 and 36.7.2.
>
> What is backtracking and how can I have a slot conflict if it's the 
> developers who determine what version sits in a slot?

Backtracking refers to how the dependency resolver works - it couldn't
figure out a way to satisfy your requirements.  You have a slot
conflict because two different packages that you asked for require two
different versions of setuptools to be installed at the same time in
the same slot, or at least that is what portage interprets what it is
finding.  I'd need to see more of the output to get a sense of what is
actually going on - posting 10 lines out of what was probably 1000+
lines of output honestly doesn't help anybody to assist you.  Yes, the
whole output is tedious but probably contains clues.

>
> One might say, I have a package already dependent on setuptools and it's not 
> the right one, but how can it be that two different versions want to go into 
> the same slot?

There are many ways this can happen.  Maybe package A wants setuptools
40.7.3 or greater, and package B wants setuptools 40.6.3 or lesser,
and you asked for both.  Often though it is an issue with not
backtracking enough - if you're doing a huge update often you need to
add --backtrack=100 or rarely even a larger value in order for portage
to find a way to meet the requirements.  Sometimes you need to include
--with-bdeps=y because something portage isn't considering in-scope is
pulling in something that conflicts, and it could be resolved by
letting portage update more packages.

> Backtracking is something to do with dependency checking.  I haven't seen any 
> explanation of what goes on in dependency checking and why backtracking is 
> necessary.  Can someone point to an explanation?

Basically your config files, like the world file, and the profile
system set, contain a list of stuff you want.  Portage wants to give
you want you want.  Maybe these files specify 200 packages you're
interested in directly.  Each of these might ask for 5 more, and each
of those 5 more, and so on.  Portage works backwards through the
dependency tree to generate a list of every requirement of every
package.  These can form circular loops, and the tree can get quite
large very quickly.  As an optimization I believe portage avoids
traversing the entire thing and only goes back so far - usually it can
find a solution to your requirements without traversing the entire
tree.

The --backtrack option controls how far back portage will try going.
Increasing the value will slow things down, but can't hurt anything.

>
> My emerge output goes on to say:
>
> The current version of portage supports EAPI '6'. You must upgrade to a
> newer version of portage before EAPI masked packages can be installed.
> (dependency required by "app-portage/gemato-::gentoo" [ebuild])
> (dependency required by 
> "sys-apps/portage-2.3.66-r1::gentoo[-build,rsync-verify]" [ebuil
> (dependency required by "portage" [argument])
> For more information, see the MASKED PACKAGES section in the emerge
> man page or refer to the Gentoo Handbook.
>
> Is this telling me that I have to *first* update my system and *then* update 
> portage?

So, if you blindly follow portage's instructions there is a good
chance that you'll make your life using Gentoo a living nightmare,
because portage doesn't really know what you want and often will get
in over its head.  The risk of this happening goes up quickly if you
wait a long time between updates, as you seem to have done.

You probably don't need those EAPI 7 packages, but if you do then the
version of portage you have can't install them.  You could upgrade
portage to gain access to more packages, but you should probably get
the system consistent with whatever repos you have synced now before
you go updating even further.

I'd step back 

Re: Aw: Re: Re: [gentoo-user] Updating portage, continued

2019-06-10 Thread n952162

On 06/06/19 06:00, n952...@web.de wrote:


The handbook is great information, but unfortunately, it uses concepts - 
specific gentoo concepts - that many readers doesn't know.  They are then often 
cross-referenced to other pages, which likewise define things based on expected 
internal understanding of the mechanisms, goals, and potential scenarios.

I have "read" the handbook - multiple times.  But not really understood what it 
was saying - and I have decades of development experience.

Consider slots.  I'm sure I've read that slots are used to allow multiple ... 
versions? configurations? of the same package to be installed.  It was 
gradually dawning on me, that it's the developer who specifies the slot.   Now, 
I can't figure out what use case that benefits, but the ability to have slots 
react to realities at a particular installation see to me to make a lot of 
sense.  So, there must be something basic  that I don't understand.

I think cases like my simple case would help new comers and I'm hoping to make 
a blog describing it, once I fully understand the implications.




In trying to update portage (before I update my system), I have this:

   /!!! All ebuilds that could satisfy
   
">=dev-python/setuptools-34[python_targets_pypy(-)?,pn_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_pypy(-),-pyth-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)]"
   have been mas//
   //!!! One of the following masked packages is required to complete
   your request://
   //- dev-python/setuptools-::gentoo (masked by: EAPI 7)//
   //- dev-python/setuptools-41.0.1::gentoo (masked by: EAPI 7)//
   //- dev-python/setuptools-41.0.0::gentoo (masked by: EAPI 7)//
   //- dev-python/setuptools-40.9.0::gentoo (masked by: EAPI 7)//
   //- dev-python/setuptools-40.8.0::gentoo (masked by: EAPI 7)//
   //- dev-python/setuptools-40.7.3::gentoo (masked by: EAPI 7)//
   //- dev-python/setuptools-40.6.3::gentoo (masked by: backtracking:
   slot conflict)//
   //- dev-python/setuptools-36.7.2::gentoo (masked by: backtracking:
   slot conflict)/



Looking at https://packages.gentoo.org/packages/dev-python/setuptools
shows that the only two versions stable for am64 are 40.6.3 and 36.7.2.

What is *backtracking* and how can I have a *slot conflict *if it's the
developers who determine what version sits in a slot?

One might say, I have a package already dependent on /setuptools/ and
it's not the right one, but how can it be that two different versions
want to go into the same slot?

Backtracking is something to do with dependency checking.  I haven't
seen any explanation of what goes on in dependency checking and why
backtracking is necessary.  Can someone point to an explanation?

My emerge output goes on to say:

   /The current version of portage supports EAPI '6'. You must upgrade
   to a//
   //newer version of portage before EAPI masked packages can be
   installed.//
   //(dependency required by "app-portage/gemato-::gentoo" [ebuild])//
   //(dependency required by
   "sys-apps/portage-2.3.66-r1::gentoo[-build,rsync-verify]" [ebuil//
   //(dependency required by "portage" [argument])//
   //For more information, see the MASKED PACKAGES section in the emerge//
   //man page or refer to the Gentoo Handbook.//
   /


Is this telling me that I have to *first* update my system and *then*
update portage?