summaryrefslogtreecommitdiff
path: root/parabolaiso/mkparabolaiso
diff options
context:
space:
mode:
authorDavid P <megver83@parabola.nu>2020-07-15 11:05:30 -0400
committerDavid P <megver83@parabola.nu>2020-07-15 11:05:30 -0400
commitf2d5583a9428f576a09023032a3e3bae95690b9a (patch)
tree25a98b2aa34e32e52fa87f25961fdee396003fa8 /parabolaiso/mkparabolaiso
parentff1afc970853f1e9aac03e3fec8a3e2730920651 (diff)
[releng][baseline] sync with archiso and archiso32
Signed-off-by: David P <megver83@parabola.nu>
Diffstat (limited to 'parabolaiso/mkparabolaiso')
-rwxr-xr-xparabolaiso/mkparabolaiso122
1 files changed, 71 insertions, 51 deletions
diff --git a/parabolaiso/mkparabolaiso b/parabolaiso/mkparabolaiso
index 624592d..0652e76 100755
--- a/parabolaiso/mkparabolaiso
+++ b/parabolaiso/mkparabolaiso
@@ -6,11 +6,11 @@ export LANG=C
app_name=${0##*/}
arch=$(uname -m)
-pkg_list=""
+pkg_list=()
run_cmd=""
quiet="y"
pacman_conf="/etc/pacman.conf"
-export iso_label="PARA_$(date +%Y%m)"
+iso_label="PARA_$(date +%Y%m)"
iso_publisher="Parabola GNU/Linux-libre <https://www.parabola.nu>"
iso_application="Parabola GNU/Linux-libre Live/Rescue CD"
install_dir="parabola"
@@ -38,7 +38,7 @@ _msg_error() {
echo "[mkparabolaiso] ERROR: ${_msg}"
echo
if [[ ${_error} -gt 0 ]]; then
- exit ${_error}
+ "exit ${_error}"
fi
}
@@ -47,9 +47,9 @@ _chroot_init() {
mkdir -p ${work_dir}/airootfs
case $init in
- openrc) _pacman "openrc-init $common" ;;
- sysvinit) _pacman "openrc-sysvinit $common" ;;
- systemd) _pacman "base syslinux linux-libre" ;;
+ openrc) _pacman openrc-init $common ;;
+ sysvinit) _pacman openrc-sysvinit $common ;;
+ systemd) _pacman base syslinux linux-libre ;;
esac
}
@@ -119,7 +119,7 @@ _usage ()
echo " make a pkglist.txt of packages installed on airootfs"
echo " iso <image name>"
echo " build an iso image from the working dir"
- exit ${1}
+ exit "${1}"
}
# Shows configuration according to command mode.
@@ -138,7 +138,7 @@ _show_config () {
;;
install)
_msg_info " Pacman config file: ${pacman_conf}"
- _msg_info " Packages: ${pkg_list}"
+ _msg_info " Packages: ${pkg_list[*]}"
;;
run)
_msg_info " Run command: ${run_cmd}"
@@ -163,9 +163,9 @@ _pacman ()
_msg_info "Installing packages to '${work_dir}/airootfs/'..."
if [[ "${quiet}" = "y" ]]; then
- pacstrap -C "${pacman_conf}" -c -G -M "${work_dir}/airootfs" $* &> /dev/null
+ pacstrap -C "${pacman_conf}" -c -G -M "${work_dir}/airootfs" "$@" &> /dev/null
else
- pacstrap -C "${pacman_conf}" -c -G -M "${work_dir}/airootfs" $*
+ pacstrap -C "${pacman_conf}" -c -G -M "${work_dir}/airootfs" "$@"
fi
_msg_info "Packages installed successfully!"
@@ -217,7 +217,7 @@ _mkairootfs_img () {
_msg_info "Creating ext4 image of 32GiB..."
truncate -s 32G "${work_dir}/airootfs.img"
local _qflag=""
- if [[ ${quiet} == "y" ]]; then
+ if [[ "${quiet}" == "y" ]]; then
_qflag="-q"
fi
mkfs.ext4 ${_qflag} -O ^has_journal,^resize_inode -E lazy_itable_init=0 -m 0 -F "${work_dir}/airootfs.img"
@@ -232,12 +232,14 @@ _mkairootfs_img () {
mkdir -p "${work_dir}/iso/${install_dir}/${arch}"
_msg_info "Creating SquashFS image, this may take some time..."
if [[ "${quiet}" = "y" ]]; then
- mksquashfs "${work_dir}/airootfs.img" "${work_dir}/iso/${install_dir}/${arch}/airootfs.sfs" -noappend -comp "${sfs_comp}" -no-progress &> /dev/null
+ mksquashfs "${work_dir}/airootfs.img" "${work_dir}/iso/${install_dir}/${arch}/airootfs.sfs" -noappend \
+ -comp "${sfs_comp}" -no-progress &> /dev/null
else
- mksquashfs "${work_dir}/airootfs.img" "${work_dir}/iso/${install_dir}/${arch}/airootfs.sfs" -noappend -comp "${sfs_comp}" -no-progress
+ mksquashfs "${work_dir}/airootfs.img" "${work_dir}/iso/${install_dir}/${arch}/airootfs.sfs" -noappend \
+ -comp "${sfs_comp}" -no-progress
fi
_msg_info "Done!"
- rm ${work_dir}/airootfs.img
+ rm "${work_dir}/airootfs.img"
}
# Makes a SquashFS filesystem from a source directory.
@@ -249,9 +251,11 @@ _mkairootfs_sfs () {
mkdir -p "${work_dir}/iso/${install_dir}/${arch}"
_msg_info "Creating SquashFS image, this may take some time..."
if [[ "${quiet}" = "y" ]]; then
- mksquashfs "${work_dir}/airootfs" "${work_dir}/iso/${install_dir}/${arch}/airootfs.sfs" -noappend -comp "${sfs_comp}" -no-progress &> /dev/null
+ mksquashfs "${work_dir}/airootfs" "${work_dir}/iso/${install_dir}/${arch}/airootfs.sfs" -noappend \
+ -comp "${sfs_comp}" -no-progress &> /dev/null
else
- mksquashfs "${work_dir}/airootfs" "${work_dir}/iso/${install_dir}/${arch}/airootfs.sfs" -noappend -comp "${sfs_comp}" -no-progress
+ mksquashfs "${work_dir}/airootfs" "${work_dir}/iso/${install_dir}/${arch}/airootfs.sfs" -noappend \
+ -comp "${sfs_comp}" -no-progress
fi
_msg_info "Done!"
}
@@ -260,15 +264,15 @@ _mkchecksum () {
_msg_info "Creating checksum file for self-test..."
cd "${work_dir}/iso/${install_dir}/${arch}"
sha512sum airootfs.sfs > airootfs.sha512
- cd ${OLDPWD}
+ cd "${OLDPWD}"
_msg_info "Done!"
}
_mksignature () {
_msg_info "Creating signature file..."
cd "${work_dir}/iso/${install_dir}/${arch}"
- gpg --detach-sign --default-key ${gpg_key} airootfs.sfs
- cd ${OLDPWD}
+ gpg --detach-sign --default-key "${gpg_key}" airootfs.sfs
+ cd "${OLDPWD}"
_msg_info "Done!"
}
@@ -284,7 +288,7 @@ command_pkglist () {
# Create an ISO9660 filesystem from "iso" directory.
command_iso () {
- local _iso_efi_boot_args=""
+ local _iso_efi_boot_args=()
if [[ ! -f "${work_dir}/iso/isolinux/isolinux.bin" ]]; then
_msg_error "The file '${work_dir}/iso/isolinux/isolinux.bin' does not exist." 1
@@ -295,35 +299,51 @@ command_iso () {
# If exists, add an EFI "El Torito" boot image (FAT filesystem) to ISO-9660 image.
if [[ -f "${work_dir}/iso/EFI/parabolaiso/efiboot.img" ]]; then
- _iso_efi_boot_args="-eltorito-alt-boot
- -e EFI/parabolaiso/efiboot.img
- -no-emul-boot
- -isohybrid-gpt-basdat"
+ _iso_efi_boot_args+=(
+ '-eltorito-alt-boot'
+ '-e' 'EFI/parabolaiso/efiboot.img'
+ '-no-emul-boot'
+ '-isohybrid-gpt-basdat'
+ )
fi
_show_config iso
- mkdir -p ${out_dir}
+ mkdir -p "${out_dir}"
_msg_info "Creating ISO image..."
local _qflag=""
- if [[ ${quiet} == "y" ]]; then
- _qflag="-quiet"
+ if [[ "${quiet}" == "y" ]]; then
+ xorriso -as mkisofs -quiet \
+ -iso-level 3 \
+ -full-iso9660-filenames \
+ -volid "${iso_label}" \
+ -appid "${iso_application}" \
+ -publisher "${iso_publisher}" \
+ -preparer "prepared by mkparabolaiso" \
+ -eltorito-boot isolinux/isolinux.bin \
+ -eltorito-catalog isolinux/boot.cat \
+ -no-emul-boot -boot-load-size 4 -boot-info-table \
+ -isohybrid-mbr "${work_dir}/iso/isolinux/isohdpfx.bin" \
+ "${_iso_efi_boot_args[@]}" \
+ -output "${out_dir}/${img_name}" \
+ "${work_dir}/iso/"
+ else
+ xorriso -as mkisofs \
+ -iso-level 3 \
+ -full-iso9660-filenames \
+ -volid "${iso_label}" \
+ -appid "${iso_application}" \
+ -publisher "${iso_publisher}" \
+ -preparer "prepared by mkparabolaiso" \
+ -eltorito-boot isolinux/isolinux.bin \
+ -eltorito-catalog isolinux/boot.cat \
+ -no-emul-boot -boot-load-size 4 -boot-info-table \
+ -isohybrid-mbr "${work_dir}/iso/isolinux/isohdpfx.bin" \
+ "${_iso_efi_boot_args[@]}" \
+ -output "${out_dir}/${img_name}" \
+ "${work_dir}/iso/"
fi
- xorriso -as mkisofs ${_qflag} \
- -iso-level 3 \
- -full-iso9660-filenames \
- -volid "${iso_label}" \
- -appid "${iso_application}" \
- -publisher "${iso_publisher}" \
- -preparer "prepared by mkparabolaiso" \
- -eltorito-boot isolinux/isolinux.bin \
- -eltorito-catalog isolinux/boot.cat \
- -no-emul-boot -boot-load-size 4 -boot-info-table \
- -isohybrid-mbr ${work_dir}/iso/isolinux/isohdpfx.bin \
- ${_iso_efi_boot_args} \
- -output "${out_dir}/${img_name}" \
- "${work_dir}/iso/"
- _msg_info "Done! | $(ls -sh ${out_dir}/${img_name})"
+ _msg_info "Done! | $(ls -sh "${out_dir}/${img_name}")"
}
# create airootfs.sfs filesystem, and push it in "iso" directory.
@@ -331,13 +351,13 @@ command_prepare () {
_show_config prepare
_cleanup
- if [[ ${sfs_mode} == "sfs" ]]; then
+ if [[ "${sfs_mode}" == "sfs" ]]; then
_mkairootfs_sfs
else
_mkairootfs_img
fi
_mkchecksum
- if [[ ${gpg_key} ]]; then
+ if [[ "${gpg_key}" ]]; then
_mksignature
fi
}
@@ -349,17 +369,14 @@ command_install () {
_msg_error "Pacman config file '${pacman_conf}' does not exist" 1
fi
- #trim spaces
- pkg_list="$(echo ${pkg_list})"
-
- if [[ -z ${pkg_list} ]]; then
+ if [[ "${#pkg_list[@]}" -eq 0 ]]; then
_msg_error "Packages must be specified" 0
_usage 1
fi
_show_config install
- _pacman "${pkg_list}"
+ _pacman "${pkg_list[@]}"
}
command_init() {
@@ -372,7 +389,7 @@ command_run() {
_chroot_run
}
-if [[ ${EUID} -ne 0 ]]; then
+if [[ "${EUID}" -ne 0 ]]; then
_msg_error "This script must be run as root." 1
fi
@@ -380,7 +397,10 @@ umask 0022
while getopts 'p:r:C:L:P:A:D:w:o:s:c:g:i:vh' arg; do
case "${arg}" in
- p) pkg_list="${pkg_list} ${OPTARG}" ;;
+ p)
+ read -r -a opt_pkg_list <<< "${OPTARG}"
+ pkg_list+=("${opt_pkg_list[@]}")
+ ;;
r) run_cmd="${OPTARG}" ;;
C) pacman_conf="${OPTARG}" ;;
L) iso_label="${OPTARG}" ;;