#!/usr/bin/env bash # # SPDX-License-Identifier: GPL-3.0-or-later set -e -u shopt -s extglob # Control the environment umask 0022 export LC_ALL="C.UTF-8" if [[ -v LANGUAGE ]]; then # LC_ALL=C.UTF-8, unlike LC_ALL=C, does not override LANGUAGE. # See https://sourceware.org/bugzilla/show_bug.cgi?id=16621 and https://savannah.gnu.org/bugs/?62815 unset LANGUAGE fi [[ -v SOURCE_DATE_EPOCH ]] || printf -v SOURCE_DATE_EPOCH '%(%s)T' -1 export SOURCE_DATE_EPOCH # Set application name from the script's file name app_name="${0##*/}" # Define global variables. All of them will be overwritten later pkg_list=() bootstrap_pkg_list=() quiet="" work_dir="" out_dir="" gpg_key="" gpg_sender="" iso_name="" iso_label="" iso_uuid="" iso_publisher="" iso_application="" iso_version="" install_dir="" arch="" pacman_conf="" packages="" packages_dual="" bootstrap_packages="" bootstrap_packages_dual="" pacstrap_dir="" declare -i rm_work_dir=0 buildmodes=() bootmodes=() airootfs_image_type="" airootfs_image_tool_options=() cert_list=() declare -A file_permissions=() efibootimg="" efiboot_files=() # Show an INFO message # $1: message string _msg_info() { local _msg="${1}" [[ "${quiet}" == "y" ]] || printf '[%s] INFO: %s\n' "${app_name}" "${_msg}" } # Show a WARNING message # $1: message string _msg_warning() { local _msg="${1}" printf '[%s] WARNING: %s\n' "${app_name}" "${_msg}" >&2 } # Show an ERROR message then exit with status # $1: message string # $2: exit code number (with 0 does not exit) _msg_error() { local _msg="${1}" local _error=${2} printf '[%s] ERROR: %s\n' "${app_name}" "${_msg}" >&2 if (( _error > 0 )); then exit "${_error}" fi } # Show help usage, with an exit status. # $1: exit status number. _usage() { IFS='' read -r -d '' usagetext < options: -A Set an application name for the ISO Default: '${iso_application}' -C pacman configuration file. Default: '${pacman_conf}' -D Set an install_dir. All files will be located here. Default: '${install_dir}' NOTE: Max 8 characters, use only [a-z0-9] -L