forked from artix/artools
		
	Compare commits
	
		
			6 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 01e45fd5fd | ||
|   | a795484c7b | ||
|   | e099003b31 | ||
|   | dbec8ba9ad | ||
|   | b35754ecce | ||
|   | 91cdece50d | 
							
								
								
									
										7
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										7
									
								
								Makefile
									
									
									
									
									
								
							| @@ -49,13 +49,10 @@ PATCHES = \ | ||||
|  | ||||
| BIN_ISO = \ | ||||
| 	bin/buildiso \ | ||||
| 	bin/deployiso \ | ||||
| 	bin/buildyaml | ||||
| 	bin/deployiso | ||||
|  | ||||
| LIBS_ISO = \ | ||||
| 	$(wildcard lib/util-iso*.sh) \ | ||||
| 	$(wildcard lib/util-yaml*.sh) \ | ||||
| 	lib/util-profile.sh | ||||
| 	$(wildcard lib/util-iso*.sh) | ||||
|  | ||||
| SHARED_ISO = \ | ||||
| 	data/mkinitcpio.conf \ | ||||
|   | ||||
| @@ -24,6 +24,8 @@ prepare_build(){ | ||||
|  | ||||
|     load_profile "${profile}" | ||||
|  | ||||
|     netgroups=${netgroups_url}/netgroups-${initsys}.yaml | ||||
|  | ||||
|     local pac_arch='default' pacman_conf pac_conf | ||||
|     [[ "${target_arch}" == 'x86_64' ]] && pac_arch='lib32' | ||||
|  | ||||
| @@ -54,7 +56,7 @@ show_profile(){ | ||||
|     if ${verbose};then | ||||
|         msg2 "autologin: %s" "${autologin}" | ||||
|  | ||||
|         msg2 "netgroups: %s" "$(get_yaml)" | ||||
|         msg2 "netgroups: %s" "${netgroups}" | ||||
|  | ||||
|         msg2 "hostname: %s" "${hostname}" | ||||
|         msg2 "username: %s" "${username}" | ||||
|   | ||||
							
								
								
									
										107
									
								
								bin/buildyaml.in
									
									
									
									
									
								
							
							
						
						
									
										107
									
								
								bin/buildyaml.in
									
									
									
									
									
								
							| @@ -1,107 +0,0 @@ | ||||
| #!/bin/bash | ||||
| # | ||||
| # This program is free software; you can redistribute it and/or modify | ||||
| # it under the terms of the GNU General Public License as published by | ||||
| # the Free Software Foundation; version 2 of the License. | ||||
| # | ||||
| # This program is distributed in the hope that it will be useful, | ||||
| # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
| # GNU General Public License for more details. | ||||
|  | ||||
| version=@version@ | ||||
|  | ||||
| LIBDIR='@libdir@' | ||||
| DATADIR='@datadir@' | ||||
| SYSCONFDIR='@sysconfdir@' | ||||
|  | ||||
| [[ -r ${LIBDIR}/util-msg.sh ]] && source ${LIBDIR}/util-msg.sh | ||||
| import ${LIBDIR}/util.sh | ||||
| import ${LIBDIR}/util-yaml-check.sh | ||||
| import ${LIBDIR}/util-profile.sh | ||||
|  | ||||
| show_profile(){ | ||||
|     msg2 "yaml_dir: %s" "${yaml_dir}" | ||||
|     msg2 "autologin: %s" "${autologin}" | ||||
|  | ||||
|     msg2 "netgroups: %s" "$(get_yaml)" | ||||
|  | ||||
|     msg2 "hostname: %s" "${hostname}" | ||||
|     msg2 "username: %s" "${username}" | ||||
|     msg2 "password: %s" "${password}" | ||||
|     msg2 "addgroups: %s" "${addgroups}" | ||||
|  | ||||
|     msg2 "enable_live: %s" "${enable_live[*]}" | ||||
|     msg2 "openrc_boot: %s" "${openrc_boot[*]}" | ||||
|     msg2 "openrc_default: %s" "${openrc_default[*]}" | ||||
| } | ||||
|  | ||||
| display_settings(){ | ||||
|     show_version | ||||
|     show_config | ||||
|  | ||||
|     msg "OPTIONS:" | ||||
|     msg2 "profile: %s" "${profile}" | ||||
|     msg2 "arch: %s" "${target_arch}" | ||||
|     msg2 "initsys: %s" "${initsys}" | ||||
|     msg2 "kernel: %s" "${kernel}" | ||||
|  | ||||
|     msg "ARGS:" | ||||
|     msg2 "group: %s" "${group}" | ||||
|     msg2 "calamares: %s" "${calamares}" | ||||
|  | ||||
|     msg "BUILD:" | ||||
|     show_profile | ||||
| } | ||||
|  | ||||
| load_user_info | ||||
|  | ||||
| load_config "${AT_USERCONFDIR}/artools.conf" || load_config "${SYSCONFDIR}/artools.conf" | ||||
|  | ||||
| pretend=false | ||||
| group=false | ||||
| cache_dir_netinstall="${workspace_dir}/netinstall" | ||||
| calamares=false | ||||
|  | ||||
| usage() { | ||||
|     echo "Usage: ${0##*/} [options]" | ||||
|     echo "    -p <profile>       Buildset or profile [default: ${profile}]" | ||||
|     echo "    -a <arch>          Arch [default: ${target_arch}]" | ||||
|     echo "    -k <name>          Kernel to use[default: ${kernel}]" | ||||
|     echo "    -i <name>          Init system to use [default: ${initsys}]" | ||||
|     echo '    -g                 Enable pacman group accepted for -p' | ||||
|     echo '    -c                 Check also calamares yaml files generated for the profile' | ||||
|     echo '    -q                 Query settings' | ||||
|     echo '    -h                 This help' | ||||
|     echo '' | ||||
|     echo '' | ||||
|     exit $1 | ||||
| } | ||||
|  | ||||
| orig_argv=("$0" "$@") | ||||
|  | ||||
| opts='p:a:i:k:gcqh' | ||||
|  | ||||
| while getopts "${opts}" arg; do | ||||
|     case "${arg}" in | ||||
|         p) profile="$OPTARG" ;; | ||||
|         a) target_arch="$OPTARG" ;; | ||||
|         i) initsys="$OPTARG" ;; | ||||
|         k) kernel="$OPTARG" ;; | ||||
|         g) group=true ;; | ||||
|         c) calamares=true ;; | ||||
|         q) pretend=true ;; | ||||
|         h|?) usage 0 ;; | ||||
|         *) echo "invalid argument '${arg}'"; usage 1 ;; | ||||
|     esac | ||||
| done | ||||
|  | ||||
| shift $(($OPTIND - 1)) | ||||
|  | ||||
| prepare_build | ||||
|  | ||||
| ${pretend} && display_settings && exit 1 | ||||
|  | ||||
| ${group} && write_pacman_group_yaml "${profile}" && exit 0 | ||||
|  | ||||
| build | ||||
| @@ -16,10 +16,6 @@ LIBDIR='@libdir@' | ||||
| [[ -r ${LIBDIR}/util-msg.sh ]] && source ${LIBDIR}/util-msg.sh | ||||
| import ${LIBDIR}/util.sh | ||||
|  | ||||
| load_user_info | ||||
|  | ||||
| load_config "${AT_USERCONFDIR}/artools.conf" || load_config "${SYSCONFDIR}/artools.conf" | ||||
|  | ||||
| load_vars "${PAC_USERCONFDIR}/makepkg.conf" || load_vars "$USER_HOME/.makepkg.conf" | ||||
| load_vars /etc/makepkg.conf | ||||
|  | ||||
|   | ||||
| @@ -11,16 +11,18 @@ | ||||
| # openrc_boot=('elogind') | ||||
| # openrc_default=('acpid' 'bluetooth' 'cronie' 'cupsd' 'dbus' 'syslog-ng' 'NetworkManager') | ||||
|  | ||||
| # unset defaults to given values | ||||
| # default values | ||||
| # addgroups="video,power,storage,optical,network,lp,scanner,wheel,users" | ||||
|  | ||||
| # netgroups_url="https://raw.githubusercontent.com/artix-linux/netgroups/master" | ||||
|  | ||||
| ################# live-session ################# | ||||
|  | ||||
| # unset defaults to given value | ||||
| # default value | ||||
| # hostname="artix" | ||||
|  | ||||
| # unset defaults to given value | ||||
| # default value | ||||
| # username="artix" | ||||
|  | ||||
| # unset defaults to given value | ||||
| # default value | ||||
| # password="artix" | ||||
|   | ||||
| @@ -1,118 +0,0 @@ | ||||
| #!/bin/bash | ||||
| # | ||||
| # This program is free software; you can redistribute it and/or modify | ||||
| # it under the terms of the GNU General Public License as published by | ||||
| # the Free Software Foundation; version 2 of the License. | ||||
| # | ||||
| # This program is distributed in the hope that it will be useful, | ||||
| # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||||
| # GNU General Public License for more details. | ||||
|  | ||||
| add_svc_rc(){ | ||||
|     local mnt="$1" name="$2" rlvl="$3" | ||||
|     if [[ -f $mnt/etc/init.d/$name ]];then | ||||
|         msg2 "Setting %s ..." "$name" | ||||
|         chroot $mnt rc-update add $name $rlvl &>/dev/null | ||||
|     fi | ||||
| } | ||||
|  | ||||
| set_xdm(){ | ||||
|     if [[ -f $1/etc/conf.d/xdm ]];then | ||||
|         local conf='DISPLAYMANAGER="'${displaymanager}'"' | ||||
|         sed -i -e "s|^.*DISPLAYMANAGER=.*|${conf}|" $1/etc/conf.d/xdm | ||||
|     fi | ||||
| } | ||||
|  | ||||
| configure_hosts(){ | ||||
|     sed -e "s|localhost.localdomain|localhost.localdomain ${hostname}|" -i $1/etc/hosts | ||||
| } | ||||
|  | ||||
| configure_logind(){ | ||||
|     local conf=$1/etc/$2/logind.conf | ||||
|     if [[ -e $conf ]];then | ||||
|         msg2 "Configuring logind ..." | ||||
|         sed -i 's/#\(HandleSuspendKey=\)suspend/\1ignore/' "$conf" | ||||
|         sed -i 's/#\(HandleLidSwitch=\)suspend/\1ignore/' "$conf" | ||||
|         sed -i 's/#\(HandleHibernateKey=\)hibernate/\1ignore/' "$conf" | ||||
|     fi | ||||
| } | ||||
|  | ||||
| configure_services(){ | ||||
|     local mnt="$1" | ||||
|     info "Configuring [%s]" "${initsys}" | ||||
|     case ${initsys} in | ||||
|         'openrc') | ||||
|             for svc in ${openrc_boot[@]}; do | ||||
|                 add_svc_rc "$mnt" "$svc" "boot" | ||||
|             done | ||||
|             for svc in ${openrc_default[@]}; do | ||||
|                 [[ $svc == "xdm" ]] && set_xdm "$mnt" | ||||
|                 add_svc_rc "$mnt" "$svc" "default" | ||||
|             done | ||||
|             for svc in ${enable_live[@]}; do | ||||
|                 add_svc_rc "$mnt" "$svc" "default" | ||||
|             done | ||||
|         ;; | ||||
|     esac | ||||
|     info "Done configuring [%s]" "${initsys}" | ||||
| } | ||||
|  | ||||
| configure_system(){ | ||||
|     local mnt="$1" | ||||
|     case ${initsys} in | ||||
|         'openrc') | ||||
|             configure_logind "$mnt" "elogind" | ||||
|         ;; | ||||
|     esac | ||||
|     echo ${hostname} > $mnt/etc/hostname | ||||
| } | ||||
|  | ||||
| clean_iso_root(){ | ||||
|     local dest="$1" | ||||
|     msg "Deleting isoroot [%s] ..." "${dest##*/}" | ||||
|     rm -rf --one-file-system "$dest" | ||||
| } | ||||
|  | ||||
| clean_up_image(){ | ||||
|     local path mnt="$1" | ||||
|     msg2 "Cleaning [%s]" "${mnt##*/}" | ||||
|  | ||||
|     default_locale "reset" "$mnt" | ||||
|     path=$mnt/boot | ||||
|     if [[ -d "$path" ]]; then | ||||
|         find "$path" -name 'initramfs*.img' -delete &> /dev/null | ||||
|     fi | ||||
|     path=$mnt/var/lib/pacman/sync | ||||
|     if [[ -d $path ]];then | ||||
|         find "$path" -type f -delete &> /dev/null | ||||
|     fi | ||||
|     path=$mnt/var/cache/pacman/pkg | ||||
|     if [[ -d $path ]]; then | ||||
|         find "$path" -type f -delete &> /dev/null | ||||
|     fi | ||||
|     path=$mnt/var/log | ||||
|     if [[ -d $path ]]; then | ||||
|         find "$path" -type f -delete &> /dev/null | ||||
|     fi | ||||
|     path=$mnt/var/tmp | ||||
|     if [[ -d $path ]];then | ||||
|         find "$path" -mindepth 1 -delete &> /dev/null | ||||
|     fi | ||||
|     path=$mnt/tmp | ||||
|     if [[ -d $path ]];then | ||||
|         find "$path" -mindepth 1 -delete &> /dev/null | ||||
|     fi | ||||
|  | ||||
|     if [[ ${mnt##*/} == 'livefs' ]];then | ||||
|         rm -rf "$mnt/etc/pacman.d/gnupg" | ||||
|     fi | ||||
|  | ||||
|     find "$mnt" -name *.pacnew -name *.pacsave -name *.pacorig -delete | ||||
|     if [[ -f "$mnt/boot/grub/grub.cfg" ]]; then | ||||
|         rm $mnt/boot/grub/grub.cfg | ||||
|     fi | ||||
|     if [[ -f "$mnt/etc/machine-id" ]]; then | ||||
|         rm $mnt/etc/machine-id | ||||
|     fi | ||||
| } | ||||
| @@ -46,6 +46,15 @@ prepare_boot_extras(){ | ||||
|     cp $src/usr/share/licenses/common/GPL2/license.txt $dest/memtest.COPYING | ||||
| } | ||||
|  | ||||
| configure_grub(){ | ||||
|     local conf="$1" | ||||
|  | ||||
|     sed -e "s|@arch@|${target_arch}|g" \ | ||||
|         -e "s|@iso_label@|${iso_label}|" \ | ||||
|         -e "s|@iso_name@|${iso_name}|g" \ | ||||
|         -i $conf | ||||
| } | ||||
|  | ||||
| prepare_grub(){ | ||||
|     local platform=i386-pc img='core.img' grub=$3/boot/grub efi=$3/efi/boot \ | ||||
|         lib=$1/usr/lib/grub prefix=/boot/grub theme=$2/usr/share/grub data=$1/usr/share/grub | ||||
|   | ||||
| @@ -1,65 +0,0 @@ | ||||
| #!/bin/bash | ||||
| # | ||||
| # This program is free software; you can redistribute it and/or modify | ||||
| # it under the terms of the GNU General Public License as published by | ||||
| # the Free Software Foundation; version 2 of the License. | ||||
| # | ||||
| # This program is distributed in the hope that it will be useful, | ||||
| # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
| # GNU General Public License for more details. | ||||
|  | ||||
| track_img() { | ||||
|     info "mount: [%s]" "$2" | ||||
|     mount "$@" && IMG_ACTIVE_MOUNTS=("$2" "${IMG_ACTIVE_MOUNTS[@]}") | ||||
| } | ||||
|  | ||||
| mount_img() { | ||||
|     IMG_ACTIVE_MOUNTS=() | ||||
|     mkdir -p "$2" | ||||
|     track_img "$1" "$2" | ||||
| } | ||||
|  | ||||
| umount_img() { | ||||
|     if [[ -n ${IMG_ACTIVE_MOUNTS[@]} ]];then | ||||
|         info "umount: [%s]" "${IMG_ACTIVE_MOUNTS[@]}" | ||||
|         umount "${IMG_ACTIVE_MOUNTS[@]}" | ||||
|         unset IMG_ACTIVE_MOUNTS | ||||
|         rm -r "$1" | ||||
|     fi | ||||
| } | ||||
|  | ||||
| track_fs() { | ||||
|     info "overlayfs mount: [%s]" "$5" | ||||
|     mount "$@" && FS_ACTIVE_MOUNTS=("$5" "${FS_ACTIVE_MOUNTS[@]}") | ||||
| } | ||||
|  | ||||
| mount_overlay(){ | ||||
|     FS_ACTIVE_MOUNTS=() | ||||
|     local lower= upper="$1" work="$2" pkglist="$3" | ||||
|     local fs=${upper##*/} | ||||
|     local rootfs="$work/rootfs" desktopfs="$work/desktopfs" livefs="$work/livefs" | ||||
|     mkdir -p "${mnt_dir}/work" | ||||
|     mkdir -p "$upper" | ||||
|     case $fs in | ||||
|         desktopfs) lower="$rootfs" ;; | ||||
|         livefs) | ||||
|             lower="$rootfs" | ||||
|             [[ -f $pkglist ]] && lower="$desktopfs":"$rootfs" | ||||
|         ;; | ||||
|         bootfs) | ||||
|             lower="$livefs":"$rootfs" | ||||
|             [[ -f $pkglist ]] && lower="$livefs":"$desktopfs":"$rootfs" | ||||
|         ;; | ||||
|     esac | ||||
|     track_fs -t overlay overlay -olowerdir="$lower",upperdir="$upper",workdir="${mnt_dir}/work" "$upper" | ||||
| } | ||||
|  | ||||
| umount_overlay(){ | ||||
|     if [[ -n ${FS_ACTIVE_MOUNTS[@]} ]];then | ||||
|         info "overlayfs umount: [%s]" "${FS_ACTIVE_MOUNTS[@]}" | ||||
|         umount "${FS_ACTIVE_MOUNTS[@]}" | ||||
|         unset FS_ACTIVE_MOUNTS | ||||
|         rm -rf "${mnt_dir}/work" | ||||
|     fi | ||||
| } | ||||
| @@ -59,7 +59,7 @@ load_profile(){ | ||||
| 
 | ||||
|     enable_live=('artix-live' 'pacman-init') | ||||
| 
 | ||||
|     [[ -z ${netgroups} ]] && netgroups="https://raw.githubusercontent.com/artix-linux/netgroups/master" | ||||
|     [[ -z ${netgroups_url} ]] && netgroups_url="https://raw.githubusercontent.com/artix-linux/netgroups/master" | ||||
| 
 | ||||
|     return 0 | ||||
| } | ||||
| @@ -83,7 +83,7 @@ write_netinstall_conf(){ | ||||
|     local conf="$1/netinstall.conf" | ||||
|     msg2 "Writing %s ..." "${conf##*/}" | ||||
|     echo "---" > "$conf" | ||||
|     echo "groupsUrl: ${netgroups}/netgroups-${initsys}.yaml" >> "$conf" | ||||
|     echo "groupsUrl: ${netgroups}" >> "$conf" | ||||
| } | ||||
| 
 | ||||
| configure_calamares(){ | ||||
							
								
								
									
										192
									
								
								lib/util-iso.sh
									
									
									
									
									
								
							
							
						
						
									
										192
									
								
								lib/util-iso.sh
									
									
									
									
									
								
							| @@ -10,11 +10,64 @@ | ||||
| # GNU General Public License for more details. | ||||
|  | ||||
| import ${LIBDIR}/util-chroot.sh | ||||
| import ${LIBDIR}/util-iso-chroot.sh | ||||
| import ${LIBDIR}/util-iso-grub.sh | ||||
| import ${LIBDIR}/util-yaml.sh | ||||
| import ${LIBDIR}/util-iso-mount.sh | ||||
| import ${LIBDIR}/util-profile.sh | ||||
| import ${LIBDIR}/util-iso-yaml.sh | ||||
| import ${LIBDIR}/util-iso-profile.sh | ||||
|  | ||||
| track_img() { | ||||
|     info "mount: [%s]" "$2" | ||||
|     mount "$@" && IMG_ACTIVE_MOUNTS=("$2" "${IMG_ACTIVE_MOUNTS[@]}") | ||||
| } | ||||
|  | ||||
| mount_img() { | ||||
|     IMG_ACTIVE_MOUNTS=() | ||||
|     mkdir -p "$2" | ||||
|     track_img "$1" "$2" | ||||
| } | ||||
|  | ||||
| umount_img() { | ||||
|     if [[ -n ${IMG_ACTIVE_MOUNTS[@]} ]];then | ||||
|         info "umount: [%s]" "${IMG_ACTIVE_MOUNTS[@]}" | ||||
|         umount "${IMG_ACTIVE_MOUNTS[@]}" | ||||
|         unset IMG_ACTIVE_MOUNTS | ||||
|         rm -r "$1" | ||||
|     fi | ||||
| } | ||||
|  | ||||
| track_fs() { | ||||
|     info "overlayfs mount: [%s]" "$5" | ||||
|     mount "$@" && FS_ACTIVE_MOUNTS=("$5" "${FS_ACTIVE_MOUNTS[@]}") | ||||
| } | ||||
|  | ||||
| mount_overlay(){ | ||||
|     FS_ACTIVE_MOUNTS=() | ||||
|     local lower= upper="$1" work="$2" pkglist="$3" | ||||
|     local fs=${upper##*/} | ||||
|     local rootfs="$work/rootfs" desktopfs="$work/desktopfs" livefs="$work/livefs" | ||||
|     mkdir -p "${mnt_dir}/work" | ||||
|     mkdir -p "$upper" | ||||
|     case $fs in | ||||
|         desktopfs) lower="$rootfs" ;; | ||||
|         livefs) | ||||
|             lower="$rootfs" | ||||
|             [[ -f $pkglist ]] && lower="$desktopfs":"$rootfs" | ||||
|         ;; | ||||
|         bootfs) | ||||
|             lower="$livefs":"$rootfs" | ||||
|             [[ -f $pkglist ]] && lower="$livefs":"$desktopfs":"$rootfs" | ||||
|         ;; | ||||
|     esac | ||||
|     track_fs -t overlay overlay -olowerdir="$lower",upperdir="$upper",workdir="${mnt_dir}/work" "$upper" | ||||
| } | ||||
|  | ||||
| umount_overlay(){ | ||||
|     if [[ -n ${FS_ACTIVE_MOUNTS[@]} ]];then | ||||
|         info "overlayfs umount: [%s]" "${FS_ACTIVE_MOUNTS[@]}" | ||||
|         umount "${FS_ACTIVE_MOUNTS[@]}" | ||||
|         unset FS_ACTIVE_MOUNTS | ||||
|         rm -rf "${mnt_dir}/work" | ||||
|     fi | ||||
| } | ||||
|  | ||||
| error_function() { | ||||
|     if [[ -p $logpipe ]]; then | ||||
| @@ -78,6 +131,114 @@ prepare_traps(){ | ||||
| #     trap 'trap_exit USR1 "$(gettext "An unknown error has occurred. Exiting...")"' ERR | ||||
| } | ||||
|  | ||||
| add_svc_rc(){ | ||||
|     local mnt="$1" name="$2" rlvl="$3" | ||||
|     if [[ -f $mnt/etc/init.d/$name ]];then | ||||
|         msg2 "Setting %s ..." "$name" | ||||
|         chroot $mnt rc-update add $name $rlvl &>/dev/null | ||||
|     fi | ||||
| } | ||||
|  | ||||
| set_xdm(){ | ||||
|     if [[ -f $1/etc/conf.d/xdm ]];then | ||||
|         local conf='DISPLAYMANAGER="'${displaymanager}'"' | ||||
|         sed -i -e "s|^.*DISPLAYMANAGER=.*|${conf}|" $1/etc/conf.d/xdm | ||||
|     fi | ||||
| } | ||||
|  | ||||
| configure_hosts(){ | ||||
|     sed -e "s|localhost.localdomain|localhost.localdomain ${hostname}|" -i $1/etc/hosts | ||||
| } | ||||
|  | ||||
| configure_logind(){ | ||||
|     local conf=$1/etc/$2/logind.conf | ||||
|     if [[ -e $conf ]];then | ||||
|         msg2 "Configuring logind ..." | ||||
|         sed -i 's/#\(HandleSuspendKey=\)suspend/\1ignore/' "$conf" | ||||
|         sed -i 's/#\(HandleLidSwitch=\)suspend/\1ignore/' "$conf" | ||||
|         sed -i 's/#\(HandleHibernateKey=\)hibernate/\1ignore/' "$conf" | ||||
|     fi | ||||
| } | ||||
|  | ||||
| configure_services(){ | ||||
|     local mnt="$1" | ||||
|     info "Configuring [%s]" "${initsys}" | ||||
|     case ${initsys} in | ||||
|         'openrc') | ||||
|             for svc in ${openrc_boot[@]}; do | ||||
|                 add_svc_rc "$mnt" "$svc" "boot" | ||||
|             done | ||||
|             for svc in ${openrc_default[@]}; do | ||||
|                 [[ $svc == "xdm" ]] && set_xdm "$mnt" | ||||
|                 add_svc_rc "$mnt" "$svc" "default" | ||||
|             done | ||||
|             for svc in ${enable_live[@]}; do | ||||
|                 add_svc_rc "$mnt" "$svc" "default" | ||||
|             done | ||||
|         ;; | ||||
|     esac | ||||
|     info "Done configuring [%s]" "${initsys}" | ||||
| } | ||||
|  | ||||
| configure_system(){ | ||||
|     local mnt="$1" | ||||
|     case ${initsys} in | ||||
|         'openrc') | ||||
|             configure_logind "$mnt" "elogind" | ||||
|         ;; | ||||
|     esac | ||||
|     echo ${hostname} > $mnt/etc/hostname | ||||
| } | ||||
|  | ||||
| clean_iso_root(){ | ||||
|     local dest="$1" | ||||
|     msg "Deleting isoroot [%s] ..." "${dest##*/}" | ||||
|     rm -rf --one-file-system "$dest" | ||||
| } | ||||
|  | ||||
| clean_up_image(){ | ||||
|     local path mnt="$1" | ||||
|     msg2 "Cleaning [%s]" "${mnt##*/}" | ||||
|  | ||||
|     default_locale "reset" "$mnt" | ||||
|     path=$mnt/boot | ||||
|     if [[ -d "$path" ]]; then | ||||
|         find "$path" -name 'initramfs*.img' -delete &> /dev/null | ||||
|     fi | ||||
|     path=$mnt/var/lib/pacman/sync | ||||
|     if [[ -d $path ]];then | ||||
|         find "$path" -type f -delete &> /dev/null | ||||
|     fi | ||||
|     path=$mnt/var/cache/pacman/pkg | ||||
|     if [[ -d $path ]]; then | ||||
|         find "$path" -type f -delete &> /dev/null | ||||
|     fi | ||||
|     path=$mnt/var/log | ||||
|     if [[ -d $path ]]; then | ||||
|         find "$path" -type f -delete &> /dev/null | ||||
|     fi | ||||
|     path=$mnt/var/tmp | ||||
|     if [[ -d $path ]];then | ||||
|         find "$path" -mindepth 1 -delete &> /dev/null | ||||
|     fi | ||||
|     path=$mnt/tmp | ||||
|     if [[ -d $path ]];then | ||||
|         find "$path" -mindepth 1 -delete &> /dev/null | ||||
|     fi | ||||
|  | ||||
|     if [[ ${mnt##*/} == 'livefs' ]];then | ||||
|         rm -rf "$mnt/etc/pacman.d/gnupg" | ||||
|     fi | ||||
|  | ||||
|     find "$mnt" -name *.pacnew -name *.pacsave -name *.pacorig -delete | ||||
|     if [[ -f "$mnt/boot/grub/grub.cfg" ]]; then | ||||
|         rm $mnt/boot/grub/grub.cfg | ||||
|     fi | ||||
|     if [[ -f "$mnt/etc/machine-id" ]]; then | ||||
|         rm $mnt/etc/machine-id | ||||
|     fi | ||||
| } | ||||
|  | ||||
| configure_live_image(){ | ||||
|     local fs="$1" | ||||
|     msg "Configuring [livefs]" | ||||
| @@ -198,14 +359,11 @@ assemble_iso(){ | ||||
|         -no-emul-boot -boot-load-size 4 -boot-info-table --grub2-boot-info \ | ||||
|         -eltorito-alt-boot \ | ||||
|         -append_partition 2 0xef ${iso_root}/efi.img \ | ||||
|         -e --interval:appended_partition_2:all:: \ | ||||
|         -e --interval:appended_partition_2:all:: -iso_mbr_part_type 0x00 \ | ||||
|         -no-emul-boot \ | ||||
|         -iso-level 3 \ | ||||
|         -o ${iso_dir}/${iso_file} \ | ||||
|         ${iso_root}/ | ||||
|  | ||||
| #         arg to add with xorriso-1.4.7 | ||||
| #         -iso_mbr_part_type 0x00 | ||||
| } | ||||
|  | ||||
| # Build ISO | ||||
| @@ -344,23 +502,6 @@ make_bootfs() { | ||||
|     fi | ||||
| } | ||||
|  | ||||
| configure_grub(){ | ||||
|     local conf="$1" | ||||
|     local default_args="artixbasedir=${iso_name} artixlabel=${iso_label}" boot_args=('quiet') | ||||
|  | ||||
|     sed -e "s|@DIST_NAME@|${iso_name}|g" \ | ||||
|         -e "s|@ARCH@|${target_arch}|g" \ | ||||
|         -e "s|@DEFAULT_ARGS@|${default_args}|g" \ | ||||
|         -e "s|@BOOT_ARGS@|${boot_args[*]}|g" \ | ||||
|         -e "s|@PROFILE@|${profile}|g" \ | ||||
|         -i $conf | ||||
| } | ||||
|  | ||||
| configure_grub_theme(){ | ||||
|     local conf="$1" | ||||
|     sed -e "s|@DIST@|${iso_name}|" -i "$conf" | ||||
| } | ||||
|  | ||||
| make_grub(){ | ||||
|     if [[ ! -e ${work_dir}/grub.lock ]]; then | ||||
|         msg "Prepare [/iso/boot/grub]" | ||||
| @@ -368,7 +509,6 @@ make_grub(){ | ||||
|         prepare_grub "${work_dir}/rootfs" "${work_dir}/livefs" "${iso_root}" | ||||
|  | ||||
|         configure_grub "${iso_root}/boot/grub/kernels.cfg" | ||||
|         configure_grub_theme "${iso_root}/boot/grub/variable.cfg" | ||||
|  | ||||
|         : > ${work_dir}/grub.lock | ||||
|         msg "Done [/iso/boot/grub]" | ||||
|   | ||||
| @@ -1,54 +0,0 @@ | ||||
| #!/bin/bash | ||||
| # | ||||
| # This program is free software; you can redistribute it and/or modify | ||||
| # it under the terms of the GNU General Public License as published by | ||||
| # the Free Software Foundation; version 2 of the License. | ||||
| # | ||||
| # This program is distributed in the hope that it will be useful, | ||||
| # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
| # GNU General Public License for more details. | ||||
|  | ||||
| import ${LIBDIR}/util-yaml.sh | ||||
|  | ||||
| write_netgroup_yaml(){ | ||||
|     local name="$1" yaml="$2" | ||||
|     msg2 "Writing %s ..." "${yaml##*/}" | ||||
|     echo "---" > "$yaml" | ||||
|     echo "- name: '$name'" >> "$yaml" | ||||
|     echo "  description: '$name'" >> "$yaml" | ||||
|     echo "  selected: false" >> "$yaml" | ||||
|     echo "  hidden: false" >> "$yaml" | ||||
|     echo "  critical: false" >> "$yaml" | ||||
|     echo "  packages:" >> "$yaml" | ||||
|     for p in ${packages[@]};do | ||||
|         echo "       - $p" >> "$yaml" | ||||
|     done | ||||
| } | ||||
|  | ||||
| write_pacman_group_yaml(){ | ||||
|     local group="$1" | ||||
|     packages=$(pacman -Sgq "$group") | ||||
|     prepare_dir "${cache_dir_netinstall}/pacman" | ||||
|     write_netgroup_yaml "$group" "${cache_dir_netinstall}/pacman/$group.yaml" | ||||
| } | ||||
|  | ||||
| gen_fn(){ | ||||
|     echo "${yaml_dir}/$1-${target_arch}-${initsys}.yaml" | ||||
| } | ||||
|  | ||||
| prepare_build(){ | ||||
|     load_profile "${profile}" | ||||
|     yaml_dir=${cache_dir_netinstall}/${profile}/${target_arch} | ||||
|     prepare_dir "${yaml_dir}" | ||||
| } | ||||
|  | ||||
| build(){ | ||||
|     load_pkgs "${root_list}" "${target_arch}" "${initsys}" "${kernel}" | ||||
|     write_netgroup_yaml "${profile}" "$(gen_fn "Packages-Root")" | ||||
|     if [[ -f "${desktop_list}" ]]; then | ||||
|         load_pkgs "${desktop_list}" "${target_arch}" "${initsys}" "${kernel}" | ||||
|         write_netgroup_yaml "${profile}" "$(gen_fn "Packages-Desktop")" | ||||
|     fi | ||||
|     ${calamares} && configure_calamares "${yaml_dir}" | ||||
| } | ||||
		Reference in New Issue
	
	Block a user