Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 21 additions & 2 deletions bazel-cc-sysroot-generator
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,7 @@ def _cleanup_linux_sysroot(

def _write_bazel_files(sysroot_dir: Path) -> None:
name = sysroot_dir.name
(sysroot_dir / "BUILD.bazel").write_text(f"""\
(sysroot_dir / "BUILD.bazel").write_text("""\
load("@bazel_skylib//rules/directory:directory.bzl", "directory")

directory(
Expand All @@ -229,8 +229,15 @@ directory(
visibility = ["//visibility:public"],
)

# NOTE: Using this is better for merkle tree performance
filegroup(
name = "{name}",
name = "directory",
srcs = ["."],
visibility = ["//visibility:public"],
)

filegroup(
name = "all_files",
srcs = glob(["**"]),
visibility = ["//visibility:public"],
)
Expand All @@ -242,6 +249,16 @@ bazel_dep(name = "bazel_skylib", version = "1.7.1")
""")


# https://github.com/bazelbuild/bazel/issues/27028
def _nest_all_files(sysroot_dir: Path) -> None:
nested_dir = sysroot_dir / "sysroot"
nested_dir.mkdir()
for item in sysroot_dir.iterdir():
if item.name in {"sysroot", "MODULE.bazel"}:
continue
shutil.move(item, nested_dir / item.name)


def _archive(sysroot_dir: Path) -> None:
# https://stackoverflow.com/questions/1094841/get-a-human-readable-version-of-a-file-size
def sizeof_fmt(num: float) -> str:
Expand Down Expand Up @@ -335,6 +352,7 @@ def _generate_ubuntu_sysroot(os_name: str, platform: dict[str, Any]) -> None:
_download_packages(os_name, arch, repositories, packages, sysroot_dir)
_cleanup_linux_sysroot(arch, deleted_patterns, sysroot_dir)
_write_bazel_files(sysroot_dir)
_nest_all_files(sysroot_dir)
_archive(sysroot_dir)


Expand All @@ -359,6 +377,7 @@ def _generate_macos_sysroot(platform: dict[str, Any]) -> None:

_validate_relative_symlinks(sysroot_dir)
_write_bazel_files(sysroot_dir)
_nest_all_files(sysroot_dir)
_archive(sysroot_dir)


Expand Down