> This seems to me like a reasonable port to have. My only concern is it > takes 40 minutes to build with MAKE_JOBS=4 on a 4 core machine: > cpu0: Intel(R) Core(TM) i7-10610U CPU @ 1.80GHz, 7097.97 MHz, 06-8e-0c
I don't have an easy solution to that, but here are some data and a couple of thoughts: # Data On my slower machine, without MAKE_JOBS*, here's how the time to build devel/git-annex is divided among different Cabal packages: - Total: 1h45m - 14m (13%) building git-annex itself - 4.7m (4.5%) building aeson - 3.9m (3.7%) building cryptonite - 3.5m (3.3%) building persistent-sqlite - 2-3min each (~12.2%) building aws, vector, lens, persistent, language-javascript - The rest (~63%): A couple hundred faster packages. I measured this by building with MODCABAL_BUILD_ARGS=--verbose=normal+timestamp, artificially adding one more timestamp at the end, then running the output through egrep '^[0-9.]+ ' build.log | tail -r | awk '{ print n-$1, $0; n = $1 }' | sort -nr. Full output attached. *I used the default MAKE_JOBS=1 because Cabal wasn't giving "completed" timestamps and I can't see how else to measure the time. The fraction of time used for git-annex itself presumably increases somewhat when the build is parallel. # Thoughts I agree with Greg's comment in the other thread that the ideal solutions would be speeding up ghc or something like ccache. But I still wonder if there's a quick-and-dirty way to get a modest speedup without too much maintenance cost. Earlier I suggested creating ports for a handful of slow packages, to speed up builds. The numbers above show that's won't help much, unless "handful" means hundreds and then we're back where we started. What about adding a single port with a "collection" of commonly used Hackage libraries? print/texlive does this with latex packages. If we added a port with the few hundred most-used hackage packages, and other Haskell packages could start with that, I'm guessing that would cut down the total build time a lot, at the cost of having one big slow port. If there's any interest I could probably find some time to try implementing it. I don't know how hard it would be. -- James