On Thu, 24 May 2018 13:19:14 -0400 Emilian Bold <[email protected]> wrote:
> There are two build systems I want to learn more and use. Google's > https://bazel.build and Facebook's https://buckbuild.com > > Both are heavily parallel and should support deterministic builds > which makes remote build agents and cache sharing a breeze. > > I have a pretty fast machine, but 15minutes for a full build could > probably be improved. How much does Gentoo take? WAY to long... Due to a few things, dependency calculation and having to use the same tarball/compressed sources. It has to unpack each time for each module. Which coming from a large compressed file, it takes time. If that could be re-used then it would help with speed. I believe some are working on a next generation. Which I plan to work with them on the speed aspects, parallelism, etc. Then it maybe a viable option. At this time its likely the SLOWEST way to build NB... Hardly a selling factor.... I would like to see the next generation be in C or something vs python. Maybe Java but doubtful, Go maybe. > I guess Gentoo has yet another build system, but it's not independent > so we cannot use it except by switching to Gentoo. Not really. Its python and bash based, and Gentoo has preffix support. Using Gentoo packages on other distros or *nix. Not sure about Windows. https://wiki.gentoo.org/wiki/Project:Prefix In theory yes, Portage could be used as a generic build system for anything. Though it mostly wraps existing, make, cmake, meson, etc. There was some blog post about that I will try to find. The attempt at wrapping ant was a freaking mess and nightmare I punted. https://github.com/gentoo/gentoo/blob/master/eclass/java-ant-2.eclass https://github.com/gentoo/gentoo/blob/master/eclass/ant-tasks.eclass Doing the same for Maven or Gradle is impractical. Essentially wrapping build systems. Works for other stuff, not for Java stuff that wants to do its own dependency calculation, pull binaries from 3rd party repositories. Then the classpath issues, etc. A few tried at Maven integration. Best I can think can be done is replicating a local repo, but not using any of that for building, etc. > Speaking of Gentoo, seems to be the last bastion of source-based > distributions. BSDs were mostly about ports but now it's all > pre-built binary packages... Yes it seems to be a dying breed. Plus with CoreOS/Container Linux, which makes images from Gentoo. Without portage, no means to update or manage packages. You switch to a new image. That further kills the from source thing. Of course for Java and many things people think others insane to build from source. Though for me on Java, I can have all jars built under 10, or 11, etc. Not sure if that makes any difference, but does provide a consistent, known env. I do run into odd build issues others do not, at least not at first. Which I think is a good thing. Only helps improve code. From source stuff is mostly left to system and OS builders, like CoreOS/Container Linux and ChromeOS, assuming it still uses Gentoo as its base toolkit. Network Solutions moved to RHEL from Gentoo as they "did not want to be in the operating system development business". Their words not mine. There is Funtoo, restart of Gentoo by its founder, and Exherbo. Lots of former Gentoo devs, kinda of like Devuan but happened long before Systemd. Exhberbo was more a split of developer communities, ideals, etc. Both are minor, and Gentoo is still larger. https://www.funtoo.org/ http://exherbo.org/ Funny how things end up, as Gentoo portage was based on BSD ports. Which is moving away from source to binaries.... A fair amount of Java packages like Jenkins and Artifactory are binary in Gentoo due to the dependencies needing to be packaged, etc. I still use binary Oracle JDK but that is due to bootstrapping. Only way to build a JDK from source, purely without any binaries is going back to 1.5 via gcc gcj, and then building 1.5, 1.6, 1.7. 8, 9, etc. I think that is impractical. Though with IBM OpenJ9 and other I may have to look into that. https://github.com/eclipse/openj9 https://github.com/ibmruntimes/openj9-openjdk-jdk9 Seems GraalVM can be built from source, but I need to package its pieces. Like Netbeans and other stuff, package per subproject. https://github.com/oracle/graal Graal will be lots of work. That is seems to require Java 8, is a semi blocker for me. I am 10 and 11 only. 10 for production, 11 for development. -- William L. Thomson Jr.
pgponEIpLBPiA.pgp
Description: OpenPGP digital signature
