diff --git a/install.sh b/install.sh index 73723a0..96ae2a9 100755 --- a/install.sh +++ b/install.sh @@ -65,10 +65,34 @@ log_message "Installing git..." apt-get install -y git >> "$LOG_FILE" 2>&1 check_status "Failed to install git" -# Clone repository -log_message "Cloning OSX-PROXMOX repository..." -git clone --recurse-submodules https://github.com/luchina-gabriel/OSX-PROXMOX.git /root/OSX-PROXMOX >> "$LOG_FILE" 2>&1 -check_status "Failed to clone repository" +# Download repository (latest version only, without full history) +REPO_URL="https://github.com/luchina-gabriel/OSX-PROXMOX.git" +REPO_DIR="/root/OSX-PROXMOX" + +# Shallow + partial + sparse checkout: fetches only the files the setup needs. +# The OpenCore ISO is left out on purpose - the setup downloads it into the ISO +# storage on its own, so checking it out here would just duplicate ~96 MB. +clone_latest_only() { + git clone --depth 1 --filter=blob:none --sparse "$REPO_URL" "$REPO_DIR" && + git -C "$REPO_DIR" sparse-checkout set tools +} + +log_message "Downloading OSX-PROXMOX repository (latest version only)..." +if ! clone_latest_only >> "$LOG_FILE" 2>&1; then + log_message "Partial clone unavailable. Falling back to shallow clone..." + rm -rf "$REPO_DIR" + git clone --depth 1 "$REPO_URL" "$REPO_DIR" >> "$LOG_FILE" 2>&1 + check_status "Failed to clone repository" +fi + +# Download submodules (GenSMBIOS) at their pinned revision only +log_message "Downloading submodules..." +if ! git -C "$REPO_DIR" submodule update --init --depth 1 >> "$LOG_FILE" 2>&1; then + log_message "Shallow submodule fetch failed. Retrying with full history..." + git -C "$REPO_DIR" submodule deinit -f --all >> "$LOG_FILE" 2>&1 || true + git -C "$REPO_DIR" submodule update --init --force >> "$LOG_FILE" 2>&1 + check_status "Failed to download submodules" +fi # Ensure directory exists and setup is executable if [ -f "/root/OSX-PROXMOX/setup" ]; then diff --git a/setup b/setup index 2004ec6..7a0f8c6 100755 --- a/setup +++ b/setup @@ -220,6 +220,16 @@ ensure_base64_xxd_dependency() { fi } +# Function to ensure wget is installed +ensure_wget_dependency() { + local logfile="${LOGDIR}/wget-dependency.log" + if ! command -v wget >/dev/null 2>&1; then + display_and_log "Installing wget..." "$logfile" + apt-get update >>"$logfile" 2>&1 || log_and_exit "Failed to update apt" "$logfile" + apt-get install -y wget >>"$logfile" 2>&1 || log_and_exit "Failed to install wget" "$logfile" + fi +} + # Function to set ISODIR based on selected ISO storage set_isodir() { local logfile="${LOGDIR}/iso-storage-detection.log" @@ -328,7 +338,7 @@ detect_cpu_platform() { # Function to setup prerequisites setup_prerequisites() { local logfile="${LOGDIR}/prerequisites-setup.log" - cp "${SCRIPT_DIR}/EFI/"*.iso "$ISODIR" || log_and_exit "Failed to copy EFI files" "$logfile" + # The OpenCore ISO is already provisioned in ISODIR by update_opencore_iso at startup printf "alias osx-setup='%s/setup'\n" "$SCRIPT_DIR" >> /root/.bashrc printf "LANG=en_US.UTF-8\nLC_ALL=en_US.UTF-8\n" > /etc/environment printf "set mouse-=a\n" > ~/.vimrc @@ -862,6 +872,7 @@ update_opencore_iso() { iso_path="${ISODIR}/${OPENCORE_ISO}" oc_json_path="${ISODIR}/.smbios.json" + ensure_wget_dependency rm -f "$iso_path" >>"$logfile" 2>&1 if ! wget -q -O "$iso_path" "$iso_url" >>"$logfile" 2>&1; then log_and_exit "Failed to download OpenCore ISO" "$logfile"