mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 12:54:40 +01:00
add scripts and dependencies
This commit is contained in:
parent
097f6f8808
commit
7dda7b37ac
5 changed files with 245 additions and 86 deletions
27
README.md
27
README.md
|
|
@ -16,9 +16,9 @@ Requirements
|
|||
------------
|
||||
Pype will run on most typical hardware configurations commonly found in studios around the world.
|
||||
It is installed on artist computer and can take up 3Gb of space depending on number of versions
|
||||
and other dependencies.
|
||||
and other dependencies.
|
||||
|
||||
For well functioning [ftrack](https://www.ftrack.com/en/) event server, we recommend a
|
||||
For well functioning [ftrack](https://www.ftrack.com/en/) event server, we recommend a
|
||||
linux virtual server with [Ubuntu](https://ubuntu.com/) or [CentosOS](https://www.centos.org/).
|
||||
CPU and RAM allocation need differ based on the studio size, but a 2GB of RAM, with a
|
||||
dual core CPU and around 4GB of storage should suffice.
|
||||
|
|
@ -57,6 +57,27 @@ it will install it on current computer.
|
|||
|
||||
Pype is build using [CX_Freeze](https://cx-freeze.readthedocs.io/en/latest) to freeze itself and all dependencies.
|
||||
|
||||
### MacOS
|
||||
|
||||
You will need [Python 3.7 and newer](https://www.python.org/downloads/) and [git](https://git-scm.com/downloads). You'll need also other tools to build
|
||||
some Pype dependencies like [CMake](https://cmake.org/) and **XCode Command Line Tools** (or some other build system).
|
||||
|
||||
You can install **XCode Command Line Tools** from Terminal:
|
||||
```sh
|
||||
xcode-select --install
|
||||
```
|
||||
|
||||
Before building Pype be sure to make **CMake** available in `PATH`:
|
||||
```sh
|
||||
export PATH=$PATH:/Applications/CMake.app/Contents/bin
|
||||
```
|
||||
|
||||
#### To build Pype:
|
||||
|
||||
1) Run `.\tools\create_env.sh` to create virtual environment in `.\venv`
|
||||
2) Run `.\tools\build.sh` to build Pype executables in `.\build\`
|
||||
|
||||
|
||||
Running Pype
|
||||
------------
|
||||
|
||||
|
|
@ -103,4 +124,4 @@ Running tests
|
|||
|
||||
To run tests, execute `.\tools\run_tests.ps1`.
|
||||
|
||||
**Note that it needs existing virtual environment.**
|
||||
**Note that it needs existing virtual environment.**
|
||||
|
|
|
|||
|
|
@ -14,8 +14,9 @@ ffmpeg-python
|
|||
google-api-python-client
|
||||
jsonschema
|
||||
keyring
|
||||
jinxed
|
||||
log4mongo
|
||||
git+https://github.com/pypeclub/OpenTimelineIO.git@develop
|
||||
git+https://github.com/PixarAnimationStudios/OpenTimelineIO.git
|
||||
pathlib2
|
||||
Pillow
|
||||
pyblish-base
|
||||
|
|
|
|||
5
setup.py
5
setup.py
|
|
@ -53,8 +53,7 @@ include_files = [
|
|||
"schema",
|
||||
"vendor",
|
||||
"LICENSE",
|
||||
"README.md",
|
||||
"pype/version.py"
|
||||
"README.md"
|
||||
]
|
||||
|
||||
if sys.platform == "win32":
|
||||
|
|
@ -75,7 +74,7 @@ executables = [
|
|||
Executable("start.py", base=None,
|
||||
target_name="pype_console", icon=icon_path.as_posix()),
|
||||
Executable("start.py", base=base,
|
||||
target_name="pype", icon=icon_path.as_posix())
|
||||
target_name="pype_gui", icon=icon_path.as_posix())
|
||||
]
|
||||
|
||||
setup(
|
||||
|
|
|
|||
113
tools/build.sh
Normal file → Executable file
113
tools/build.sh
Normal file → Executable file
|
|
@ -1,4 +1,10 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# This script will detect Python installation, create venv and install
|
||||
# all necessary packages from `requirements.txt` needed by Pype to be
|
||||
# included during application freeze on Unix.
|
||||
|
||||
|
||||
art () {
|
||||
cat <<-EOF
|
||||
____________
|
||||
|
|
@ -47,70 +53,6 @@ BICyan='\033[1;96m' # Cyan
|
|||
BIWhite='\033[1;97m' # White
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Test if Xcode Command Line tools are installed in MacOS
|
||||
###############################################################################
|
||||
have_command_line_tools() {
|
||||
[[ -e "/Library/Developer/CommandLineTools/usr/bin/git" ]]
|
||||
}
|
||||
|
||||
###############################################################################
|
||||
# Get command any key from user
|
||||
###############################################################################
|
||||
getc() {
|
||||
local save_state
|
||||
save_state=$(/bin/stty -g)
|
||||
/bin/stty raw -echo
|
||||
IFS= read -r -n 1 -d '' "$@"
|
||||
/bin/stty "$save_state"
|
||||
}
|
||||
|
||||
###############################################################################
|
||||
# Test if we have access via sudo
|
||||
# Used in MacOS
|
||||
###############################################################################
|
||||
have_sudo_access() {
|
||||
if [[ -z "${HAVE_SUDO_ACCESS-}" ]]; then
|
||||
/usr/bin/sudo -l mkdir &>/dev/null
|
||||
HAVE_SUDO_ACCESS="$?"
|
||||
fi
|
||||
|
||||
if [[ "$HAVE_SUDO_ACCESS" -ne 0 ]]; then
|
||||
echo -e "${BIRed}!!!${RST} Need sudo access on MacOS"
|
||||
return 1
|
||||
fi
|
||||
|
||||
return "$HAVE_SUDO_ACCESS"
|
||||
}
|
||||
|
||||
###############################################################################
|
||||
# Execute command and report failure
|
||||
###############################################################################
|
||||
execute() {
|
||||
if ! "$@"; then
|
||||
echo -e "${BIRed}!!!${RST} Failed execution of ${BIWhite}[ $@ ]${RST}"
|
||||
fi
|
||||
}
|
||||
|
||||
###############################################################################
|
||||
# Execute command using sudo
|
||||
# This is used on MacOS to handle Xcode command line tools installation
|
||||
###############################################################################
|
||||
execute_sudo() {
|
||||
local -a args=("$@")
|
||||
if [[ -n "${SUDO_ASKPASS-}" ]]; then
|
||||
args=("-A" "${args[@]}")
|
||||
fi
|
||||
if have_sudo_access; then
|
||||
echo -e "${BIGreen}>->${RST} sudo: [${BIWhite} ${args[@]} ${RST}]"
|
||||
execute "/usr/bin/sudo" "${args[@]}"
|
||||
else
|
||||
echo -e "${BIGreen}>->${RST} [${BIWhite} ${args[@]} ${RST}]"
|
||||
execute "${args[@]}"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
##############################################################################
|
||||
# Detect required version of python
|
||||
# Globals:
|
||||
|
|
@ -122,7 +64,7 @@ execute_sudo() {
|
|||
# None
|
||||
###############################################################################
|
||||
detect_python () {
|
||||
echo -e "${BIYellow}>>>${RST} Forced using python at [ ${BIWhite}[ $PYPE_PYTHON_EXE ]${RST} ... \c"
|
||||
echo -e "${BIGreen}>>>${RST} Using Python \c"
|
||||
local version_command="import sys;print('{0}.{1}'.format(sys.version_info[0], sys.version_info[1]))"
|
||||
local python_version="$(python3 <<< ${version_command})"
|
||||
oIFS="$IFS"
|
||||
|
|
@ -130,7 +72,7 @@ detect_python () {
|
|||
set -- $python_version
|
||||
IFS="$oIFS"
|
||||
if [ "$1" -ge "3" ] && [ "$2" -ge "6" ] ; then
|
||||
echo -e "${BIGreen}$1.$2${RST}"
|
||||
echo -e "${BIWhite}[${RST} ${BIGreen}$1.$2${RST} ${BIWhite}]${RST}"
|
||||
PYTHON="python3"
|
||||
else
|
||||
command -v python3 >/dev/null 2>&1 || { echo -e "${BIRed}FAILED${RST} ${BIYellow} Version [${RST}${BICyan}$1.$2${RST}]${BIYellow} is old and unsupported${RST}"; return 1; }
|
||||
|
|
@ -147,27 +89,40 @@ detect_python () {
|
|||
# None
|
||||
###############################################################################
|
||||
clean_pyc () {
|
||||
path=${1:-$PYPE_SETUP_PATH}
|
||||
echo -e "${IGreen}>>>${RST} Cleaning pyc at [ ${BIWhite}$path${RST} ] ... \c"
|
||||
path=${1:-$pype_root}
|
||||
echo -e "${BIGreen}>>>${RST} Cleaning pyc at [ ${BIWhite}$path${RST} ] ... \c"
|
||||
find "$path" -regex '^.*\(__pycache__\|\.py[co]\)$' -delete
|
||||
echo -e "${BIGreen}DONE${RST}"
|
||||
}
|
||||
|
||||
realpath () {
|
||||
echo $(cd $(dirname "$1"); pwd)/$(basename "$1")
|
||||
}
|
||||
|
||||
# Main
|
||||
art
|
||||
detect_python || return 1
|
||||
|
||||
version_command="import version;print(version.__version__)"
|
||||
pype_version="$(python3 <<< ${version_command})"
|
||||
echo -e "${IGreen}>>>${RST} Building Pype [${IGreen} v$pype_version ${RST}]"
|
||||
echo -e "${IGreen}>>>${RST} Creating virtual env ..."
|
||||
python3 -m venv venv
|
||||
echo -e "${IGreen}>>>${RST} Entering venv ..."
|
||||
# Directories
|
||||
current_dir=$(realpath "$(pwd)")
|
||||
pype_root=$(realpath "${BASH_SOURCE[0]}")
|
||||
pushd "$pype_root" > /dev/null
|
||||
|
||||
version_command="from pathlib import Path;version = {};pype_root = '$pype_root';with open(pype_root / 'pype' / 'version.py') as fp exec(fp.read(), version);print(version['__version__'])"
|
||||
# pype_version="$(python3 <<< ${version_command})"
|
||||
|
||||
echo -e "${BIYellow}---${RST} Cleaning build directory ..."
|
||||
rm -rf "$pype_root/build" && mkdir "$pype_root/build" > /dev/null
|
||||
|
||||
# echo -e "${BIGreen}>>>${RST} Building Pype [${IGreen} v$pype_version ${RST}]"
|
||||
echo -e "${BIGreen}>>>${RST} Entering venv ..."
|
||||
source venv/bin/activate
|
||||
echo -e "${IGreen}>>>${RST} Installing packages to new venv ..."
|
||||
pip install -r requirements.txt
|
||||
echo -e "${IGreen}>>>${RST} Cleaning cache files ..."
|
||||
echo -e "${BIGreen}>>>${RST} Cleaning cache files ..."
|
||||
clean_pyc
|
||||
echo -e "${IGreen}>>>${RST} Building ..."
|
||||
python setup.py build
|
||||
echo -e "${BIGreen}>>>${RST} Building ..."
|
||||
python "$pype_root/setup.py" build > "$pype_root/build/build.log"
|
||||
python -B "$pype_root/tools/build_dependencies.py"
|
||||
echo -e "${BIGreen}>>>${RST} Deactivating venv ..."
|
||||
deactivate
|
||||
echo -e "${BICyan}>>>${RST} All done. You will find Pype and build log in \c"
|
||||
echo -e "${BIWhite}$pype_root/build${RST} directory."
|
||||
|
|
|
|||
183
tools/create_env.sh
Executable file
183
tools/create_env.sh
Executable file
|
|
@ -0,0 +1,183 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# This script will detect Python installation, create venv and install
|
||||
# all necessary packages from `requirements.txt` needed by Pype to be
|
||||
# included during application freeze on Unix.
|
||||
|
||||
|
||||
art () {
|
||||
cat <<-EOF
|
||||
____________
|
||||
/\\ \\
|
||||
\\ \\ --- \\
|
||||
\\ \\ _____/ ______
|
||||
\\ \\ \\___/ /\\ \\
|
||||
\\ \\____\\ \\ \\_____\\
|
||||
\\/____/ \\/_____/ PYPE Club .
|
||||
|
||||
EOF
|
||||
}
|
||||
|
||||
# Colors for terminal
|
||||
|
||||
RST='\033[0m' # Text Reset
|
||||
|
||||
# Regular Colors
|
||||
Black='\033[0;30m' # Black
|
||||
Red='\033[0;31m' # Red
|
||||
Green='\033[0;32m' # Green
|
||||
Yellow='\033[0;33m' # Yellow
|
||||
Blue='\033[0;34m' # Blue
|
||||
Purple='\033[0;35m' # Purple
|
||||
Cyan='\033[0;36m' # Cyan
|
||||
White='\033[0;37m' # White
|
||||
|
||||
# Bold
|
||||
BBlack='\033[1;30m' # Black
|
||||
BRed='\033[1;31m' # Red
|
||||
BGreen='\033[1;32m' # Green
|
||||
BYellow='\033[1;33m' # Yellow
|
||||
BBlue='\033[1;34m' # Blue
|
||||
BPurple='\033[1;35m' # Purple
|
||||
BCyan='\033[1;36m' # Cyan
|
||||
BWhite='\033[1;37m' # White
|
||||
|
||||
# Bold High Intensity
|
||||
BIBlack='\033[1;90m' # Black
|
||||
BIRed='\033[1;91m' # Red
|
||||
BIGreen='\033[1;92m' # Green
|
||||
BIYellow='\033[1;93m' # Yellow
|
||||
BIBlue='\033[1;94m' # Blue
|
||||
BIPurple='\033[1;95m' # Purple
|
||||
BICyan='\033[1;96m' # Cyan
|
||||
BIWhite='\033[1;97m' # White
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Test if Xcode Command Line tools are installed in MacOS
|
||||
###############################################################################
|
||||
have_command_line_tools() {
|
||||
[[ -e "/Library/Developer/CommandLineTools/usr/bin/git" ]]
|
||||
}
|
||||
|
||||
###############################################################################
|
||||
# Get command any key from user
|
||||
###############################################################################
|
||||
getc() {
|
||||
local save_state
|
||||
save_state=$(/bin/stty -g)
|
||||
/bin/stty raw -echo
|
||||
IFS= read -r -n 1 -d '' "$@"
|
||||
/bin/stty "$save_state"
|
||||
}
|
||||
|
||||
###############################################################################
|
||||
# Test if we have access via sudo
|
||||
# Used in MacOS
|
||||
###############################################################################
|
||||
have_sudo_access() {
|
||||
if [[ -z "${HAVE_SUDO_ACCESS-}" ]]; then
|
||||
/usr/bin/sudo -l mkdir &>/dev/null
|
||||
HAVE_SUDO_ACCESS="$?"
|
||||
fi
|
||||
|
||||
if [[ "$HAVE_SUDO_ACCESS" -ne 0 ]]; then
|
||||
echo -e "${BIRed}!!!${RST} Need sudo access on MacOS"
|
||||
return 1
|
||||
fi
|
||||
|
||||
return "$HAVE_SUDO_ACCESS"
|
||||
}
|
||||
|
||||
###############################################################################
|
||||
# Execute command and report failure
|
||||
###############################################################################
|
||||
execute() {
|
||||
if ! "$@"; then
|
||||
echo -e "${BIRed}!!!${RST} Failed execution of ${BIWhite}[ $@ ]${RST}"
|
||||
fi
|
||||
}
|
||||
|
||||
###############################################################################
|
||||
# Execute command using sudo
|
||||
# This is used on MacOS to handle Xcode command line tools installation
|
||||
###############################################################################
|
||||
execute_sudo() {
|
||||
local -a args=("$@")
|
||||
if [[ -n "${SUDO_ASKPASS-}" ]]; then
|
||||
args=("-A" "${args[@]}")
|
||||
fi
|
||||
if have_sudo_access; then
|
||||
echo -e "${BIGreen}>->${RST} sudo: [${BIWhite} ${args[@]} ${RST}]"
|
||||
execute "/usr/bin/sudo" "${args[@]}"
|
||||
else
|
||||
echo -e "${BIGreen}>->${RST} [${BIWhite} ${args[@]} ${RST}]"
|
||||
execute "${args[@]}"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
##############################################################################
|
||||
# Detect required version of python
|
||||
# Globals:
|
||||
# colors
|
||||
# PYTHON
|
||||
# Arguments:
|
||||
# None
|
||||
# Returns:
|
||||
# None
|
||||
###############################################################################
|
||||
detect_python () {
|
||||
echo -e "${BIGreen}>>>${RST} Using python \c"
|
||||
local version_command="import sys;print('{0}.{1}'.format(sys.version_info[0], sys.version_info[1]))"
|
||||
local python_version="$(python3 <<< ${version_command})"
|
||||
oIFS="$IFS"
|
||||
IFS=.
|
||||
set -- $python_version
|
||||
IFS="$oIFS"
|
||||
if [ "$1" -ge "3" ] && [ "$2" -ge "6" ] ; then
|
||||
echo -e "${BIWhite}[${RST} ${BIGreen}$1.$2${RST} ${BIWhite}]${RST}"
|
||||
PYTHON="python3"
|
||||
else
|
||||
command -v python3 >/dev/null 2>&1 || { echo -e "${BIRed}FAILED${RST} ${BIYellow} Version [${RST}${BICyan}$1.$2${RST}]${BIYellow} is old and unsupported${RST}"; return 1; }
|
||||
fi
|
||||
}
|
||||
|
||||
##############################################################################
|
||||
# Clean pyc files in specified directory
|
||||
# Globals:
|
||||
# None
|
||||
# Arguments:
|
||||
# Optional path to clean
|
||||
# Returns:
|
||||
# None
|
||||
###############################################################################
|
||||
clean_pyc () {
|
||||
path=${1:-$pype_root}
|
||||
echo -e "${IGreen}>>>${RST} Cleaning pyc at [ ${BIWhite}$path${RST} ] ... \c"
|
||||
find "$path" -regex '^.*\(__pycache__\|\.py[co]\)$' -delete
|
||||
echo -e "${BIGreen}DONE${RST}"
|
||||
}
|
||||
|
||||
# Main
|
||||
art
|
||||
detect_python || return 1
|
||||
|
||||
# Directories
|
||||
current_dir="$(pwd)"
|
||||
pype_root=`dirname $(dirname "${BASH_SOURCE[0]}")`
|
||||
pushd "$pype_root" > /dev/null
|
||||
|
||||
echo -e "${BIYellow}---${RST} Cleaning venv directory ..."
|
||||
rm -rf "$pype_root/venv" && mkdir "$pype_root/venv"
|
||||
|
||||
echo -e "${BIGreen}>>>${RST} Creating venv ..."
|
||||
python3 -m venv "$pype_root/venv"
|
||||
|
||||
echo -e "${BIGreen}>>>${RST} Entering venv ..."
|
||||
source "$pype_root/venv/bin/activate"
|
||||
echo -e "${BIGreen}>>>${RST} Installing packages to new venv ..."
|
||||
pip install -r "$pype_root/requirements.txt"
|
||||
echo -e "${BIGreen}>>>${RST} Cleaning cache files ..."
|
||||
clean_pyc
|
||||
deactivate
|
||||
Loading…
Add table
Add a link
Reference in a new issue