Updating the updater script:
- `//external:all` -> `//external:*` to make it work with recent bazel versions
Avoiding chicken-egg problem by explicitly asking to first build previous version,
then update sources version, then use updater and previous version to update src-deps.
`bazel_self` may not necessarily build out of the box after just the sources version
bump and may depend on updater being run first, which can't run without `bazel_self`.
So listing steps to use old version to help updating to new version
Done with the help of https://github.com/Mindavi/nixpkgs-mark-broken
Tool is still WIP but this is one of the first results.
I manually audited the results and removed some results that were not valid.
Note that some of these packages maybe should have more constrained platforms set
instead of broken set, but I think not being perfectly correct is better than
just keep trying to build all these things and never succeeding.
Some observations:
- Some darwin builds require XCode tools
- aarch64-linux builds sometimes suffer from using gcc9
- gcc9 is getting older and misses some new libraries/features
- Sometimes tools try to do system detection or expect some explicit settings for
platforms that are not x86_64-linux
The official bazel wrapper script uses `$(uname -s | tr '[:upper:]' '[:lower:]')-$(uname -m)`
as the `os-arch` suffix.
On aarch64 Darwin, `uname -m` returns "arm64", on aarch64 Linux it returns "aarch64".
We're resolving most cc toolchain tools from the path and environment variables, but we hardcode libtool. This makes it hard to point libtool to the specific one you need, for example to work around issues like
https://github.com/NixOS/nixpkgs/pull/180251#issuecomment-1200096413. Make it consistent by getting libtool from path too, like other cc toolchain tools.
Bazel requires basic runtime dependencies in the PATH for repository rules and genrules. When `which` is missing in particular, it can lead to misleading error messages.
Bazel requires basic runtime dependencies in the PATH for repository rules and genrules. When `which` is missing in particular, it can lead to misleading error messages.