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.