# Copyright 2022 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.

#  ________  _________  ________  ________
# |\   ____\|\___   ___\\   __  \|\   __  \
# \ \  \___|\|___ \  \_\ \  \|\  \ \  \|\  \
#  \ \_____  \   \ \  \ \ \  \\\  \ \   ____\
#   \|____|\  \   \ \  \ \ \  \\\  \ \  \___|
#     ____\_\  \   \ \__\ \ \_______\ \__\
#    |\_________\   \|__|  \|_______|\|__|
#    \|_________|
#
# Every new addition to this gni file is an instance of tech-debt that must be
# cleaned up to have a proper platform+product interface. If you need to add a
# specific artifact to the core product, please consider adding it to:
#
# //products/minimal/BUILD.gn
#
# If the artifact is incapable of being put inside that location, reach out to
# the assembly team for guidance: //src/lib/assembly/OWNERS. The assembly team
# may allow an exception so that artifacts can be added directly to this file,
# but each entry needs a ticket assigned to the assembly team with an agreed
# upon solution for how to address the tech-debt.

# This `minimal` product is intended to be the "smallest thing we'd still call Fuchsia," which
# implies simplicity, security, updatability and performance. Importantly, that differs from "all
# current products use this feature;" today, that is what the `core` product is for.
# `minimal` will change over time, both by addition and subtraction -- for example, should the
# team ship a mechanism for updating Fuchsia that does not require IP networking, that functionality
# should be moved to a higher-level product definition.

include_shell_commands_package = true

# Kernel command line arguments.
product_bootfs_labels = [ "//products/kernel_cmdline:oom.reboot-timeout--low" ]

# Use the product assembly config target to specify the product configuration.
#
# This should be overridden by products which inherit from minimal.
fuchsia_product_assembly_config_label = "//products/minimal"
zedboot_product_assembly_config_label = "//products/zedboot"

bazel_product_bundle_prefix = "//products/minimal:product_bundle"

# Packages to be published to universe that do not go through assembly.
discoverable_package_labels = [ "//src/developer/debug/debug_agent" ]

# These targets used to flow through GN assembly. Now add them explicitly to
# Bazel assebmly to make sure they can be built for CIPD uploads.
extra_bazel_assembly_targets = [
  "//build/images/fuchsia:assembly_inputs",
  "//products/minimal:board_assembly_artifacts",
]

# List all artifacts to upload to CIPD.
cipd_assembly_artifact_targets = [
  "//build/images/fuchsia:assembly_inputs",
  "//products/minimal:board_assembly_artifacts",
]

use_bazel_images_only = true
