From 1384c2f1bc59c6cf4515d2f7ee70100aff42a564 Mon Sep 17 00:00:00 2001 From: cmdr2 Date: Tue, 7 Mar 2023 21:17:04 +0530 Subject: [PATCH] Keep bootstrap.bat in the repo, until the new installer releases. However it won't be copied or used after installation. --- scripts/bootstrap.bat | 78 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 scripts/bootstrap.bat diff --git a/scripts/bootstrap.bat b/scripts/bootstrap.bat new file mode 100644 index 00000000..d3cdd19f --- /dev/null +++ b/scripts/bootstrap.bat @@ -0,0 +1,78 @@ +@echo off +setlocal enabledelayedexpansion + +@rem This script will install git and conda (if not found on the PATH variable) +@rem using micromamba (an 8mb static-linked single-file binary, conda replacement). +@rem For users who already have git and conda, this step will be skipped. + +@rem This enables a user to install this project without manually installing conda and git. + +@rem config +set MAMBA_ROOT_PREFIX=%cd%\installer_files\mamba +set INSTALL_ENV_DIR=%cd%\installer_files\env +set LEGACY_INSTALL_ENV_DIR=%cd%\installer +set MICROMAMBA_DOWNLOAD_URL=https://github.com/cmdr2/stable-diffusion-ui/releases/download/v1.1/micromamba.exe +set umamba_exists=F + +set OLD_APPDATA=%APPDATA% +set OLD_USERPROFILE=%USERPROFILE% +set APPDATA=%cd%\installer_files\appdata +set USERPROFILE=%cd%\profile + +@rem figure out whether git and conda needs to be installed +if exist "%INSTALL_ENV_DIR%" set PATH=%INSTALL_ENV_DIR%;%INSTALL_ENV_DIR%\Library\bin;%INSTALL_ENV_DIR%\Scripts;%INSTALL_ENV_DIR%\Library\usr\bin;%PATH% + +set PACKAGES_TO_INSTALL= + +if not exist "%LEGACY_INSTALL_ENV_DIR%\etc\profile.d\conda.sh" ( + if not exist "%INSTALL_ENV_DIR%\etc\profile.d\conda.sh" set PACKAGES_TO_INSTALL=%PACKAGES_TO_INSTALL% conda python=3.8.5 +) + +call git --version >.tmp1 2>.tmp2 +if "!ERRORLEVEL!" NEQ "0" set PACKAGES_TO_INSTALL=%PACKAGES_TO_INSTALL% git + +call "%MAMBA_ROOT_PREFIX%\micromamba.exe" --version >.tmp1 2>.tmp2 +if "!ERRORLEVEL!" EQU "0" set umamba_exists=T + +@rem (if necessary) install git and conda into a contained environment +if "%PACKAGES_TO_INSTALL%" NEQ "" ( + @rem download micromamba + if "%umamba_exists%" == "F" ( + echo "Downloading micromamba from %MICROMAMBA_DOWNLOAD_URL% to %MAMBA_ROOT_PREFIX%\micromamba.exe" + + mkdir "%MAMBA_ROOT_PREFIX%" + call curl -Lk "%MICROMAMBA_DOWNLOAD_URL%" > "%MAMBA_ROOT_PREFIX%\micromamba.exe" + + if "!ERRORLEVEL!" NEQ "0" ( + echo "There was a problem downloading micromamba. Cannot continue." + pause + exit /b + ) + + mkdir "%APPDATA%" + mkdir "%USERPROFILE%" + + @rem test the mamba binary + echo Micromamba version: + call "%MAMBA_ROOT_PREFIX%\micromamba.exe" --version + ) + + @rem create the installer env + if not exist "%INSTALL_ENV_DIR%" ( + call "%MAMBA_ROOT_PREFIX%\micromamba.exe" create -y --prefix "%INSTALL_ENV_DIR%" + ) + + echo "Packages to install:%PACKAGES_TO_INSTALL%" + + call "%MAMBA_ROOT_PREFIX%\micromamba.exe" install -y --prefix "%INSTALL_ENV_DIR%" -c conda-forge %PACKAGES_TO_INSTALL% + + if not exist "%INSTALL_ENV_DIR%" ( + echo "There was a problem while installing%PACKAGES_TO_INSTALL% using micromamba. Cannot continue." + pause + exit /b + ) +) + +@rem revert to the old APPDATA. only needed it for bypassing a bug in micromamba (with special characters) +set APPDATA=%OLD_APPDATA% +set USERPROFILE=%OLD_USERPROFILE%