This seems to be broken on Ubuntu 22.04 at the moment. The system seems
to ship a reasonably modern version (2.34.1), so I think we can make do
with that for now.
Before this change, `brew bottle` would add the `:arm64_linux` bottle
lines last. This would make `brew style` complain because it wants the
`arm64_*` bottles listed first.
Let's fix this by retaining the existing style as closely as possible:
- macOS bottles are listed first
- for each OS, arm64 bottles are listed first (just as we do on macOS)
In particular, `brew bottle` will now insert `:arm64_linux` bottle lines
just above the `:x86_64_linux` bottle lines (but still below the macOS
bottle lines).
x86_64 may continue to be a more popular platform on Linux for quite
some time. However, users looking for those bottles can continue to look
in the same place as before this change (i.e., the last line of the
bottle block). Taking this together with the consistency on macOS
mentioned above, I think this is the right way forward here.
For concreteness, here are some examples of bottle blocks before and after
this change.
Before this change, immediately after `brew bottle`:
bottle do
sha256 arm64_sequoia: "1a57e04052f4bae4172d546a7927c645fc29d2ef5fafbec19d08ee1dddc542fb"
sha256 arm64_sonoma: "a58cf9af5d04d3d5709b5337f3793586087a79e178da51d1f3978c0c13b8cf34"
sha256 ventura: "6d8b90b2cbb31dcb78394c6540f5454cd57232fc309921173814f880e63718f0"
sha256 x86_64_linux: "cd5faac2834ba79e39429b9aac99e4f69d6e6023cbb1cbcd0b62e94cfc69bb2a"
sha256 arm64_linux: "457d3e9bd0c287483e27f29a488a18c90e1f55be076fc49b07942ef396c419be"
end
Before this change, after doing `brew style --fix`:
bottle do
sha256 arm64_sequoia: "1a57e04052f4bae4172d546a7927c645fc29d2ef5fafbec19d08ee1dddc542fb"
sha256 arm64_sonoma: "a58cf9af5d04d3d5709b5337f3793586087a79e178da51d1f3978c0c13b8cf34"
sha256 arm64_linux: "457d3e9bd0c287483e27f29a488a18c90e1f55be076fc49b07942ef396c419be"
sha256 ventura: "6d8b90b2cbb31dcb78394c6540f5454cd57232fc309921173814f880e63718f0"
sha256 x86_64_linux: "cd5faac2834ba79e39429b9aac99e4f69d6e6023cbb1cbcd0b62e94cfc69bb2a"
end
After this change:
bottle do
sha256 arm64_sequoia: "1a57e04052f4bae4172d546a7927c645fc29d2ef5fafbec19d08ee1dddc542fb"
sha256 arm64_sonoma: "a58cf9af5d04d3d5709b5337f3793586087a79e178da51d1f3978c0c13b8cf34"
sha256 ventura: "6d8b90b2cbb31dcb78394c6540f5454cd57232fc309921173814f880e63718f0"
sha256 arm64_linux: "457d3e9bd0c287483e27f29a488a18c90e1f55be076fc49b07942ef396c419be"
sha256 x86_64_linux: "cd5faac2834ba79e39429b9aac99e4f69d6e6023cbb1cbcd0b62e94cfc69bb2a"
end
This new part of documentation has been added in order to provide
users a way to identify curl related issues which may or may not be
caused by their workstation.
This[^1] will enable us to start testing arm64 bottle builds in
Homebrew/core when this environment variable is set.
[^1]: Along with some tweaks to the `dispatch-build-bottle` workflow.
The `brew services list` command was not correctly handling services
that had an error code status.
While the `#zero?` method returns a boolean, the `#nonzero?` method
confusingly returns self or nil. Hence a negated `#zero?` call to check
for a non-zero exit code fixes the error.
While here, `#pid?` method uses a negated `#zero?`, which is not
accurate, as a negative PID value would not be a valid PID. Hence I
changed it to use `#positive?` instead.
The tests for the `#error?` method were marked as needing systemd, but I
saw no obvious reason for that due to how they all use mocked values, so
I removed the systemd requirement.