#  Copyright 2020 The Monogon Project Authors.
#
#  SPDX-License-Identifier: Apache-2.0
#
#  Licensed under the Apache License, Version 2.0 (the "License");
#  you may not use this file except in compliance with the License.
#  You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.

"""
A generic workspace rule that extracts some subpaths from a tarball.

TODO(q3k): This should maybe be moved to //build/utils and called differently.
"""

def _musl_sysroot_rule_impl(rctx):
    rctx.extract(rctx.attr.snapshot)
    rctx.file("BUILD.bazel", """
filegroup(
    name = "all",
    srcs = glob(["include/**", "lib/**"]),
    visibility = ["//visibility:public"],
)
""")


musl_sysroot_rule = repository_rule(
    implementation = _musl_sysroot_rule_impl,
    attrs = {
        "snapshot": attr.label(
            default = Label("//build/toolchain/musl-host-gcc:sysroot.tar.xz"),
            allow_single_file = True,
        ),
    },
)
