Fix resource unlimiting on macOS when the hard limit is above allowed max.

On macOS, it is possible for certain hard limits to be set to a value that
is higher than the configured kernel limit for such resources.  We were
already handling "unlimited" correctly by capping this to the kernel setting
but we did not account for actual values higher than the kernel setting.
Fix this now by capping the value in all cases.

You can imagine doing "ulimit -H -n 2048" and *then* lowering the kernel
max to a value below 2048, in which caseI'd expect the reported hard rlimit
to have also been lowered, but it isn't, so we must cope with that.  Or you
can also imagine setting the hard limit to a value higher than the
per-process kernel limit but lower than the total aggregate limit, which is
only possible as root.

Should fix https://github.com/bazelbuild/bazel/issues/6776.

Tested: I have manually tested this and it seems to work, but I cannot add
a test.  Adding a test would involve administrator privileges and is hard.

RELNOTES: None.
PiperOrigin-RevId: 233595690
1 file changed
tree: b74f6fa19c44c4369e7311bca0f1dc2d1a6dcb20
  1. .bazelci/
  2. examples/
  3. scripts/
  4. site/
  5. src/
  6. third_party/
  7. tools/
  8. .gitattributes
  9. .gitignore
  10. AUTHORS
  11. BUILD
  12. CHANGELOG.md
  13. CODEOWNERS
  14. combine_distfiles.py
  15. combine_distfiles_to_tar.sh
  16. compile.sh
  17. CONTRIBUTING.md
  18. CONTRIBUTORS
  19. distdir.bzl
  20. ISSUE_TEMPLATE.md
  21. LICENSE
  22. README.md
  23. WORKSPACE
README.md

Bazel

{Fast, Correct} - Choose two

Build and test software of any size, quickly and reliably.

  • Speed up your builds and tests: Bazel only rebuilds what is necessary. With advanced local and distributed caching, optimized dependency analysis and parallel execution, you get fast and incremental builds.

  • One tool, multiple languages: Build and test Java, C++, Android, iOS, Go, and a wide variety of other language platforms. Bazel runs on Windows, macOS, and Linux.

  • Scalable: Bazel helps you scale your organization, codebase, and continuous integration solution. It handles codebases of any size, in multiple repositories or a huge monorepo.

  • Extensible to your needs: Easily add support for new languages and platforms with Bazel's familiar extension language. Share and re-use language rules written by the growing Bazel community.

Getting Started

Documentation

Contributing to Bazel

See CONTRIBUTING.md

Build status

Bazel is released in ‘Beta’. See the product roadmap to learn about the path toward a stable 1.0 release.