diff options
Diffstat (limited to 'configs/profile/build.sh')
-rwxr-xr-x | configs/profile/build.sh | 74 |
1 files changed, 44 insertions, 30 deletions
diff --git a/configs/profile/build.sh b/configs/profile/build.sh index 27fea9f..efdadce 100755 --- a/configs/profile/build.sh +++ b/configs/profile/build.sh @@ -2,6 +2,12 @@ set -e -u +# misc constants +readonly EFI_IMG_KBYTES=40000 +readonly LOG_COLOR='\033[01;34m' +readonly ERR_COLOR='\033[00;31m' +readonly END_COLOR='\033[00m' + # editions declare -ar VALID_INITS=('openrc' 'systemd') declare -ar VALID_GUIS=('cli' 'lxde' 'mate') @@ -17,14 +23,21 @@ iso_version=$(date +%Y.%m.%d) iso_label="PARA_$(date +%Y%m)" iso_dirname='parabola' enable_offline_install='false' -enable_tts_brltty='false' offline_switch='' -work_dir=./work/ -out_dir=./out/ +enable_tts_brltty='false' +pacman_conf=${work_dir}/pacman.conf +work_dir=./work +out_dir=./out target='' verbose='' -efi_img_kbytes=40000 -pacman_conf=${work_dir}/pacman.conf + +# computed params, per CLI args +archs='' # deferred +iso_filename='' # deferred +iso_init='' # deferred +iso_gui='' # deferred +base_pkgs='' # deferred +arch='' # deferred # environment data_dir=/usr/share/parabolaiso/data @@ -64,9 +77,8 @@ _usage () exit ${1} } -LOG_STEP() { printf "\033[01;34m%s\033[00m\n" "$(echo -e $*)" ; } -LOG_ERROR() { printf "\033[00;31m%s\033[00m\n" "$(echo -e $*)" ; } - +LOG_STEP() { printf "${LOG_COLOR}%s${END_COLOR}\n" "$(echo -e $*)" ; } +LOG_ERROR() { printf "${ERR_COLOR}%s${END_COLOR}\n" "$(echo -e $*)" ; } # Helper function to run make_*() only one time per architecture. run_once() { @@ -268,9 +280,9 @@ make_syslinux() { make_isolinux() { mkdir -p ${work_dir}/iso/isolinux sed "s|%INSTALL_DIR%|${iso_dirname}|g" ${releng_dir}/isolinux/isolinux.cfg > ${work_dir}/iso/isolinux/isolinux.cfg - cp ${work_dir}/${arch}/root-image/usr/lib/syslinux/bios/isolinux.bin ${work_dir}/iso/isolinux/ - cp ${work_dir}/${arch}/root-image/usr/lib/syslinux/bios/isohdpfx.bin ${work_dir}/iso/isolinux/ - cp ${work_dir}/${arch}/root-image/usr/lib/syslinux/bios/ldlinux.c32 ${work_dir}/iso/isolinux/ + cp ${work_dir}/${arch}/root-image/usr/lib/syslinux/bios/isolinux.bin ${work_dir}/iso/isolinux/ + cp ${work_dir}/${arch}/root-image/usr/lib/syslinux/bios/isohdpfx.bin ${work_dir}/iso/isolinux/ + cp ${work_dir}/${arch}/root-image/usr/lib/syslinux/bios/ldlinux.c32 ${work_dir}/iso/isolinux/ } # Prepare /EFI @@ -281,7 +293,7 @@ make_efi() { fi mkdir -p ${work_dir}/iso/loader/entries - cp ${releng_dir}/efiboot/loader/loader.conf ${work_dir}/iso/loader/ + cp ${releng_dir}/efiboot/loader/loader.conf ${work_dir}/iso/loader/ cp ${releng_dir}/efiboot/loader/entries/uefi-shell-v2-x86_64.conf ${work_dir}/iso/loader/entries/ cp ${releng_dir}/efiboot/loader/entries/uefi-shell-v1-x86_64.conf ${work_dir}/iso/loader/entries/ @@ -303,7 +315,7 @@ make_efiboot() { # create EFI image mkdir -p ${work_dir}/iso/EFI/parabolaiso - truncate -s ${efi_img_kbytes}K ${work_dir}/iso/EFI/parabolaiso/efiboot.img + truncate -s ${EFI_IMG_KBYTES}K ${work_dir}/iso/EFI/parabolaiso/efiboot.img mkfs.vfat -n PARABOLAISO_EFI ${work_dir}/iso/EFI/parabolaiso/efiboot.img mkdir -p ${work_dir}/efiboot @@ -311,7 +323,7 @@ make_efiboot() { mount ${work_dir}/iso/EFI/parabolaiso/efiboot.img ${work_dir}/efiboot mkdir -p ${work_dir}/efiboot-staging/EFI/parabolaiso - cp ${work_dir}/iso/${iso_dirname}/boot/x86_64/vmlinuz ${work_dir}/efiboot-staging/EFI/parabolaiso/vmlinuz.efi + cp ${work_dir}/iso/${iso_dirname}/boot/x86_64/vmlinuz ${work_dir}/efiboot-staging/EFI/parabolaiso/vmlinuz.efi cp ${work_dir}/iso/${iso_dirname}/boot/x86_64/parabolaiso.img ${work_dir}/efiboot-staging/EFI/parabolaiso/parabolaiso.img mkdir -p ${work_dir}/efiboot-staging/EFI/boot @@ -320,10 +332,9 @@ make_efiboot() { fi mkdir -p ${work_dir}/efiboot-staging/loader/entries - cp ${releng_dir}/efiboot/loader/loader.conf ${work_dir}/efiboot-staging/loader/ - cp ${releng_dir}/efiboot/loader/entries/uefi-shell-v2-x86_64.conf ${work_dir}/efiboot-staging/loader/entries/ - cp ${releng_dir}/efiboot/loader/entries/uefi-shell-v1-x86_64.conf ${work_dir}/efiboot-staging/loader/entries/ - + cp ${releng_dir}/efiboot/loader/loader.conf ${work_dir}/efiboot-staging/loader/ + cp ${releng_dir}/efiboot/loader/entries/uefi-shell-v2-x86_64.conf ${work_dir}/efiboot-staging/loader/entries/ + cp ${releng_dir}/efiboot/loader/entries/uefi-shell-v1-x86_64.conf ${work_dir}/efiboot-staging/loader/entries/ sed "s|%PARABOLAISO_LABEL%|${iso_label}|g; s|%INSTALL_DIR%|${iso_dirname}|g" \ ${releng_dir}/efiboot/loader/entries/parabolaiso-x86_64-cd.conf > ${work_dir}/efiboot-staging/loader/entries/parabolaiso-x86_64.conf @@ -331,14 +342,14 @@ make_efiboot() { cp ${work_dir}/iso/EFI/shellx64_v2.efi ${work_dir}/efiboot-staging/EFI/ cp ${work_dir}/iso/EFI/shellx64_v1.efi ${work_dir}/efiboot-staging/EFI/ - efi_kbytes=$(($(du -ks ${work_dir}/efiboot-staging | cut -f 1) + 32)) - if [[ ${efi_kbytes} -lt $((${efi_img_kbytes})) ]]; then + local efi_kbytes=$(($(du -ks ${work_dir}/efiboot-staging | cut -f 1) + 32)) + if [[ ${efi_kbytes} -lt $(( ${EFI_IMG_KBYTES} )) ]]; then echo "Populating EFI image (${efi_kbytes}KB)" cp -rT ${work_dir}/efiboot-staging ${work_dir}/efiboot rm -rf ${work_dir}/efiboot-staging umount ${work_dir}/efiboot else - echo "Error: Not enough space on EFI image (${efi_img_kbytes}KB - need ${efi_kbytes}KB)" + echo "Error: Not enough space on EFI image (${EFI_IMG_KBYTES}KB - need ${efi_kbytes}KB)" umount ${work_dir}/efiboot exit 1 fi @@ -352,9 +363,9 @@ make_aitab() { # Build all filesystem images specified in aitab (.fs.sfs .sfs) make_prepare() { - cp -a -l -f ${work_dir}/${arch}/root-image ${work_dir} - setarch ${arch} mkparabolaiso ${verbose} -w ${work_dir} -D ${iso_dirname} -C ${pacman_conf} pkglist - setarch ${arch} mkparabolaiso ${verbose} -w ${work_dir} -D ${iso_dirname} -C ${pacman_conf} ${offline_switch} prepare + cp -a -l -f ${work_dir}/${arch}/root-image ${work_dir}/ + setarch ${arch} mkparabolaiso ${verbose} -w ${work_dir}/ -D ${iso_dirname} -C ${pacman_conf} pkglist + setarch ${arch} mkparabolaiso ${verbose} -w ${work_dir}/ -D ${iso_dirname} -C ${pacman_conf} ${offline_switch} prepare rm -rf ${work_dir}/root-image # rm -rf ${work_dir}/${arch}/root-image (if low space, this helps) @@ -362,8 +373,8 @@ make_prepare() { # Build ISO make_iso() { - setarch ${arch} mkparabolaiso ${verbose} -w ${work_dir} -D ${iso_dirname} checksum - setarch ${arch} mkparabolaiso ${verbose} -w ${work_dir} -D ${iso_dirname} -L ${iso_label} -o ${out_dir} iso ${iso_filename} + setarch ${arch} mkparabolaiso ${verbose} -w ${work_dir}/ -D ${iso_dirname} checksum + setarch ${arch} mkparabolaiso ${verbose} -w ${work_dir}/ -D ${iso_dirname} -L ${iso_label} -o ${out_dir}/ iso ${iso_filename} } @@ -411,10 +422,11 @@ else fi iso_title="${iso_title} - ${iso_edition} Edition ${iso_version}" iso_filename="parabola-${iso_edition}-${iso_arch}-${iso_type}-${iso_version}.iso" -iso_filename=$( echo ${iso_filename} | tr '[:upper:]/' '[:lower:]-') -out_dir=${out_dir}$(echo ${iso_edition}-${iso_version} | tr '[:upper:]/' '[:lower:]-') -iso_init=$( echo ${iso_edition} | cut -d '/' -f 1 | tr '[:upper:]' '[:lower:]' ) -iso_gui=$( echo ${iso_edition} | cut -d '/' -f 2 | tr '[:upper:]' '[:lower:]' ) +release_dirname="${iso_edition}-${iso_arch}-${iso_version}" +iso_filename=$( echo ${iso_filename} | tr '[:upper:]/' '[:lower:]-') +out_dir=${out_dir}/$(echo ${release_dirname} | tr '[:upper:]/' '[:lower:]-') +iso_init=$( echo ${iso_edition} | cut -d '/' -f 1 | tr '[:upper:]' '[:lower:]' ) +iso_gui=$( echo ${iso_edition} | cut -d '/' -f 2 | tr '[:upper:]' '[:lower:]' ) [[ "${iso_init}" == 'openrc' ]] && base_group='base-openrc' || base_group='base' [[ "${archs}" == 'i686' ]] && arch='i686' || arch='x86_64' @@ -505,3 +517,5 @@ done # build ISO run_once make_iso + +LOG_STEP "done - ISO: '${iso_filename}' created successfully" |