Issues with Tethys 2.0.0 on Windows

24 views
Skip to first unread message

sdc50

unread,
Jun 21, 2017, 9:37:02 PM6/21/17
to Tethys Platform
I just ran through an installation of 2.0.0 on Windows and found several issues:

1 - The pinned requirements aren't compatible with Windows (in particular coverage 4.4* isn't available; 4.3* is)
2 - The install script still tries to put the settings.py file in tethys_apps instead of tethys_portal
3 - The syntax on one of the DOSKEY commands is wrong

I made a couple of changes to the install script and checked out the master branch instead of the release branch (at this point they are the same except for the pinned requirements) and was able to install successfully on Windows 10. I'll push a patch soon that will fix this. For reference this modified install script will work:

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION

IF %ERRORLEVEL% NEQ 0 (SET ERRORLEVEL=0)

:: Set defaults
SET ALLOWED_HOST=127.0.0.1
SET TETHYS_HOME=C:%HOMEPATH%\tethys
SET TETHYS_PORT=8000
SET TETHYS_DB_USERNAME=tethys_default
SET TETHYS_DB_PASSWORD=pass
SET TETHYS_DB_PORT=5436
SET CONDA_HOME=
SET CONDA_EXE=Miniconda3-latest-Windows-x86_64.exe
SET CONDA_ENV_NAME=tethys
SET PYTHON_VERSION=2
SET BRANCH=master

SET TETHYS_SUPER_USER=admin
SET "TETHYS_SUPER_USER_EMAIL="
SET TETHYS_SUPER_USER_PASS=pass
SET ECHO_COMMANDS=

:loop
IF NOT "%1"=="" (
    SET OPTION_RECOGNIZED=FALSE
    IF "%1"=="-t" (
        SET TETHYS_HOME=%2
        SHIFT
        SET OPTION_RECOGNIZED=TRUE
    )
    IF "%1"=="--tethys-home" (
        SET TETHYS_HOME=%2
        SHIFT
        SET OPTION_RECOGNIZED=TRUE
    )
    IF "%1"=="-a" (
        SET ALLOWED_HOST=%2
        SHIFT
        SET OPTION_RECOGNIZED=TRUE
    )
    IF "%1"=="--allowed-host" (
        SET ALLOWED_HOST=%2
        SHIFT
        SET OPTION_RECOGNIZED=TRUE
    )
    IF "%1"=="-p" (
        SET TETHYS_PORT=%2
        SHIFT
        SET OPTION_RECOGNIZED=TRUE
    )
    IF "%1"=="--port" (
        SET TETHYS_PORT=%2
        SHIFT
        SET OPTION_RECOGNIZED=TRUE
    )
    IF "%1"=="-b" (
        SET BRANCH=%2
        SHIFT
        SET OPTION_RECOGNIZED=TRUE
    )
    IF "%1"=="--branch" (
        SET BRANCH=%2
        SHIFT
        SET OPTION_RECOGNIZED=TRUE
    )
    IF "%1"=="-c" (
        SET CONDA_HOME=%2
        SHIFT
        SET OPTION_RECOGNIZED=TRUE
    )
    IF "%1"=="--conda-home" (
        SET CONDA_HOME=%2
        SHIFT
        SET OPTION_RECOGNIZED=TRUE
    )
    IF "%1"=="-C" (
        SET CONDA_EXE=%2
        SHIFT
        SET OPTION_RECOGNIZED=TRUE
    )
    IF "%1"=="--conda-exe" (
        SET CONDA_EXE=%2
        SHIFT
        SET OPTION_RECOGNIZED=TRUE
    )
    IF "%1"=="-n" (
        SET CONDA_ENV_NAME=%2
        SHIFT
        SET OPTION_RECOGNIZED=TRUE
    )
    IF "%1"=="--conda-env-name" (
        SET CONDA_ENV_NAME=%2
        SHIFT
        SET OPTION_RECOGNIZED=TRUE
    )
    IF "%1"=="--python-version" (
        SET PYTHON_VERSION=%2
        SHIFT
        SET OPTION_RECOGNIZED=TRUE
    )
    IF "%1"=="--db-username" (
        SET TETHYS_DB_USERNAME=%2
        SHIFT
        SET OPTION_RECOGNIZED=TRUE
    )
    IF "%1"=="--db-password" (
        SET TETHYS_DB_PASS=%2
        SHIFT
        SET OPTION_RECOGNIZED=TRUE
    )
    IF "%1"=="--db-port" (
        SET TETHYS_DB_PORT=%2
        SHIFT
        SET OPTION_RECOGNIZED=TRUE
    )
    IF "%1"=="-S" (
        SET TETHYS_SUPER_USER=%2
        SHIFT
        SET OPTION_RECOGNIZED=TRUE
    )
    IF "%1"=="--superuser" (
        SET TETHYS_SUPER_USER=%2
        SHIFT
        SET OPTION_RECOGNIZED=TRUE
    )
    IF "%1"=="-E" (
        SET TETHYS_SUPER_USER_EMAIL=%2
        SHIFT
        SET OPTION_RECOGNIZED=TRUE
    )
    IF "%1"=="--superuser-email" (
        SET TETHYS_SUPER_USER_EMAIL=%2
        SHIFT
        SET OPTION_RECOGNIZED=TRUE
    )
    IF "%1"=="-P" (
        SET TETHYS_SUPER_USER_PASS=%2
        SHIFT
        SET OPTION_RECOGNIZED=TRUE
    )
    IF "%1"=="--superuser-pass" (
        SET TETHYS_SUPER_USER_PASS=%2
        SHIFT
        SET OPTION_RECOGNIZED=TRUE
    )
    IF "%1"=="-x" (
        SET ECHO_COMMANDS=@ECHO ON
        SET OPTION_RECOGNIZED=TRUE
    )
    IF "%1"=="-h" (
        GOTO :usage
        SET OPTION_RECOGNIZED=TRUE
    )
    IF "%1"=="--help" (
        GOTO :usage
        SET OPTION_RECOGNIZED=TRUE
    )
    IF "!OPTION_RECOGNIZED!"=="FALSE" (
        ECHO Ignoring unrecognized option: %1
    )
    SHIFT
    GOTO :loop
)

