diff --git a/installer/How to create the installers.md b/installer/How to create the installers.md index bc6862695e..8030ff7790 100644 --- a/installer/How to create the installers.md +++ b/installer/How to create the installers.md @@ -1,55 +1,5 @@ **Important:** These instructions are for the developers of this project, not for users! The users should use the pre-created zip files for installation. -This guide explains how to create the zip files that users will use for installing. +Just distribute the `install.bat` or `install.sh` file. -The installer zip contains two files: the script, and the micromamba binary. - -Micromamba is a single ~8mb binary file, that acts like a package manager (drop-in replacement for conda). - -# Download micromamba from: -* Windows x64: `curl -Ls https://micro.mamba.pm/api/micromamba/win-64/latest | tar -xvj bin/micromamba_win_x64.exe` - -* Linux x64: `curl -Ls https://micro.mamba.pm/api/micromamba/linux-64/latest | tar -xvj bin/micromamba_linux_x64` -* Linux arm64: `curl -Ls https://micro.mamba.pm/api/micromamba/linux-aarch64/latest | tar -xvj bin/micromamba_linux_arm64` - -* Mac x64: `curl -Ls https://micro.mamba.pm/api/micromamba/osx-64/latest | tar -xvj bin/micromamba_mac_x64` -* Mac arm64 (M1/Apple Silicon): `curl -Ls https://micro.mamba.pm/api/micromamba/osx-arm64/latest | tar -xvj bin/micromamba_mac_arm64` - -The download link provides tar.bz2 files. - -(source https://mamba.readthedocs.io/en/latest/installation.html) - -# Create the installer -Create the following folder structure, and zip it up. - -For Linux/Mac: Make sure the `chmod u+x` permission is granted to `install.sh` and the corresponding `micromamba` binary. - -### Windows x64: -``` -.\install.bat -.\installer_files\micromamba_win_x64.exe -``` - -### Linux x64: -``` -.\install.sh -.\installer_files\micromamba_linux_x64 -``` - -### Linux arm64: -``` -.\install.sh -.\installer_files\micromamba_linux_arm64 -``` - -### Mac x64: -``` -.\install.sh -.\installer_files\micromamba_mac_x64 -``` - -### Mac arm64 (M1/Apple Silicon): -``` -.\install.sh -.\installer_files\micromamba_mac_arm64 -``` +Running that file will download the invokeAI repository into the same folder as the script, and install the required dependencies. diff --git a/installer/install.bat b/installer/install.bat index ecb23ac438..e21edd695a 100644 --- a/installer/install.bat +++ b/installer/install.bat @@ -12,9 +12,12 @@ @rem config set MAMBA_ROOT_PREFIX=%cd%\installer_files\mamba set INSTALL_ENV_DIR=%cd%\installer_files\env -set MICROMAMBA_BINARY_FILE=%cd%\installer_files\micromamba_win_x64.exe +set MICROMAMBA_DOWNLOAD_URL=https://github.com/cmdr2/stable-diffusion-ui/releases/download/v1.1/micromamba.exe +@rem Change the download URL to an InvokeAI repo's release URL @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= call conda --version >.tmp1 2>.tmp2 @@ -25,10 +28,12 @@ if "%ERRORLEVEL%" NEQ "0" set PACKAGES_TO_INSTALL=%PACKAGES_TO_INSTALL% git @rem (if necessary) install git and conda into a contained environment if "%PACKAGES_TO_INSTALL%" NEQ "" ( - @rem initialize micromamba - if not exist "%MAMBA_ROOT_PREFIX%" ( + @rem download micromamba + if not exist "%MAMBA_ROOT_PREFIX%\micromamba.exe" ( + echo "Downloading micromamba from %MICROMAMBA_DOWNLOAD_URL% to %MAMBA_ROOT_PREFIX%\micromamba.exe" + mkdir "%MAMBA_ROOT_PREFIX%" - copy "%MICROMAMBA_BINARY_FILE%" "%MAMBA_ROOT_PREFIX%\micromamba.exe" + call curl -L "%MICROMAMBA_DOWNLOAD_URL%" > "%MAMBA_ROOT_PREFIX%\micromamba.exe" @rem test the mamba binary echo Micromamba version: @@ -43,6 +48,12 @@ if "%PACKAGES_TO_INSTALL%" NEQ "" ( 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 + ) ) set PATH=%INSTALL_ENV_DIR%;%INSTALL_ENV_DIR%\Library\bin;%INSTALL_ENV_DIR%\Scripts;%PATH% @@ -56,6 +67,9 @@ if not exist ".git" ( call git checkout origin/main -ft ) +@rem activate the base env +call conda activate + @rem create the environment call conda env create call conda activate invokeai diff --git a/installer/install.sh b/installer/install.sh index 6090c2374d..4e93ea1eac 100755 --- a/installer/install.sh +++ b/installer/install.sh @@ -19,17 +19,22 @@ esac OS_ARCH=$(uname -m) case "${OS_ARCH}" in - x86_64*) OS_ARCH="x64";; + x86_64*) OS_ARCH="64";; arm64*) OS_ARCH="arm64";; *) echo "Unknown system architecture: $OS_ARCH! This script runs only on x86_64 or arm64" && exit esac +# https://mamba.readthedocs.io/en/latest/installation.html +if [ "$OS_NAME" == "linux" ] && [ "$OS_ARCH" == "arm64" ]; then OS_ARCH="aarch64"; fi + # config export MAMBA_ROOT_PREFIX="$(pwd)/installer_files/mamba" INSTALL_ENV_DIR="$(pwd)/installer_files/env" -MICROMAMBA_BINARY_FILE="$(pwd)/installer_files/micromamba_${OS_NAME}_${OS_ARCH}" +MICROMAMBA_DOWNLOAD_URL="https://micro.mamba.pm/api/micromamba/${OS_NAME}-${OS_ARCH}/latest" # figure out whether git and conda needs to be installed +if [ -e "$INSTALL_ENV_DIR" ]; then export PATH="$INSTALL_ENV_DIR/bin:$PATH"; fi + PACKAGES_TO_INSTALL="" if ! hash "conda" &>/dev/null; then PACKAGES_TO_INSTALL="$PACKAGES_TO_INSTALL conda"; fi @@ -37,10 +42,14 @@ if ! hash "git" &>/dev/null; then PACKAGES_TO_INSTALL="$PACKAGES_TO_INSTALL git" # (if necessary) install git and conda into a contained environment if [ "$PACKAGES_TO_INSTALL" != "" ]; then - # initialize micromamba - if [ ! -e "$MAMBA_ROOT_PREFIX" ]; then + # download micromamba + if [ ! -e "$MAMBA_ROOT_PREFIX/micromamba" ]; then + echo "Downloading micromamba from $MICROMAMBA_DOWNLOAD_URL to $MAMBA_ROOT_PREFIX/micromamba" + mkdir -p "$MAMBA_ROOT_PREFIX" - cp "$MICROMAMBA_BINARY_FILE" "$MAMBA_ROOT_PREFIX/micromamba" + curl -L "$MICROMAMBA_DOWNLOAD_URL" | tar -xvj bin/micromamba -O > "$MAMBA_ROOT_PREFIX/micromamba" + + chmod u+x "$MAMBA_ROOT_PREFIX/micromamba" # test the mamba binary echo "Micromamba version:" @@ -77,8 +86,9 @@ fi CONDA_BASEPATH=$(conda info --base) source "$CONDA_BASEPATH/etc/profile.d/conda.sh" # otherwise conda complains about 'shell not initialized' (needed when running in a script) +conda activate + if [ "$OS_NAME" == "mac" ]; then - if [ "$OS_ARCH" == "x64" ]; then OS_ARCH="64"; fi PIP_EXISTS_ACTION=w CONDA_SUBDIR=osx-${OS_ARCH} conda env create -f environment-mac.yml else conda env create -f environment.yml