Re: lang/rust is super slow to build
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 14 Dec 2022 02:02:54 UTC
On Tue, Dec 13, 2022, at 2:18 PM, Xin LI wrote: > On Tue, Dec 13, 2022 at 7:55 AM Mel Pilgrim <list_freebsd@bluerosetech.com> > wrote: > >> On 2022-12-12 11:27, Pat Maddox wrote: >> > Using poudriere, lang/rust is at 2 hours and counting on my 10-core i9 >> > w/ 128 gigs of RAM. >> > >> > Does that sound right? It seems extremely slow to me, but this is my >> > first time building it. >> >> That sounds typical. You can use ccache and tmpfs to speed it up a >> little bit, but both rust and llvm are computationally massive. >> >> Even worse, poudriere doesn't need to build it. If you aren't changing >> its options there's no functional difference between building it locally >> and installing from the public pkg repo. Poudriere does have the >> ability to install from pkgs, but there is a 2-year-old bug that >> prevents that feature from working correctly. >> >> I recommend everyone comment on issue #822 on the freebsd/poudriere >> github[1] and explain how much of a pain it is that poudriere doesn't >> have sane behaviour wrt dependencies. Maybe if enough people comment it >> will spur a fix. >> >> 1: https://github.com/freebsd/poudriere/issues/822 > > > IMHO the ports collection should provide and use prebuilt packages of > compilers (LLVM, GCC, Rust, etc.) built from the FreeBSD packages builder, > and ports framework (possibly also the base system) should be changed to > use prebuilt packages by default, unless a) user requested to build > everything from source, or b) no binary package is available for the > platform combination, like a Tier-2 platform. The source ports for > compilers should have all optimizations (like PGO, LTO, etc.) enabled by > default, and require reasonably modern (perhaps newer than Sandy Bridge) > processor features by default. > > It does not make sense for most users to build compilers from source all > the time, because most of them don't make any changes that would affect the > toolchain, which takes hours for them to build, even with beefy machines > and with parallelism and caching enabled. For these users, it's just a > waste of time and also increases their carbon footprint for nothing good. > > Cheers, Perhaps poudriere needs (or even already has?) a more fine-grained way to declare whether to fetch package dependencies. -b works - but will do that for every dependency, whereas I may only want it to fetch llvm and other expensive ports. The value to me in building from ports is that I know the state of my packages matches my ports tree. I’m not installing a package that was built a week ago. For expensive ports though, I’ll take the trade off of saving time in exchange for a bit of staleness. btw vanilla ports does have a mechanism for installing package dependencies, it’s `make install-missing-packages`. Pat