IF %ERRORLEVEL% NEQ 0 (
    ECHO Error occured while parsing command line arguments.
    EXIT /B %ERRORLEVEL%
)

SET CEANUP=

:: Resolve relative paths
IF NOT EXIST "!TETHYS_HOME!" (
    MKDIR "!TETHYS_HOME!"
    SET CLEANUP=TRUE
)

IF EXIST "!CD!\!TETHYS_HOME!" (
    :: TETHYS_HOME is a relative path so make it absolute
    PUSHD .\
    CD "!TETHYS_HOME!"
    SET TETHYS_HOME=!CD!
    POPD
)

IF "!CLEANUP!"=="TRUE" (
    RMDIR "!TETHYS_HOME!"
    SET CLEANUP=
)

:: set CONDA_HOME relative to TETHYS_HOME if not already set
IF NOT DEFINED CONDA_HOME (
    SET CONDA_HOME=!TETHYS_HOME!\miniconda
) ELSE (
    IF NOT EXIST "!CONDA_HOME!" (
        MKDIR "!CONDA_HOME!"
        SET CLEANUP=TRUE
    )
    echo "!CD!\!CONDA_HOME!"
    IF EXIST "!CD!\!CONDA_HOME!" (
        :: CONDA_HOME is a relative path so make it absolute
        PUSHD .\
        CD "!CONDA_HOME!"
        SET CONDA_HOME=!CD!
        POPD
    )

    IF "!CLEANUP!"=="TRUE" (
        RMDIR "!CONDA_HOME!"
    )
)

:: check if CONDA_HOME has spaces
IF NOT "!CONDA_HOME!"=="!CONDA_HOME: =!" (
    ECHO ERROR: Miniconda cannot be installed at "!CONDA_HOME!" becuase it contains spaces. Please specify a different conda home path using the '--conda-home' option.
    EXIT /B 1
)

!ECHO_COMMANDS!

ECHO Starting Tethys Installation...

:: Make tethys directory
MKDIR "!TETHYS_HOME!"

:: Install miniconda
:: first see if Miniconda is already installed
IF EXIST "!CONDA_HOME!\Scripts\activate" (
    ECHO Using existing Miniconda installation...
) ELSE (
    ECHO Installing Miniconda...
    START /wait "" !CONDA_EXE! /InstallationType=JustMe /RegisterPython=0 /S /D=!CONDA_HOME!
)
CALL "!CONDA_HOME!\Scripts\activate"

IF %ERRORLEVEL% NEQ 0 (
    ECHO Error occured while attempting to install Miniconda.
    EXIT /B %ERRORLEVEL%
)

