aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristos.K <freedomrfox@gmail.com>2017-06-20 06:42:06 +0300
committerChristos.K <freedomrfox@gmail.com>2017-06-20 06:42:06 +0300
commitc04505c009d5b767aae83a759dcd61faa7a73225 (patch)
tree44a7214578fb33adcaab8905c5dd12ca1a5c7006 /scripts
parentIncluded functions for custom scripts (diff)
downloadGSE-c04505c009d5b767aae83a759dcd61faa7a73225.tar.gz
GSE-c04505c009d5b767aae83a759dcd61faa7a73225.tar.bz2
GSE-c04505c009d5b767aae83a759dcd61faa7a73225.zip
Major udate: Moved sinit and chroot_sinit parts to functions, imported 1 extra hook point (des) and finished the custom source script function
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/chroot_scripts/cfunctions77
-rwxr-xr-xscripts/chroot_scripts/chroot_init268
-rwxr-xr-xscripts/chroot_scripts/chsinprog1
-rwxr-xr-xscripts/functions/sinit_functions427
-rwxr-xr-xscripts/sinit276
5 files changed, 423 insertions, 626 deletions
diff --git a/scripts/chroot_scripts/cfunctions b/scripts/chroot_scripts/cfunctions
index 6297979..4823c4b 100755
--- a/scripts/chroot_scripts/cfunctions
+++ b/scripts/chroot_scripts/cfunctions
@@ -717,6 +717,27 @@ _initramfs_builder() {
fi
}
+_des_c() {
+ eclean-dist -d
+ eclean-pkg -d
+
+ if [[ -n "${_flag_minimal}" ]]; then
+ rm -f /var/lib/portage/world
+ touch /var/lib/portage/world
+ else
+ emerge --deselect sys-kernel/gentoo-sources
+ emerge --deselect sys-kernel/genkernel
+ emerge --deselect sys-boot/grub:2
+ emerge --deselect sys-kernel/dracut
+ emerge --deselect dev-util/ccache
+ emerge --deselect sys-devel/distcc
+ emerge --deselect app-portage/eix
+ emerge --deselect app-portage/gentoolkit
+ fi
+
+ _emerge_depclear
+}
+
# RUNLEVEL UPDATE FUNCTION
_runlevel_configuration() {
echo
@@ -913,24 +934,52 @@ chroot_master_loop() {
}
# REPEAT PART X.
-repeat_part() {
-while true; do
- echo -e "\e[33mPart $1: Has been completed\e[0m"
- echo -e "\e[33mRun again? Y/N: \e[0m"
- read -rp "Input :: <= " YN
- case "${YN}" in
- [yN])
- return 0
- break;;
- [nN])
- return 1
- break;;
- esac
-done
+_repeat_part() {
+ while true; do
+ echo -e "\e[33mPart $1: Has been completed\e[0m"
+ echo -e "\e[33mRun again? Y/N: \e[0m"
+ read -rp "Input :: <= " YN
+ case "${YN}" in
+ [yN])
+ return 0
+ break;;
+ [nN])
+ return 1
+ break;;
+ esac
+ done
}
_do_rs() {
while read -r s;do
source "${CHDIR}/cscripts/$s"
done < <(grep "$1" "${CHDIR}/cscripts/doscripts" | sed '/^#/ d' | sed '/^\s*$/d' | awk -F ':' '{ print $2 }')
+}
+
+_do_hs() {
+ if grep -q "$1" "${CHDIR}/cscripts/doscripts" && [[ -n "${_flag_sdir}" ]]; then
+ _e_report_back "Sourcing scripts $2 $3"
+ _do_rs "$1"
+ fi
+}
+
+_call_hook_points() {
+ if echo "${_lawful_args[@]}" | grep -q "$2"; then
+ _e_report_back "Lawful entry detected on $2, proceeding..."
+ else
+ if [[ "$(grep "$1" "${CHDIR}/chsinprog" | awk -F '=' '{ print $2 }')" == 0 || -n "${_flag_force_new}" ]] || echo "${_enforce_args[@]}" | grep -q "$2"; then
+ if [[ -n "${_flag_force_new}" ]] || echo "${_enforce_args[@]}" | grep -q "$2"; then
+ _e_report_back "Force entry detected on $3, forcing..."
+ eval "$4" "${@:5}" "cforce" || die
+ else
+ eval "$4" "${@:5}" || die
+ fi
+ else
+ if _repeat_part "$3"; then
+ eval "$4" "${@:5}"
+ else
+ _e_report_back "Proceeding"
+ fi
+ fi
+ fi
} \ No newline at end of file
diff --git a/scripts/chroot_scripts/chroot_init b/scripts/chroot_scripts/chroot_init
index 3756e22..a9a4ce1 100755
--- a/scripts/chroot_scripts/chroot_init
+++ b/scripts/chroot_scripts/chroot_init
@@ -6,13 +6,16 @@
# PLEASE DO NOT MODIFY THIS FILE, BUT REFEREE AT CONFIGURATION SUBMENU
# IF YOU NEED TO ADD EXTRA FEATURES TO YOUR SYSTEM.
#
-
+set -x
if echo "${_flag_tty}" | grep -q 'sshd'; then
LC_COLLATE="C"
LC_ALL="en_US.UTF-8"
LC_CTYPE="en_US.UTF-8"
fi
+# ENVIROMENTAL ECHO FOR TESTING PHASE
echo "$@"
+
+# EXPORT IMPORTANT VARIABLES BEFORE GOING ON
source /etc/profile && export PS1="( 'Part C: Preparing to bootstrap' ) $PS1"
export CHDIR="/sinit.d"
export PATH=${PATH}:${CHDIR}
@@ -21,74 +24,29 @@ source "${CHDIR}/chinit.conf" \
[[ ! -e "${CHDIR}/emergeresume" ]] && echo "#####" >> "${CHDIR}/emergeresume" \
|| sed -i "/#####/d" "${CHDIR}/emergeresume"
+# CHECK POSITIONAL PARAMETERS
inspector "$@"
-if grep -q '\-gupdate' "${CHDIR}/cscripts/doscripts"; then
- _e_report_back "Sourcing scripts before Part: Portage Update"
- _do_rs '\-gupdate'
-fi
-
# PART C BEGINS
-if echo "${_lawful_args[@]}" | grep -q 'gupdate'; then
- _e_report_back "Update and prepare system: Lawful entry detected, proceeding..."
+_do_hs '\-gupdate' "before" "Part: Portage Update"
+if _call_hook_points 'UPDATE' 'gupdate' 'Part: Portage Update' '_part_c' "$@"; then
+ _monitor_chroot_flow "UPDATE"
else
- if [[ "$(awk -F '=' '/UPDATE/{ print $2 }' <"${CHDIR}/chsinprog")" == 0 || -n "${_flag_force_new}" ]] || echo "${_enforce_args[@]}" | grep -q 'gupdate'; then
- if echo "${_enforce_args[@]}" | grep -q 'gupdate'; then
- _e_report_back "Update and prepare system: Force entry detected, forcing..."
- _part_c "$@" "cforce" || die "Part C FAILED"
- else
- _part_c "$@" || die "Part C FAILED"
- fi
- else
- if repeat_part "Portage Update"; then
- _part_c "$@" || die "Part C FAILED"
- else
- _e_report_back "Proceeding to sub portage part"
- fi
- fi
+ die "Part: Update Failed"
fi
-
-if grep -q '\+gupdate' "${CHDIR}/cscripts/doscripts"; then
- _e_report_back "Sourcing scripts after Part: Portage Update"
- _do_rs '\+gupdate'
-fi
-
-if grep -q '\-gportage' "${CHDIR}/cscripts/doscripts"; then
- _e_report_back "Sourcing scripts before Part: Portage"
- _do_rs '\-gportage'
-fi
-
+_do_hs '\+gupdate' "after" "Part: Portage Update"
+sleep 20
# PART PORTAGE, PROFILE AND FEATURES UPDATE
-if echo "${_lawful_args[@]}" | grep -q 'gportage'; then
- _e_report_back "Portage Configuration: Lawful entry detected, proceeding..."
+_do_hs '\-gportage' "before" "Part: Portage"
+if _call_hook_points 'PORTAGE' 'gportage' 'Part: Portage' 'part_portage' "$@"; then
+ _monitor_chroot_flow "PORTAGE"
else
- if [[ "$(awk -F '=' '/UPDATE/{ print $2 }' < "${CHDIR}/chsinprog")" == 0 || -n "${_flag_force_new}" ]] || echo "${_enforce_args[@]}" | grep -q 'gportage'; then
- if echo "${_enforce_args[@]}" | grep -q 'gportage'; then
- _e_report_back "Portage configuration: Force entry detected, forcing..."
- part_portage "$@" "cforce" && _monitor_chroot_flow "PORTAGE"
- else
- part_portage "$@" && _monitor_chroot_flow "PORTAGE"
- fi
- else
- if repeat_part "Portage Configuration"; then
- part_portage "$@" && _monitor_chroot_flow "PORTAGE"
- else
- _e_report_back "Proceeding"
- fi
- fi
-fi
-
-if grep -q '\+gportage' "${CHDIR}/cscripts/doscripts"; then
- _e_report_back "Sourcing scripts after Part:Portage"
- _do_rs '\+gportage'
-fi
-
-if grep -q '\-grebuild' "${CHDIR}/cscripts/doscripts"; then
- _e_report_back "Sourcing scripts before Part: System Rebuild"
- _do_rs '\-grebuild'
+ die "Part: Portage FAILED"
fi
+_do_hs '\+gportage' "after" "Part: Portage"
# Part D Begins
+_do_hs '\-grebuild' "before" "Part: System Rebuild"
_sreb() {
echo -e "\e[35mPart D: Rebuilding system\e[0m"
env-update > /dev/null 2>&1 && source /etc/profile && export PS1="( 'Part D: Rebuilding system' ) $PS1"
@@ -107,200 +65,74 @@ else
_sreb
fi
fi
-
-if grep -q '\+grebuild' "${CHDIR}/cscripts/doscripts"; then
- _e_report_back "Sourcing scripts after Part: System Rebuild"
- _do_rs '\+grebuild'
-fi
-
-if grep -q '\-gconfigure' "${CHDIR}/cscripts/doscripts"; then
- _e_report_back "Sourcing scripts before Part: Emerge Packages"
- _do_rs '\-gconfigure'
-fi
+_do_hs '\+grebuild' "after" "Part: System Rebuild"
# PART E BEGINS
-if echo "${_lawful_args[@]}" | grep -q 'gconfigure'; then
- _e_report_back "System Configuration: Lawful entry detected, proceeding..."
+_do_hs '\-gconfigure' "before" "Part: System Configuration"
+if _call_hook_points 'CONFIGURE' 'gconfigure' 'Part: System Configuration' 'configure_system_f' "$@"; then
+ _monitor_chroot_flow "CONFIGURE"
else
- if [[ "$(awk -F '=' '/CONFIGURE/{ print $2 }' <"${CHDIR}/chsinprog")" == 0 || -n "${_flag_force_new}" ]] || echo "${_enforce_args[@]}" | grep -q 'gconfigure'; then
- if echo "${_enforce_args[@]}" | grep -q 'gconfigure'; then
- _e_report_back "System Configuration: Force entry detected, forcing..."
- configure_system_f "$@" "cforce"
- else
- configure_system_f "$@"
- fi
- else
- if repeat_part "System Configuration"; then
- configure_system_f "$@"
- else
- _e_report_back "Proceeding to emerging packages"
- fi
- fi
-fi
-
-if grep -q '\+gconfigure' "${CHDIR}/cscripts/doscripts"; then
- _e_report_back "Sourcing scripts after Part: Emerge Packages"
- _do_rs '\+gconfigure'
-fi
-
-if grep -q '\-ginst' "${CHDIR}/cscripts/doscripts"; then
- _e_report_back "Sourcing scripts before Part: Configuration"
- _do_rs '\-ginst'
+ die "Part: System Configuration FAILED"
fi
+_do_hs '\+gconfigure' "after" "Part: System Configuration"
# PART F BEGINS
-if echo "${_lawful_args[@]}" | grep -q 'ginst'; then
- _e_report_back "Emerge packages: Lawful entry detected, proceeding..."
+_do_hs '\-ginst' "before" "Part: Emerge requested packages"
+if _call_hook_points 'INSTALL' 'ginst' 'Part: Emerge requested packages' 'emerge_requested' "$@"; then
+ _monitor_chroot_flow "INSTALL"
else
- if [[ "$(awk -F '=' '/INSTALL/{ print $2 }' <"${CHDIR}/chsinprog")" == 0 || -n "${_flag_force_new}" ]] || echo "${_enforce_args[@]}" | grep -q 'ginst'; then
- if echo "${_enforce_args[@]}" | grep -q 'ginst'; then
- _e_report_back "Emerge packages: Force entry detected, forcing..."
- emerge_requested "$@" "cforce"
- else
- emerge_requested "$@"
- fi
- else
- if repeat_part "Installing Packages"; then
- emerge_requested "$@"
- else
- _e_report_back "Proceeding to runlevel update"
- fi
- fi
+ die "Part: Emerge Requested Packages FAILED"
fi
unset YN
-
-if grep -q '\+ginst' "${CHDIR}/cscripts/doscripts"; then
- __e_report_back "Sourcing scripts after Part: Configuration"
- _do_rs '\+ginst'
-fi
-
-if grep -q '\-grun' "${CHDIR}/cscripts/doscripts"; then
- _e_report_back "Sourcing scripts before Part: Runlevels"
- _do_rs '\-grun'
-fi
+_do_hs '\+ginst' "after" "Part: Emerge requested packages"
# PART G BEGINS
-if echo "${_lawful_args[@]}" | grep -q 'grun'; then
- _e_report_back "Runlevel: Lawful entry detected, proceeding..."
+_do_hs '\-grun' "before" "Part: Runlevel Configurations"
+if _call_hook_points 'RUNLEVEL' '\-grun' 'Part: Runlevel Configurations' '_runlevel_configuration' "$@"; then
+ _monitor_chroot_flow "RUNLEVEL"
else
- if [[ "$(awk -F '=' '/RUNLEVEL/{ print $2 }' <"${CHDIR}/chsinprog")" == 0 || -n "${_flag_force_new}" ]] || echo "${_enforce_args[@]}" | grep -q 'grun'; then
- if echo "${_enforce_args[@]}" | grep -q 'grun'; then
- _e_report_back "Runlevel: Force entry detected, forcing..."
- fi
- _runlevel_configuration
- else
- if repeat_part "Runlevel Configuration"; then
- _runlevel_configuration
- else
- _e_report_back "Proceeding"
- fi
- fi
+ die "Part: Runlevel Configurations FAILED"
fi
unset YN
-
-if grep -q '\+grun' "${CHDIR}/cscripts/doscripts"; then
- _e_report_back "Sourcing scripts after Part: Runlevels"
- _do_rs '\+grun'
-fi
-
-if grep -q '\-gkernel' "${CHDIR}/cscripts/doscripts"; then
- _e_report_back "Sourcing scripts before Part: kernel"
- _do_rs '\-gkernel'
-fi
+_do_hs '\+grun' "after" "Part: Runlevel Configurations"
# PART H BEGINS
+_do_hs '\-gkernel' "before" "Part: Kernel build"
if [[ -n "${_flag_kernel}" ]] || [[ -n "${_flag_minimal}" ]]; then
:
else
- if echo "${_lawful_args[@]}" | grep -q 'gkernel'; then
- _e_report_back "Kernel: Lawful entry detected, proceeding..."
+ if _call_hook_points 'KERNEL' 'gkernel' 'Part: Kernel build' '_kernel_build'; then
+ _monitor_chroot_flow "KERNEL"
else
- if [[ "$(awk -F '=' '/KERNEL/{ print $2 }' <"${CHDIR}/chsinprog")" == 0 || -n $(echo "${_flag_force_new}") ]] || echo "${_enforce_args[@]}" | grep -q 'gkernel'; then
- if echo "${_enforce_args[@]}" | grep -q 'gkernel'; then
- _e_report_back "Kernel: Force entry detected, forcing..."
- _kernel_build "cforce"
- else
- _kernel_build
- fi
- else
- if repeat_part "Kernel Configuration"; then
- _kernel_build
- else
- _e_report_back "Proceeding"
- fi
- fi
+ die "Part: Kernel build FAILED"
fi
unset YN
fi
-
-if grep -q '\+gkernel' "${CHDIR}/cscripts/doscripts"; then
- _e_report_back "Sourcing scripts after Part: Kernel"
- _do_rs '\+gkernel'
-fi
-
-if grep -q '\-ginitrd' "${CHDIR}/cscripts/doscripts"; then
- _e_report_back "Sourcing scripts before Part: Initrd"
- _do_rs '\-ginitrd'
-fi
+_do_hs '\+gkernel' "after" "Part: Kernel build"
# PART I BEGINS
+_do_hs '\-ginitrd' "before" "Part: Initramfs build"
if [[ -n "${_flag_kernel}" ]] || [[ -n "${_flag_minimal}" ]] || [[ -n "${_flag_initrd}" ]]; then
:
else
- if echo "${_lawful_args[@]}" | grep -q 'ginitrd'; then
- _e_report_back "Initramfs: Lawful entry detected, proceeding..."
+ if _call_hook_points 'INITRAMFS' 'ginitrd' 'Part: Initramfs build' '_initramfs_builder'; then
+ _monitor_chroot_flow "INITRAMFS"
else
- if [[ "$(awk -F '=' '/INITRAMFS/{ print $2 }' <"${CHDIR}/chsinprog")" == 0 || -n "${_flag_force_new}" ]] || echo "${_enforce_args[@]}" | grep -q 'ginitrd'; then
- if echo "${_enforce_args[@]}" | grep -q 'ginitrd'; then
- _e_report_back "Initramfs: Force entry detected, forcing..."
- _initramfs_builder "cforce"
- else
- _initramfs_builder
- fi
- else
- if repeat_part "Initramfs Configuration"; then
- _initramfs_builder
- else
- _e_report_back "Proceeding"
- fi
- fi
+ die "Part: Initramfs build FAILED"
fi
unset YN
fi
+_do_hs '\+ginitrd' "after" "Part: Initramfs build"
-if grep -q '\+ginitrd' "${CHDIR}/cscripts/doscripts"; then
- _e_report_back "Sourcing scripts after Part: Initrd"
- _do_rs '\+ginitrd'
-fi
-
-if grep -q '\-gdes' "${CHDIR}/cscripts/doscripts"; then
- _e_report_back "Sourcing scripts before Part: Deselect packages"
- _do_rs '\-gdes'
-fi
-
-eclean-dist -d
-eclean-pkg -d
-
-if [[ -n "${_flag_minimal}" ]]; then
- rm -f /var/lib/portage/world
- touch /var/lib/portage/world
+# PART DESELECT BEGINS
+_do_hs '\-gdes' "before" "Part: Deselect packages"
+if _call_hook_points 'DESP' 'gdes' 'Part: Deselect packages' '_des_c' "$@"; then
+ _monitor_chroot_flow "DESP"
else
- emerge --deselect sys-kernel/gentoo-sources
- emerge --deselect sys-kernel/genkernel
- emerge --deselect sys-boot/grub:2
- emerge --deselect sys-kernel/dracut
- emerge --deselect dev-util/ccache
- emerge --deselect sys-devel/distcc
- emerge --deselect app-portage/eix
- emerge --deselect app-portage/gentoolkit
-fi
-
-_emerge_depclear
-
-if grep -q '\+gdes' "${CHDIR}/cscripts/doscripts"; then
- _e_report_back "Sourcing scripts after Part: Deselect packages"
- _do_rs '\+gdes'
+ die "Part: Deselect packages FAILED"
fi
+unset YN
+_do_hs '\+gdes' "after" "Part: Deselect packages"
# Creating user-data dir-tree
mkdir -p /user-data/persistent/{etc,var,logs,config.d,local,rmount}
diff --git a/scripts/chroot_scripts/chsinprog b/scripts/chroot_scripts/chsinprog
index 033e608..9d145fe 100755
--- a/scripts/chroot_scripts/chsinprog
+++ b/scripts/chroot_scripts/chsinprog
@@ -8,5 +8,6 @@ INSTALL=1
RUNLEVEL=1
KERNEL=1
INITRAMFS=1
+DESP=1
CLEAN=0
CHROOTPART=0
diff --git a/scripts/functions/sinit_functions b/scripts/functions/sinit_functions
index f2e4933..c916b52 100755
--- a/scripts/functions/sinit_functions
+++ b/scripts/functions/sinit_functions
@@ -100,7 +100,7 @@ _keep(){
_e_report_back "The keep flag has been detected."
_e_report_back "Making backup of, $1 before proceeding with purging"
if [[ -d "$2" ]]; then
- tar czvf "/var/tmp/gse/${_date_var}/$1.tar.bz2" "$2" >/dev/null 2>&1 \
+ eval tar czvf "/var/tmp/gse/${_date_var}/$1.tar.bz2" "$2" "${_flag_silence}" \
&& return 0 || return 1
elif [[ ! -d "$2" ]]; then
cp "$2" "/var/tmp/gse/${_date_var}/$1"
@@ -137,20 +137,6 @@ print_inf_f() {
exit 1
}
-repeat_part() {
- while true; do
- echo -e "\e[33mPart $1: Has been completed\e[0m"
- echo "Run again? Y/N: "
- read -rp "Input :: <= " YN
- case "${YN}" in
- [yN])
- return 0;;
- [nN])
- return 1;;
- esac
- done
-}
-
help_f() {
echo "Gentoo Stateless Environment, version: ${GSEVER}"
echo "Distributed under the GNU General Public License, V2"
@@ -193,20 +179,6 @@ _extracting_catalyst() {
|| return 1
}
-_repeat_subpart() {
- while true; do
- echo -e "\e[33m$1: Has been $2\e[0m"
- echo "Run again? Y/N: "
- read -rp "Input :: <= " YN
- case "${YN}" in
- [yN])
- return 0;;
- [nN])
- return 1;;
- esac
- done
-}
-
_clean_target() {
inspector "$@"
[[ -z "$(echo "$@" | grep 'workdir')" ]] && print_inf_f
@@ -311,8 +283,8 @@ _pseudo_check_purge(){
[[ -n "$(grep "dist.d/workdir-" "/proc/mounts" | awk -F ' ' '{ print $2 }')" ]] \
&& while true; do
while read -r i; do
- umount -l "$i"/* >/dev/null 2>&1 >/dev/null 2>&1
- umount -l "$i" >/dev/null 2>&1 >/dev/null 2>&1
+ eval umount -l "$i"/* "${_flag_silence}"
+ eval umount -l "$i" "${_flag_silence}"
done < <(grep 'dist.d/workdir-' "/proc/mounts" | awk -F ' ' '{ print $2 }')
[[ -z $(grep "dist.d/workdir-" "/proc/mounts" | awk -F ' ' '{ print $2 }') ]] \
@@ -362,12 +334,12 @@ _extract_tarball() {
mkdir -p "$2"
echo -e "\e[34mExtracting tarball\e[0m"
- if tar xvjpf "$1" -C "$2" --xattrs --numeric-owner >/dev/null 2>&1; then
+ if eval tar xvjpf "$1" -C "$2" --xattrs --numeric-owner "${_flag_silence}"; then
echo -e "[\e[32m*\e[0m] Extracted"
if echo "${_flag_base}" | grep -q 'catalyst'; then
echo -e "\e[34mExtracting portage\e[0m"
- if tar xvjpf "$3" --xattrs --numeric-owner -C "$2/usr/" >/dev/null 2>&1; then
+ if eval tar xvjpf "$3" --xattrs --numeric-owner -C "$2/usr/" "${_flag_silence}"; then
echo -e "[\e[32m*\e[0m] Extracted"
else
die "Extracting portage FAILED"
@@ -436,7 +408,7 @@ _export_latest() {
_gentoo_key() {
[[ -z "${GENTOOKEY}" ]] && die "Wrong Parameters" && return 1
- gpg --keyserver hkps.pool.sks-keyservers.net --recv-keys >/dev/null 2>&1 ${GENTOOKEY} \
+ eval gpg --keyserver hkps.pool.sks-keyservers.net --recv-keys "${_flag_silence}" ${GENTOOKEY} \
&& echo -e "[\e[32m*\e[0m]\e[32m Fetching Key\e[0m" \
|| { echo -e "[\e[31m*\e[0m]\e[31m Fetching Key\e[0m"; return 1; }
}
@@ -453,7 +425,7 @@ _get_latest() {
echo -e "[\e[34m*\e[0m] Marking stage3-${ARCH}-latest.tar.bz2.DIGESTS for purging"
burn "${CDISTDIR}/dists/stage3-${ARCH}-latest.tar.bz2.DIGESTS"
echo -e "[\e[32m*\e[0m] Fetching \e[34m${STAGE3TB}\e[0m"
- wget -c -O "${CDISTDIR}/dists/stage3-${ARCH}-latest.tar.bz2" "${GENTOOLATEST}" >/dev/null 2>&1 \
+ eval wget -c -O "${CDISTDIR}/dists/stage3-${ARCH}-latest.tar.bz2" "${GENTOOLATEST}" "${_flag_silence}" \
&& echo "${STAGE3TB}" > "${CDISTDIR}/dists/latest.info" \
&& pass || die "FAILED"
else
@@ -462,17 +434,17 @@ _get_latest() {
&& echo "${STAGE3TB}" > "${CDISTDIR}/dists/latest.info" \
&& pass || die "FAILED"
fi
- wget -c -O "${CDISTDIR}/dists/stage3-${ARCH}-latest.tar.bz2.DIGESTS.asc" "${GENTOOLATESTASC}" >/dev/null 2>&1 \
+ eval wget -c -O "${CDISTDIR}/dists/stage3-${ARCH}-latest.tar.bz2.DIGESTS.asc" "${GENTOOLATESTASC}" "${_flag_silence}" \
&& echo -e "[\e[32m*\e[0m] Fetching \e[34m${GENTOOLATEST}\e[0m" \
|| { echo -e "[\e[31m*\e[0m] \e[31mFAILD\e[0m: Fetching \e[34m${GENTOOLATEST}\e[0m"; exit 1; }
- wget -c -O "${CDISTDIR}/dists/stage3-${ARCH}-latest.tar.bz2.DIGESTS" "${GENTOOLATEST}.DIGESTS" >/dev/null 2>&1 \
+ eval wget -c -O "${CDISTDIR}/dists/stage3-${ARCH}-latest.tar.bz2.DIGESTS" "${GENTOOLATEST}.DIGESTS" "${_flag_silence}" \
&& echo -e "[\e[32m*\e[0m] Fetching \e[34m${GENTOOLATEST}.DIGESTS\e[0m" \
|| { echo -e "[\e[31m*\e[0m] \e[31mFAILD\e[0m: Fetching $\e[34m${GENTOOLATEST}.DIGESTS\e[0m"; exit 1; }
}
_verify_download() {
- gpg --verify "${CDISTDIR}/dists/stage3-${ARCH}-latest.tar.bz2.DIGESTS.asc" >/dev/null 2>&1 \
+ eval gpg --verify "${CDISTDIR}/dists/stage3-${ARCH}-latest.tar.bz2.DIGESTS.asc" "${_flag_silence}" \
&& echo -e "[\e[32m*\e[0m] Verifying \e[35mcryptographic signature\e[0m" \
|| { echo -e "[\e[31m*\e[0m] \e[31mFAILD\e[0m: Verifying \e[31mcryptographic signature\e[0m"; exit 1; }
@@ -488,34 +460,6 @@ _call_fetch_new() {
_get_latest_snapshot "$@"
}
-_seed_net() {
- if [[ -n "$(echo "${_lawful_args[@]}" | grep 'gseed')" ]]; then
- _e_report_back "Fetch: Lawful entry detected, proceeding..."
- else
- if [[ $(echo "${_flag_network}") == 0 ]]; then
- if [[ "$(awk -F '=' '/SEED/{ print $2 }' < "${CLOCALLG}/sinprog")" == 0 ]] || echo "$@" | grep -q 'force' || echo "${_enforce_args[@]}" | grep 'gseed'; then
- if echo "${_enforce_args[@]}" | grep 'gseed'; then
- _e_report_back "Fetch: Enforce entry detected, forcing..."
- _fetch_new "$@" "force" || die "FAILED"
- else
- _fetch_new "$@" || die "FAILED"
- fi
- else
- if _repeat_subpart "Tarball" "fetched"; then
- _fetch_new "$@" || die "FAILED"
- else
- _e_report_back "Proceeding on next part..."
- fi
- fi
- elif [[ ! -e "${CDISTDIR}/dists/stage3-${ARCH}-latest.tar.bz2" ]]; then
- die "No local tarball is present. Please enable network connection and try again"
- elif [[ -e "${CDISTDIR}/dists/stage3-${ARCH}-latest.tar.bz2" ]]; then
- _e_report_back "Stage3 tarball located"
- _e_report_back "Calling catalyst"
- fi
- fi
-}
-
_call_force_new() {
while true; do
echo -e "\e[31mForce new parameter detected\e[0m"
@@ -569,8 +513,8 @@ _unmount() {
[[ -n "$(grep "dist.d/workdir-"$2 "/proc/mounts" | awk -F ' ' '{ print $2 }')" ]] \
&& while true; do
while read -r i; do
- umount -l "$i"/* >/dev/null 2>&1 >/dev/null 2>&1
- umount -l "$i" >/dev/null 2>&1 >/dev/null 2>&1
+ eval umount -l "$i"/* "${_flag_silence}"
+ eval umount -l "$i" "${_flag_silence}"
done < <(grep 'dist.d/workdir-' "/proc/mounts" | awk -F ' ' '{ print $2 }')
[[ -z $(grep "dist.d/workdir-"$2 "/proc/mounts" | awk -F ' ' '{ print $2 }') ]] \
@@ -598,136 +542,6 @@ _mount_proc() {
|| { echo -e "[\e[31m*\e[0m] Mounting proc"; die "Failed"; }
}
-# PREPARE THE BUILDERDIR AND INITIATE CHROOT, DIE IF ANYENTRY FAILS
-_prepare_chroot() {
- inspector "$@"
-
- rm -f "$1/etc/resolv.conf"
- cp -L /etc/resolv.conf "$1/etc/" || die "Failed"
-
- if [[ -n $(echo "$@" | grep 'catalyst') ]]; then
- # CHECK IF PSEUDOS ARE MOUNTED
- if [[ -n $(cat /proc/mounts | grep 'dist.d/workdir-catalyst' | awk -F ' ' '{ print $1 }') ]]; then
- echo -e "\e[31mPseudos possibly mounted at target directory\e[0m"
- echo -e "\e[33mResolving the issue...\e[0m"
- _unmount "catalyst" || die
- fi
- echo -e "\e[34mMounting pseudo\e[0m"
- [[ -z $(grep 'dist.d/workdir-catalyst' /proc/mounts | awk -F ' ' '{ print $1 }') ]] \
- && _mount_proc "$1" || die
- elif [[ -n $(echo "$@" | grep 'precomp') ]]; then
- if [[ -n $(cat /proc/mounts | grep 'dist.d/workdir-precomp' | awk -F ' ' '{ print $1 }') ]]; then
- echo -e "\e[31mPseudos possibly mounted at target directory\e[0m"
- echo -e "\e[33mResolving the issue...\e[0m"
- _unmount "precomp" || die
- fi
- echo -e "\e[34mMounting pseudo\e[0m"
- [[ -z $(grep 'dist.d/workdir-precomp' /proc/mounts | awk -F ' ' '{ print $1 }') ]] \
- && _mount_proc "$1" || die
- fi \
- && _mount_dev_sys "$1" "dev" \
- && _mount_dev_sys "$1" "sys" \
- || die "Something went wrong"
-
- mkdir -p "$1/sinit.d"
-
- [[ ! -e "$1/sinit.d/chsinprog" ]] && rsync -aAXr "${CWORKDIR}/scripts/chroot_scripts/" "$1/sinit.d/" >/dev/null 2>&1 \
- || rsync -aAXr --exclude="chsinprog" "${CWORKDIR}/scripts/chroot_scripts/" "$1/sinit.d/" >/dev/null 2>&1 \
- && rsync -aAXr "${CCONFDIR}/system/portage/" "$1/sinit.d/" >/dev/null 2>&1 \
- && rsync -aAXr --exclude="portage" "${CCONFDIR}/system/" "$1/sinit.d/" >/dev/null 2>&1 \
- && echo -e "[\e[32m*\e[0m] Copying \e[34mbuilder's\e[0m files to new system" \
- || { echo -e "[\e[31m*\e[0m] Copying \e[34mbuilder's\e[0m files to new system"; die "Failed"; }
-
- # CREATE REPOS.CONF DIRECOTRY & AND COPY REPOS.CONF TO IT
- mkdir -p "$1/etc/portage/repos.conf"
- cp "$1/usr/share/portage/config/repos.conf" "$1/etc/portage/repos.conf/gentoo.conf" || die
-
- # Set local timezone if set
- if [[ -n $(cat /etc/timezone) ]]; then
- TIMEZONE=$(cat /etc/timezone)
- sed -i -e "s_TMZ_${TIMEZONE}_g" "$1/sinit.d/chinit.conf"
- unset TIMEZONE
- fi
-
- echo -e "[\e[32m*\e[0m] Copying requested files"
- if [[ -n $(cat ${CCONFDIR}/system/inject_files | sed '/^#/ d' | sed '/^\s*$/d') ]]; then
-
- while read -r INJFL; do
- f1="$(echo $INJFL | awk -F ' ' '{ print $1 }')"
- f2="${BWORKDIR}/(echo $INJFL | awk -F ' ' '{ print $2 }')"
- echo "Copying $f1 to $f2"
- rsync -aAXPhrv "$f1" "$f2" >/dev/null 2>&1 \
- && pass || { mapfile -t INJFLERR < <($INJFL | awk -F ' ' '{ print $1 }'); }
- done < <(cat "${CCONFDIR}/system/inject_files" | sed '/^#/ d' | sed '/^\s*$/d')
- unset INJFL
-
- if [[ -n "${INJFLERR}" ]]; then
- echo "Failed to copy the following packages: "
- echo "${INJFLERR[@]}"
- while true; do
- echo "You can list the failed files again, continue, request terminal or exit"
- echo "Please choose: LIST/CONTINUE/TERMINAL/EXIT"
- read -rp "Input :: <= " INJFLANS
- case "$INJFLANS" in
- LIST)
- clear; echo "${INJFLERR[@]}";;
- CONTINUE)
- while true; do
- echo "Are you sure? Y/N "
- read -p "Input :: <= " YN
- case $YN in
- [yY])
- echo "Proceeding"
- INJFLESC=0
- break;;
- [nN])
- INJFLESC=1
- ;;
- esac
- done;;
- TERMINAL)
- _subshell
- INJFLESC=0;;
- EXIT)
- while true; do
- echo "Are you sure? Y/N "
- read -p "Input :: <= " YN
- case $YN in
- [yY])
- echo "Aborting..."
- exit 0;;
- [nN])
- INJFLESC=1
- break;;
- esac
- done;;
- esac
- [[ "$INJFLESC" == 0 ]] && break
- done
- fi
- unset YN
- unset INJFLESC
- unset INJFLANS
- unset INJFLERR
- else
- echo -e "[\e[32m*\e[0m] List empty"
- fi
-
-# COPY THE SCRIPTS AND DOSCRIPTS AT CHROOTDIR
- if [[ -n "${_flag_sdir}" ]]; then
- mkdir -p "$1/sinit.d/cscripts"
- rsync -aAXhrvq "${_flag_sdir_path}/" "$1/sinit.d/cscripts/"
- chmod +x "$1/sinit.d/cscripts/"*
- cp -r "${CLOCALLG}/doscripts" "$1/sinit.d/cscripts/doscripts"
- fi
-
- echo -e "\e[34mChrooting at new system\e[0m"
- sleep 0.5
- # PASS ALL PP AND INITIATE CHROOT
- chroot "$1" "sinit.d/chroot_init" "$@" || { echo -e "[\e[31m*\e[0m] Chrooting configuration failed"; die; } \
- && sinit_flow_monitor "PARTB"
-}
-
# THIS SCRIPT IS SOURCED AT THE BEGINING FOR CHECKING THE BUILDER'S RUNTIME DEPENDENCIES
_lcreq() {
CRDPENDS=''
@@ -746,7 +560,7 @@ _lcreq() {
|| { echo -e "[\e[33m*\e[0m] \e[35mPlease install eix to proceed!\e[0m" \
&& { _am_i_root_sub "$UID" && echo -e "[\e[32m*\e[0m] Root privileges found" \
&& emerge -aq eix && echo -e "[\e[33m*\e[0m] \e[35mUpdating database\e[0m" \
- && eix-sync -a >/dev/null 2>&1; } \
+ && eval eix-sync -a "${_flag_silence}"; } \
|| { echo -e "[\e[31m*\e[0m] Could not get root privileges" \
&& echo "Please resolve this issue and start again" && exit 1; }; }
@@ -754,7 +568,7 @@ _lcreq() {
for i in "${lreq[@]}"; do
sleep 0.1
- if eix --installed "$i" >/dev/null 2>&1; then
+ if eval eix --installed "$i" "${_flag_silence}"; then
echo -e "[\e[32m*\e[0m] Searching for \e[32m$i\e[0m"
else
echo -e "[\e[31m*\e[0m] Searching for $i"
@@ -771,7 +585,7 @@ _lcreq() {
for i in "${lreq[@]}"; do
sleep 0.1
- if command -v "$i" >/dev/null 2>&1; then
+ if eval command -v "$i" "${_flag_silence}"; then
echo -e "[\e[32m*\e[0m] Searching for \e[32m$i\e[0m"
else
echo -e "[\e[31m*\e[0m] Searching for $i"
@@ -889,7 +703,7 @@ librarium() {
_flag_verbose=''
_flag_quiet=''
_flag_test=''
- _flag_silent=''
+ _flag_silence=''
_flag_network=''
_flag_mm=''
_flag_do=''
@@ -1327,7 +1141,7 @@ warp() {
"$_flag_quiet" \
"$_flag_test"
"$_flag_network")
- # STAGE A
+ # STAGE A & B
# THIS LIST WILL BE EXPORTED TO THE SOURCED SINIT BUILDER SCRIPT
_flags_stagea=()
@@ -1344,24 +1158,38 @@ warp() {
"_flag_quiet" \
"_flag_test" \
"_flag_network" \
- "_flag_base")
+ "_flag_sdir")
for i in "${_flags_listA[@]}"; do
if [[ "$(echo ${!i})" == 0 ]]; then
_flags_stagea+=("${i}")
fi
done
-
+
+ if [[ "${_silence}" == 0 ]]; then
+ _flag_silence='>/dev/null 2>&1'
+ export _flag_silence
+ elif [[ "${_silence}" == 1 ]]; then
+ _flag_silence=''
+ set -x
+ export _flag_silence
+ elif [[ "${_silence}" == 9 ]]; then
+ _flag_silence=''
+ export _flag_silence
+ fi
+
+ _flags_stagea+=("${_flag_base}")
if [[ -n "${_flag_base}" ]]; then
- source "${CWORKDIR}/scripts/sinit" "${_flags_stagea[@]}"
+ if [[ -n "${_flag_sdir}" ]]; then
+ source "${CWORKDIR}/scripts/sinit" "${_flags_stagea[@]}"
+ else
+ source "${CWORKDIR}/scripts/sinit" "${_flags_stagea[@]}"
+ fi
elif [[ -z "${_flag_base}" && -n "${_flag_fetch}" ]]; then
_call_fetch_new "$@"
fi
- # STAGE B
-
# STAGE C
-
}
_do_rs() {
@@ -1370,3 +1198,184 @@ _do_rs() {
done < <(grep "$1" "${CLOCALLG}/doscripts" | sed '/^#/ d' | sed '/^\s*$/d' | awk -F ':' '{ print $2 }')
}
+_do_hs() {
+ if grep -q "$1" "${CLOCALLG}/doscripts" && [[ -n "${_flag_sdir}" ]]; then
+ _e_report_back "Sourcing scripts $2 $3"
+ _do_rs "$1"
+ fi
+}
+
+_repeat_part() {
+ while true; do
+ echo -e "\e[33m$1: Has been completed\e[0m"
+ echo "Run again? Y/N: "
+ read -rp "Input :: <= " YN
+ case "${YN}" in
+ [yN])
+ return 0;;
+ [nN])
+ return 1;;
+ esac
+ done
+}
+
+_call_hook_points() {
+ if echo "${_lawful_args[@]}" | grep -q "$2"; then
+ _e_report_back "Lawful entry detected on $2, proceeding..."
+ else
+ if [[ "$(grep "$1" "${CLOCALLG}/sinprog" | awk -F '=' '{ print $2 }')" == 0 || -n "${_flag_force_new}" ]] || echo "${_enforce_args[@]}" | grep -q "$2"; then
+ if [[ -n "${_flag_force_new}" ]] || echo "${_enforce_args[@]}" | grep -q "$2"; then
+ _e_report_back "Force entry detected on $3, forcing..."
+ eval "$4" "${@:5}" "force" || die
+ else
+ eval "$4" "${@:5}" || die
+ fi
+ else
+ if _repeat_part "$3"; then
+ eval "$4" "${@:5}"
+ else
+ _e_report_back "Proceeding"
+ fi
+ fi
+ fi
+}
+
+# PREPARE THE BUILDERDIR AND INITIATE CHROOT, DIE IF ANYENTRY FAILS
+_prepare_chroot() {
+ inspector "$@"
+
+ if [[ ! -e "$1" ]]; then
+ _e_report_back "No workdir can be detected. Seems like $1 does not exist."
+ _e_report_back "This can occur when Part: A is skipped."
+ _e_report_back "If that's not the case, please submit a bug report, otherwise repeat the process without skipping Part: A"
+ die "No workdir detected"
+ fi
+
+ rm -f "$1/etc/resolv.conf"
+ cp -L /etc/resolv.conf "$1/etc/" || die "Failed"
+
+ if [[ -n $(echo "$@" | grep 'catalyst') ]]; then
+ # CHECK IF PSEUDOS ARE MOUNTED
+ if [[ -n $(cat /proc/mounts | grep 'dist.d/workdir-catalyst' | awk -F ' ' '{ print $1 }') ]]; then
+ echo -e "\e[31mPseudos possibly mounted at target directory\e[0m"
+ echo -e "\e[33mResolving the issue...\e[0m"
+ _unmount "catalyst" || die
+ fi
+ echo -e "\e[34mMounting pseudo\e[0m"
+ [[ -z $(grep 'dist.d/workdir-catalyst' /proc/mounts | awk -F ' ' '{ print $1 }') ]] \
+ && _mount_proc "$1" || die
+ elif [[ -n $(echo "$@" | grep 'precomp') ]]; then
+ if [[ -n $(cat /proc/mounts | grep 'dist.d/workdir-precomp' | awk -F ' ' '{ print $1 }') ]]; then
+ echo -e "\e[31mPseudos possibly mounted at target directory\e[0m"
+ echo -e "\e[33mResolving the issue...\e[0m"
+ _unmount "precomp" || die
+ fi
+ echo -e "\e[34mMounting pseudo\e[0m"
+ [[ -z $(grep 'dist.d/workdir-precomp' /proc/mounts | awk -F ' ' '{ print $1 }') ]] \
+ && _mount_proc "$1" || die
+ fi \
+ && _mount_dev_sys "$1" "dev" \
+ && _mount_dev_sys "$1" "sys" \
+ || die "Something went wrong"
+
+ mkdir -p "$1/sinit.d"
+
+ [[ ! -e "$1/sinit.d/chsinprog" ]] && eval rsync -aAXr "${CWORKDIR}/scripts/chroot_scripts/" "$1/sinit.d/" "${_flag_silence}" \
+ || rsync -aAXr --exclude="chsinprog" "${CWORKDIR}/scripts/chroot_scripts/" "$1/sinit.d/" "${_flag_silence}" \
+ && eval rsync -aAXr "${CCONFDIR}/system/portage/" "$1/sinit.d/" "${_flag_silence}" \
+ && eval rsync -aAXr --exclude="portage" "${CCONFDIR}/system/" "$1/sinit.d/" "${_flag_silence}" \
+ && echo -e "[\e[32m*\e[0m] Copying \e[34mbuilder's\e[0m files to new system" \
+ || { echo -e "[\e[31m*\e[0m] Copying \e[34mbuilder's\e[0m files to new system"; die "Failed"; }
+
+ # CREATE REPOS.CONF DIRECOTRY & AND COPY REPOS.CONF TO IT
+ mkdir -p "$1/etc/portage/repos.conf"
+ cp "$1/usr/share/portage/config/repos.conf" "$1/etc/portage/repos.conf/gentoo.conf" || die
+
+ # Set local timezone if set
+ if [[ -n $(cat /etc/timezone) ]]; then
+ TIMEZONE=$(cat /etc/timezone)
+ sed -i -e "s_TMZ_${TIMEZONE}_g" "$1/sinit.d/chinit.conf"
+ unset TIMEZONE
+ fi
+
+ echo -e "[\e[32m*\e[0m] Copying requested files"
+ if [[ -n $(cat ${CCONFDIR}/system/inject_files | sed '/^#/ d' | sed '/^\s*$/d') ]]; then
+
+ while read -r INJFL; do
+ f1="$(echo $INJFL | awk -F ' ' '{ print $1 }')"
+ f2="${BWORKDIR}/(echo $INJFL | awk -F ' ' '{ print $2 }')"
+ echo "Copying $f1 to $f2"
+ eval rsync -aAXPhrv "$f1" "$f2" "${_flag_silence}" \
+ && pass || { mapfile -t INJFLERR < <($INJFL | awk -F ' ' '{ print $1 }'); }
+ done < <(cat "${CCONFDIR}/system/inject_files" | sed '/^#/ d' | sed '/^\s*$/d')
+ unset INJFL
+
+ if [[ -n "${INJFLERR}" ]]; then
+ echo "Failed to copy the following packages: "
+ echo "${INJFLERR[@]}"
+ while true; do
+ echo "You can list the failed files again, continue, request terminal or exit"
+ echo "Please choose: LIST/CONTINUE/TERMINAL/EXIT"
+ read -rp "Input :: <= " INJFLANS
+ case "$INJFLANS" in
+ LIST)
+ clear; echo "${INJFLERR[@]}";;
+ CONTINUE)
+ while true; do
+ echo "Are you sure? Y/N "
+ read -p "Input :: <= " YN
+ case $YN in
+ [yY])
+ echo "Proceeding"
+ INJFLESC=0
+ break;;
+ [nN])
+ INJFLESC=1
+ ;;
+ esac
+ done;;
+ TERMINAL)
+ _subshell
+ INJFLESC=0;;
+ EXIT)
+ while true; do
+ echo "Are you sure? Y/N "
+ read -p "Input :: <= " YN
+ case $YN in
+ [yY])
+ echo "Aborting..."
+ exit 0;;
+ [nN])
+ INJFLESC=1
+ break;;
+ esac
+ done;;
+ esac
+ [[ "$INJFLESC" == 0 ]] && break
+ done
+ fi
+ unset YN
+ unset INJFLESC
+ unset INJFLANS
+ unset INJFLERR
+ else
+ echo -e "[\e[32m*\e[0m] List empty"
+ fi
+
+ # COPY THE SCRIPTS AND DOSCRIPTS AT CHROOTDIR
+ if [[ -n "${_flag_sdir}" ]]; then
+ mkdir -p "$1/sinit.d/cscripts"
+ rsync -aAXhrvq "${_flag_sdir_path}/" "$1/sinit.d/cscripts/"
+ chmod +x "$1/sinit.d/cscripts/"*
+ cp -r "${CLOCALLG}/doscripts" "$1/sinit.d/cscripts/doscripts"
+ fi
+
+ echo -e "\e[34mChrooting at new system\e[0m"
+ sleep 0.5
+ # PASS ALL PP AND INITIATE CHROOT
+ if chroot "$1" "sinit.d/chroot_init" "$@"; then
+ _o_report_back "Chroot staged finished"
+ else
+ die "Chrooting configuration failed"
+ fi
+}
diff --git a/scripts/sinit b/scripts/sinit
index 2e342f3..5d9f70b 100755
--- a/scripts/sinit
+++ b/scripts/sinit
@@ -11,10 +11,11 @@ if [[ -z "${_flag_base}" ]]; then
_e_report_back "See man 1 gse for base options."
die "Aborting actions..."
fi
+
+# ENVIROMENTAL ECHO FOR TESTING
echo "$@"
+
# STAGE A
-# CHECK POSITIONAL PARAMETERS
-inspector "$@"
clear
echo "============================================================================"
echo -e "\e[35m PART:A Fundamentals\e[0m"
@@ -25,6 +26,9 @@ source "${CWORKDIR}/etc/gentoo.conf" >/dev/null 2>&1 \
&& echo -e "[\e[32m*\e[0m] \e[35mExporting variables\e[0m" \
|| { echo -e "[\e[31m*\e[0m] \e[35mExporting variables\e[0m"; echo -e "\e[31mAborting\e[0m..."; sleep 2; return 1; }
+# CHECK POSITIONAL PARAMETERS
+inspector "$@"
+
# PART A FUNDAMENTALS
_part_a() {
# CHECK IF THERE IS ANY WORK DONE
@@ -45,171 +49,95 @@ _part_a() {
# CALL CATALYST BUILD OR PRECOMPILED BUILD
case "${_flag_base}" in
catalyst)
-
- if grep -q '\-gseed' "${CLOCALLG}/doscripts"; then
- _e_report_back "Sourcing scripts before gseed"
- _do_rs '\-gseed'
- fi
-
- if _seed_net "$@"; then
- sinit_flow_monitor "SEED"
- fi
-
- if grep -q '\+gseed' "${CLOCALLG}/doscripts"; then
- _e_report_back "Sourcing scripts after gseed"
- _do_rs '\+gseed'
- fi
-
- if grep -q '\-gcat' "${CLOCALLG}/doscripts"; then
- _e_report_back "Sourcing scripts before catalyst"
- _do_rs '\-gcat'
- fi
-
- if echo "${_lawful_args[@]}" | grep -q 'gcat'; then
- _e_report_back "Catalyst: Lawful entry detected, proceeding..."
- else
- if [[ "$(awk -F '=' '/CATALYST/{ print $2 }' < "${CLOCALLG}/sinprog")" == 0 ]] || echo "$@" | grep -q 'force' || echo "${_enforce_args[@]}" | grep -q 'gcat'; then
- if echo "${_enforce_args[@]}" | grep -q 'gcat'; then
- _e_report_back "Catalyst: Enforce entry detected, forcing..."
- _callying_catalyst "$@" "force" || die
- sinit_flow_monitor "CATALYST"
+
+ # PART NETWORK SEED
+ _do_hs '\-gseed' "before" "seed part"
+ _seed_net() {
+ if [[ $(echo "${_flag_network}") == 0 ]]; then
+ if _call_hook_points 'SEED' 'gseed' 'Part: Fetch tarball' "_fetch_new" "$@"; then
+ sinit_flow_monitor "SEED"
else
- _callying_catalyst "$@" || die
- sinit_flow_monitor "CATALYST"
- fi
- else
- if _repeat_subpart "Catalyst" "configured"; then
- _callying_catalyst "$@" || die
- else
- echo -e "\e[33mProceeding with extraction...\e[0m"
+ die "Fetching tarball FAILED"
fi
+ elif [[ ! -e "${CDISTDIR}/dists/stage3-${ARCH}-latest.tar.bz2" ]]; then
+ die "No local tarball is present. Please enable network connection and try again"
+ elif [[ -e "${CDISTDIR}/dists/stage3-${ARCH}-latest.tar.bz2" ]]; then
+ _e_report_back "Stage3 tarball located"
+ _e_report_back "Calling catalyst"
fi
- fi
+ }
+ _do_hs '\+gseed' "after" "seed part"
- if grep -q '\+gcat' "${CLOCALLG}/doscripts"; then
- _e_report_back "Sourcing scripts after catalyst"
- _do_rs '\+gcat'
- fi
-
- if grep -q '\-gextr' "${CLOCALLG}/doscripts"; then
- _e_report_back "Sourcing scripts before extraction"
- _do_rs '\-gextr'
+ # PART CATALYST
+ _do_hs '\-gcat' "before" "catalyst part"
+ if _call_hook_points 'CATALYST' 'gcat' 'Part: Catalyst' "_callying_catalyst" "$@"; then
+ sinit_flow_monitor "CATALYST"
+ else
+ die "Part: Catalyst FAILED"
fi
+ _do_hs '\+gcat' "after" "Catalyst"
- if echo "${_lawful_args[@]}" | grep -q 'gextr'; then
- _e_report_back "Extraction: Lawful entry detected, proceeding..."
+ # PART CATALYST STAGE3 AND PORTAGE SNAPSHOT EXTRACTION
+ _do_hs '\-gextr' "before" "Catalyst Extraction"
+ if _call_hook_points 'EXTRACTION' 'gextr' 'Part: Catalyst Extraction' "_extracting_catalyst" "$@"; then
+ sinit_flow_monitor "EXTRACTION"
else
- if [[ "$(awk -F '=' '/EXTRACTION/{ print $2 }' < "${CLOCALLG}/sinprog")" == 0 ]] || echo "$@" | grep -q 'force'; then
- if echo "${_enforce_args[@]}" | grep -q 'gextr'; then
- _e_report_back "Extraction: Enforce entry detected, forcing..."
- _extracting_catalyst "$@" "force" || die
- sinit_flow_monitor "EXTRACTION"
- else
- _extracting_catalyst "$@" || die
- sinit_flow_monitor "EXTRACTION"
- fi
- else
- if _repeat_subpart "Extraction" "completed"; then
- _extracting_catalyst "$@" || die
- else
- echo -e "\e[33mProceeding to Part: B...\e[0m"
- fi
- fi
+ die "Part: Catalyst Extraction FAILED"
fi
+ _do_hs '\+gextr' "after" "Catalyst Extraction"
unset CATDIR
unset TARGETNAME
unset TARGETPATH
unset TARGETSTAMP
-
- if grep -q '\+gextr' "${CLOCALLG}/doscripts"; then
- _e_report_back "Sourcing scripts after extraction"
- _do_rs '\+gextr'
- fi;;
+ ;;
precomp)
- if grep -q '\-gseed' "${CLOCALLG}/doscripts"; then
- _e_report_back "Sourcing scripts before gseed"
- _do_rs '\-gseed'
- fi
-
- if _seed_net "$@"; then
- sinit_flow_monitor "SEED"
- fi
-
- if grep -q '\+gseed' "${CLOCALLG}/doscripts"; then
- _e_report_back "Sourcing scripts after gseed"
- _do_rs '\+gseed'
- fi
-
- if grep -q '\-gprec' "${CLOCALLG}/doscripts"; then
- _e_report_back "Sourcing scripts before precomp extraction"
- _do_rs '\-gprec'
- fi
-
- if echo "${_lawful_args[@]}" | grep -q 'gprec'; then
- _e_report_back "Precomp: Lawful entry detected, proceeding..."
- else
- if [[ "$(awk -F '=' '/PRECOMP/{ print $2 }' < "${CLOCALLG}/sinprog")" == 0 ]] || echo "$@" | grep -q 'force'; then
- if echo "${_enforce_args[@]}" | grep -q 'gprec'; then
- _e_report_back "Precomp: Enforce entry detected, forcing..."
- _workdir_check "${CDISTDIR}/dists/stage3-${ARCH}-latest.tar.bz2" \
- "${CDISTDIR}/workdir-precomp" "$@" "force" || die
- sinit_flow_monitor "PRECOMP"
+ # PART NETWORK SEED
+ _do_hs '\-gseed' "before" "seed part"
+ _seed_net() {
+ if [[ $(echo "${_flag_network}") == 0 ]]; then
+ if _call_hook_points 'SEED' 'gseed' 'Part: Fetch tarball' "_fetch_new" "$@"; then
+ sinit_flow_monitor "SEED"
else
- _workdir_check "${CDISTDIR}/dists/stage3-${ARCH}-latest.tar.bz2" \
- "${CDISTDIR}/workdir-precomp" "$@" || die
- sinit_flow_monitor "PRECOMP"
- fi
- else
- if _repeat_subpart "Precomp Extraction" "completed"; then
- _workdir_check "${CDISTDIR}/dists/stage3-${ARCH}-latest.tar.bz2" \
- "${CDISTDIR}/workdir-precomp" "$@" || die
- else
- echo -e "\e[33mProceeding to Part: B...\e[0m"
+ die "Fetching tarball FAILED"
fi
+ elif [[ ! -e "${CDISTDIR}/dists/stage3-${ARCH}-latest.tar.bz2" ]]; then
+ die "No local tarball is present. Please enable network connection and try again"
+ elif [[ -e "${CDISTDIR}/dists/stage3-${ARCH}-latest.tar.bz2" ]]; then
+ _e_report_back "Stage3 tarball located"
+ _e_report_back "Calling catalyst"
fi
+ }
+ _do_hs '\+gseed' "after" "seed part"
+
+ # PART PRECOMP STAGE3 EXTRACTION
+ _prec_workdir_function() {
+ _workdir_check "$1" "$2" "${@:3}" || die
+ }
+
+ _do_hs '\-gprec' "before" "Precomp extraction"
+ if _call_hook_points 'PRECOMP' 'gprec' 'Part: prec' "_prec_workdir_function" "${CDISTDIR}/dists/stage3-${ARCH}-latest.tar.bz2" "${CDISTDIR}/workdir-precomp" "$@"; then
+ sinit_flow_monitor "PRECOMP"
+ else
+ die "Part: Precomp FAILED"
fi
-
- if grep -q '\+gprec' "${CLOCALLG}/doscripts"; then
- _e_report_back "Sourcing scripts after precomp extraction"
- _do_rs '\+gprec'
- fi;;
+ _do_hs '\+gprec' "after" "Precomp extraction"
+ ;;
esac
}
-if grep -q '\-gparta' "${CLOCALLG}/doscripts"; then
- _e_report_back "Sourcing scripts before Part: A"
- _do_rs '\-gparta'
-fi
-
-if echo "${_lawful_args[@]}" | grep -q 'gparta'; then
- _e_report_back "Lawful entry detected on parta, proceeding..."
-else
- if [[ "$(awk -F '=' '/PARTA/{ print $2 }' < "${CLOCALLG}/sinprog")" == 0 || -n "${_flag_force_new}" ]] || echo "${_enforce_args[@]}" | grep -q 'gparta'; then
- if [[ -n "${_flag_force_new}" ]] || echo "${_enforce_args[@]}" | grep -q 'gparta'; then
- _e_report_back "Force entry detected on part a, forcing..."
- _part_a "$@" "force" || die
- sinit_flow_monitor "PARTA"
- else
- _part_a "$@" || die
- sinit_flow_monitor "PARTA"
- fi
- else
- if repeat_part "A"; then
- _part_a "$@"
- else
- _e_report_back "Proceeding with part b"
- fi
- fi
-fi
-
-if grep -q '\+gparta' "${CLOCALLG}/doscripts"; then
- _e_report_back "Sourcing scripts after Part: A"
- _do_rs '\+gparta'
+# PART A BEGINS
+_do_hs '\-gparta' "before" "Part: A"
+if _call_hook_points 'PARTA' "gparta" 'Part: A' "_part_a" "$@"; then
+ sinit_flow_monitor "PARTA"
+else
+ die "Part: A FAILED"
fi
+_do_hs '\+gparta' "after" "Part: A"
+# EXPORT WORKDIR
case "${_flag_base}" in
catalyst )
BWORKDIR="${CDISTDIR}/workdir-catalyst";;
@@ -217,62 +145,40 @@ case "${_flag_base}" in
BWORKDIR="${CDISTDIR}/workdir-precomp";;
esac
-echo "============================================================================"
-echo -e "\e[35m PART: B Preparing to enter the new system\e[0m"
-echo "============================================================================"
+# PART B FUNCTION
+_part_b() {
-_am_i_root "$UID" && echo -e "[\e[32m*\e[0m] Requesting root privileges" \
-|| { echo -e "[\e[31m*\e[0m] Requesting root privileges"; exit 1; }
+ echo "============================================================================"
+ echo -e "\e[35m PART: B Preparing to enter the new system\e[0m"
+ echo "============================================================================"
+
+ if _am_i_root "$UID"; then
+ echo -e "[\e[32m*\e[0m] Requesting root privileges"
+ else
+ die "Requesting root privileges"
+ fi
-_part_b() {
if _prepare_chroot "$@"; then
- if grep -q '\-gclean' "${CLOCALLG}/doscripts"; then
- _e_report_back "Sourcing scripts before cleanup"
- _do_rs '\-gclean'
- fi
+ _do_hs '\-gclean' "before" "clean part"
_clean_target "$@" || die
- if grep -q '\+gclean' "${CLOCALLG}/doscripts"; then
- _e_report_back "Sourcing scripts after cleanup"
- _do_rs '\+gclean'
- fi
-
- sinit_flow_monitor "PARTB"
+ _do_hs '\+gclean' "after" "clean part"
else
die "Cleaning failed"
fi
}
-if grep -q '\-gpartb' "${CLOCALLG}/doscripts"; then
- _e_report_back "Sourcing scripts before Part: B"
- _do_rs '\-gpartb'
-fi
-
-if echo "${_lawful_args[@]}" | grep -q 'gpartb'; then
- _e_report_back "Lawful entry detected on part b, proceeding..."
-else
- if [[ "$(awk -F '=' '/PARTB/{ print $2 }' < "${CLOCALLG}/sinprog")" == 0 || -n "${_flag_start_new}" ]] || echo "${_enforce_args[@]}" | grep 'gpartb'; then
- if [[ -n "${_flag_force_new}" ]] || echo "${_enforce_args[@]}" | grep -q 'gparta'; then
- _e_report_back "Force entry detected on partb, forcing..."
- _part_b "${BWORKDIR}" "$@" "${_flag_base}" 'cforce'
- else
- _part_b "${BWORKDIR}" "$@" "${_flag_base}"
- fi
- else
- if repeat_part "B"; then
- _part_b "${BWORKDIR}" "$@" "${_flag_base}"
- else
- _e_report_back "Proceeding..."
- fi
- fi
-fi
-
-if grep -q '\+gpartb' "${CLOCALLG}/doscripts"; then
- _e_report_back "Sourcing scripts after Part: B"
- _do_rs '\+gpartb'
+# PART B BEGINS
+_do_hs '\-gpartb' "before" "Part: B"
+if _call_hook_points 'PARTB' "gpartb" 'Part: B' "_part_b" "${BWORKDIR}" "$@"; then
+ sinit_flow_monitor "PARTB"
+else
+ die "Part: B FAILED"
fi
+_do_hs '\+gpartb' "after" "Part: B"
+exit
umount -l "${BWORKDIR}/"*
umount -l "${BWORKDIR}/"*
umount -l "${BWORKDIR}/"*