3 ms·
One of the authors here. Yes you are totally right, as build-systems are not standardized it is quite challenging. However we have seen more than 300 ports bac
by entelechy 8y ago
One of the authors here.
Yes you are totally right, as build-systems are not standardized it is quite challenging.
However we have seen more than 300 ports back in 2017 [1] and saw many emerging patterns.
This enabled us to write rules to transpile and optimize 100s of build-systems to buck using
buildinfer [2] [3].
We hope that more sane decisions will be made regarding build-systems in new projects.
We discovered analyzing over 300 projects that a lot of complexity is not needed and often a non-turing complete language for describing the build is sufficient. In fact we found that over 90% of projects can be described solely by using glob expressions.
[1] https://hackernoon.com/lessons-learned-from-porting-300-projects-to-buck-build-ff6463b65142 https://hackernoon.com/lessons-learned-from-porting-300-proj...
[2] https://hackernoon.com/announcing-buildinfer-for-c-3dfa3eb15feb https://hackernoon.com/announcing-buildinfer-for-c-3dfa3eb15...
[3] https://buildinfer.loopperfect.com/ https://buildinfer.loopperfect.com/
- ghthor 8y agoThat's so freaking cool! I'm not to surprised that 90% can be globs. Were there any projects that you saw that were polyglots? Maybe some type of library that had built in diagnostics and metrics providing prebuilt html or interactive webpages?
- entelechy 8y agoMay projects use some document generators or tools to collect metrics. However some build-systems that were really interesting were OpenCV and OpenSSL. OpenSSL buildsystem is over 6k lines of perl scripts which communicate over pipes. OpenCV uses cmake, python and prolog for it's build. Until this day, I have no clue why there is prolog involved. You can read some bits about it in our initial announcement of buildinfer: https://hackernoon.com/announcing-buildinfer-for-c-3dfa3eb15feb https://hackernoon.com/announcing-buildinfer-for-c-3dfa3eb15...