Ravenports / ravenadm

Administration tool for Ravenports
http://www.ravenports.com
ISC License
17 stars 3 forks source link

second pass at determining build requirements #22

Open jrmarino opened 4 years ago

jrmarino commented 4 years ago

Right now it's possible that ravenadm will build a dependency of a dependency (of a dependency?) that isn't needed. This can happen when it's a build dependency of a dependency, but that dependency is already packaged. Synth does this too.

The algorithm can be improved with 2 passes I think -- to avoid rebuilding some port unnecessarily. Yes, the port needs to be rebuilt. But it doesn't need to be rebuilt for the actual requested port, so it would be nice to avoid these kinds of unnecessary builds.

kraileth commented 4 years ago

Just throwing in another possible optimization: "--disable-dependency-tracking". For two recent ports I had to set the argument for configure because there was some kind of error otherwise. When researching what this does (and what side-effects it might have) I found out that it doesn't affect the application in the end but disables optimizations during the build process. By default, dependency tracking is active, meaning that issuing "make" again after a first try of building something, only the targets that need updating are getting rebuilt. Disabling dependency tracking is meant to result in an improvement regarding "speed[ing] up one-time builds".

Since we always tear down the builders after a build either completes or fails and start with a new pristine builder the next time, we're effectively always doing "one-time builds". So it might make sense considering to always pass this argument to GNU configure by default if some software uses GNU autotools. I don't know how much we'd gain from this, but it would probably not hurt - and if it helps cutting a bit of time off some of the long configure processes that'd be all the better.

jrmarino commented 4 years ago

that might explain why some platforms require INSTALL_REQ_TOOLCHAIN. I never could figure out why certain targets were getting rebuilt on certain platforms.