On Friday, April 24, 2020 1:03 AM, Alec Ten Harmsel <a...@alectenharmsel.com> wrote:
> If it's so easy, why don't you implement it? /s because busy and got better things in life. but what is your point? 1. are you trying to get to know me a bit closer? 2. or are you trying to indirectly a claim that making portage faster is too hard? if (1) then off-topic. if (2) then you're committing a logical fallacy. some version of appeal to majority? hence your claim is unsubstantiated, and is deleted from space thanks to occam's razor. if it was too hard for most people in the past, it doesn't mean that it is hard for everyone else. not saying that your claim is wrong. but saying that your tool to show that claim is not working. not saying that your claim is right either. it's so far floating somewhere in the ``unknown'' region (until a proof is presented; not a logical fallacy). > Sorry for being a little glib but every couple months I go through this > thought process: > > 1. Wow, portage is slow > 2. I can make this faster, it can't be that hard > 3. ...wow, nevermind, it is really hard > 4. Thank you portage maintainers!!!!! if your point is to share history, thanks. else: logical fallacy (read above). > I don't think it's O(log n). Roughly, for 1 package portage has to make the > full dep > tree, solve all the constraints to resolve to actual packages that can be > installed, > and order and merge the tree into a single branch of packages to install. I'm > probably missing some steps and obviously that's not a rigorous explanation > but > it's at least O(n) where n is the total number of dependencies. not mutually exclusive. your n (number of deps) is different than my n (number of packages in portage). e.g. i think that : O(your n) = O(log(my n)) i think the real trick is to split portage into two separate parts: 1. index: pre-compiled indexed global dependency graph. this should allow efficient jumping into the right spot of the graph to efficiently walk around to meet the dependencies based on constraints (e.g. USE flags, versions). imo this can do the dependency resolution that emerge does in 45 seconds in less than 3 seconds. 2. scripts to carry out the compile/installation. currently portage has (1) and (2) mixed into a single directory-based structure containing files in a format that is not efficient for graph walking, and uses the wrong tool (python). > Speeding up portage would be a fun project but it's less important > that portage being correct. yes, the speed issue is not a problem (more like a psychological issue). but that's misleading. portage's problems is beyond the timing issue. e.g.: 1. the fact that emerge uses python is horrible. ideally a package manager must have least run-time dependencies possible. but now, emerge is based on python, which limits our freedom in upgrading python versions in the fear of wrecking emerge (and getting stuck, needing manual attention). which is why i think ideally new emerge should be some statically linked compiled binary. 2. i'm sure smart people can point out better reasons about how emerge is wrong.