mirror of
https://github.com/armbian/build
synced 2025-09-24 19:47:06 +07:00
- bsp-cli: now depends on `base-files (>= ${REVISION})`, this way upgrading the bsp-cli causes our base-files to be installed
- bsp-cli no longer does gymnastics with /etc/os-release et al, all done in armbian-base-files now
- general/apt-utils.sh: introduce `apt_find_upstream_package_version_and_download_url()`
- base-files: add release to version, in order to comply with repo restrictions (valid repos can't have two different debs with same name and version, md5 must match)
120 lines
4.0 KiB
Bash
120 lines
4.0 KiB
Bash
#!/usr/bin/env bash
|
|
#
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
#
|
|
# Copyright (c) 2013-2023 Igor Pecovnik, igor@armbian.com
|
|
#
|
|
# This file is a part of the Armbian Build Framework
|
|
# https://github.com/armbian/build/
|
|
function determine_artifacts_to_build_for_image() {
|
|
# outer scope: declare -a artifacts_to_build=()
|
|
if [[ "${BOOTCONFIG}" != "none" ]]; then
|
|
artifacts_to_build+=("uboot")
|
|
fi
|
|
if [[ -n $KERNELSOURCE ]]; then
|
|
artifacts_to_build+=("kernel")
|
|
fi
|
|
|
|
if [[ "${INSTALL_ARMBIAN_FIRMWARE:-yes}" == "yes" ]]; then
|
|
if [[ ${BOARD_FIRMWARE_INSTALL:-""} == "-full" ]]; then
|
|
artifacts_to_build+=("full_firmware")
|
|
else
|
|
artifacts_to_build+=("firmware")
|
|
fi
|
|
fi
|
|
|
|
# Userspace, RELEASE+ARCH specific, replaces the original distro's base-files
|
|
# This is always built, but only installed if KEEP_ORIGINAL_OS_RELEASE!=yes.
|
|
artifacts_to_build+=("armbian-base-files")
|
|
|
|
if [[ "${DISTRIBUTION}" == "Ubuntu" ]]; then
|
|
artifacts_to_build+=("fake_ubuntu_advantage_tools")
|
|
fi
|
|
|
|
if [[ "${PACKAGE_LIST_RM}" != *armbian-config* ]]; then
|
|
if [[ $BUILD_MINIMAL != yes ]]; then
|
|
artifacts_to_build+=("armbian-config")
|
|
fi
|
|
fi
|
|
|
|
if [[ "${PACKAGE_LIST_RM}" != *armbian-zsh* ]]; then
|
|
if [[ $BUILD_MINIMAL != yes ]]; then
|
|
artifacts_to_build+=("armbian-zsh")
|
|
fi
|
|
fi
|
|
|
|
if [[ $PLYMOUTH == yes ]]; then
|
|
artifacts_to_build+=("armbian-plymouth-theme")
|
|
fi
|
|
|
|
# Userspace, BOARD+BRANCH specific (not RELEASE)
|
|
artifacts_to_build+=("armbian-bsp-cli")
|
|
|
|
# Userspace, RELEASE-specific artifacts.
|
|
if [[ -n "${RELEASE}" ]]; then
|
|
if [[ -n "${DESKTOP_ENVIRONMENT}" ]]; then
|
|
artifacts_to_build+=("armbian-desktop")
|
|
artifacts_to_build+=("armbian-bsp-desktop")
|
|
fi
|
|
fi
|
|
|
|
# If we're only dumping the config, include the rootfs artifact.
|
|
# In a "real" build, this artifact is built/consumed by get_or_create_rootfs_cache_chroot_sdcard(), not here.
|
|
if [[ "${CONFIG_DEFS_ONLY}" == "yes" ]]; then
|
|
artifacts_to_build+=("rootfs")
|
|
fi
|
|
|
|
}
|
|
|
|
function main_default_build_packages() {
|
|
# early cleaning for sources, since fetch_and_build_host_tools() uses it.
|
|
if [[ "${CLEAN_LEVEL}" == *sources* ]]; then
|
|
LOG_SECTION="cleaning_early_sources" do_with_logging general_cleaning "sources"
|
|
fi
|
|
|
|
# ignore updates help on building all images - for internal purposes
|
|
if [[ "${IGNORE_UPDATES}" != "yes" ]]; then
|
|
LOG_SECTION="clean_deprecated_mountpoints" do_with_logging clean_deprecated_mountpoints
|
|
|
|
for cleaning_fragment in $(tr ',' ' ' <<< "${CLEAN_LEVEL}"); do
|
|
if [[ $cleaning_fragment != sources ]] && [[ $cleaning_fragment != none ]] && [[ $cleaning_fragment != make* ]]; then
|
|
LOG_SECTION="cleaning_${cleaning_fragment}" do_with_logging general_cleaning "${cleaning_fragment}"
|
|
fi
|
|
done
|
|
fi
|
|
|
|
# determine which artifacts to build.
|
|
declare -a artifacts_to_build=()
|
|
determine_artifacts_to_build_for_image
|
|
display_alert "Artifacts to build:" "${artifacts_to_build[*]}" "debug"
|
|
|
|
# For each artifact, try to obtain them from the local cache, remote cache, or build them.
|
|
# Store info about all artifacts in the process, for later use (eg during package installation in distro-agnostic).
|
|
declare -g -a image_artifacts_all=()
|
|
declare -g -A image_artifacts_packages=()
|
|
declare -g -A image_artifacts_debs=()
|
|
declare one_artifact one_artifact_package
|
|
for one_artifact in "${artifacts_to_build[@]}"; do
|
|
declare -A artifact_map_packages=()
|
|
declare -A artifact_map_debs=()
|
|
|
|
WHAT="${one_artifact}" build_artifact_for_image
|
|
|
|
# store info about this artifact's debs and packages
|
|
for one_artifact_package in "${!artifact_map_packages[@]}"; do
|
|
image_artifacts_all+=("${one_artifact_package}")
|
|
image_artifacts_packages["${one_artifact_package}"]="${artifact_map_packages[${one_artifact_package}]}"
|
|
image_artifacts_debs["${one_artifact_package}"]="${artifact_map_debs[${one_artifact_package}]}"
|
|
done
|
|
done
|
|
|
|
debug_dict image_artifacts_packages
|
|
debug_dict image_artifacts_debs
|
|
|
|
overlayfs_wrapper "cleanup"
|
|
reset_uid_owner "${DEB_STORAGE}"
|
|
|
|
# At this point, the WORKDIR should be clean. Add debug info.
|
|
debug_tmpfs_show_usage "AFTER ALL PKGS BUILT"
|
|
}
|