summaryrefslogtreecommitdiff
path: root/configs/profile/build.sh
diff options
context:
space:
mode:
authorbill-auger <mr.j.spam.me@gmail.com>2017-11-16 14:57:45 -0500
committerbill-auger <mr.j.spam.me@gmail.com>2018-01-01 00:53:19 -0500
commitedaf3e6728bdee17fab063f924d7a94fcdf83102 (patch)
tree531746c48a88317d182b2f7f5edba02df7acdf6a /configs/profile/build.sh
parent52a395e05dfc6658ba227360726e754864c3ee81 (diff)
finalize package list schema
Diffstat (limited to 'configs/profile/build.sh')
-rwxr-xr-xconfigs/profile/build.sh70
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