diff options
author | bill-auger <mr.j.spam.me@gmail.com> | 2017-11-16 14:57:45 -0500 |
---|---|---|
committer | bill-auger <mr.j.spam.me@gmail.com> | 2018-01-01 00:53:19 -0500 |
commit | edaf3e6728bdee17fab063f924d7a94fcdf83102 (patch) | |
tree | 531746c48a88317d182b2f7f5edba02df7acdf6a /configs/profile/build.sh | |
parent | 52a395e05dfc6658ba227360726e754864c3ee81 (diff) |
finalize package list schema
Diffstat (limited to 'configs/profile/build.sh')
-rwxr-xr-x | configs/profile/build.sh | 70 |
1 files changed, 61 insertions, 9 deletions
diff --git a/configs/profile/build.sh b/configs/profile/build.sh index 6a610d9..85cc5b5 100755 --- a/configs/profile/build.sh +++ b/configs/profile/build.sh @@ -2,6 +2,10 @@ set -e -u +# editions +declare -ar VALID_INITS=('openrc' 'systemd') +declare -ar VALID_GUIS=('cli' 'lxde' 'mate') + # edition-specific strings iso_title="Parabola GNU/Linux-libre Live" # $iso_edition and $iso_version appended @@ -79,14 +83,62 @@ make_basefs() { # Additional packages (root-image) make_packages() { - local _install_packages=$(grep -h -v ^# ${packages_dir}/packages-{${iso_init},${iso_gui},${iso_wm}}.{both,${arch}} 2> /dev/null || true) - local _cache_packages=$(grep -h -v ^# ${packages_dir}/packages-cache-{${iso_init},${iso_gui},${iso_wm}}.{both,${arch}} 2> /dev/null || true) - + local _packages_msg="standard packages as declared in the following files:" + local _gui_packages_msg="non-graphical packages as declared in the following files:" + # standard package lists + local _install_lists=$( ls ${packages_dir}/packages-{all,${iso_init}}.{all,${arch}} 2> /dev/null || true) + local _cache_lists=$( ls ${packages_dir}/cache-{all,${iso_init}}.{all,${arch}} 2> /dev/null || true) + # gui-specific package lists + local _install_gui_lists=$( ls ${packages_dir}/packages-{gui,${iso_gui}}.{all,${arch}} 2> /dev/null || true) + local _cache_gui_lists=$( ls ${packages_dir}/cache-{gui,${iso_gui}}.{all,${arch}} 2> /dev/null || true) + # init-specific gui package lists + local _install_initgui_lists=$(ls ${packages_dir}/packages-${iso_init}-gui.{all,${arch}} 2> /dev/null || true) + local _cache_initgui_lists=$( ls ${packages_dir}/cache-${iso_init}-gui.{all,${arch}} 2> /dev/null || true) + _install_lists=${_install_lists// /} + _cache_lists=${_cache_lists// /} + _install_gui_lists=${_install_gui_lists// /} + _cache_gui_lists=${_cache_gui_lists// /} + _install_initgui_lists=${_install_initgui_lists// /} + _cache_initgui_lists=${_cache_initgui_lists// /} + # collect standard packages + local _install_packages=$( [ "${_install_lists}" ] && grep -hv ^# ${_install_lists}) + local _cache_packages=$( [ "${_cache_lists}" ] && grep -hv ^# ${_cache_lists}) + # collect gui-specific packages + local _install_gui_packages=$( [ "${_install_gui_lists}" ] && grep -hv ^# ${_install_gui_lists}) + local _cache_gui_packages=$( [ "${_cache_gui_lists}" ] && grep -hv ^# ${_cache_gui_lists}) + # collect init-specific gui packages + local _install_initgui_packages=$([ "${_install_initgui_lists}" ] && grep -hv ^# ${_install_initgui_lists}) + local _cache_initgui_packages=$( [ "${_cache_initgui_lists}" ] && grep -hv ^# ${_cache_initgui_lists}) + if [[ "${iso_gui}" != 'cli' ]]; then + _gui_packages_msg="${_gui_packages_msg/non-graphical/graphical}" + _install_gui_lists="${_install_gui_lists} ${_install_initgui_lists}" + _cache_gui_lists="${_cache_gui_lists} ${_cache_initgui_lists}" + _install_gui_packages="${_install_gui_packages} ${_install_initgui_packages}" + _cache_gui_packages="${_cache_gui_packages} ${_cache_initgui_packages}" + fi + # display results + _install_lists=${_install_lists// /} + _cache_lists=${_cache_lists// /} + _install_gui_lists=${_install_gui_lists// /} + _cache_gui_lists=${_cache_gui_lists// /} + _install_packages=${_install_packages// /} + _cache_packages=${_cache_packages// /} + _install_gui_packages=${_install_gui_packages// /} + _cache_gui_packages=${_cache_gui_packages// /} + [ "${_install_packages}" ] && echo "Installing ${_packages_msg}" && echo "${_install_lists}" | sed "s/.*\//\t/" + [ "${_cache_packages}" ] && echo "Caching ${_packages_msg}" && echo "${_cache_lists}" | sed "s/.*\//\t/" + [ "${_install_gui_packages}" ] && echo "Installing ${_gui_packages_msg}" && echo "${_install_gui_lists}" | sed "s/.*\//\t/" + [ "${_cache_gui_packages}" ] && echo "Caching ${_gui_packages_msg}" && echo "${_cache_gui_lists}" | sed "s/.*\//\t/" + _install_packages="${_install_packages} ${_install_gui_packages}" + _cache_packages="${_cache_packages} ${_cache_gui_packages}" + + # install packages setarch ${arch} mkparabolaiso ${verbose} -w ${work_dir}/${arch} -C ${pacman_conf} -D ${iso_dirname} -p "${_install_packages}" install - # create live environment local repo + # create live environment local repo or stash package cache if [[ "$enable_offline_install" == 'true' ]]; then if [[ -n ${_cache_packages} ]]; then + # cache packages setarch ${arch} mkparabolaiso ${verbose} -w ${work_dir}/${arch} -C ${pacman_conf} -D ${iso_dirname} -p "${_cache_packages}" -O install fi pushd ${work_dir}/${arch}/root-image/isorepo > /dev/null @@ -120,7 +172,7 @@ make_customize_root_image() { arch="${arch}" \ iso_title="${iso_title}" \ iso_init="${iso_init}" \ - iso_wm="${iso_wm}" \ + iso_gui="${iso_gui}" \ enable_offline_install="${enable_offline_install}" \ setarch ${arch} mkparabolaiso ${verbose} -w ${work_dir}/${arch} \ -C ${pacman_conf} \ @@ -319,9 +371,8 @@ iso_title="${iso_title} ${iso_edition} Edition ${iso_version}" iso_filename="parabola-${iso_edition}-${iso_arch}-${iso_version}.iso" 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_gui=$( echo ${iso_edition} | cut -d '/' -f 2 | tr '[:upper:]' '[:lower:]') [[ "${iso_init}" == 'openrc' ]] && base_group='base-openrc' || base_group='base' -[[ "${iso_wm}" == 'cli' ]] && iso_gui='' || iso_gui='gui' [[ "${archs}" == 'i686' ]] && arch='i686' || arch='x86_64' @@ -332,7 +383,7 @@ iso_label=${iso_label// /} iso_dirname=${iso_dirname// /} iso_filename=${iso_filename// /} iso_init=${iso_init// /} -iso_wm=${iso_wm// /} +iso_gui=${iso_gui// /} work_dir=${work_dir// /} out_dir=${out_dir// /} pacman_conf=${pacman_conf// /} @@ -350,7 +401,8 @@ 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 +elif ! echo "${VALID_INITS[@]}" | tr " " "\n" | grep -E "^${iso_init}$" > /dev/null || \ + ! echo "${VALID_GUIS[@]}" | tr " " "\n" | grep -E "^${iso_gui}$" > /dev/null; then echo "Invalid init/wm combination: '${iso_edition}'." exit 1 fi |