:: clone Tethys repo
ECHO Cloning the Tethys Platform repo...
conda install --yes git
git clone https://github.com/tethysplatform/tethys "!TETHYS_HOME!\src"
CD "!TETHYS_HOME!\src"
git checkout !BRANCH!

IF %ERRORLEVEL% NEQ 0 (
    ECHO Error occured while cloning the tethys repo.
    EXIT /B %ERRORLEVEL%
)

:: create conda env and install Tethys
ECHO Setting up the !CONDA_ENV_NAME! environment...
conda env create -n !CONDA_ENV_NAME! -f environment_py!PYTHON_VERSION!.yml
CALL activate !CONDA_ENV_NAME!
python setup.py develop

IF NOT "!ALLOWED_HOST!"=="127.0.0.1" (
    SET ALLOWED_HOST_OPT=--allowed-host !ALLOWED_HOST!
)

tethys gen settings !ALLOWED_HOST_OPT! --db-username !TETHYS_DB_USERNAME! --db-password !TETHYS_DB_PASSWORD! --db-port !TETHYS_DB_PORT!

IF %ERRORLEVEL% NEQ 0 (
    ECHO Error occured while setting up the !CONDA_ENV_NAME! environment.
    EXIT /B %ERRORLEVEL%
)

:: Setup local database
ECHO Setting up the Tethys database...
initdb  -U postgres -D "!TETHYS_HOME!\psql\data"
pg_ctl -U postgres -D "!TETHYS_HOME!\psql\data" -l "!TETHYS_HOME!\psql\logfile" start -o "-p !TETHYS_DB_PORT!"
ECHO Waiting for databases to startup...
TIMEOUT 10 /NOBREAK
psql -U postgres -p !TETHYS_DB_PORT! --command "CREATE USER !TETHYS_DB_USERNAME! WITH NOCREATEDB NOCREATEROLE NOSUPERUSER PASSWORD '!TETHYS_DB_PASSWORD!';"
createdb -U postgres -p !TETHYS_DB_PORT! -O !TETHYS_DB_USERNAME! -E utf-8 -T template0 !TETHYS_DB_USERNAME!

IF %ERRORLEVEL% NEQ 0 (
    ECHO Error occured while setting up the tethys database.
    EXIT /B %ERRORLEVEL%
)

:: Initialze Tethys database
tethys manage syncdb
ECHO from django.contrib.auth.models import User; User.objects.create_superuser('!TETHYS_SUPER_USER!', '!TETHYS_SUPER_USER_EMAIL!', '!TETHYS_SUPER_USER_PASS!') | python manage.py shell
ECHO Stopping database server...
pg_ctl -U postgres -D "!TETHYS_HOME!\psql\data" stop

IF %ERRORLEVEL% NEQ 0 (
    ECHO Error occured while initializing the database.
    EXIT /B %ERRORLEVEL%
)

:: Create environment activate/deactivate scripts
SET ACTIVATE_DIR=!CONDA_HOME!\envs\!CONDA_ENV_NAME!\etc\conda\activate.d
SET DEACTIVATE_DIR=!CONDA_HOME!\envs\!CONDA_ENV_NAME!\etc\conda\deactivate.d
MKDIR "!ACTIVATE_DIR!" "!DEACTIVATE_DIR!"
SET ACTIVATE_SCRIPT=%ACTIVATE_DIR%\tethys-activate.bat
SET DEACTIVATE_SCRIPT=!DEACTIVATE_DIR!\tethys-deactivate.bat

ECHO @ECHO OFF>> "!ACTIVATE_SCRIPT!"
ECHO SET TETHYS_HOME=!TETHYS_HOME!>> "!ACTIVATE_SCRIPT!"
ECHO SET TETHYS_PORT=!TETHYS_PORT!>> "!ACTIVATE_SCRIPT!"
ECHO SET TETHYS_DB_PORT=!TETHYS_DB_PORT!>> "!ACTIVATE_SCRIPT!"
ECHO DOSKEY tethys_start_db=pg_ctl -U postgres -D "%%TETHYS_HOME%%\psql\data" -l "%%TETHYS_HOME%%\psql\logfile" start -o "-p %%TETHYS_DB_PORT%%" >> "!ACTIVATE_SCRIPT!"
ECHO DOSKEY tstartdb=pg_ctl -U postgres -D "%%TETHYS_HOME%%\psql\data" -l "%%TETHYS_HOME%%\psql\logfile" start -o "-p %%TETHYS_DB_PORT%%" >>"!ACTIVATE_SCRIPT!"
ECHO DOSKEY tethys_stop_db=pg_ctl -U postgres -D "%%TETHYS_HOME%%\psql\data" stop >>"!ACTIVATE_SCRIPT!"
ECHO DOSKEY tstopdb=pg_ctl -U postgres -D "%%TETHYS_HOME%%\psql\data" stop >> "!ACTIVATE_SCRIPT!"
ECHO DOSKEY tms=tethys manage start -p !ALLOWED_HOST!:%%TETHYS_PORT%% >> "!ACTIVATE_SCRIPT!"
ECHO DOSKEY tstart=pg_ctl -U postgres -D "%%TETHYS_HOME%%\psql\data" -l "%%TETHYS_HOME%%\psql\logfile" start -o "-p %%TETHYS_DB_PORT%%" $T tethys manage start -p !ALLOWED_HOST!:%%TETHYS_PORT%% >> "!ACTIVATE_SCRIPT!"

