Skip to content

use ape awk to replace gawk#219

Open
comicfans wants to merge 1 commit into
bazel-contrib:mainfrom
comicfans:use_ape_awk
Open

use ape awk to replace gawk#219
comicfans wants to merge 1 commit into
bazel-contrib:mainfrom
comicfans:use_ape_awk

Conversation

@comicfans
Copy link
Copy Markdown

this allow creating sysroot that directly referenced by cc toolchain.

in my test I have following setup

apt.install(
    name = "jammy_x86_64_sysroot",
    lock = "//sysroot_creator:jammy_x86_64.lock.json",
    manifest = "//sysroot_creator:jammy_x86_64.yaml",
)
use_repo(apt, "jammy_x86_64_sysroot")

and

def _unpack_impl(ctx):
    out_dir = ctx.actions.declare_directory(ctx.label.name + "_unpacked")

    ctx.actions.run_shell(
        inputs = [ctx.file.tar],
        outputs = [out_dir],
        command = """ tar -xf {src} -C {out}""".format(src = ctx.file.tar.path, out = out_dir.path)
    )

    return [DefaultInfo(files = depset([out_dir]))]

unpack = rule(
    implementation = _unpack_impl,
    attrs = {
        "tar": attr.label(mandatory = True, allow_single_file = True)
    }
)

...

unpack(
    name = "jammy_unpack",
    tar = "@jammy_x86_64_sysroot//:jammy_x86_64_sysroot",  # or @jammy_x86_64_sysroot//:flat
    visibility = ["//visibility:public"]
)

# and jammy_unpack is used as cc toolchain sysroot

#124 (comment) mentioned that gawk is only used by flatten, however directly using @jammy_x86_64_sysroot//:jammy_x86_64_sysroot or @jammy_x86_64_sysroot//:flat as my unpack rule input trigger similar errors:

     @@rules_distroless++apt+jammy_x86_64_sysroot//:jammy_x86_64_sysroot (5c3ac65ce1c8329cc5f7202959c1aceda00db4bbc8a0148931c8e5ed92b61cf2)
    @@rules_distroless++apt+jammy_x86_64_sysroot//:jammy_x86_64_sysroot (fcc255dcd92f8a7c8464439d77cfb04da9617fbc87079de9a2f3462df62874c2)
    @@rules_distroless++apt+jammy_x86_64_sysroot//:dpkg_status (fcc255dcd92f8a7c8464439d77cfb04da9617fbc87079de9a2f3462df62874c2)
.-> @@gawk+//:gawk (38c6768e959f095860edbca0f0d106bbb7ba105ca378e880c8947a6ed3a0b464)
|   @@bazel_tools//tools/cpp:current_cc_toolchain (38c6768e959f095860edbca0f0d106bbb7ba105ca378e880c8947a6ed3a0b464)
|   @@rules_cc+//cc:current_cc_toolchain (38c6768e959f095860edbca0f0d106bbb7ba105ca378e880c8947a6ed3a0b464)
|   @@toolchains_llvm++llvm+llvm_toolchain//:cc-clang-x86_64-linux (38c6768e959f095860edbca0f0d106bbb7ba105ca378e880c8947a6ed3a0b464)
|   @@toolchains_llvm++llvm+llvm_toolchain//:module-x86_64-linux (38c6768e959f095860edbca0f0d106bbb7ba105ca378e880c8947a6ed3a0b464)
|   @@toolchains_llvm++llvm+llvm_toolchain//:include-components-x86_64-linux (38c6768e959f095860edbca0f0d106bbb7ba105ca378e880c8947a6ed3a0b464)
|   @@toolchains_llvm++llvm+llvm_toolchain//:sysroot-components-x86_64-linux (38c6768e959f095860edbca0f0d106bbb7ba105ca378e880c8947a6ed3a0b464)
|   //sysroot_creator:jammy_unpack (38c6768e959f095860edbca0f0d106bbb7ba105ca378e880c8947a6ed3a0b464)
|   @@rules_distroless++apt+jammy_x86_64_sysroot//:flat (38c6768e959f095860edbca0f0d106bbb7ba105ca378e880c8947a6ed3a0b464)
`-- @@gawk+//:gawk (38c6768e959f095860edbca0f0d106bbb7ba105ca378e880c8947a6ed3a0b464)

this allow creating sysroot that used by cc toolchain
@thesayyn
Copy link
Copy Markdown
Contributor

hmm whats the runtime cost here?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants