From 4ba74645423192072cb2c603a261d89081f3a4e7 Mon Sep 17 00:00:00 2001 From: bill-auger Date: Mon, 16 Oct 2017 21:06:07 -0400 Subject: add options to specify iso edition and pacman.conf --- configs/profile/build.sh | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) (limited to 'configs/profile/build.sh') diff --git a/configs/profile/build.sh b/configs/profile/build.sh index fe2bdfb..830a760 100755 --- a/configs/profile/build.sh +++ b/configs/profile/build.sh @@ -3,8 +3,9 @@ set -e -u # edition-specific strings -iso_edition="SystemD/CLI" -iso_title="Parabola GNU/Linux-libre Live - ${iso_edition} Edition" # $iso_version appended +iso_edition="SystemD/CLI" # default init/wm pair +iso_title="Parabola GNU/Linux-libre Live" # $iso_edition and $iso_version appended +base_group='base' # default base package group # CLI option defaults archs='i686 x86_64' @@ -25,6 +26,7 @@ chroot_customization_script=/root/customize_root_image.sh data_dir=/usr/share/parabolaiso/data releng_dir=$(readlink -f ${0%/*}) initcpio_dir=${releng_dir}/../../parabolaiso/initcpio +packages_dir=${releng_dir}/packages [ "`which mkparabolaiso 2> /dev/null`" ] || export PATH=$PATH:"${releng_dir}/../../parabolaiso" @@ -33,6 +35,8 @@ _usage () echo "usage ${0} [options]" echo echo " General options:" + echo " -E Release edition (init/WM pair e.g. 'SystemD/CLI')" + echo " Default: ${iso_edition}" echo " -T Target architecture (one of 'i686', 'x86_64', or 'dual')" echo " Default: ${iso_arch}" echo " -V Set the iso version in the filename" @@ -43,6 +47,8 @@ _usage () echo " Default: ${iso_dirname}" echo " -O Enable offline install." echo " Default: '${enable_offline_install}'" + echo " -C Specify the pacman.conf file used for chroot install." + echo " Default: '${pacman_conf}'" echo " -w Set the working directory" echo " Default: ${work_dir}" echo " -o Set the output directory" @@ -68,13 +74,14 @@ make_pacman_conf() { # Base installation, plus needed packages (root-image) make_basefs() { - setarch ${arch} mkparabolaiso ${verbose} -w ${work_dir}/${arch} -C ${pacman_conf} -D ${iso_dirname} init + setarch ${arch} mkparabolaiso ${verbose} -w ${work_dir}/${arch} -C ${pacman_conf} -D ${iso_dirname} -B ${base_group} init setarch ${arch} mkparabolaiso ${verbose} -w ${work_dir}/${arch} -C ${pacman_conf} -D ${iso_dirname} -p "memtest86+ mkinitcpio-nfs-utils nbd" install } # Additional packages (root-image) make_packages() { - setarch ${arch} mkparabolaiso ${verbose} -w ${work_dir}/${arch} -C ${pacman_conf} -D ${iso_dirname} -p "$(grep -h -v ^# ${releng_dir}/packages.{both,${arch}})" install + packages=$(grep -h -v ^# ${packages_dir}/packages-{${iso_init},${iso_gui},${iso_wm}}.{both,${arch}} 2> /dev/null || true) + setarch ${arch} mkparabolaiso ${verbose} -w ${work_dir}/${arch} -C ${pacman_conf} -D ${iso_dirname} -p "${packages}" install # create live environment local repo if [[ "$enable_offline_install" == 'true' ]]; then @@ -105,6 +112,8 @@ make_customize_root_image() { echo "Customizing root image" iso_title="${iso_title}" \ + iso_init="${iso_init}" \ + iso_wm="${iso_wm}" \ enable_offline_install="${enable_offline_install}" \ setarch ${arch} mkparabolaiso ${verbose} -w ${work_dir}/${arch} \ -C ${pacman_conf} \ @@ -249,8 +258,6 @@ make_prepare() { # Build ISO make_iso() { - iso_filename=$(echo $iso_filename | tr '[:upper:]/' '[:lower:]-' | sed 's/\s//g') - mkparabolaiso ${verbose} -w ${work_dir} -D ${iso_dirname} checksum mkparabolaiso ${verbose} -w ${work_dir} -D ${iso_dirname} -L ${iso_label} -o ${out_dir} iso ${iso_filename} } @@ -259,13 +266,15 @@ make_iso() { ## prepare state ## # set CLI options -while getopts 'T:V:L:D:Ow:o:vh' arg; do +while getopts 'E:T:V:L:D:OC:w:o:vh' arg; do case "${arg}" in + E) iso_edition="${OPTARG}" ;; T) target="${OPTARG}" ;; V) iso_version="${OPTARG}" ;; L) iso_label="${OPTARG}" ;; D) iso_dirname="${OPTARG}" ;; O) enable_offline_install='true' ;; + C) pacman_conf="${OPTARG}" ;; w) work_dir="${OPTARG}" ;; o) out_dir="${OPTARG}" ;; v) verbose="-v" ;; @@ -295,9 +304,13 @@ else iso_arch="${iso_arch}-netinstall" launch_msg="${launch_msg} (net-install only)" fi -[ "${archs}" == 'i686' ] && arch='i686' || arch='x86_64' +iso_title="${iso_title}${iso_edition} Edition ${iso_version}" iso_filename="parabola-${iso_edition}-${iso_arch}-${iso_version}.iso" -iso_title="${iso_title} ${iso_version}" +iso_filename=$(echo ${iso_filename} | tr '[:upper:]/' '[:lower:]-') +iso_init=$(echo ${iso_edition} | cut -d '/' -f 1 | tr '[:upper:]' '[:lower:]') +iso_wm=$( echo ${iso_edition} | cut -d '/' -f 2 | tr '[:upper:]' '[:lower:]') +[[ "${iso_wm}" == 'cli' ]] && iso_gui='' || iso_gui='gui' +[[ "${archs}" == 'i686' ]] && arch='i686' || arch='x86_64' ## sanity checks ## @@ -305,6 +318,9 @@ iso_title="${iso_title} ${iso_version}" # sanitize paths iso_label=${iso_label// /} iso_dirname=${iso_dirname// /} +iso_filename=${iso_filename// /} +iso_init=${iso_init// /} +iso_wm=${iso_wm// /} work_dir=${work_dir// /} out_dir=${out_dir// /} pacman_conf=${pacman_conf// /} @@ -322,6 +338,9 @@ elif ! pacman --version | grep libalpm > /dev/null; then elif ! pacman -Qi parabolaiso-data > /dev/null; then echo "This script needs the 'parabolaiso-data' package to be installed." exit 1 +elif ! ls ${packages_dir}/packages-{${iso_init},${iso_wm}}.both > /dev/null; then + echo "Invalid init/wm combination: '${iso_edition}'." + exit 1 fi # detect previously completed build -- cgit v1.2.2