ECHO @ECHO OFF>> "!DEACTIVATE_SCRIPT!"
ECHO SET TETHYS_HOME=>> "!DEACTIVATE_SCRIPT!"
ECHO SET TETHYS_DB_PORT=>> "!DEACTIVATE_SCRIPT!"
ECHO SET TETHYS_PORT=>> "!DEACTIVATE_SCRIPT!"
ECHO DOSKEY tethys_start_db= >> "!DEACTIVATE_SCRIPT!"
ECHO DOSKEY tstartdb= >> "!DEACTIVATE_SCRIPT!"
ECHO DOSKEY tethys_stop_db= >> "!DEACTIVATE_SCRIPT!"
ECHO DOSKEY tstopdb= >> "!DEACTIVATE_SCRIPT!"
ECHO DOSKEY tms= >> "!DEACTIVATE_SCRIPT!"
ECHO DOSKEY tstart= >> "!DEACTIVATE_SCRIPT!"

IF %ERRORLEVEL% NEQ 0 (
    ECHO Error occured while creating activate scripts.
    EXIT /B %ERRORLEVEL%
)

SET TETHYS_CMD=!TETHYS_HOME!\tethys_cmd.bat
ECHO @ECHO OFF>> "!TETHYS_CMD!"
ECHO CD !TETHYS_HOME! >> "!TETHYS_CMD!"
ECHO CMD /K !CONDA_HOME!\Scripts\activate !CONDA_ENV_NAME! >> "!TETHYS_CMD!"

ECHO Tethys installation complete^^!
ECHO.
ECHO To open a new command prompt with the !CONDA_ENV_NAME! environment activated double click the file "!TETHYS_CMD!"

EXIT /B %ERRORLEVEL%

:usage
@ECHO OFF
ECHO USAGE: install_tethys.bat [options]
ECHO.
ECHO OPTIONS:
ECHO     -t, --tethys-home [PATH]            Path for tethys home directory. Default is 'C:\%HOMEPATH%\tehtys'.
ECHO     -a, --allowed-host [HOST]           Hostname or IP address on which to serve tethys. Default is 127.0.0.1.
ECHO     -p, --port [PORT]                   Port on which to serve tethys. Default is 8000.
ECHO     -b, --branch [BRANCH_NAME]          Branch to checkout from version control. Default is 'release'.
ECHO     -c, --conda-home [PATH]             Path to conda home directory where Miniconda will be installed. Default is %%TETHYS_HOME%%\miniconda.
ECHO     -C, --conda-exe [PATH]              Path to Miniconda installer executable. Default is '.\Miniconda3-latest-Windows-x86_64.exe'.
ECHO     -n, --conda-env-name [NAME]         Name for tethys conda environment. Default is 'tethys'.
ECHO     --python-version [PYTHON_VERSION]   Main python version to install tethys environment into (2 or 3). Default is 2.
ECHO     --db-username [USERNAME]            Username that the tethys database server will use. Default is 'tethys_default'.
ECHO     --db-password [PASSWORD]            Password that the tethys database server will use. Default is 'pass'.
ECHO     --db-port [PORT]                    Port that the tethys database server will use. Default is 5436.
ECHO     -S, --superuser [USERNAME]          Tethys super user name. Default is 'admin'.
ECHO     -E, --superuser-email [EMAIL]       Tethys super user email. Default is ''.
ECHO     -P, --superuser-pass [PASSWORD]     Tethys super user password. Default is 'pass'.
ECHO     -x                                  Flag to echo all commands.
ECHO     -h, --help                          Print this help information.

EXIT /B 0

 

Reply all
Reply to author
Forward
0 new messages