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.

Attachment: pgponEIpLBPiA.pgp
Description: OpenPGP digital signature

Reply via email to