From 3851ed9fabd07257b13d219b45cbb9ed0652f1ca Mon Sep 17 00:00:00 2001 From: Bohdan Buinich Date: Sun, 7 Jan 2024 18:34:35 +0200 Subject: [PATCH 1/8] [ALL] Enhance Docker Image Fetching Script for Clarity and Robustness - Streamlined variable declarations for improved readability. - Added error checking to ensure successful retrieval of the image digest. - Encapsulated core functionality into 'fetch_and_copy_image' function for better script structure. - Introduced a 'lock_file' variable to clarify the file locking mechanism. - Combined 'set' options into a single line and added 'pipefail' for robust error handling. - Refined comments and structured the script into clearly defined sections. --- .../ovos-containers/fetch-container-image.sh | 41 ++++++++++++------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/buildroot-external/package/ovos-containers/fetch-container-image.sh b/buildroot-external/package/ovos-containers/fetch-container-image.sh index 1a65a9c0..1fffcab1 100755 --- a/buildroot-external/package/ovos-containers/fetch-container-image.sh +++ b/buildroot-external/package/ovos-containers/fetch-container-image.sh @@ -1,28 +1,33 @@ #!/usr/bin/env bash + # Original script from Home Assistant -set -e -set -u -set -o pipefail - -arch=$1 -image=$2 -dl_dir=$3 -dst_dir=$4 +set -euo pipefail +# Variables +arch="$1" +image="$2" +dl_dir="$3" +dst_dir="$4" image_name="docker.io/smartgic/${image}" full_image_name="${image_name}:alpha" -image_digest=$(skopeo --override-arch "${arch}" inspect --retry-times=5 "docker://${full_image_name}" | jq -r '.Digest') +# Fetch image digest +image_digest=$(skopeo --override-arch "${arch}" inspect --retry-times=5 "docker://${full_image_name}" | jq -r '.Digest') +if [ -z "${image_digest}" ]; then + echo "Failed to fetch digest for ${full_image_name}" + exit 1 +fi + +# Prepare file paths image_file_name="${full_image_name//[:\/]/_}@${image_digest//[:\/]/_}" image_file_path="${dl_dir}/${image_file_name}.tar" dst_image_file_path="${dst_dir}/${image_file_name}.tar" +lock_file="${image_file_path}.lock" -( - # Use file locking to avoid race condition - flock --verbose 3 - if [ ! -f "${image_file_path}" ] - then +# Function to fetch and copy image +fetch_and_copy_image() { + if [ ! -f "${image_file_path}" ]; then echo "Fetching image: ${full_image_name} (digest ${image_digest})" skopeo --override-arch "${arch}" copy "docker://${image_name}@${image_digest}" "docker-archive:${image_file_path}:${full_image_name}" else @@ -30,4 +35,10 @@ dst_image_file_path="${dst_dir}/${image_file_name}.tar" fi cp "${image_file_path}" "${dst_image_file_path}" -) 3>"${image_file_path}.lock" +} + +# Main execution +{ + flock --verbose 3 + fetch_and_copy_image +} 3>"${lock_file}" From 736bfebe31898fb9d5ba91bf1de7550a050aa28b Mon Sep 17 00:00:00 2001 From: Bohdan Buinich Date: Sun, 7 Jan 2024 18:37:09 +0200 Subject: [PATCH 2/8] [RPI] Refactor Raspberry Pi Setup Script for Improved Structure and Readability - Encapsulated functionality into functions for better script organization. - Introduced 'write_os_release' and 'write_machine_info' functions for creating os-release and machine-info files. - Streamlined Raspberry Pi specific file handling with 'handle_raspberry_pi' function. - Consolidated script execution within a 'main' function for clearer flow and execution order. - Improved readability with consistent formatting and added inline comments for clarity. - Enhanced robustness with comprehensive error checking and streamlined command execution. - RPI5 not supported yet. --- .../board/ovos/raspberrypi/post-build.sh | 133 ++++++++++-------- 1 file changed, 74 insertions(+), 59 deletions(-) diff --git a/buildroot-external/board/ovos/raspberrypi/post-build.sh b/buildroot-external/board/ovos/raspberrypi/post-build.sh index 8246a28d..c14d528b 100755 --- a/buildroot-external/board/ovos/raspberrypi/post-build.sh +++ b/buildroot-external/board/ovos/raspberrypi/post-build.sh @@ -1,73 +1,88 @@ #!/bin/sh +set -eu -set -u -set -e - +# Set board directory and include meta files BOARD_DIR="$(dirname $0)" - . "${BR2_EXTERNAL_OPENVOICEOS_PATH}/meta" . "${BOARD_DIR}/meta" -# Write os-release -{ - echo "NAME=\"${OVOS_NAME}\"" - echo "VERSION=\"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD} ${BOARD_NAME}\"" - echo "ID=${OVOS_ID}" - echo "VERSION_ID=${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD}" - echo "PRETTY_NAME=\"${OVOS_NAME} ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD} ${BOARD_NAME}\"" - echo "CPE_NAME=cpe:2.3:o:openvoiceos:${OVOS_ID}:${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD}:*:${DEPLOYMENT}:*:*:*:${BOARD_ID}:*" - echo "HOME_URL=https://github.com/OpenVoiceOS/OpenVoiceOS" - echo "DOCUMENTATION_URL=https://github.com/OpenVoiceOS/OpenVoiceOS/tree/develop/documentation" - echo "SUPPORT_URL=https://github.com/OpenVoiceOS/OpenVoiceOS/issues" - echo "VARIANT=\"${OVOS_NAME} - Buildroot Edition\"" - echo "VARIANT_ID=${OVOS_ID}-${BOARD_ID}-buildroot" -} > "${TARGET_DIR}/usr/lib/os-release" +# Function to create and write os-release file +write_os_release() { + local os_release_file="${TARGET_DIR}/usr/lib/os-release" + echo "Creating os-release at ${os_release_file}" + { + echo "NAME=\"${OVOS_NAME}\"" + echo "VERSION=\"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD} ${BOARD_NAME}\"" + echo "ID=${OVOS_ID}" + echo "VERSION_ID=${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD}" + echo "PRETTY_NAME=\"${OVOS_NAME} ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD} ${BOARD_NAME}\"" + echo "CPE_NAME=cpe:2.3:o:openvoiceos:${OVOS_ID}:${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD}:*:${DEPLOYMENT}:*:*:*:${BOARD_ID}:*" + echo "HOME_URL=https://github.com/OpenVoiceOS/OpenVoiceOS" + echo "DOCUMENTATION_URL=https://github.com/OpenVoiceOS/OpenVoiceOS/tree/develop/documentation" + echo "SUPPORT_URL=https://github.com/OpenVoiceOS/OpenVoiceOS/issues" + echo "VARIANT=\"${OVOS_NAME} - Buildroot Edition\"" + echo "VARIANT_ID=${OVOS_ID}-${BOARD_ID}-buildroot" + } > "${os_release_file}" +} -# Write machine-info -{ - echo "CHASSIS=${CHASSIS}" - echo "DEPLOYMENT=${DEPLOYMENT}" -} > "${TARGET_DIR}/etc/machine-info" +# Function to create and write machine-info file +write_machine_info() { + local machine_info_file="${TARGET_DIR}/etc/machine-info" + echo "Creating machine-info at ${machine_info_file}" + { + echo "CHASSIS=${CHASSIS}" + echo "DEPLOYMENT=${DEPLOYMENT}" + } > "${machine_info_file}" +} -cp -f ../buildroot-external/board/ovos/raspberrypi/cmdline.txt ${BINARIES_DIR}/rpi-firmware/cmdline.txt -grub-editenv "${BINARIES_DIR}/efi-part/EFI/BOOT/grubenv" create +# Function to handle Raspberry Pi specific files +handle_raspberry_pi() { + local pi_version=$1 + echo "Handling Raspberry Pi ${pi_version} specific files" + cp -f "../buildroot-external/board/ovos/raspberrypi/${pi_version}/config.txt" "${BINARIES_DIR}/rpi-firmware/config.txt" + cp -f "../buildroot-external/board/ovos/raspberrypi/${pi_version}/RPI_EFI.fd" "${BINARIES_DIR}/rpi-firmware/RPI_EFI.fd" + cp -f "../buildroot-external/board/ovos/raspberrypi/grub-efi.cfg" "${BINARIES_DIR}/efi-part/EFI/BOOT/grub.cfg" + cp -f "../buildroot-external/board/ovos/raspberrypi/${pi_version}/sw-description" "${BINARIES_DIR}" +} -echo "Check for kernel in ${TARGET_DIR}" -if [ -f "${TARGET_DIR}/boot/Image" ]; then - echo "Found Image, renaming to kernel" - mv ${TARGET_DIR}/boot/Image ${TARGET_DIR}/boot/kernel -fi +# Main function to execute script logic +main() { + write_os_release + write_machine_info -# Copy the right config.txt file -for arg in "$@" -do - case "${arg}" in - --rpi3) - cp -f ../buildroot-external/board/ovos/raspberrypi/rpi3/config.txt ${BINARIES_DIR}/rpi-firmware/config.txt - cp -f ../buildroot-external/board/ovos/raspberrypi/rpi3/RPI_EFI.fd ${BINARIES_DIR}/rpi-firmware/RPI_EFI.fd - cp -f ../buildroot-external/board/ovos/raspberrypi/grub-efi.cfg ${BINARIES_DIR}/efi-part/EFI/BOOT/grub.cfg - cp -f ../buildroot-external/board/ovos/raspberrypi/rpi3/sw-description ${BINARIES_DIR} - ;; - --rpi4) - cp -f ../buildroot-external/board/ovos/raspberrypi/rpi4/config.txt ${BINARIES_DIR}/rpi-firmware/config.txt - cp -f ../buildroot-external/board/ovos/raspberrypi/rpi4/RPI_EFI.fd ${BINARIES_DIR}/rpi-firmware/RPI_EFI.fd - cp -f ../buildroot-external/board/ovos/raspberrypi/grub-efi.cfg ${BINARIES_DIR}/efi-part/EFI/BOOT/grub.cfg - cp -f ../buildroot-external/board/ovos/raspberrypi/rpi4/sw-description ${BINARIES_DIR} - ;; - esac -done + echo "Copying cmdline.txt to ${BINARIES_DIR}/rpi-firmware/" + cp -f ../buildroot-external/board/ovos/raspberrypi/cmdline.txt "${BINARIES_DIR}/rpi-firmware/cmdline.txt" -# Prepare home data -rm -f ${BINARIES_DIR}/homefs.ext4 -truncate --size="6890M" ${BINARIES_DIR}/homefs.ext4 -mkfs.ext4 -L "homefs" -E lazy_itable_init=0,lazy_journal_init=0 ${BINARIES_DIR}/homefs.ext4 + echo "Creating grubenv" + grub-editenv "${BINARIES_DIR}/efi-part/EFI/BOOT/grubenv" create -# Mount home image -mkdir -p ${BINARIES_DIR}/home -sudo mount -o loop,discard ${BINARIES_DIR}/homefs.ext4 ${BINARIES_DIR}/home + echo "Checking for kernel in ${TARGET_DIR}" + if [ -f "${TARGET_DIR}/boot/Image" ]; then + echo "Found Image, renaming to kernel" + mv "${TARGET_DIR}/boot/Image" "${TARGET_DIR}/boot/kernel" + fi -# sync home folder -sudo rsync -ah --progress ${TARGET_DIR}/home/* ${BINARIES_DIR}/home/ + # Process command line arguments + for arg in "$@"; do + case "${arg}" in + --rpi3) handle_raspberry_pi "rpi3" ;; + --rpi4) handle_raspberry_pi "rpi4" ;; + # --rpi5) handle_raspberry_pi "rpi5" ;; + esac + done -# Unmount home image -sudo umount ${BINARIES_DIR}/homefs.ext4 + # Prepare and sync home data + local home_img="${BINARIES_DIR}/homefs.ext4" + echo "Preparing home data at ${home_img}" + rm -f "${home_img}" + truncate --size="6890M" "${home_img}" + mkfs.ext4 -L "homefs" -E lazy_itable_init=0,lazy_journal_init=0 "${home_img}" + + local home_mount_point="${BINARIES_DIR}/home" + mkdir -p "${home_mount_point}" + sudo mount -o loop,discard "${home_img}" "${home_mount_point}" + sudo rsync -ah --progress "${TARGET_DIR}/home/"* "${home_mount_point}/" + sudo umount "${home_img}" +} + +main "$@" From 080cfad2bf772c692de06e9282b39f008031ae27 Mon Sep 17 00:00:00 2001 From: Bohdan Buinich Date: Mon, 8 Jan 2024 00:50:44 +0200 Subject: [PATCH 3/8] [RPI] Refactor Image Generation Script for Clarity and Modularization - Reorganized variable definitions for clarity and consistency. - Encapsulated SWU file creation logic into 'create_swu_file' function for better modularity and readability. - Implemented 'cleanup' function to handle temporary file cleanup, enhancing script robustness. - Utilized bash array for 'SWUPDATE_FILES' to improve handling of multiple file entries. - Simplified error handling with 'set -e' and streamlined script exit using 'trap' for cleanup operations. - Cleaned up directory changing commands by redirecting 'pushd' and 'popd' output to '/dev/null'. --- .../board/ovos/raspberrypi/post-image.sh | 72 +++++++++++++------ 1 file changed, 51 insertions(+), 21 deletions(-) diff --git a/buildroot-external/board/ovos/raspberrypi/post-image.sh b/buildroot-external/board/ovos/raspberrypi/post-image.sh index b572c4b4..0d73c9ed 100755 --- a/buildroot-external/board/ovos/raspberrypi/post-image.sh +++ b/buildroot-external/board/ovos/raspberrypi/post-image.sh @@ -2,33 +2,63 @@ set -e -BOARD_DIR="$(dirname $0)" -BOARD_NAME="$(basename ${BOARD_DIR})" +# Define board directory and related variables +BOARD_DIR="$(dirname "$0")" +BOARD_NAME="$(basename "${BOARD_DIR}")" GENIMAGE_CFG="${BOARD_DIR}/genimage-${BOARD_NAME}.cfg" GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" -SWUPDATE_FILES="sw-description rootfs.squashfs" -# Pass an empty rootpath. genimage makes a full copy of the given rootpath to -# ${GENIMAGE_TMP}/root so passing TARGET_DIR would be a waste of time and disk -# space. We don't rely on genimage to build the rootfs image, just to insert a -# pre-built one in the disk image. +# Define files for SWUPDATE +SWUPDATE_FILES=("sw-description" "rootfs.squashfs") -trap 'rm -rf "${ROOTPATH_TMP}"' EXIT +# Check if necessary files and directories exist +if [ ! -d "${BUILD_DIR}" ] || [ ! -f "${GENIMAGE_CFG}" ]; then + echo "Required directories or config files are missing." + exit 1 +fi + +# Function to create SWU file +create_swu_file() { + local binaries_dir=$1 + shift + local files=("$@") + + pushd "${binaries_dir}" > /dev/null + printf '%s\n' "${files[@]}" | cpio -ov -H crc > rootfs.swu + if [ $? -ne 0 ]; then + echo "Error creating SWU file." + exit 1 + fi + popd > /dev/null +} + +# Clean up function for EXIT trap +cleanup() { + echo "Cleaning up temporary files." + rm -rf "${ROOTPATH_TMP}" + rm -rf "${GENIMAGE_TMP}" +} + +# Setting up trap for cleanup on script exit +trap cleanup EXIT + +# Create temporary root path ROOTPATH_TMP="$(mktemp -d)" -rm -rf "${GENIMAGE_TMP}" - +# Generate image using genimage +echo "Generating image with genimage..." genimage \ - --rootpath "${ROOTPATH_TMP}" \ - --tmppath "${GENIMAGE_TMP}" \ - --inputpath "${BINARIES_DIR}" \ - --outputpath "${BINARIES_DIR}" \ - --config "${GENIMAGE_CFG}" + --rootpath "${ROOTPATH_TMP}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" -pushd ${BINARIES_DIR} -for f in ${SWUPDATE_FILES} ; do - echo ${f} -done | cpio -ov -H crc > rootfs.swu -popd +if [ $? -ne 0 ]; then + echo "Error during image generation." + exit 1 +fi -exit $? +# Create SWU file +echo "Creating SWU file..." +create_swu_file "${BINARIES_DIR}" "${SWUPDATE_FILES[@]}" From d0dcab2864d14c31d14a673571dc366af11740a3 Mon Sep 17 00:00:00 2001 From: Bohdan Buinich Date: Tue, 9 Jan 2024 01:40:08 +0200 Subject: [PATCH 4/8] Moved post-build and post-images on top level (not fully tested) --- .../board/ovos/ova/post-build.sh | 57 --------- .../board/ovos/ova/post-image.sh | 34 ----- .../board/ovos/pc/post-build.sh | 32 ----- .../board/ovos/pc/post-image.sh | 27 ---- .../board/ovos/raspberrypi/post-build.sh | 88 ------------- .../board/ovos/raspberrypi/post-image.sh | 64 ---------- .../board/ovos/raspberrypi/rpi3/post-build.sh | 1 - .../board/ovos/raspberrypi/rpi3/post-image.sh | 1 - .../board/ovos/raspberrypi/rpi4/post-build.sh | 1 - .../board/ovos/raspberrypi/rpi4/post-image.sh | 1 - buildroot-external/configs/ova_64_defconfig | 6 +- buildroot-external/configs/rpi3_64_defconfig | 6 +- buildroot-external/configs/rpi4_64_defconfig | 6 +- .../configs/x86_64-base_defconfig | 6 +- .../ovos-containers/fetch-container-image.sh | 2 +- buildroot-external/scripts/post-build.sh | 119 ++++++++++++++++++ buildroot-external/scripts/post-image.sh | 68 ++++++++++ 17 files changed, 200 insertions(+), 319 deletions(-) delete mode 100755 buildroot-external/board/ovos/ova/post-build.sh delete mode 100755 buildroot-external/board/ovos/ova/post-image.sh delete mode 100755 buildroot-external/board/ovos/pc/post-build.sh delete mode 100755 buildroot-external/board/ovos/pc/post-image.sh delete mode 100755 buildroot-external/board/ovos/raspberrypi/post-build.sh delete mode 100755 buildroot-external/board/ovos/raspberrypi/post-image.sh delete mode 120000 buildroot-external/board/ovos/raspberrypi/rpi3/post-build.sh delete mode 120000 buildroot-external/board/ovos/raspberrypi/rpi3/post-image.sh delete mode 120000 buildroot-external/board/ovos/raspberrypi/rpi4/post-build.sh delete mode 120000 buildroot-external/board/ovos/raspberrypi/rpi4/post-image.sh create mode 100755 buildroot-external/scripts/post-build.sh create mode 100755 buildroot-external/scripts/post-image.sh diff --git a/buildroot-external/board/ovos/ova/post-build.sh b/buildroot-external/board/ovos/ova/post-build.sh deleted file mode 100755 index f6c73e13..00000000 --- a/buildroot-external/board/ovos/ova/post-build.sh +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/sh - -set -u -set -e - -BOARD_DIR="$(dirname $0)" - -. "${BR2_EXTERNAL_OPENVOICEOS_PATH}/meta" -. "${BOARD_DIR}/meta" - -# Write os-release -{ - echo "NAME=\"${OVOS_NAME}\"" - echo "VERSION=\"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD} ${BOARD_NAME}\"" - echo "ID=${OVOS_ID}" - echo "VERSION_ID=${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD}" - echo "PRETTY_NAME=\"${OVOS_NAME} ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD} ${BOARD_NAME}\"" - echo "CPE_NAME=cpe:2.3:o:openvoiceos:${OVOS_ID}:${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD}:*:${DEPLOYMENT}:*:*:*:${BOARD_ID}:*" - echo "HOME_URL=https://github.com/OpenVoiceOS/OpenVoiceOS" - echo "DOCUMENTATION_URL=https://github.com/OpenVoiceOS/OpenVoiceOS/tree/develop/documentation" - echo "SUPPORT_URL=https://github.com/OpenVoiceOS/OpenVoiceOS/issues" - echo "VARIANT=\"${OVOS_NAME} - Buildroot Edition\"" - echo "VARIANT_ID=${OVOS_ID}-${BOARD_ID}-buildroot" -} > "${TARGET_DIR}/usr/lib/os-release" - -# Write machine-info -{ - echo "CHASSIS=${CHASSIS}" - echo "DEPLOYMENT=${DEPLOYMENT}" -} > "${TARGET_DIR}/etc/machine-info" - -cp -f ../buildroot-external/board/ovos/ova/grub-efi.cfg ${BINARIES_DIR}/efi-part/EFI/BOOT/grub.cfg -cp -f ../buildroot-external/board/ovos/ova/cmdline.txt ${BINARIES_DIR} -cp -f ../buildroot-external/board/ovos/ova/sw-description ${BINARIES_DIR} - -grub-editenv "${BINARIES_DIR}/efi-part/EFI/BOOT/grubenv" create - -echo "Check for compressed kernel in ${TARGET_DIR}" -if [ -f "${TARGET_DIR}/boot/bzImage" ]; then - echo "Found bzImage, renaming to kernel" - mv ${TARGET_DIR}/boot/bzImage ${TARGET_DIR}/boot/kernel -fi - -# Prepare home data -rm -f ${BINARIES_DIR}/homefs.ext4 -truncate --size="6890M" ${BINARIES_DIR}/homefs.ext4 -mkfs.ext4 -L "homefs" -E lazy_itable_init=0,lazy_journal_init=0 ${BINARIES_DIR}/homefs.ext4 - -# Mount home image -mkdir -p ${BINARIES_DIR}/home -sudo mount -o loop,discard ${BINARIES_DIR}/homefs.ext4 ${BINARIES_DIR}/home - -# sync home folder -sudo rsync -ah --progress ${TARGET_DIR}/home/* ${BINARIES_DIR}/home/ - -# Unmount home image -sudo umount ${BINARIES_DIR}/homefs.ext4 diff --git a/buildroot-external/board/ovos/ova/post-image.sh b/buildroot-external/board/ovos/ova/post-image.sh deleted file mode 100755 index 0a93ef16..00000000 --- a/buildroot-external/board/ovos/ova/post-image.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash - -set -e - -BOARD_DIR="$(dirname $0)" -BOARD_NAME="$(basename ${BOARD_DIR})" -GENIMAGE_CFG="${BOARD_DIR}/genimage-${BOARD_NAME}.cfg" -GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" -SWUPDATE_FILES="sw-description rootfs.squashfs" - -# Pass an empty rootpath. genimage makes a full copy of the given rootpath to -# ${GENIMAGE_TMP}/root so passing TARGET_DIR would be a waste of time and disk -# space. We don't rely on genimage to build the rootfs image, just to insert a -# pre-built one in the disk image. - -trap 'rm -rf "${ROOTPATH_TMP}"' EXIT -ROOTPATH_TMP="$(mktemp -d)" - -rm -rf "${GENIMAGE_TMP}" - -genimage \ - --rootpath "${ROOTPATH_TMP}" \ - --tmppath "${GENIMAGE_TMP}" \ - --inputpath "${BINARIES_DIR}" \ - --outputpath "${BINARIES_DIR}" \ - --config "${GENIMAGE_CFG}" - -pushd ${BINARIES_DIR} -for f in ${SWUPDATE_FILES} ; do - echo ${f} -done | cpio -ov -H crc > rootfs.swu -popd - -exit $? diff --git a/buildroot-external/board/ovos/pc/post-build.sh b/buildroot-external/board/ovos/pc/post-build.sh deleted file mode 100755 index 13ecb32f..00000000 --- a/buildroot-external/board/ovos/pc/post-build.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/sh - -set -u -set -e - -BOARD_DIR="$(dirname $0)" - -. "${BR2_EXTERNAL_OPENVOICEOS_PATH}/meta" -. "${BOARD_DIR}/meta" - -# Write os-release -{ - echo "NAME=\"${OVOS_NAME}\"" - echo "VERSION=\"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD} ${BOARD_NAME}\"" - echo "ID=${OVOS_ID}" - echo "VERSION_ID=${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD}" - echo "PRETTY_NAME=\"${OVOS_NAME} ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD} ${BOARD_NAME}\"" - echo "CPE_NAME=cpe:2.3:o:openvoiceos:${OVOS_ID}:${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD}:*:${DEPLOYMENT}:*:*:*:${BOARD_ID}:*" - echo "HOME_URL=https://github.com/OpenVoiceOS/OpenVoiceOS" - echo "DOCUMENTATION_URL=https://github.com/OpenVoiceOS/OpenVoiceOS/tree/develop/documentation" - echo "SUPPORT_URL=https://github.com/OpenVoiceOS/OpenVoiceOS/issues" - echo "VARIANT=\"${OVOS_NAME} - Buildroot Edition\"" - echo "VARIANT_ID=${OVOS_ID}-${BOARD_ID}-buildroot" -} > "${TARGET_DIR}/usr/lib/os-release" - -# Write machine-info -{ - echo "CHASSIS=${CHASSIS}" - echo "DEPLOYMENT=${DEPLOYMENT}" -} > "${TARGET_DIR}/etc/machine-info" - -cp -f ../buildroot-external/board/ovos/ova/grub-efi.cfg ${BINARIES_DIR}/efi-part/EFI/BOOT/grub.cfg diff --git a/buildroot-external/board/ovos/pc/post-image.sh b/buildroot-external/board/ovos/pc/post-image.sh deleted file mode 100755 index 6cad20fb..00000000 --- a/buildroot-external/board/ovos/pc/post-image.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash - -set -e - -BOARD_DIR="$(dirname $0)" -BOARD_NAME="$(basename ${BOARD_DIR})" -GENIMAGE_CFG="${BOARD_DIR}/genimage-${BOARD_NAME}.cfg" -GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" - -# Pass an empty rootpath. genimage makes a full copy of the given rootpath to -# ${GENIMAGE_TMP}/root so passing TARGET_DIR would be a waste of time and disk -# space. We don't rely on genimage to build the rootfs image, just to insert a -# pre-built one in the disk image. - -trap 'rm -rf "${ROOTPATH_TMP}"' EXIT -ROOTPATH_TMP="$(mktemp -d)" - -rm -rf "${GENIMAGE_TMP}" - -genimage \ - --rootpath "${ROOTPATH_TMP}" \ - --tmppath "${GENIMAGE_TMP}" \ - --inputpath "${BINARIES_DIR}" \ - --outputpath "${BINARIES_DIR}" \ - --config "${GENIMAGE_CFG}" - -exit $? diff --git a/buildroot-external/board/ovos/raspberrypi/post-build.sh b/buildroot-external/board/ovos/raspberrypi/post-build.sh deleted file mode 100755 index c14d528b..00000000 --- a/buildroot-external/board/ovos/raspberrypi/post-build.sh +++ /dev/null @@ -1,88 +0,0 @@ -#!/bin/sh -set -eu - -# Set board directory and include meta files -BOARD_DIR="$(dirname $0)" -. "${BR2_EXTERNAL_OPENVOICEOS_PATH}/meta" -. "${BOARD_DIR}/meta" - -# Function to create and write os-release file -write_os_release() { - local os_release_file="${TARGET_DIR}/usr/lib/os-release" - echo "Creating os-release at ${os_release_file}" - { - echo "NAME=\"${OVOS_NAME}\"" - echo "VERSION=\"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD} ${BOARD_NAME}\"" - echo "ID=${OVOS_ID}" - echo "VERSION_ID=${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD}" - echo "PRETTY_NAME=\"${OVOS_NAME} ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD} ${BOARD_NAME}\"" - echo "CPE_NAME=cpe:2.3:o:openvoiceos:${OVOS_ID}:${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD}:*:${DEPLOYMENT}:*:*:*:${BOARD_ID}:*" - echo "HOME_URL=https://github.com/OpenVoiceOS/OpenVoiceOS" - echo "DOCUMENTATION_URL=https://github.com/OpenVoiceOS/OpenVoiceOS/tree/develop/documentation" - echo "SUPPORT_URL=https://github.com/OpenVoiceOS/OpenVoiceOS/issues" - echo "VARIANT=\"${OVOS_NAME} - Buildroot Edition\"" - echo "VARIANT_ID=${OVOS_ID}-${BOARD_ID}-buildroot" - } > "${os_release_file}" -} - -# Function to create and write machine-info file -write_machine_info() { - local machine_info_file="${TARGET_DIR}/etc/machine-info" - echo "Creating machine-info at ${machine_info_file}" - { - echo "CHASSIS=${CHASSIS}" - echo "DEPLOYMENT=${DEPLOYMENT}" - } > "${machine_info_file}" -} - -# Function to handle Raspberry Pi specific files -handle_raspberry_pi() { - local pi_version=$1 - echo "Handling Raspberry Pi ${pi_version} specific files" - cp -f "../buildroot-external/board/ovos/raspberrypi/${pi_version}/config.txt" "${BINARIES_DIR}/rpi-firmware/config.txt" - cp -f "../buildroot-external/board/ovos/raspberrypi/${pi_version}/RPI_EFI.fd" "${BINARIES_DIR}/rpi-firmware/RPI_EFI.fd" - cp -f "../buildroot-external/board/ovos/raspberrypi/grub-efi.cfg" "${BINARIES_DIR}/efi-part/EFI/BOOT/grub.cfg" - cp -f "../buildroot-external/board/ovos/raspberrypi/${pi_version}/sw-description" "${BINARIES_DIR}" -} - -# Main function to execute script logic -main() { - write_os_release - write_machine_info - - echo "Copying cmdline.txt to ${BINARIES_DIR}/rpi-firmware/" - cp -f ../buildroot-external/board/ovos/raspberrypi/cmdline.txt "${BINARIES_DIR}/rpi-firmware/cmdline.txt" - - echo "Creating grubenv" - grub-editenv "${BINARIES_DIR}/efi-part/EFI/BOOT/grubenv" create - - echo "Checking for kernel in ${TARGET_DIR}" - if [ -f "${TARGET_DIR}/boot/Image" ]; then - echo "Found Image, renaming to kernel" - mv "${TARGET_DIR}/boot/Image" "${TARGET_DIR}/boot/kernel" - fi - - # Process command line arguments - for arg in "$@"; do - case "${arg}" in - --rpi3) handle_raspberry_pi "rpi3" ;; - --rpi4) handle_raspberry_pi "rpi4" ;; - # --rpi5) handle_raspberry_pi "rpi5" ;; - esac - done - - # Prepare and sync home data - local home_img="${BINARIES_DIR}/homefs.ext4" - echo "Preparing home data at ${home_img}" - rm -f "${home_img}" - truncate --size="6890M" "${home_img}" - mkfs.ext4 -L "homefs" -E lazy_itable_init=0,lazy_journal_init=0 "${home_img}" - - local home_mount_point="${BINARIES_DIR}/home" - mkdir -p "${home_mount_point}" - sudo mount -o loop,discard "${home_img}" "${home_mount_point}" - sudo rsync -ah --progress "${TARGET_DIR}/home/"* "${home_mount_point}/" - sudo umount "${home_img}" -} - -main "$@" diff --git a/buildroot-external/board/ovos/raspberrypi/post-image.sh b/buildroot-external/board/ovos/raspberrypi/post-image.sh deleted file mode 100755 index 0d73c9ed..00000000 --- a/buildroot-external/board/ovos/raspberrypi/post-image.sh +++ /dev/null @@ -1,64 +0,0 @@ -#!/bin/bash - -set -e - -# Define board directory and related variables -BOARD_DIR="$(dirname "$0")" -BOARD_NAME="$(basename "${BOARD_DIR}")" -GENIMAGE_CFG="${BOARD_DIR}/genimage-${BOARD_NAME}.cfg" -GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" - -# Define files for SWUPDATE -SWUPDATE_FILES=("sw-description" "rootfs.squashfs") - -# Check if necessary files and directories exist -if [ ! -d "${BUILD_DIR}" ] || [ ! -f "${GENIMAGE_CFG}" ]; then - echo "Required directories or config files are missing." - exit 1 -fi - -# Function to create SWU file -create_swu_file() { - local binaries_dir=$1 - shift - local files=("$@") - - pushd "${binaries_dir}" > /dev/null - printf '%s\n' "${files[@]}" | cpio -ov -H crc > rootfs.swu - if [ $? -ne 0 ]; then - echo "Error creating SWU file." - exit 1 - fi - popd > /dev/null -} - -# Clean up function for EXIT trap -cleanup() { - echo "Cleaning up temporary files." - rm -rf "${ROOTPATH_TMP}" - rm -rf "${GENIMAGE_TMP}" -} - -# Setting up trap for cleanup on script exit -trap cleanup EXIT - -# Create temporary root path -ROOTPATH_TMP="$(mktemp -d)" - -# Generate image using genimage -echo "Generating image with genimage..." -genimage \ - --rootpath "${ROOTPATH_TMP}" \ - --tmppath "${GENIMAGE_TMP}" \ - --inputpath "${BINARIES_DIR}" \ - --outputpath "${BINARIES_DIR}" \ - --config "${GENIMAGE_CFG}" - -if [ $? -ne 0 ]; then - echo "Error during image generation." - exit 1 -fi - -# Create SWU file -echo "Creating SWU file..." -create_swu_file "${BINARIES_DIR}" "${SWUPDATE_FILES[@]}" diff --git a/buildroot-external/board/ovos/raspberrypi/rpi3/post-build.sh b/buildroot-external/board/ovos/raspberrypi/rpi3/post-build.sh deleted file mode 120000 index cd7f1164..00000000 --- a/buildroot-external/board/ovos/raspberrypi/rpi3/post-build.sh +++ /dev/null @@ -1 +0,0 @@ -../post-build.sh \ No newline at end of file diff --git a/buildroot-external/board/ovos/raspberrypi/rpi3/post-image.sh b/buildroot-external/board/ovos/raspberrypi/rpi3/post-image.sh deleted file mode 120000 index ae6294fa..00000000 --- a/buildroot-external/board/ovos/raspberrypi/rpi3/post-image.sh +++ /dev/null @@ -1 +0,0 @@ -../post-image.sh \ No newline at end of file diff --git a/buildroot-external/board/ovos/raspberrypi/rpi4/post-build.sh b/buildroot-external/board/ovos/raspberrypi/rpi4/post-build.sh deleted file mode 120000 index cd7f1164..00000000 --- a/buildroot-external/board/ovos/raspberrypi/rpi4/post-build.sh +++ /dev/null @@ -1 +0,0 @@ -../post-build.sh \ No newline at end of file diff --git a/buildroot-external/board/ovos/raspberrypi/rpi4/post-image.sh b/buildroot-external/board/ovos/raspberrypi/rpi4/post-image.sh deleted file mode 120000 index ae6294fa..00000000 --- a/buildroot-external/board/ovos/raspberrypi/rpi4/post-image.sh +++ /dev/null @@ -1 +0,0 @@ -../post-image.sh \ No newline at end of file diff --git a/buildroot-external/configs/ova_64_defconfig b/buildroot-external/configs/ova_64_defconfig index 47b6ef0d..2d41ebb6 100644 --- a/buildroot-external/configs/ova_64_defconfig +++ b/buildroot-external/configs/ova_64_defconfig @@ -24,9 +24,9 @@ BR2_GENERATE_LOCALE="en_US.UTF-8" BR2_SYSTEM_ENABLE_NLS=y BR2_ROOTFS_USERS_TABLES="$(BR2_EXTERNAL)/user_table.txt" BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL)/rootfs-overlay $(BR2_EXTERNAL)/board/ovos/ova/rootfs-overlay" -BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL)/board/ovos/ova/post-build.sh" -BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL)/board/ovos/ova/post-image.sh" -BR2_ROOTFS_POST_SCRIPT_ARGS="--ova" +BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL)/scripts/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL)/scripts/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL)/board/ovos/ova" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.69" diff --git a/buildroot-external/configs/rpi3_64_defconfig b/buildroot-external/configs/rpi3_64_defconfig index 8c2d18a1..777956b0 100644 --- a/buildroot-external/configs/rpi3_64_defconfig +++ b/buildroot-external/configs/rpi3_64_defconfig @@ -24,9 +24,9 @@ BR2_GENERATE_LOCALE="en_US.UTF-8" BR2_SYSTEM_ENABLE_NLS=y BR2_ROOTFS_USERS_TABLES="$(BR2_EXTERNAL)/user_table.txt" BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL)/rootfs-overlay $(BR2_EXTERNAL)/board/ovos/raspberrypi/rootfs-overlay $(BR2_EXTERNAL)/board/ovos/raspberrypi/rpi3/rootfs-overlay" -BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL)/board/ovos/raspberrypi/rpi3/post-build.sh" -BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL)/board/ovos/raspberrypi/rpi3/post-image.sh" -BR2_ROOTFS_POST_SCRIPT_ARGS="--rpi3" +BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL)/scripts/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL)/scripts/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL)/board/ovos/raspberrypi/rpi3" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,342c7ee49e862edc30c893f141f55b9211b7a43b)/linux-342c7ee49e862edc30c893f141f55b9211b7a43b.tar.gz" diff --git a/buildroot-external/configs/rpi4_64_defconfig b/buildroot-external/configs/rpi4_64_defconfig index 3bc24cf2..c95bc6c2 100644 --- a/buildroot-external/configs/rpi4_64_defconfig +++ b/buildroot-external/configs/rpi4_64_defconfig @@ -25,9 +25,9 @@ BR2_GENERATE_LOCALE="en_US.UTF-8" BR2_SYSTEM_ENABLE_NLS=y BR2_ROOTFS_USERS_TABLES="$(BR2_EXTERNAL)/user_table.txt" BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL)/rootfs-overlay $(BR2_EXTERNAL)/board/ovos/raspberrypi/rootfs-overlay $(BR2_EXTERNAL)/board/ovos/raspberrypi/rpi4/rootfs-overlay" -BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL)/board/ovos/raspberrypi/rpi4/post-build.sh" -BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL)/board/ovos/raspberrypi/rpi4/post-image.sh" -BR2_ROOTFS_POST_SCRIPT_ARGS="--rpi4" +BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL)/scripts/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL)/scripts/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL)/board/ovos/raspberrypi/rpi4" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,342c7ee49e862edc30c893f141f55b9211b7a43b)/linux-342c7ee49e862edc30c893f141f55b9211b7a43b.tar.gz" diff --git a/buildroot-external/configs/x86_64-base_defconfig b/buildroot-external/configs/x86_64-base_defconfig index 1f44341e..3c492c43 100644 --- a/buildroot-external/configs/x86_64-base_defconfig +++ b/buildroot-external/configs/x86_64-base_defconfig @@ -26,9 +26,9 @@ BR2_GENERATE_LOCALE="en_US.UTF-8" BR2_SYSTEM_ENABLE_NLS=y BR2_ROOTFS_USERS_TABLES="$(BR2_EXTERNAL)/user_table.txt" BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL)/rootfs-overlay/base $(BR2_EXTERNAL)/board/ovos/pc/rootfs-overlay/base" -BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL)/board/ovos/pc/post-build.sh" -BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL)/board/ovos/pc/post-image.sh" -BR2_ROOTFS_POST_SCRIPT_ARGS="--x86" +BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL)/scripts/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL)/scripts/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL)/board/ovos/pc" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.25" diff --git a/buildroot-external/package/ovos-containers/fetch-container-image.sh b/buildroot-external/package/ovos-containers/fetch-container-image.sh index 1fffcab1..624edcb6 100755 --- a/buildroot-external/package/ovos-containers/fetch-container-image.sh +++ b/buildroot-external/package/ovos-containers/fetch-container-image.sh @@ -2,7 +2,7 @@ # Original script from Home Assistant -set -euo pipefail +set -eu # Variables arch="$1" diff --git a/buildroot-external/scripts/post-build.sh b/buildroot-external/scripts/post-build.sh new file mode 100755 index 00000000..00ee0f77 --- /dev/null +++ b/buildroot-external/scripts/post-build.sh @@ -0,0 +1,119 @@ +#!/bin/sh + +set -eu + +# Define board directory and related variables +BOARD_DIR=$2 +BOARD_TYPE=$(basename "${BOARD_DIR}") + +# Source external metadata +. "${BR2_EXTERNAL_OPENVOICEOS_PATH}/meta" +. "${BOARD_DIR}/meta" + +# Function to create and write os-release file +write_os_release() { + local os_release_file="${TARGET_DIR}/usr/lib/os-release" + echo "Creating os-release at ${os_release_file}" + { + echo "NAME=\"${OVOS_NAME}\"" + echo "VERSION=\"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD} ${BOARD_NAME}\"" + echo "ID=${OVOS_ID}" + echo "VERSION_ID=${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD}" + echo "PRETTY_NAME=\"${OVOS_NAME} ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD} ${BOARD_NAME}\"" + echo "CPE_NAME=cpe:2.3:o:openvoiceos:${OVOS_ID}:${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD}:*:${DEPLOYMENT}:*:*:*:${BOARD_ID}:*" + echo "HOME_URL=https://github.com/OpenVoiceOS/OpenVoiceOS" + echo "DOCUMENTATION_URL=https://github.com/OpenVoiceOS/OpenVoiceOS/tree/develop/documentation" + echo "SUPPORT_URL=https://github.com/OpenVoiceOS/OpenVoiceOS/issues" + echo "VARIANT=\"${OVOS_NAME} - Buildroot Edition\"" + echo "VARIANT_ID=${OVOS_ID}-${BOARD_ID}-buildroot" + } > "${os_release_file}" +} + +# Function to create and write machine-info file +write_machine_info() { + local machine_info_file="${TARGET_DIR}/etc/machine-info" + echo "Creating machine-info at ${machine_info_file}" + { + echo "CHASSIS=${CHASSIS}" + echo "DEPLOYMENT=${DEPLOYMENT}" + } > "${machine_info_file}" +} + +# Function to copy files based on board type +copy_board_specific_files() { + echo "Copying files for board type: ${BOARD_TYPE}" + + case "${BOARD_TYPE}" in + "rpi3"|"rpi4"|"rpi5") + cp -f "${BOARD_DIR}/../cmdline.txt" "${BINARIES_DIR}/rpi-firmware/cmdline.txt" + cp -f "${BOARD_DIR}/config.txt" "${BINARIES_DIR}/rpi-firmware/config.txt" + cp -f "${BOARD_DIR}/RPI_EFI.fd" "${BINARIES_DIR}/rpi-firmware/RPI_EFI.fd" + cp -f "${BOARD_DIR}/../grub-efi.cfg" "${BINARIES_DIR}/efi-part/EFI/BOOT/grub.cfg" + cp -f "${BOARD_DIR}/sw-description" "${BINARIES_DIR}" + ;; + "ova") + cp -f "${BOARD_DIR}/grub-efi.cfg" "${BINARIES_DIR}/efi-part/EFI/BOOT/grub.cfg" + cp -f "${BOARD_DIR}/cmdline.txt" "${BINARIES_DIR}" + cp -f "${BOARD_DIR}/sw-description" "${BINARIES_DIR}" + ;; + "pc") + cp -f "${BOARD_DIR}/grub-efi.cfg" "${BINARIES_DIR}/efi-part/EFI/BOOT/grub.cfg" + ;; + *) + echo "No specific files to copy for board type: ${BOARD_TYPE}" + ;; + esac +} + +# Function to handle kernel renaming based on board type +handle_kernel_renaming() { + case "${BOARD_TYPE}" in + "rpi3"|"rpi4"|"rpi5") + grub-editenv "${BINARIES_DIR}/efi-part/EFI/BOOT/grubenv" create + if [ -f "${TARGET_DIR}/boot/Image" ]; then + echo "Found Image, renaming to kernel" + mv "${TARGET_DIR}/boot/Image" "${TARGET_DIR}/boot/kernel" + fi + ;; + "ova") + grub-editenv "${BINARIES_DIR}/efi-part/EFI/BOOT/grubenv" create + if [ -f "${TARGET_DIR}/boot/bzImage" ]; then + echo "Found bzImage, renaming to kernel" + mv "${TARGET_DIR}/boot/bzImage" "${TARGET_DIR}/boot/kernel" + fi + ;; + "x86_64") + # No kernel renaming logic needed for x86_64 + ;; + esac +} + +# Main function to execute script logic +main() { + write_os_release + write_machine_info + copy_board_specific_files + handle_kernel_renaming + + # Prepare and sync home data + local home_img="${BINARIES_DIR}/homefs.ext4" + echo "Preparing home data at ${home_img}" + rm -f "${home_img}" + truncate --size="6890M" "${home_img}" + mkfs.ext4 -L "homefs" -E lazy_itable_init=0,lazy_journal_init=0 "${home_img}" + + local home_mount_point="${BINARIES_DIR}/home" + mkdir -p "${home_mount_point}" + sudo mount -o loop,discard "${home_img}" "${home_mount_point}" + sudo rsync -ah --progress "${TARGET_DIR}/home/"* "${home_mount_point}/" + sudo umount "${home_img}" +} + +# Ensure the script is called with the correct number of arguments +if [ "$#" -ne 2 ]; then + echo "Usage: $0 " + exit 1 +fi + +# Call the main function +main \ No newline at end of file diff --git a/buildroot-external/scripts/post-image.sh b/buildroot-external/scripts/post-image.sh new file mode 100755 index 00000000..3078092a --- /dev/null +++ b/buildroot-external/scripts/post-image.sh @@ -0,0 +1,68 @@ +#!/bin/bash + +set -eu + +# Define board directory and related variables +BOARD_DIR=$2 +BOARD_TYPE="$(basename "${BOARD_DIR}")" +GENIMAGE_CFG="${BOARD_DIR}/genimage-${BOARD_TYPE}.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +# Define files for SWUPDATE +SWUPDATE_FILES=("sw-description" "rootfs.squashfs") + +# Function to create SWU file +create_swu_file() { + local binaries_dir=$1 + local files=("${@:2}") + + pushd "${binaries_dir}" > /dev/null + printf '%s\n' "${files[@]}" | cpio -ov -H crc > rootfs.swu + popd > /dev/null +} + +# Clean up function for EXIT trap +cleanup() { + echo "Cleaning up temporary files." + rm -rf "${ROOTPATH_TMP}" "${GENIMAGE_TMP}" +} + +# Main function to execute script logic +main() { + # Check if necessary files and directories exist + if [ ! -d "${BUILD_DIR}" ] || [ ! -f "${GENIMAGE_CFG}" ]; then + echo "Required directories or config files are missing." + exit 1 + fi + + # Generate image using genimage + echo "Generating image with genimage..." + if ! genimage \ + --rootpath "${ROOTPATH_TMP}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}"; then + echo "Error during image generation." + exit 1 + fi + + # Create SWU file + echo "Creating SWU file..." + create_swu_file "${BINARIES_DIR}" "${SWUPDATE_FILES[@]}" +} + +# Setting up trap for cleanup on script exit +trap cleanup EXIT + +# Check for correct number of arguments +if [ "$#" -ne 2 ]; then + echo "Usage: $0 " + exit 1 +fi + +# Create temporary root path +ROOTPATH_TMP="$(mktemp -d)" + +# Call the main function +main From 4b092feb6545668142e1dbbcd73d952bca5506af Mon Sep 17 00:00:00 2001 From: Bohdan Buinich Date: Sat, 27 Jan 2024 02:33:31 +0200 Subject: [PATCH 5/8] fix after merge --- .../board/ovos/pc/post-build.sh | 57 --------------- .../board/ovos/pc/post-image.sh | 34 --------- .../board/ovos/raspberrypi/post-build.sh | 73 ------------------- buildroot-external/scripts/post-build.sh | 8 +- 4 files changed, 4 insertions(+), 168 deletions(-) delete mode 100755 buildroot-external/board/ovos/pc/post-build.sh delete mode 100755 buildroot-external/board/ovos/pc/post-image.sh delete mode 100755 buildroot-external/board/ovos/raspberrypi/post-build.sh diff --git a/buildroot-external/board/ovos/pc/post-build.sh b/buildroot-external/board/ovos/pc/post-build.sh deleted file mode 100755 index f6c73e13..00000000 --- a/buildroot-external/board/ovos/pc/post-build.sh +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/sh - -set -u -set -e - -BOARD_DIR="$(dirname $0)" - -. "${BR2_EXTERNAL_OPENVOICEOS_PATH}/meta" -. "${BOARD_DIR}/meta" - -# Write os-release -{ - echo "NAME=\"${OVOS_NAME}\"" - echo "VERSION=\"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD} ${BOARD_NAME}\"" - echo "ID=${OVOS_ID}" - echo "VERSION_ID=${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD}" - echo "PRETTY_NAME=\"${OVOS_NAME} ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD} ${BOARD_NAME}\"" - echo "CPE_NAME=cpe:2.3:o:openvoiceos:${OVOS_ID}:${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD}:*:${DEPLOYMENT}:*:*:*:${BOARD_ID}:*" - echo "HOME_URL=https://github.com/OpenVoiceOS/OpenVoiceOS" - echo "DOCUMENTATION_URL=https://github.com/OpenVoiceOS/OpenVoiceOS/tree/develop/documentation" - echo "SUPPORT_URL=https://github.com/OpenVoiceOS/OpenVoiceOS/issues" - echo "VARIANT=\"${OVOS_NAME} - Buildroot Edition\"" - echo "VARIANT_ID=${OVOS_ID}-${BOARD_ID}-buildroot" -} > "${TARGET_DIR}/usr/lib/os-release" - -# Write machine-info -{ - echo "CHASSIS=${CHASSIS}" - echo "DEPLOYMENT=${DEPLOYMENT}" -} > "${TARGET_DIR}/etc/machine-info" - -cp -f ../buildroot-external/board/ovos/ova/grub-efi.cfg ${BINARIES_DIR}/efi-part/EFI/BOOT/grub.cfg -cp -f ../buildroot-external/board/ovos/ova/cmdline.txt ${BINARIES_DIR} -cp -f ../buildroot-external/board/ovos/ova/sw-description ${BINARIES_DIR} - -grub-editenv "${BINARIES_DIR}/efi-part/EFI/BOOT/grubenv" create - -echo "Check for compressed kernel in ${TARGET_DIR}" -if [ -f "${TARGET_DIR}/boot/bzImage" ]; then - echo "Found bzImage, renaming to kernel" - mv ${TARGET_DIR}/boot/bzImage ${TARGET_DIR}/boot/kernel -fi - -# Prepare home data -rm -f ${BINARIES_DIR}/homefs.ext4 -truncate --size="6890M" ${BINARIES_DIR}/homefs.ext4 -mkfs.ext4 -L "homefs" -E lazy_itable_init=0,lazy_journal_init=0 ${BINARIES_DIR}/homefs.ext4 - -# Mount home image -mkdir -p ${BINARIES_DIR}/home -sudo mount -o loop,discard ${BINARIES_DIR}/homefs.ext4 ${BINARIES_DIR}/home - -# sync home folder -sudo rsync -ah --progress ${TARGET_DIR}/home/* ${BINARIES_DIR}/home/ - -# Unmount home image -sudo umount ${BINARIES_DIR}/homefs.ext4 diff --git a/buildroot-external/board/ovos/pc/post-image.sh b/buildroot-external/board/ovos/pc/post-image.sh deleted file mode 100755 index 0a93ef16..00000000 --- a/buildroot-external/board/ovos/pc/post-image.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash - -set -e - -BOARD_DIR="$(dirname $0)" -BOARD_NAME="$(basename ${BOARD_DIR})" -GENIMAGE_CFG="${BOARD_DIR}/genimage-${BOARD_NAME}.cfg" -GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" -SWUPDATE_FILES="sw-description rootfs.squashfs" - -# Pass an empty rootpath. genimage makes a full copy of the given rootpath to -# ${GENIMAGE_TMP}/root so passing TARGET_DIR would be a waste of time and disk -# space. We don't rely on genimage to build the rootfs image, just to insert a -# pre-built one in the disk image. - -trap 'rm -rf "${ROOTPATH_TMP}"' EXIT -ROOTPATH_TMP="$(mktemp -d)" - -rm -rf "${GENIMAGE_TMP}" - -genimage \ - --rootpath "${ROOTPATH_TMP}" \ - --tmppath "${GENIMAGE_TMP}" \ - --inputpath "${BINARIES_DIR}" \ - --outputpath "${BINARIES_DIR}" \ - --config "${GENIMAGE_CFG}" - -pushd ${BINARIES_DIR} -for f in ${SWUPDATE_FILES} ; do - echo ${f} -done | cpio -ov -H crc > rootfs.swu -popd - -exit $? diff --git a/buildroot-external/board/ovos/raspberrypi/post-build.sh b/buildroot-external/board/ovos/raspberrypi/post-build.sh deleted file mode 100755 index 8a0bdd14..00000000 --- a/buildroot-external/board/ovos/raspberrypi/post-build.sh +++ /dev/null @@ -1,73 +0,0 @@ -#!/bin/sh - -set -u -set -e - -BOARD_DIR="$(dirname $0)" - -. "${BR2_EXTERNAL_OPENVOICEOS_PATH}/meta" -. "${BOARD_DIR}/meta" - -# Write os-release -{ - echo "NAME=\"${OVOS_NAME}\"" - echo "VERSION=\"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD} ${BOARD_NAME}\"" - echo "ID=${OVOS_ID}" - echo "VERSION_ID=${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD}" - echo "PRETTY_NAME=\"${OVOS_NAME} ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD} ${BOARD_NAME}\"" - echo "CPE_NAME=cpe:2.3:o:openvoiceos:${OVOS_ID}:${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD}:*:${DEPLOYMENT}:*:*:*:${BOARD_ID}:*" - echo "HOME_URL=https://github.com/OpenVoiceOS/OpenVoiceOS" - echo "DOCUMENTATION_URL=https://github.com/OpenVoiceOS/OpenVoiceOS/tree/develop/documentation" - echo "SUPPORT_URL=https://github.com/OpenVoiceOS/OpenVoiceOS/issues" - echo "VARIANT=\"${OVOS_NAME} - Buildroot Edition\"" - echo "VARIANT_ID=${OVOS_ID}-${BOARD_ID}-buildroot" -} > "${TARGET_DIR}/usr/lib/os-release" - -# Write machine-info -{ - echo "CHASSIS=${CHASSIS}" - echo "DEPLOYMENT=${DEPLOYMENT}" -} > "${TARGET_DIR}/etc/machine-info" - -cp -f ../buildroot-external/board/ovos/raspberrypi/cmdline.txt ${BINARIES_DIR}/rpi-firmware/cmdline.txt -grub-editenv "${BINARIES_DIR}/efi-part/EFI/BOOT/grubenv" create - -echo "Check for kernel in ${TARGET_DIR}" -if [ -f "${TARGET_DIR}/boot/Image" ]; then - echo "Found Image, renaming to kernel" - mv ${TARGET_DIR}/boot/Image ${TARGET_DIR}/boot/kernel -fi - -# Copy the right config.txt file -for arg in "$@" -do - case "${arg}" in - --rpi3) - cp -f ../buildroot-external/board/ovos/raspberrypi/rpi3/config.txt ${BINARIES_DIR}/rpi-firmware/config.txt - cp -f ../buildroot-external/board/ovos/raspberrypi/rpi3/RPI_EFI.fd ${BINARIES_DIR}/rpi-firmware/RPI_EFI.fd - cp -f ../buildroot-external/board/ovos/raspberrypi/grub-efi.cfg ${BINARIES_DIR}/efi-part/EFI/BOOT/grub.cfg - cp -f ../buildroot-external/board/ovos/raspberrypi/rpi3/sw-description ${BINARIES_DIR} - ;; - --rpi4) - cp -f ../buildroot-external/board/ovos/raspberrypi/rpi4/config.txt ${BINARIES_DIR}/rpi-firmware/config.txt - cp -f ../buildroot-external/board/ovos/raspberrypi/rpi4/RPI_EFI.fd ${BINARIES_DIR}/rpi-firmware/RPI_EFI.fd - cp -f ../buildroot-external/board/ovos/raspberrypi/grub-efi.cfg ${BINARIES_DIR}/efi-part/EFI/BOOT/grub.cfg - cp -f ../buildroot-external/board/ovos/raspberrypi/rpi4/sw-description ${BINARIES_DIR} - ;; - esac -done - -# Prepare home data -rm -f ${BINARIES_DIR}/homefs.ext4 -truncate --size="6890M" ${BINARIES_DIR}/homefs.ext4 -mkfs.ext4 -L "homefs" -E lazy_itable_init=0,lazy_journal_init=0 ${BINARIES_DIR}/homefs.ext4 - -# Mount home image -mkdir -p ${BINARIES_DIR}/home -sudo mount -o loop,discard ${BINARIES_DIR}/homefs.ext4 ${BINARIES_DIR}/home - -# sync home folder -sudo rsync -avPHSX ${TARGET_DIR}/home/* ${BINARIES_DIR}/home/ - -# Unmount home image -sudo umount ${BINARIES_DIR}/homefs.ext4 diff --git a/buildroot-external/scripts/post-build.sh b/buildroot-external/scripts/post-build.sh index 00ee0f77..c29ef873 100755 --- a/buildroot-external/scripts/post-build.sh +++ b/buildroot-external/scripts/post-build.sh @@ -82,8 +82,8 @@ handle_kernel_renaming() { mv "${TARGET_DIR}/boot/bzImage" "${TARGET_DIR}/boot/kernel" fi ;; - "x86_64") - # No kernel renaming logic needed for x86_64 + "pc") + # No kernel renaming logic needed for pc(x86_64) ;; esac } @@ -105,7 +105,7 @@ main() { local home_mount_point="${BINARIES_DIR}/home" mkdir -p "${home_mount_point}" sudo mount -o loop,discard "${home_img}" "${home_mount_point}" - sudo rsync -ah --progress "${TARGET_DIR}/home/"* "${home_mount_point}/" + sudo rsync -avPHSX "${TARGET_DIR}/home/"* "${home_mount_point}/" sudo umount "${home_img}" } @@ -116,4 +116,4 @@ if [ "$#" -ne 2 ]; then fi # Call the main function -main \ No newline at end of file +main From 521dd9eeb512e321d24331749542edea07674c31 Mon Sep 17 00:00:00 2001 From: Bohdan Buinich Date: Sat, 27 Jan 2024 02:37:38 +0200 Subject: [PATCH 6/8] oops --- buildroot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildroot b/buildroot index 16cc28ca..68dab30c 160000 --- a/buildroot +++ b/buildroot @@ -1 +1 @@ -Subproject commit 16cc28ca2c6e3f1c0848548877bd787e54ba78c3 +Subproject commit 68dab30c34f257a5cf1ff2baf41b77ace07d0113 From f7fc7caa0f62bd1e58a12f192d3ec92b639ff955 Mon Sep 17 00:00:00 2001 From: Bohdan Buinich Date: Sat, 27 Jan 2024 02:40:10 +0200 Subject: [PATCH 7/8] oops 2 --- .../configs/x86_64-base_defconfig | 707 ------------------ 1 file changed, 707 deletions(-) delete mode 100644 buildroot-external/configs/x86_64-base_defconfig diff --git a/buildroot-external/configs/x86_64-base_defconfig b/buildroot-external/configs/x86_64-base_defconfig deleted file mode 100644 index 3c492c43..00000000 --- a/buildroot-external/configs/x86_64-base_defconfig +++ /dev/null @@ -1,707 +0,0 @@ -BR2_x86_64=y -BR2_PACKAGE_GLIBC_UTILS=y -BR2_BINUTILS_VERSION_2_39_X=y -BR2_GCC_VERSION_12_X=y -BR2_TOOLCHAIN_BUILDROOT_CXX=y -BR2_TOOLCHAIN_BUILDROOT_FORTRAN=y -BR2_GCC_ENABLE_OPENMP=y -BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY=y -BR2_DL_DIR="../../downloads" -BR2_CCACHE=y -BR2_CCACHE_DIR="../ccache" -BR2_OPTIMIZE_3=y -BR2_ENABLE_LTO=y -BR2_FORCE_HOST_BUILD=y -BR2_SSP_REGULAR=y -BR2_TARGET_GENERIC_HOSTNAME="OpenVoiceOS" -BR2_TARGET_GENERIC_ISSUE="Welcome to OpenVoiceOS" -BR2_INIT_SYSTEMD=y -# BR2_TARGET_ENABLE_ROOT_LOGIN is not set -BR2_SYSTEM_BIN_SH_BASH=y -# BR2_TARGET_GENERIC_GETTY is not set -# BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set -BR2_SYSTEM_DHCP="eth0" -# BR2_ENABLE_LOCALE_PURGE is not set -BR2_GENERATE_LOCALE="en_US.UTF-8" -BR2_SYSTEM_ENABLE_NLS=y -BR2_ROOTFS_USERS_TABLES="$(BR2_EXTERNAL)/user_table.txt" -BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL)/rootfs-overlay/base $(BR2_EXTERNAL)/board/ovos/pc/rootfs-overlay/base" -BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL)/scripts/post-build.sh" -BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL)/scripts/post-image.sh" -BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL)/board/ovos/pc" -BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.25" -BR2_LINUX_KERNEL_DEFCONFIG="x86_64" -BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL)/kernel/ovos.config $(BR2_EXTERNAL)/kernel/device-drivers.config $(BR2_EXTERNAL)/board/ovos/pc/kernel.config" -BR2_LINUX_KERNEL_LZ4=y -BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y -BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y -BR2_PACKAGE_LINUX_TOOLS_HV=y -BR2_PACKAGE_LINUX_TOOLS_HV_KVP_DAEMON=y -BR2_PACKAGE_LINUX_TOOLS_HV_FCOPY_DAEMON=y -BR2_PACKAGE_LINUX_TOOLS_HV_VSS_DAEMON=y -BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL)/busybox.config" -BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES=y -BR2_PACKAGE_ALSA_UTILS=y -BR2_PACKAGE_ALSA_UTILS_ALSACONF=y -BR2_PACKAGE_ALSA_UTILS_ACONNECT=y -BR2_PACKAGE_ALSA_UTILS_ALSALOOP=y -BR2_PACKAGE_ALSA_UTILS_ALSAUCM=y -BR2_PACKAGE_ALSA_UTILS_ALSATPLG=y -BR2_PACKAGE_ALSA_UTILS_AMIDI=y -BR2_PACKAGE_ALSA_UTILS_AMIXER=y -BR2_PACKAGE_ALSA_UTILS_APLAY=y -BR2_PACKAGE_ALSA_UTILS_APLAYMIDI=y -BR2_PACKAGE_ALSA_UTILS_ARECORDMIDI=y -BR2_PACKAGE_ALSA_UTILS_ASEQDUMP=y -BR2_PACKAGE_ALSA_UTILS_ASEQNET=y -BR2_PACKAGE_ALSA_UTILS_BAT=y -BR2_PACKAGE_ALSA_UTILS_IECSET=y -BR2_PACKAGE_ALSA_UTILS_SPEAKER_TEST=y -BR2_PACKAGE_ESPEAK=y -BR2_PACKAGE_ESPEAK_AUDIO_BACKEND_PULSEAUDIO=y -BR2_PACKAGE_FFMPEG_GPL=y -BR2_PACKAGE_FFMPEG_NONFREE=y -BR2_PACKAGE_FFMPEG_FFPLAY=y -BR2_PACKAGE_FFMPEG_FFPROBE=y -BR2_PACKAGE_FFMPEG_AVRESAMPLE=y -BR2_PACKAGE_FFMPEG_POSTPROC=y -BR2_PACKAGE_FLUIDSYNTH_PULSEAUDIO=y -BR2_PACKAGE_GSTREAMER1=y -BR2_PACKAGE_GST1_PLUGINS_BASE_INSTALL_TOOLS=y -BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_ADDER=y -BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIOMIXER=y -BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIORATE=y -BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_COMPOSITOR=y -BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_ENCODING=y -BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_GIO=y -BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_OVERLAYCOMPOSITION=y -BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_RAWPARSE=y -BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_SUBPARSE=y -BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_TCP=y -BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEORATE=y -BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_ALSA=y -BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_TREMOR=y -BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_OGG=y -BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_OPUS=y -BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_PANGO=y -BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_THEORA=y -BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VORBIS=y -BR2_PACKAGE_GST1_PLUGINS_GOOD=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_JPEG=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PNG=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_BZ2=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_ALPHA=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_APETAG=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUDIOFX=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUDIOPARSERS=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUPARSE=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUTODETECT=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_CUTTER=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_DEBUGUTILS=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_DEINTERLACE=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_DTMF=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_EFFECTV=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_EQUALIZER=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_FLV=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_FLX=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_GOOM=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_GOOM2K1=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_ICYDEMUX=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_ID3DEMUX=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_IMAGEFREEZE=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_INTERLEAVE=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_LAW=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_LEVEL=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MATROSKA=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MONOSCOPE=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MULTIFILE=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MULTIPART=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_REPLAYGAIN=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTP=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTPMANAGER=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTSP=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SHAPEWIPE=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SMPTE=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SPECTRUM=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_UDP=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOBOX=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOCROP=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOFILTER=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOMIXER=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_WAVENC=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_XINGMUX=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_Y4M=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_LAME=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MPG123=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_OSS=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_OSS4=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2_PROBE=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_CAIRO=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_FLAC=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_PULSE=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SOUPHTTPSRC=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SPEEX=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_TAGLIB=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_TWOLAME=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VPX=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_WAVPACK=y -BR2_PACKAGE_GST1_PLUGINS_BAD=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ADPCMDEC=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ADPCMENC=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AIFF=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOBUFFERSPLIT=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOFXBAD=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOLATENCY=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOMIXMATRIX=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOVISUALIZERS=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUTOCONVERT=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_BAYER=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_CAMERABIN2=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_COLOREFFECTS=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DEBUGUTILS=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DVBSUBENC=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DVBSUBOVERLAY=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DVDSPU=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FACEOVERLAY=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FESTIVAL=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FREEVERB=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_GAUDIEFFECTS=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_GDP=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ID3TAG=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_INTERLACE=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_JPEGFORMAT=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MIDI=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPEGDEMUX=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPEGTSDEMUX=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPEGTSMUX=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPEGPSMUX=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ONVIF=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_PROXY=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_RAWPARSE=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_RTMP2=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_RTP2=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_RTMP=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SDP=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SEGMENTCLIP=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SUBENC=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SWITCHBIN=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_TIMECODE=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOFILTERS=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOFRAME_AUDIOLEVEL=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOPARSERS=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOSIGNAL=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VMNC=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_Y4M=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ASSRENDER=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_BLUEZ=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_BZ2=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_CURL=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DASH=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DECKLINK=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DVB=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FAAD=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FBDEV=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FDK_AAC=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FLUIDSYNTH=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_HLS=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_KMS=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DTLS=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPEG2ENC=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPENH264=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPENJPEG=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPUS=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SHM=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SNDFILE=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SRTP=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_UVCH264=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VOAACENC=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_WEBP=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_WEBRTC=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_WEBRTCDSP=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_V4L2CODECS=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_X265=y -BR2_PACKAGE_GST1_PLUGINS_BAD_ZBAR=y -BR2_PACKAGE_GST1_PLUGINS_UGLY=y -BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_ASFDEMUX=y -BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_DVDLPCMDEC=y -BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_DVDSUB=y -BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_REALMEDIA=y -BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_DVDREAD=y -BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_MPEG2DEC=y -BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_X264=y -BR2_PACKAGE_GST1_DEVTOOLS=y -BR2_PACKAGE_GST1_INTERPIPE=y -BR2_PACKAGE_GST1_PYTHON=y -BR2_PACKAGE_MPV=y -BR2_PACKAGE_PULSEAUDIO_DAEMON=y -BR2_PACKAGE_SOX=y -BR2_PACKAGE_SQUEEZELITE=y -BR2_PACKAGE_SQUEEZELITE_RESAMPLE=y -BR2_PACKAGE_VLC=y -BR2_PACKAGE_GZIP=y -BR2_PACKAGE_LZIP=y -BR2_PACKAGE_LZOP=y -BR2_PACKAGE_P7ZIP=y -BR2_PACKAGE_UNRAR=y -BR2_PACKAGE_UNZIP=y -BR2_PACKAGE_ZIP=y -BR2_PACKAGE_NMON=y -BR2_PACKAGE_BINUTILS=y -BR2_PACKAGE_BINUTILS_TARGET=y -BR2_PACKAGE_CHECK=y -BR2_PACKAGE_DIFFUTILS=y -BR2_PACKAGE_FINDUTILS=y -BR2_PACKAGE_GIT_CRYPT=y -BR2_PACKAGE_GREP=y -BR2_PACKAGE_JO=y -BR2_PACKAGE_JQ=y -BR2_PACKAGE_MAKE=y -BR2_PACKAGE_PATCH=y -BR2_PACKAGE_PKGCONF=y -BR2_PACKAGE_CIFS_UTILS=y -BR2_PACKAGE_CPIO=y -BR2_PACKAGE_DOSFSTOOLS=y -BR2_PACKAGE_DOSFSTOOLS_FATLABEL=y -BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y -BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT=y -BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y -BR2_PACKAGE_NFS_UTILS=y -BR2_PACKAGE_NTFS_3G=y -BR2_PACKAGE_SQUASHFS=y -BR2_PACKAGE_SQUASHFS_LZ4=y -BR2_PACKAGE_SQUASHFS_LZMA=y -BR2_PACKAGE_SQUASHFS_LZO=y -BR2_PACKAGE_SQUASHFS_XZ=y -BR2_PACKAGE_LINUX_FIRMWARE=y -BR2_PACKAGE_LINUX_FIRMWARE_INTEL_SST_DSP=y -BR2_PACKAGE_LINUX_FIRMWARE_I915=y -BR2_PACKAGE_LINUX_FIRMWARE_IBT=y -BR2_PACKAGE_LINUX_FIRMWARE_QUALCOMM_6174A_BT=y -BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX_BT=y -BR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX_BT=y -BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_22000=y -BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_22260=y -BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160=y -BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3168=y -BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3945=y -BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_4965=y -BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_5000=y -BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2A=y -BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2B=y -BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7260=y -BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7265D=y -BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8000C=y -BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8265=y -BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_9XXX=y -BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7601U=y -BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT73=y -BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT2XX=y -BR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX=y -BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y -BR2_PACKAGE_LINUX_FIRMWARE_RTL_8169=y -BR2_PACKAGE_LINUX_FIRMWARE_USB_SERIAL_TI=y -BR2_PACKAGE_DBUS_CPP=y -BR2_PACKAGE_GPTFDISK=y -BR2_PACKAGE_GPTFDISK_GDISK=y -BR2_PACKAGE_GPTFDISK_SGDISK=y -BR2_PACKAGE_GPTFDISK_CGDISK=y -BR2_PACKAGE_KBD=y -BR2_PACKAGE_PARTED=y -BR2_PACKAGE_RNG_TOOLS=y -BR2_PACKAGE_RTL8812AU_AIRCRACK_NG=y -BR2_PACKAGE_USBMOUNT=y -BR2_PACKAGE_USBUTILS=y -BR2_PACKAGE_PYTHON3=y -BR2_PACKAGE_PYTHON3_PY_PYC=y -BR2_PACKAGE_PYTHON3_2TO3=y -BR2_PACKAGE_PYTHON3_BZIP2=y -BR2_PACKAGE_PYTHON3_CODECSCJK=y -BR2_PACKAGE_PYTHON3_CURSES=y -BR2_PACKAGE_PYTHON3_DECIMAL=y -BR2_PACKAGE_PYTHON3_OSSAUDIODEV=y -BR2_PACKAGE_PYTHON3_SQLITE=y -BR2_PACKAGE_PYTHON3_XZ=y -BR2_PACKAGE_PYTHON_ALSAAUDIO=y -BR2_PACKAGE_PYTHON_ARROW=y -BR2_PACKAGE_PYTHON_AUTOBAHN=y -BR2_PACKAGE_PYTHON_CHERRYPY=y -BR2_PACKAGE_PYTHON_COLORAMA=y -BR2_PACKAGE_PYTHON_CONFIGSHELL_FB=y -BR2_PACKAGE_PYTHON_DAEMONIZE=y -BR2_PACKAGE_PYTHON_DBUS_NEXT=y -BR2_PACKAGE_PYTHON_FILELOCK=y -BR2_PACKAGE_PYTHON_FLASK_BABEL=y -BR2_PACKAGE_PYTHON_FLASK_CORS=y -BR2_PACKAGE_PYTHON_FLASK_JSONRPC=y -BR2_PACKAGE_PYTHON_FLASK_LOGIN=y -BR2_PACKAGE_PYTHON_FLASK_SQLALCHEMY=y -BR2_PACKAGE_PYTHON_FLATBUFFERS=y -BR2_PACKAGE_PYTHON_HUMANIZE=y -BR2_PACKAGE_PYTHON_JSON_SCHEMA_VALIDATOR=y -BR2_PACKAGE_PYTHON_JSONMODELS=y -BR2_PACKAGE_PYTHON_JSONSCHEMA=y -BR2_PACKAGE_PYTHON_NETADDR=y -BR2_PACKAGE_PYTHON_NETIFACES=y -BR2_PACKAGE_PYTHON_NETWORKMANAGER=y -BR2_PACKAGE_PYTHON_OAUTHLIB=y -BR2_PACKAGE_PYTHON_PACKAGING=y -BR2_PACKAGE_PYTHON_PAHO_MQTT=y -BR2_PACKAGE_PYTHON_PEXPECT=y -BR2_PACKAGE_PYTHON_PILLOW=y -BR2_PACKAGE_PYTHON_PIP=y -BR2_PACKAGE_PYTHON_PLY=y -BR2_PACKAGE_PYTHON_PSUTIL=y -BR2_PACKAGE_PYTHON_PYJWT=y -BR2_PACKAGE_PYTHON_PYUDEV=y -BR2_PACKAGE_PYTHON_RPI_WS281X=y -BR2_PACKAGE_PYTHON_RUAMEL_YAML=y -BR2_PACKAGE_PYTHON_SDNOTIFY=y -BR2_PACKAGE_PYTHON_SERIAL=y -BR2_PACKAGE_PYTHON_SMBUS_CFFI=y -BR2_PACKAGE_PYTHON_SMMAP2=y -BR2_PACKAGE_PYTHON_SOCKETIO=y -BR2_PACKAGE_PYTHON_SPIDEV=y -BR2_PACKAGE_PYTHON_SYSTEMD=y -BR2_PACKAGE_PYTHON_TEXTTABLE=y -BR2_PACKAGE_PYTHON_TWISTED=y -BR2_PACKAGE_PYTHON_TWISTED_HTTP2=y -BR2_PACKAGE_PYTHON_TWISTED_TLS=y -BR2_PACKAGE_PYTHON_VALIDATORS=y -BR2_PACKAGE_PYTHON_WATCHDOG=y -BR2_PACKAGE_PYTHON_WEBSOCKET_CLIENT=y -BR2_PACKAGE_PYTHON_ZC_LOCKFILE=y -BR2_PACKAGE_ALSA_LIB_PYTHON=y -BR2_PACKAGE_ALSA_PLUGINS=y -BR2_PACKAGE_LIBAO=y -BR2_PACKAGE_LIBSAMPLERATE=y -BR2_PACKAGE_OPUS_FIXED_POINT=y -BR2_PACKAGE_OPUSFILE=y -BR2_PACKAGE_PORTAUDIO=y -BR2_PACKAGE_PORTAUDIO_OSS=y -BR2_PACKAGE_LIBARCHIVE=y -BR2_PACKAGE_LIBARCHIVE_BSDTAR=y -BR2_PACKAGE_LIBARCHIVE_BSDCPIO=y -BR2_PACKAGE_LIBARCHIVE_BSDCAT=y -BR2_PACKAGE_LIBZIP=y -BR2_PACKAGE_MINIZIP=y -BR2_PACKAGE_SNAPPY=y -BR2_PACKAGE_CA_CERTIFICATES=y -BR2_PACKAGE_GNUTLS_OPENSSL=y -BR2_PACKAGE_GNUTLS_TOOLS=y -BR2_PACKAGE_LIBNSS=y -BR2_PACKAGE_LIBSSH2=y -BR2_PACKAGE_LIBOPENSSL_BIN=y -BR2_PACKAGE_LIBOPENSSL_ENGINES=y -BR2_PACKAGE_LIBNFS=y -BR2_PACKAGE_DTC=y -BR2_PACKAGE_DTC_PROGRAMS=y -BR2_PACKAGE_LIBUSB_COMPAT=y -BR2_PACKAGE_LIBV4L_UTILS=y -BR2_PACKAGE_MTDEV=y -BR2_PACKAGE_LIBFASTJSON=y -BR2_PACKAGE_YAJL=y -BR2_PACKAGE_LIBCAMERA_V4L2=y -BR2_PACKAGE_LIBCAMERA_PIPELINE_SIMPLE=y -BR2_PACKAGE_LIBCAMERA_PIPELINE_UVCVIDEO=y -BR2_PACKAGE_LIBCAMERA_PIPELINE_VIMC=y -BR2_PACKAGE_LIBCAMERA_APPS=y -BR2_PACKAGE_LIBEBML=y -BR2_PACKAGE_LIBOPUSENC=y -BR2_PACKAGE_C_ARES=y -BR2_PACKAGE_GLIB_NETWORKING=y -BR2_PACKAGE_LIBCURL_CURL=y -BR2_PACKAGE_LIBDNET=y -BR2_PACKAGE_LIBHTTPPARSER=y -BR2_PACKAGE_LIBIDN=y -BR2_PACKAGE_LIBMICROHTTPD=y -BR2_PACKAGE_LIBSHAIRPLAY=y -BR2_PACKAGE_NGHTTP2=y -BR2_PACKAGE_BOOST_SYSTEM=y -BR2_PACKAGE_ELFUTILS=y -BR2_PACKAGE_ELL=y -BR2_PACKAGE_GTEST=y -BR2_PACKAGE_LIBCAP_NG=y -BR2_PACKAGE_LIBEVDEV=y -BR2_PACKAGE_LIBSECCOMP=y -BR2_PACKAGE_LIBUV=y -BR2_PACKAGE_PROTOBUF=y -BR2_PACKAGE_ICU=y -BR2_PACKAGE_LIBESTR=y -BR2_PACKAGE_NCURSES_TARGET_PROGS=y -BR2_PACKAGE_PCRE_16=y -BR2_PACKAGE_PCRE_32=y -BR2_PACKAGE_PCRE2=y -BR2_PACKAGE_RE2=y -BR2_PACKAGE_XUTIL_UTIL_MACROS=y -BR2_PACKAGE_BLUEZ_TOOLS=y -BR2_PACKAGE_BLUEZ5_UTILS_OBEX=y -BR2_PACKAGE_BLUEZ5_UTILS_CLIENT=y -BR2_PACKAGE_BLUEZ5_UTILS_MONITOR=y -BR2_PACKAGE_BLUEZ5_UTILS_TOOLS=y -BR2_PACKAGE_BLUEZ5_UTILS_DEPRECATED=y -BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HID=y -BR2_PACKAGE_CRDA=y -BR2_PACKAGE_DNSMASQ=y -BR2_PACKAGE_DNSMASQ_DNSSEC=y -BR2_PACKAGE_DNSMASQ_IDN=y -BR2_PACKAGE_DNSMASQ_CONNTRACK=y -BR2_PACKAGE_IPTABLES=y -BR2_PACKAGE_IW=y -BR2_PACKAGE_MODEM_MANAGER=y -BR2_PACKAGE_NETWORK_MANAGER=y -BR2_PACKAGE_NETWORK_MANAGER_TUI=y -BR2_PACKAGE_NETWORK_MANAGER_CLI=y -BR2_PACKAGE_NTP=y -BR2_PACKAGE_NTP_NTPDATE=y -BR2_PACKAGE_NTP_NTPTIME=y -BR2_PACKAGE_OPENSSH=y -BR2_PACKAGE_SAMBA4=y -BR2_PACKAGE_SHAIRPORT_SYNC=y -BR2_PACKAGE_SHAIRPORT_SYNC_CONVOLUTION=y -BR2_PACKAGE_SHAIRPORT_SYNC_DBUS=y -BR2_PACKAGE_SHAIRPORT_SYNC_LIBSOXR=y -BR2_PACKAGE_WGET=y -BR2_PACKAGE_WIRELESS_TOOLS=y -BR2_PACKAGE_WPA_SUPPLICANT=y -BR2_PACKAGE_WPA_SUPPLICANT_WEXT=y -BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT=y -BR2_PACKAGE_WPA_SUPPLICANT_MESH_NETWORKING=y -BR2_PACKAGE_WPA_SUPPLICANT_EAP=y -BR2_PACKAGE_WPA_SUPPLICANT_DEBUG_SYSLOG=y -BR2_PACKAGE_WPA_SUPPLICANT_WPA3=y -BR2_PACKAGE_WPA_SUPPLICANT_CLI=y -BR2_PACKAGE_WPA_SUPPLICANT_WPA_CLIENT_SO=y -BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y -BR2_PACKAGE_WPA_SUPPLICANT_DBUS=y -BR2_PACKAGE_FILE=y -BR2_PACKAGE_LOGROTATE=y -BR2_PACKAGE_SCREEN=y -BR2_PACKAGE_SUDO=y -BR2_PACKAGE_TIME=y -BR2_PACKAGE_WHICH=y -BR2_PACKAGE_EFIBOOTMGR=y -BR2_PACKAGE_HTOP=y -BR2_PACKAGE_PROCPS_NG=y -BR2_PACKAGE_SYSTEMD_ANALYZE=y -BR2_PACKAGE_SYSTEMD_BACKLIGHT=y -BR2_PACKAGE_SYSTEMD_FIRSTBOOT=y -BR2_PACKAGE_SYSTEMD_HIBERNATE=y -BR2_PACKAGE_SYSTEMD_LOCALED=y -BR2_PACKAGE_SYSTEMD_LOGIND=y -# BR2_PACKAGE_SYSTEMD_NETWORKD is not set -BR2_PACKAGE_SYSTEMD_OOMD=y -BR2_PACKAGE_SYSTEMD_POLKIT=y -BR2_PACKAGE_SYSTEMD_RANDOMSEED=y -BR2_PACKAGE_SYSTEMD_REPART=y -BR2_PACKAGE_SYSTEMD_RFKILL=y -BR2_PACKAGE_TAR=y -BR2_PACKAGE_UTIL_LINUX_BINARIES=y -BR2_PACKAGE_UTIL_LINUX_HWCLOCK=y -BR2_PACKAGE_UTIL_LINUX_KILL=y -BR2_PACKAGE_UTIL_LINUX_LOGGER=y -BR2_PACKAGE_UTIL_LINUX_LOGIN=y -BR2_PACKAGE_UTIL_LINUX_MESG=y -BR2_PACKAGE_UTIL_LINUX_MORE=y -BR2_PACKAGE_UTIL_LINUX_NOLOGIN=y -BR2_PACKAGE_UTIL_LINUX_PARTX=y -BR2_PACKAGE_UTIL_LINUX_PIVOT_ROOT=y -BR2_PACKAGE_UTIL_LINUX_ZRAMCTL=y -BR2_PACKAGE_NANO=y -BR2_PACKAGE_VIM=y -BR2_TARGET_ROOTFS_SQUASHFS=y -BR2_TARGET_ROOTFS_SQUASHFS4_LZ4=y -# BR2_TARGET_ROOTFS_TAR is not set -BR2_TARGET_GRUB2=y -BR2_TARGET_GRUB2_X86_64_EFI=y -BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI="boot linux ext2 fat squash4 part_msdos part_gpt normal efi_gop regexp loadenv echo cat test configfile" -BR2_TARGET_GRUB2_INSTALL_TOOLS=y -BR2_PACKAGE_HOST_CMAKE=y -BR2_PACKAGE_HOST_DOSFSTOOLS=y -BR2_PACKAGE_HOST_E2FSPROGS=y -BR2_PACKAGE_HOST_GENIMAGE=y -BR2_PACKAGE_HOST_MKPASSWD=y -BR2_PACKAGE_HOST_MTOOLS=y -BR2_PACKAGE_HOST_NODEJS=y -BR2_PACKAGE_HOST_PKGCONF=y -BR2_PACKAGE_HOST_PYTHON_CYTHON=y -BR2_PACKAGE_HOST_PYTHON_LXML=y -BR2_PACKAGE_HOST_PYTHON_SIX=y -BR2_PACKAGE_HOST_PYTHON_XLRD=y -BR2_PACKAGE_HOST_SWIG=y -BR2_PACKAGE_BTSPEAKER=y -BR2_PACKAGE_DEEPFILTERNET_LADSPA=y -BR2_PACKAGE_FANN=y -BR2_PACKAGE_GROWDISK_SERVICE=y -BR2_PACKAGE_HOSTNAME_SERVICE=y -BR2_PACKAGE_KSM_PRELOAD=y -BR2_PACKAGE_NCPAMIXER=y -BR2_PACKAGE_OVOS_BUS_SERVER=y -BR2_PACKAGE_OVOS_DASHBOARD=y -BR2_PACKAGE_PICOTTS=y -BR2_PACKAGE_RNNNOISE_LADSPA=y -BR2_PACKAGE_ROC_TOOLKIT=y -BR2_PACKAGE_SNAPCAST=y -BR2_PACKAGE_SNAPCAST_SERVER=y -BR2_PACKAGE_SPOTIFYD=y -BR2_PACKAGE_TENSORFLOW_LITE=y -BR2_PACKAGE_WHISPERCPP=y -BR2_PACKAGE_WIFI_CONNECT=y -BR2_PACKAGE_PYTHON_ADAPT_PARSER=y -BR2_PACKAGE_PYTHON_ASTRAL=y -BR2_PACKAGE_PYTHON_AUDIO_METADATA=y -BR2_PACKAGE_PYTHON_BOARD=y -BR2_PACKAGE_PYTHON_CLICK_DEFAULT_GROUP=y -BR2_PACKAGE_PYTHON_COMBO_LOCK=y -BR2_PACKAGE_PYTHON_COVERALLS=y -BR2_PACKAGE_PYTHON_CUTECHARTS=y -BR2_PACKAGE_PYTHON_DATACLASSES=y -BR2_PACKAGE_PYTHON_DEPRECATED=y -BR2_PACKAGE_PYTHON_FEEDPARSER=y -BR2_PACKAGE_PYTHON_FLASK_FONTAWESOME=y -BR2_PACKAGE_PYTHON_FLASK_SIMPLELOGIN=y -BR2_PACKAGE_PYTHON_FLASK_SOCKETIO=y -BR2_PACKAGE_PYTHON_GEOIP_GEOLITE2=y -BR2_PACKAGE_PYTHON_GOOGLE_API_PYTHON_CLIENT=y -BR2_PACKAGE_PYTHON_GOOGLE_TRANS_NEW=y -BR2_PACKAGE_PYTHON_GPSDCLIENT=y -BR2_PACKAGE_PYTHON_GTTS=y -BR2_PACKAGE_PYTHON_HIJRI_CONVERTER=y -BR2_PACKAGE_PYTHON_HOLIDAYS=y -BR2_PACKAGE_PYTHON_HUMANHASH3=y -BR2_PACKAGE_PYTHON_KTHREAD=y -BR2_PACKAGE_PYTHON_LANGCODES=y -BR2_PACKAGE_PYTHON_LAZY=y -BR2_PACKAGE_PYTHON_LEVENSHTEIN=y -BR2_PACKAGE_PYTHON_MEMORY_TEMPFILE=y -BR2_PACKAGE_PYTHON_MOCK_MSM=y -BR2_PACKAGE_PYTHON_MSM=y -BR2_PACKAGE_PYTHON_MULTI_KEY_DICT=y -BR2_PACKAGE_PYTHON_MYCROFT_MESSAGEBUS_CLIENT=y -BR2_PACKAGE_PYTHON_NEON_LANG_PLUGIN_LIBRETRANSLATE=y -BR2_PACKAGE_PYTHON_NEON_SOLVER_PLUGIN_DDG=y -BR2_PACKAGE_PYTHON_NEON_SOLVER_PLUGIN_WIKIPEDIA=y -BR2_PACKAGE_PYTHON_NEON_SOLVER_PLUGIN_WOLFRAM_ALPHA=y -BR2_PACKAGE_PYTHON_NEON_SOLVERS=y -BR2_PACKAGE_PYTHON_NEON_TRANSFORMERS=y -BR2_PACKAGE_PYTHON_NEON_UTTERANCE_PLUGIN_RAKE=y -BR2_PACKAGE_PYTHON_OAUTH2CLIENT=y -BR2_PACKAGE_PYTHON_OLEFILE=y -BR2_PACKAGE_PYTHON_PADACIOSO=y -BR2_PACKAGE_PYTHON_PADATIOUS=y -BR2_PACKAGE_PYTHON_PAFY=y -BR2_PACKAGE_PYTHON_PAKO=y -BR2_PACKAGE_PYTHON_PEP8=y -BR2_PACKAGE_PYTHON_PETACT=y -BR2_PACKAGE_PYTHON_PHONEME_GUESSER=y -BR2_PACKAGE_PYTHON_POCKETSPHINX=y -BR2_PACKAGE_PYTHON_PRECISE_LITE_RUNNER=y -BR2_PACKAGE_PYTHON_PULSECTL=y -BR2_PACKAGE_PYTHON_PYAUDIO=y -BR2_PACKAGE_PYTHON_PYCHROMECAST=y -BR2_PACKAGE_PYTHON_PYCPUINFO=y -BR2_PACKAGE_PYTHON_PYEE=y -BR2_PACKAGE_PYTHON_PYFTDI=y -BR2_PACKAGE_PYTHON_PYJOKES=y -BR2_PACKAGE_PYTHON_PYMPLAYER=y -BR2_PACKAGE_PYTHON_PYOWM=y -BR2_PACKAGE_PYTHON_PYTZDATA=y -BR2_PACKAGE_PYTHON_PYWEBIO=y -BR2_PACKAGE_PYTHON_QUANTULUM3=y -BR2_PACKAGE_PYTHON_RAKEKEYWORDS=y -BR2_PACKAGE_PYTHON_RAPIDFUZZ=y -BR2_PACKAGE_PYTHON_REQUESTS_FUTURES=y -BR2_PACKAGE_PYTHON_REVERSE_GEOCODER=y -BR2_PACKAGE_PYTHON_SGMLLIB3K=y -BR2_PACKAGE_PYTHON_SMBUS2=y -BR2_PACKAGE_PYTHON_SMMAP=y -BR2_PACKAGE_PYTHON_SONOPY=y -BR2_PACKAGE_PYTHON_SOURCE=y -BR2_PACKAGE_PYTHON_SYSV_IPC=y -BR2_PACKAGE_PYTHON_TAILHEAD=y -BR2_PACKAGE_PYTHON_TFLIT=y -BR2_PACKAGE_PYTHON_TUTUBO=y -BR2_PACKAGE_PYTHON_TZLOCAL=y -BR2_PACKAGE_PYTHON_URL_NORMALIZE=y -BR2_PACKAGE_PYTHON_VLC=y -BR2_PACKAGE_PYTHON_VOSK_API=y -BR2_PACKAGE_PYTHON_WEBRTCVAD=y -BR2_PACKAGE_PYTHON_WHEEL=y -BR2_PACKAGE_PYTHON_WIKIPEDIA_FOR_HUMANS=y -BR2_PACKAGE_PYTHON_XMLRUNNER=y -BR2_PACKAGE_PYTHON_YAGMAIL=y -BR2_PACKAGE_PYTHON_YOUTUBE_DL=y -BR2_PACKAGE_PYTHON_YOUTUBE_SEARCHER=y -BR2_PACKAGE_PYTHON_YT_DLP=y -BR2_PACKAGE_PYTHON_OVOS_CLI_CLIENT=y -BR2_PACKAGE_PYTHON_OVOS_CONFIG=y -BR2_PACKAGE_PYTHON_OVOS_CORE=y -BR2_PACKAGE_PYTHON_OVOS_AUDIO_PLUGIN_SIMPLE=y -BR2_PACKAGE_PYTHON_OVOS_BACKEND_CLIENT=y -BR2_PACKAGE_PYTHON_OVOS_BACKEND_MANAGER=y -BR2_PACKAGE_PYTHON_OVOS_CONFIG_ASSISTANT=y -BR2_PACKAGE_PYTHON_OVOS_LINGUA_FRANCA=y -BR2_PACKAGE_PYTHON_OVOS_LOCAL_BACKEND=y -BR2_PACKAGE_PYTHON_OVOS_NOTIFICATIONS_SERVICE=y -BR2_PACKAGE_PYTHON_OVOS_OCP_AUDIO_PLUGIN=y -BR2_PACKAGE_PYTHON_OVOS_OCP_BANDCAMP_PLUGIN=y -BR2_PACKAGE_PYTHON_OVOS_OCP_DEEZER_PLUGIN=y -BR2_PACKAGE_PYTHON_OVOS_OCP_FILES_PLUGIN=y -BR2_PACKAGE_PYTHON_OVOS_OCP_M3U_PLUGIN=y -BR2_PACKAGE_PYTHON_OVOS_OCP_NEWS_PLUGIN=y -BR2_PACKAGE_PYTHON_OVOS_OCP_RSS_PLUGIN=y -BR2_PACKAGE_PYTHON_OVOS_OCP_YOUTUBE_PLUGIN=y -BR2_PACKAGE_PYTHON_OVOS_PHAL=y -BR2_PACKAGE_PYTHON_OVOS_PHAL_PLUGIN_ALSA=y -BR2_PACKAGE_PYTHON_OVOS_PHAL_PLUGIN_BALENA_WIFI=y -BR2_PACKAGE_PYTHON_OVOS_PHAL_PLUGIN_CONFIGURATION_PROVIDER=y -BR2_PACKAGE_PYTHON_OVOS_PHAL_PLUGIN_CONNECTIVITY_EVENTS=y -BR2_PACKAGE_PYTHON_OVOS_PHAL_PLUGIN_DASHBOARD=y -BR2_PACKAGE_PYTHON_OVOS_PHAL_PLUGIN_GUI_NETWORK_CLIENT=y -BR2_PACKAGE_PYTHON_OVOS_PHAL_PLUGIN_HOMEASSISTANT=y -BR2_PACKAGE_PYTHON_OVOS_PHAL_PLUGIN_IPGEO=y -BR2_PACKAGE_PYTHON_OVOS_PHAL_PLUGIN_NETWORK_MANAGER=y -BR2_PACKAGE_PYTHON_OVOS_PHAL_PLUGIN_SYSTEM=y -BR2_PACKAGE_PYTHON_OVOS_PHAL_PLUGIN_WIFI_SETUP=y -BR2_PACKAGE_PYTHON_OVOS_SKILL_INSTALLER=y -BR2_PACKAGE_PYTHON_OVOS_SKILL_MANAGER=y -BR2_PACKAGE_PYTHON_OVOS_STT_HTTP_SERVER=y -BR2_PACKAGE_PYTHON_OVOS_STT_PLUGIN_CHROMIUM=y -BR2_PACKAGE_PYTHON_OVOS_STT_PLUGIN_SELENE=y -BR2_PACKAGE_PYTHON_OVOS_STT_PLUGIN_VOSK=y -BR2_PACKAGE_PYTHON_OVOS_STT_SERVER_PLUGIN=y -BR2_PACKAGE_PYTHON_NEON_TTS_PLUGIN_LARYNX_SERVER=y -BR2_PACKAGE_PYTHON_OVOS_TTS_PLUGIN_MARYTTS=y -BR2_PACKAGE_PYTHON_OVOS_TTS_PLUGIN_MIMIC=y -BR2_PACKAGE_PYTHON_OVOS_TTS_PLUGIN_MIMIC2=y -BR2_PACKAGE_PYTHON_OVOS_TTS_PLUGIN_MIMIC3_SERVER=y -BR2_PACKAGE_PYTHON_OVOS_TTS_PLUGIN_PICO=y -BR2_PACKAGE_PYTHON_OVOS_TTS_SERVER=y -BR2_PACKAGE_PYTHON_OVOS_TTS_SERVER_PLUGIN=y -BR2_PACKAGE_PYTHON_OVOS_UTILS=y -BR2_PACKAGE_PYTHON_OVOS_VAD_PLUGIN_WEBRTCVAD=y -BR2_PACKAGE_PYTHON_OVOS_VLC_PLUGIN=y -BR2_PACKAGE_PYTHON_OVOS_WORKSHOP=y -BR2_PACKAGE_PYTHON_OVOS_WW_PLUGIN_POCKETSPHINX=y -BR2_PACKAGE_PYTHON_OVOS_WW_PLUGIN_PRECISE_LITE=y -BR2_PACKAGE_PYTHON_OVOS_WW_PLUGIN_VOSK=y -BR2_PACKAGE_SKILL_ALERTS=y -BR2_PACKAGE_SKILL_LOCAL_MUSIC=y -BR2_PACKAGE_SKILL_OVOS_DATE_TIME=y -BR2_PACKAGE_SKILL_OVOS_DDG=y -BR2_PACKAGE_SKILL_OVOS_FALLBACK_UNKNOWN=y -BR2_PACKAGE_SKILL_OVOS_FILEBROWSER=y -BR2_PACKAGE_SKILL_OVOS_HOMESCREEN=y -BR2_PACKAGE_SKILL_OVOS_NAPTIME=y -BR2_PACKAGE_SKILL_OVOS_NEWS=y -BR2_PACKAGE_SKILL_OVOS_NOTES=y -BR2_PACKAGE_SKILL_OVOS_SETTINGS=y -BR2_PACKAGE_SKILL_OVOS_SETUP=y -BR2_PACKAGE_SKILL_OVOS_STOP=y -BR2_PACKAGE_SKILL_OVOS_VOLUME=y -BR2_PACKAGE_SKILL_OVOS_PERSONAL=y -BR2_PACKAGE_SKILL_OVOS_WEATHER=y -BR2_PACKAGE_SKILL_OVOS_WOLFIE=y -BR2_PACKAGE_SKILL_YOUTUBE_MUSIC=y From 83427604192dfb96b5a3c01c7f57dc492aee0b5b Mon Sep 17 00:00:00 2001 From: Bohdan Buinich Date: Sat, 27 Jan 2024 02:42:38 +0200 Subject: [PATCH 8/8] align 0x86_64 --- buildroot-external/configs/x86_64_defconfig | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/buildroot-external/configs/x86_64_defconfig b/buildroot-external/configs/x86_64_defconfig index d7088cfe..23263f5e 100644 --- a/buildroot-external/configs/x86_64_defconfig +++ b/buildroot-external/configs/x86_64_defconfig @@ -24,9 +24,9 @@ BR2_GENERATE_LOCALE="en_US.UTF-8" BR2_SYSTEM_ENABLE_NLS=y BR2_ROOTFS_USERS_TABLES="$(BR2_EXTERNAL)/user_table.txt" BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL)/rootfs-overlay $(BR2_EXTERNAL)/board/ovos/pc/rootfs-overlay" -BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL)/board/ovos/pc/post-build.sh" -BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL)/board/ovos/pc/post-image.sh" -BR2_ROOTFS_POST_SCRIPT_ARGS="--x86" +BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL)/scripts/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL)/scripts/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL)/board/ovos/pc" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.73"