Use `rctx.copy` for `http_archive`'s `files` and `build_file` (#32193) ### Description The `files` attribute of `http_archive` (and thus also of `archive_override`) now overlays files and directories with `repository_ctx.copy` instead of `repository_ctx.symlink`. Copies are created as copy-on-write clones where supported, and a copied directory is watched as a tree, so changes to the files in it still cause a refetch. Overlaid files are always executable, matching `remote_file_urls`. The `build_file` of `http_archive` and `git_repository` is now also copied instead of being read into memory and written back. ### Motivation The repo contents cache can't store symlinks that point out of a repo, so a single `files` entry referring to the main repo silently kept an otherwise reproducible repo out of the cache. Fixes #31434 ### Build API Changes No ### Release Notes RELNOTES[INC]: The `files` of `http_archive` and `archive_override` are now copied instead of symlinked, which allows the repo contents cache to store these repos. The `symlink_files` method in `@bazel_tools//tools/build_defs/repo:utils.bzl` has been removed. Closes #32193 COPYBARA_INTEGRATE_REVIEW=https://github.com/bazelbuild/bazel/pull/32193 from fmeum:http-archive-files-copy a700042825802e689479c1acfed5fd07d8a53f92 PiperOrigin-RevId: 1009091699 Change-Id: Ifbe377f7feb0e5326a90cc2ff142bcafa90c0ce2
{Fast, Correct} - Choose two
Build and test software of any size, quickly and reliably.
Speed up your builds and tests: Bazel rebuilds only 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.
To report a security issue, please email security@bazel.build with a description of the issue, the steps you took to create the issue, affected versions, and, if known, mitigations for the issue. Our vulnerability management team will respond within 3 working days of your email. If the issue is confirmed as a vulnerability, we will open a Security Advisory. This project follows a 90 day disclosure timeline.
See CONTRIBUTING.md