blob: 05efe00b81fcf6ac35067b98ac9f9018d4a38240 [file] [log] [blame]
# Copyright 2021 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# Build rule for pre-built Fuchsia Packages
load(
":providers.bzl",
"FuchsiaPackageGroupInfo",
"FuchsiaPackageInfo",
)
load("//fuchsia/private/workflows:fuchsia_task_publish.bzl", "fuchsia_task_publish")
def _fuchsia_package_group_impl(ctx):
packages = []
for dep in ctx.attr.deps:
if FuchsiaPackageInfo in dep:
packages.append(dep[FuchsiaPackageInfo])
elif FuchsiaPackageGroupInfo in dep:
packages.extend(dep[FuchsiaPackageGroupInfo].packages)
return [
DefaultInfo(files = depset(ctx.files.deps)),
FuchsiaPackageGroupInfo(packages = packages),
]
_fuchsia_package_group = rule(
doc = """
A group of Fuchsia packages, composed of all the packages and groups specified in deps.
""",
implementation = _fuchsia_package_group_impl,
attrs = {
"deps": attr.label_list(
doc = "Fuchsia packages and package groups to include in this group.",
providers = [
[FuchsiaPackageInfo],
[FuchsiaPackageGroupInfo],
],
),
},
)
def fuchsia_package_group(*, name, deps, **kwargs):
_fuchsia_package_group(
name = name,
deps = deps,
**kwargs
)
fuchsia_task_publish(
name = "%s.publish" % name,
packages = [name],
**kwargs
)