diff --git a/Makefile b/Makefile index 088863c..26f2a9d 100644 --- a/Makefile +++ b/Makefile @@ -107,7 +107,7 @@ BIN_YAML = \ bin/check-yaml LIBS_YAML = \ - lib/util-iso-yaml.sh + lib/util-yaml.sh SHARED_YAML = \ data/schemas/bootloader.schema.yaml \ diff --git a/bin/check-yaml.in b/bin/check-yaml.in index e0735ca..0a30a40 100644 --- a/bin/check-yaml.in +++ b/bin/check-yaml.in @@ -18,8 +18,7 @@ SYSCONFDIR='@sysconfdir@' [[ -r ${LIBDIR}/util-msg.sh ]] && source ${LIBDIR}/util-msg.sh import ${LIBDIR}/util.sh -import ${LIBDIR}/util-iso.sh -import ${LIBDIR}/util-iso-yaml.sh +import ${LIBDIR}/util-yaml.sh show_profile(){ prepare_check "$1" @@ -105,6 +104,7 @@ usage() { echo " -k Kernel to use[default: ${kernel}]" echo " -i Init system to use [default: ${initsys}]" echo ' -c Check also calamares yaml files generated for the profile' + echo ' -g Enable pacman group accepted for -p' echo ' -v Validate by schema' echo ' -q Query settings' echo ' -h This help' diff --git a/lib/util-iso.sh b/lib/util-iso.sh index b2cf2b2..2eb5b46 100644 --- a/lib/util-iso.sh +++ b/lib/util-iso.sh @@ -11,7 +11,7 @@ import ${LIBDIR}/util-iso-image.sh import ${LIBDIR}/util-iso-boot.sh -import ${LIBDIR}/util-iso-yaml.sh +import ${LIBDIR}/util-yaml.sh error_function() { if [[ -p $logpipe ]]; then @@ -415,160 +415,6 @@ make_isomounts() { fi } -get_shared_list(){ - local path - case ${edition} in - sonar|netrunner) path=${run_dir}/shared/${edition}/Packages-Desktop ;; - *) path=${run_dir}/shared/manjaro/Packages-Desktop ;; - esac - echo $path -} - -# $1: file name -load_pkgs(){ - info "Loading Packages: [%s] ..." "${1##*/}" - - local _init _init_rm _multi _nonfree_default _nonfree_multi _arch _arch_rm _nonfree_i686 _nonfree_x86_64 - - if [[ ${initsys} == 'openrc' ]];then - _init="s|>openrc||g" - _init_rm="s|>systemd.*||g" - else - _init="s|>systemd||g" - _init_rm="s|>openrc.*||g" - fi - if [[ "${target_arch}" == "i686" ]]; then - _arch="s|>i686||g" - _arch_rm="s|>x86_64.*||g" - _multi="s|>multilib.*||g" - _nonfree_multi="s|>nonfree_multilib.*||g" - _nonfree_x86_64="s|>nonfree_x86_64.*||g" - if ${nonfree_mhwd};then - _nonfree_default="s|>nonfree_default||g" - _nonfree_i686="s|>nonfree_i686||g" - - else - _nonfree_default="s|>nonfree_default.*||g" - _nonfree_i686="s|>nonfree_i686.*||g" - fi - else - _arch="s|>x86_64||g" - _arch_rm="s|>i686.*||g" - _nonfree_i686="s|>nonfree_i686.*||g" - if ${multilib};then - _multi="s|>multilib||g" - if ${nonfree_mhwd};then - _nonfree_default="s|>nonfree_default||g" - _nonfree_x86_64="s|>nonfree_x86_64||g" - _nonfree_multi="s|>nonfree_multilib||g" - else - _nonfree_default="s|>nonfree_default.*||g" - _nonfree_multi="s|>nonfree_multilib.*||g" - _nonfree_x86_64="s|>nonfree_x86_64.*||g" - fi - else - _multi="s|>multilib.*||g" - if ${nonfree_mhwd};then - _nonfree_default="s|>nonfree_default||g" - _nonfree_x86_64="s|>nonfree_x86_64||g" - _nonfree_multi="s|>nonfree_multilib.*||g" - else - _nonfree_default="s|>nonfree_default.*||g" - _nonfree_x86_64="s|>nonfree_x86_64.*||g" - _nonfree_multi="s|>nonfree_multilib.*||g" - fi - fi - fi - local _blacklist="s|>blacklist.*||g" \ - _kernel="s|KERNEL|$kernel|g" \ - _used_kernel=${kernel:5:2} \ - _space="s| ||g" \ - _clean=':a;N;$!ba;s/\n/ /g' \ - _com_rm="s|#.*||g" \ - _purge="s|>cleanup.*||g" \ - _purge_rm="s|>cleanup||g" - - local list="$1" - - if [[ "$list" == "${packages_custom}" ]];then - sort -u $(get_shared_list) ${packages_custom} > ${tmp_dir}/packages-desktop.list - list=${tmp_dir}/packages-desktop.list - fi - - packages=$(sed "$_com_rm" "$list" \ - | sed "$_space" \ - | sed "$_blacklist" \ - | sed "$_purge" \ - | sed "$_init" \ - | sed "$_init_rm" \ - | sed "$_arch" \ - | sed "$_arch_rm" \ - | sed "$_nonfree_default" \ - | sed "$_multi" \ - | sed "$_nonfree_i686" \ - | sed "$_nonfree_x86_64" \ - | sed "$_nonfree_multi" \ - | sed "$_kernel" \ - | sed "$_clean") - - if [[ $1 == "${packages_mhwd}" ]]; then - - local _used_kernel=${kernel:5:2} - [[ ${_used_kernel} < "42" ]] && local _amd="s|xf86-video-amdgpu||g" - - packages_cleanup=$(sed "$_com_rm" "$1" \ - | grep cleanup \ - | sed "$_purge_rm" \ - | sed "$_kernel" \ - | sed "$_clean" \ - | sed "$_amd") - fi -} - -check_profile(){ - local keyfiles=("${profile_dir}/mkinitcpio.conf" - "${profile_dir}/Packages-Root" - "${profile_dir}/Packages-Live") - - local keydirs=("${profile_dir}/root-overlay" - "${profile_dir}/live-overlay") - - local has_keyfiles=false has_keydirs=false - for f in ${keyfiles[@]}; do - if [[ -f $f ]];then - has_keyfiles=true - else - has_keyfiles=false - break - fi - done - for d in ${keydirs[@]}; do - if [[ -d $d ]];then - has_keydirs=true - else - has_keydirs=false - break - fi - done - if ! ${has_keyfiles} && ! ${has_keydirs};then - die "Profile [%s] sanity check failed!" "${profile_dir}" - fi - - local files=$(ls ${profile_dir}/Packages*) - for f in ${files[@]};do - case $f in - ${profile_dir}/Packages-Root|${profile_dir}/Packages-Live|${profile_dir}/Packages-Mhwd) continue ;; - *) packages_custom="$f" ;; - esac - done - - [[ -f "${profile_dir}/Packages-Mhwd" ]] && packages_mhwd=${profile_dir}/Packages-Mhwd - - if ! ${netinstall} && ! ${unpackfs};then - unpackfs="true" - fi -} - check_requirements(){ [[ -f ${run_dir}/.buildiso ]] || die "%s is not a valid iso profiles directory!" "${run_dir}" if ! $(is_valid_arch_iso ${target_arch});then @@ -652,36 +498,6 @@ archive_logs(){ find ${log_dir} -maxdepth 1 -name "$name*.log" -delete } -reset_profile(){ - unset displaymanager - unset autologin - unset multilib - unset pxe_boot - unset plymouth_boot - unset nonfree_mhwd - unset efi_boot_loader - unset hostname - unset username - unset plymouth_theme - unset password - unset addgroups - unset enable_systemd - unset disable_systemd - unset enable_openrc - unset disable_openrc - unset enable_systemd_live - unset enable_openrc_live - unset packages_custom - unset packages_mhwd - unset login_shell - unset tracker_url - unset piece_size - unset netinstall - unset unpackfs - unset netgroups - unset geoip -} - make_profile(){ msg "Start building [%s]" "${profile}" ${clean_first} && chroot_clean "${work_dir}" diff --git a/lib/util-iso-yaml.sh b/lib/util-yaml.sh similarity index 100% rename from lib/util-iso-yaml.sh rename to lib/util-yaml.sh diff --git a/lib/util.sh b/lib/util.sh index ea57b09..87b3a8a 100644 --- a/lib/util.sh +++ b/lib/util.sh @@ -466,6 +466,190 @@ load_profile_config(){ return 0 } +reset_profile(){ + unset displaymanager + unset autologin + unset multilib + unset pxe_boot + unset plymouth_boot + unset nonfree_mhwd + unset efi_boot_loader + unset hostname + unset username + unset plymouth_theme + unset password + unset addgroups + unset enable_systemd + unset disable_systemd + unset enable_openrc + unset disable_openrc + unset enable_systemd_live + unset enable_openrc_live + unset packages_custom + unset packages_mhwd + unset login_shell + unset tracker_url + unset piece_size + unset netinstall + unset unpackfs + unset netgroups + unset geoip +} + +check_profile(){ + local keyfiles=("${profile_dir}/mkinitcpio.conf" + "${profile_dir}/Packages-Root" + "${profile_dir}/Packages-Live") + + local keydirs=("${profile_dir}/root-overlay" + "${profile_dir}/live-overlay") + + local has_keyfiles=false has_keydirs=false + for f in ${keyfiles[@]}; do + if [[ -f $f ]];then + has_keyfiles=true + else + has_keyfiles=false + break + fi + done + for d in ${keydirs[@]}; do + if [[ -d $d ]];then + has_keydirs=true + else + has_keydirs=false + break + fi + done + if ! ${has_keyfiles} && ! ${has_keydirs};then + die "Profile [%s] sanity check failed!" "${profile_dir}" + fi + + local files=$(ls ${profile_dir}/Packages*) + for f in ${files[@]};do + case $f in + ${profile_dir}/Packages-Root|${profile_dir}/Packages-Live|${profile_dir}/Packages-Mhwd) continue ;; + *) packages_custom="$f" ;; + esac + done + + [[ -f "${profile_dir}/Packages-Mhwd" ]] && packages_mhwd=${profile_dir}/Packages-Mhwd + + if ! ${netinstall} && ! ${unpackfs};then + unpackfs="true" + fi +} + +get_shared_list(){ + local path + case ${edition} in + sonar|netrunner) path=${run_dir}/shared/${edition}/Packages-Desktop ;; + *) path=${run_dir}/shared/manjaro/Packages-Desktop ;; + esac + echo $path +} + +# $1: file name +load_pkgs(){ + info "Loading Packages: [%s] ..." "${1##*/}" + + local _init _init_rm _multi _nonfree_default _nonfree_multi _arch _arch_rm _nonfree_i686 _nonfree_x86_64 + + if [[ ${initsys} == 'openrc' ]];then + _init="s|>openrc||g" + _init_rm="s|>systemd.*||g" + else + _init="s|>systemd||g" + _init_rm="s|>openrc.*||g" + fi + if [[ "${target_arch}" == "i686" ]]; then + _arch="s|>i686||g" + _arch_rm="s|>x86_64.*||g" + _multi="s|>multilib.*||g" + _nonfree_multi="s|>nonfree_multilib.*||g" + _nonfree_x86_64="s|>nonfree_x86_64.*||g" + if ${nonfree_mhwd};then + _nonfree_default="s|>nonfree_default||g" + _nonfree_i686="s|>nonfree_i686||g" + + else + _nonfree_default="s|>nonfree_default.*||g" + _nonfree_i686="s|>nonfree_i686.*||g" + fi + else + _arch="s|>x86_64||g" + _arch_rm="s|>i686.*||g" + _nonfree_i686="s|>nonfree_i686.*||g" + if ${multilib};then + _multi="s|>multilib||g" + if ${nonfree_mhwd};then + _nonfree_default="s|>nonfree_default||g" + _nonfree_x86_64="s|>nonfree_x86_64||g" + _nonfree_multi="s|>nonfree_multilib||g" + else + _nonfree_default="s|>nonfree_default.*||g" + _nonfree_multi="s|>nonfree_multilib.*||g" + _nonfree_x86_64="s|>nonfree_x86_64.*||g" + fi + else + _multi="s|>multilib.*||g" + if ${nonfree_mhwd};then + _nonfree_default="s|>nonfree_default||g" + _nonfree_x86_64="s|>nonfree_x86_64||g" + _nonfree_multi="s|>nonfree_multilib.*||g" + else + _nonfree_default="s|>nonfree_default.*||g" + _nonfree_x86_64="s|>nonfree_x86_64.*||g" + _nonfree_multi="s|>nonfree_multilib.*||g" + fi + fi + fi + local _blacklist="s|>blacklist.*||g" \ + _kernel="s|KERNEL|$kernel|g" \ + _used_kernel=${kernel:5:2} \ + _space="s| ||g" \ + _clean=':a;N;$!ba;s/\n/ /g' \ + _com_rm="s|#.*||g" \ + _purge="s|>cleanup.*||g" \ + _purge_rm="s|>cleanup||g" + + local list="$1" + + if [[ "$list" == "${packages_custom}" ]];then + sort -u $(get_shared_list) ${packages_custom} > ${tmp_dir}/packages-desktop.list + list=${tmp_dir}/packages-desktop.list + fi + + packages=$(sed "$_com_rm" "$list" \ + | sed "$_space" \ + | sed "$_blacklist" \ + | sed "$_purge" \ + | sed "$_init" \ + | sed "$_init_rm" \ + | sed "$_arch" \ + | sed "$_arch_rm" \ + | sed "$_nonfree_default" \ + | sed "$_multi" \ + | sed "$_nonfree_i686" \ + | sed "$_nonfree_x86_64" \ + | sed "$_nonfree_multi" \ + | sed "$_kernel" \ + | sed "$_clean") + + if [[ $1 == "${packages_mhwd}" ]]; then + + local _used_kernel=${kernel:5:2} + [[ ${_used_kernel} < "42" ]] && local _amd="s|xf86-video-amdgpu||g" + + packages_cleanup=$(sed "$_com_rm" "$1" \ + | grep cleanup \ + | sed "$_purge_rm" \ + | sed "$_kernel" \ + | sed "$_clean" \ + | sed "$_amd") + fi +} + user_own(){ local flag=$2 chown ${flag} "${OWNER}:$(id --group ${OWNER})" "$1"