https://github.com/google/skia is a good example of why open source is not good enough.
The classic
./configure; make has served us well for thousands of years, even CMake followed the same pattern;
cmake .; make. But,
this is too easy. If this sort of thing is allowed to continue then people might get the idea that they can compile their own software, perhaps after modifying the source to suit their personal requirements. Thankfully Google is here to save the day.
Google code is built using ninja, and the ninja files are generated with a tool called "gn" which stands for "gay niggers"; The geniuses at Google named it after themselves, of course.
Running "gn" complained about missing files, so I figured they were using git submodules, but no, Google is too good for git submodules, they have a Python script (without its extension, for some reason).
Which, like Rust, downloads the entire fucking universe, because there's no way that I could ever have software installed on my computer that other software could use. Dynamic linking is
unsafe, you know? There were quite a few "429: Too Many Requests" too, when I ran Google's script to fetch repositories from Google's servers.
Finally building was familiar, if not needlessly verbose.
Code:
$ gn gen out
$ ninja -C out
This took an hour to compile, and now my CPU fan makes a rattling noise when it spins up. Thanks Google.
Now, for the next dependency.
https://github.com/google/angle... What makes it even worse, is that this repo is completely different. At least the README is more than just a link to the website which has no useful information. No
./tools/git-sync-deps this time though, git submodules are good enough for Google now.
After downloading the entire universe once again, including LLVM and Rust this time;
Code:
$ ./build/install-build-deps.sh
install-build-deps.py [ERROR]: lsb_release not found in $PATH
install-build-deps.py [ERROR]: try: sudo apt-get install lsb-release
I'm on Arch (btw). It's not just a lazy error message either, the script only works on Ubuntu and Debian, which would have been useful information to put in the README instead of just referring to "Linux".
Code:
$ ./build/install-build-deps.sh
subprocess.CalledProcessError: Command '['sudo', 'apt-get', 'update']' returned non-zero exit status 1.
And if you're looking at that error message and thinking to yourself that it looks an awful lot like a Python error message to have come from a shell script, well, this is the shell script.
Code:
#!/bin/bash -e
# Copyright 2012 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
exec "$(cd $(dirname $0) && pwd)/install-build-deps.py" "$@"
I wonder why Google is so ashamed of using Python that they had to hide it.
twice.
If this is anyone's primary experience with building software, I can see why they would welcome something like cargo. I'm giving up on this one for now.