civodul pushed a commit to branch master
in repository guix.

commit bff76fe66abd83d4986a758731dad404c40e2ca3
Author: Liam Hupfer <l...@hpfr.net>
AuthorDate: Wed Feb 5 22:25:05 2025 -0600

    guix-install.sh: Check for existing installation before downloading.
    
    Previously, the check came after guix_get_bin.  There’s no need to fetch
    the rather large release archive if there’s an existing installation, so
    check first.  Refactor the check into a function similar to other
    preflight checks.
    
    * etc/guix-install.sh: Check for existing installation before
    downloading.
    
    Change-Id: I5506fb1cacdc88bd6355e8dfa1f690acf7886c1f
    Signed-off-by: Ludovic Courtès <l...@gnu.org>
---
 etc/guix-install.sh | 24 ++++++++++++++----------
 1 file changed, 14 insertions(+), 10 deletions(-)

diff --git a/etc/guix-install.sh b/etc/guix-install.sh
index 7a731962b3..297a726ad6 100755
--- a/etc/guix-install.sh
+++ b/etc/guix-install.sh
@@ -315,6 +315,19 @@ chk_sys_nscd()
     fi
 }
 
+chk_existing()
+{ # Avoid clobbering existing installations.
+    _debug "--- [ ${FUNCNAME[0]} ] ---"
+
+    if [[ -e /var/guix && -e /gnu ]]; then
+        if [ -n "$GUIX_ALLOW_OVERWRITE" ]; then
+            _msg_warn "Overwriting existing installation!"
+        else
+            die "A previous Guix installation was found.  Refusing to 
overwrite."
+        fi
+    fi
+}
+
 # Configure substitute discovery according to user's preferences.
 # $1 is the installed service file to edit.
 configure_substitute_discovery() {
@@ -393,16 +406,6 @@ sys_create_store()
     local pkg="$1"
     local tmp_path="$2"
 
-    _debug "--- [ ${FUNCNAME[0]} ] ---"
-
-    if [[ -e /var/guix && -e /gnu ]]; then
-        if [ -n "$GUIX_ALLOW_OVERWRITE" ]; then
-            _msg_warn "Overwriting existing installation!"
-        else
-            die "A previous Guix installation was found.  Refusing to 
overwrite."
-        fi
-    fi
-
     cd "$tmp_path"
     _msg_info "Installing /var/guix and /gnu..."
     # Strip (skip) the leading ‘.’ component, which fails on read-only ‘/’.
@@ -875,6 +878,7 @@ main_install()
     chk_gpg_keyring
     chk_sys_arch
     chk_sys_nscd
+    chk_existing
 
     _msg_info "system is ${ARCH_OS}"
 

Reply via email to