package(default_visibility = ["//visibility:public"])

load("//build:platforms.bzl", "CLIENT_PLATFORMS", "NODE_PLATFORMS", "for_platforms")
load("//build:workspace.bzl", "CNI_VERSION", "CRI_TOOLS_VERSION")
load("@io_k8s_repo_infra//defs:build.bzl", "release_filegroup")
load("@io_k8s_repo_infra//defs:rpm.bzl", "pkg_rpm_for_goarch")

release_filegroup(
    name = "rpms",
    conditioned_srcs = for_platforms(
        default = [],
        for_client = [":kubectl.rpm"],
        for_node = [
            ":cri-tools.rpm",
            ":kubeadm.rpm",
            ":kubelet.rpm",
            ":kubernetes-cni.rpm",
        ],
        only_os = "linux",
    ),
    tags = ["manual"],
    visibility = ["//visibility:public"],
)

# Create genrules to copy the arch-specific RPMs to RPMs without the arch in their filename.
genrule(
    name = "kubectl",
    srcs = select(for_platforms(
        for_client = [":kubectl-{ARCH}.rpm"],
        only_os = "linux",
    )),
    outs = ["kubectl.rpm"],
    cmd = "cp $< $@",
    output_to_bindir = True,
)

[genrule(
    name = pkg,
    srcs = select(for_platforms(
        for_client = [":%s-{ARCH}.rpm" % pkg],
        only_os = "linux",
    )),
    outs = ["%s.rpm" % pkg],
    cmd = "cp $< $@",
    output_to_bindir = True,
) for pkg in [
    "cri-tools",
    "kubeadm",
    "kubelet",
    "kubernetes-cni",
]]

[pkg_rpm_for_goarch(
    name = "kubectl",
    changelog = "//:CHANGELOG.md",
    data = [
        "//cmd/kubectl",
    ],
    goarch = arch,
    spec_file = "kubectl.spec",
    tags = ["manual"],
    version_file = "//build:os_package_version",
) for arch in CLIENT_PLATFORMS["linux"]]

[pkg_rpm_for_goarch(
    name = "kubelet",
    changelog = "//:CHANGELOG.md",
    data = [
        "kubelet.service",
        "//cmd/kubelet",
    ],
    goarch = arch,
    spec_file = "kubelet.spec",
    tags = ["manual"],
    version_file = "//build:os_package_version",
) for arch in NODE_PLATFORMS["linux"]]

[pkg_rpm_for_goarch(
    name = "kubeadm",
    changelog = "//:CHANGELOG.md",
    data = [
        "10-kubeadm.conf",
        "50-kubeadm.conf",
        "kubeadm.conf",
        "kubelet.env",
        "//cmd/kubeadm",
    ],
    goarch = arch,
    spec_file = "kubeadm.spec",
    tags = ["manual"],
    version_file = "//build:os_package_version",
) for arch in NODE_PLATFORMS["linux"]]

[pkg_rpm_for_goarch(
    name = "kubernetes-cni",
    changelog = "//:CHANGELOG.md",
    data = [
        "@kubernetes_cni_{GOARCH}//file",
    ],
    goarch = arch,
    spec_file = "kubernetes-cni.spec",
    tags = ["manual"],
    version = CNI_VERSION,
) for arch in NODE_PLATFORMS["linux"]]

[pkg_rpm_for_goarch(
    name = "cri-tools",
    data = [
        "@cri_tools_{GOARCH}//file",
    ],
    goarch = arch,
    spec_file = "cri-tools.spec",
    tags = ["manual"],
    version = CRI_TOOLS_VERSION,
) for arch in NODE_PLATFORMS["linux"]]

filegroup(
    name = "package-srcs",
    srcs = glob(["**"]),
    tags = ["automanaged"],
    visibility = ["//visibility:private"],
)

filegroup(
    name = "all-srcs",
    srcs = [":package-srcs"],
    tags = ["automanaged"],
)
