blob: 3c2c3be8af138ee5f1f570992dfab3bab3337cba [file] [log] [blame]
# Copyright 2021 Google LLC
#
# 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.
load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")
load("@io_bazel_rules_go//extras:embed_data.bzl", "go_embed_data")
# Our goal is for this program to be embedded into this Go package. Go embed
# only allows files in the same package directory to be embedded. So we need to
# use a "no-op" genrule to place this binary in the same directory as the
# package source.
genrule(
name = "handle_disk_layout_amd64.bin",
srcs = ["//src/cmd/handle_disk_layout:handle_disk_layout_bin_amd64"],
outs = ["_handle_disk_layout_amd64.bin"],
cmd = "cp $< $@",
)
genrule(
name = "handle_disk_layout_arm64.bin",
srcs = ["//src/cmd/handle_disk_layout:handle_disk_layout_bin_arm64"],
outs = ["_handle_disk_layout_arm64.bin"],
cmd = "cp $< $@",
)
genrule(
name = "veritysetup_amd64.img",
srcs = ["//:veritysetup_amd64.tar"],
outs = ["_veritysetup_amd64.img"],
cmd = "cp $< $@",
)
genrule(
name = "veritysetup_arm64.img",
srcs = ["//:veritysetup_arm64.tar"],
outs = ["_veritysetup_arm64.img"],
cmd = "cp $< $@",
)
genrule(
name = "docker_credential_gcr_amd64",
srcs = ["@com_github_googlecloudplatform_docker_credential_gcr//:docker-credential-gcr_amd64"],
outs = ["docker-credential-gcr_amd64"],
cmd = "cp $< $@",
)
genrule(
name = "docker_credential_gcr_arm64",
srcs = ["@com_github_googlecloudplatform_docker_credential_gcr//:docker-credential-gcr_arm64"],
outs = ["docker-credential-gcr_arm64"],
cmd = "cp $< $@",
)
go_library(
name = "provisioner_lib",
srcs = [
"main.go",
"resume.go",
"run.go",
"embeds_linux_amd64.go",
"embeds_linux_arm64.go",
],
embedsrcs = select({
"@io_bazel_rules_go//go/toolchain:amd64": [
":handle_disk_layout_amd64.bin",
":veritysetup_amd64.img",
":docker_credential_gcr_amd64",
],
"@io_bazel_rules_go//go/toolchain:arm64": [
":handle_disk_layout_arm64.bin",
":veritysetup_arm64.img",
":docker_credential_gcr_arm64",
],
}),
importpath = "cos.googlesource.com/cos/tools.git/src/cmd/provisioner",
visibility = ["//visibility:private"],
deps = [
"//src/pkg/provisioner",
"@com_github_google_subcommands//:subcommands",
"@com_google_cloud_go_storage//:storage",
],
)
go_binary(
name = "provisioner_amd64",
embed = [":provisioner_lib"],
goos = "linux",
goarch = "amd64",
visibility = ["//visibility:public"],
)
go_binary(
name = "provisioner_arm64",
embed = [":provisioner_lib"],
goos = "linux",
goarch = "arm64",
visibility = ["//visibility:public"],
)