On 06/07/2016 02:57 PM, Michał Górny wrote:
> 
> The point is that:
> 
> 1. REQUIRED_USE is semi-machine-understandable while pkg_pretend() is
> some random function crap.

Why do users care about that? Why do I even care about that? The whole
ebuild is random function crap. The only benefit is consistent output,
but it's consistently awful.


> Portage can be improved to take some sensible action on it. 

I'll believe this when I see it =P


> 2. REQUIRED_USE can be handled early during dependency resolution.
> pkg_pretend() is like I want 5 minutes for Portage to calculate
> the dependencies, then 2 minutes to run pkg_pretend()s, then it tells
> me I am supposed to change one thing and start over.

So 7 minutes for an understandable English description of the error and
how to fix it, versus 5 minutes for line noise? There's a great story in
The Psychology of Computer Programming that ends like this:

  "And how long does your program take?" he asked--emphasizing the
  possessive.

  "That varies with the input," was the reply, "but on average, about
  ten seconds per card."

  "Aha," was the triumphant reply. "But my program takes only one
  second per card."

  The members of the audience--who had, after all, all contributed to
  the one-second version--seemed relieved. But our hero, who was rather
  young and naive, was not put down by this remark. Instead, he calmly
  observed, "But your program doesn't work. If the program doesn't have
  to work, I can write one that takes one millisecond per card--and
  that's faster than our card reader."


> 
> 3. REQUIRED_USE can take USE dependencies into account. pkg_pretend()
> can't.

What do you mean here?


> 4. pkg_pretend() is slow, and should be used scarcely. Adding
> an additional slow step for each package on the list, before starting to
> build packages is not really helpful.
> 

See #2, but "each package" is an overestimate. Only the ones with a
non-trivial pkg_pretend() phase would take any time.


Reply via email to