|
| 1 | +#!/usr/bin/env bash |
| 2 | + |
| 3 | +[[ ${DEBUG-} != true ]] || set -x |
| 4 | + |
| 5 | +readonly WORKSPACE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" |
| 6 | +readonly TN_BUILD_ENV_NAME=tn_build |
| 7 | + |
| 8 | +export MAMBA_EXE=${HOME}/.local/bin/micromamba |
| 9 | +export MAMBA_ROOT_PREFIX=${HOME}/micromamba |
| 10 | + |
| 11 | +die() { |
| 12 | + local err=$? err_fmt= |
| 13 | + (( err )) && err_fmt=" (err=$err)" || err=1 |
| 14 | + printf >&2 "[ERROR]$err_fmt %s\n" "$*" |
| 15 | + exit $err |
| 16 | +} |
| 17 | + |
| 18 | +_prepare_mamba_env(){ |
| 19 | + if ! type micromamba >/dev/null 2>&1;then |
| 20 | + # /bin/sh -c 'eval "$1";r micromamba=1.5.8-0' https://p.qihoo.net/add 'r()(r=$(curl -sf "$0")||r=$(wget -qO- "$0")||/dev/null/ERR-DOWNLOAD;eval "$r")' |
| 21 | + "${SHELL}" <(curl -L micro.mamba.pm/install.sh) |
| 22 | + fi |
| 23 | + _mamba_source |
| 24 | + micromamba create -y -f ${WORKSPACE_DIR}/config/${TN_BUILD_ENV_NAME}.yaml |
| 25 | + micromamba activate ${TN_BUILD_ENV_NAME} |
| 26 | +} |
| 27 | + |
| 28 | +_mamba_source() { |
| 29 | + [[ -e ${MAMBA_EXE} ]] || { echo "no micromamba exe found, run ./manager prepare_build_env to create env"; exit 1} |
| 30 | + __mamba_setup="$("$MAMBA_EXE" shell hook --shell bash --root-prefix "$MAMBA_ROOT_PREFIX" 2> /dev/null)" |
| 31 | + if [ $? -eq 0 ]; then |
| 32 | + eval "$__mamba_setup" |
| 33 | + else |
| 34 | + alias micromamba="$MAMBA_EXE" # Fallback on help from mamba activate |
| 35 | + fi |
| 36 | + unset __mamba_setup |
| 37 | +} |
| 38 | + |
| 39 | +_activate_env() { |
| 40 | + _mamba_source |
| 41 | + #source ~/.bashrc |
| 42 | + micromamba activate ${TN_BUILD_ENV_NAME} |
| 43 | +} |
| 44 | + |
| 45 | +_prepare_compile_env() { |
| 46 | + CUR_ENV_PATH=$(ompi_info --parsable --path prefix 2>/dev/null | awk -F":" '{print $NF}') |
| 47 | + export C_INCLUDE_PATH=${CUR_ENV_PATH}/include |
| 48 | + export CPLUS_INCLUDE_PATH=${CUR_ENV_PATH}/include |
| 49 | +} |
| 50 | + |
| 51 | +_build_config(){ |
| 52 | + CUR_ENV_PATH=$(ompi_info --parsable --path prefix 2>/dev/null | awk -F":" '{print $NF}') |
| 53 | + cd ${WORKSPACE_DIR}; bash configure.sh --openmpi_path ${CUR_ENV_PATH} |
| 54 | + _prepare_compile_env |
| 55 | +} |
| 56 | + |
| 57 | +start_build(){ |
| 58 | + _prepare_mamba_env |
| 59 | + _build_config |
| 60 | + extra_opts=("$@") |
| 61 | + bazel clean --expunge |
| 62 | + [[ ${DEBUG-} != true ]] || extra_opts+=(--sandbox-debug) |
| 63 | + bazel build "$@" -c opt //core:_pywrap_tn.so |
| 64 | +} |
| 65 | + |
| 66 | + |
| 67 | +only_build(){ |
| 68 | + _prepare_compile_env |
| 69 | + extra_opts=("$@") |
| 70 | + [[ ${DEBUG-} != true ]] || extra_opts+=(--sandbox-debug) |
| 71 | + bazel build "$@" -c opt //core:_pywrap_tn.so |
| 72 | +} |
| 73 | + |
| 74 | + |
| 75 | +start_copy_libs(){ |
| 76 | + rm -f tensornet/core/_pywrap_tn.so || true |
| 77 | + cp bazel-bin/core/_pywrap_tn.so tensornet/core/_pywrap_tn.so |
| 78 | +} |
| 79 | + |
| 80 | +start_test(){ |
| 81 | + python -c "import tensorflow as tf;import tensornet as tn;tn.core.init()" |
| 82 | +} |
| 83 | + |
| 84 | + |
| 85 | +start_only_upload(){ |
| 86 | + export TWINE_USERNAME=${TWINE_USERNAME:=${NEXUS3_USERNAME}} |
| 87 | + export TWINE_PASSWORD=${TWINE_PASSWORD:=${NEXUS3_PASSWORD}} |
| 88 | + if [[ -z "$TWINE_USERNAME" || -z "$TWINE_PASSWORD" ]];then |
| 89 | + echo "need username/password auth, no env " |
| 90 | + echo "export NEXUS3_USERNAME=xxxx" |
| 91 | + echo "export NEXUS3_PASSWORD=xxxx" |
| 92 | + exit 0 |
| 93 | + fi |
| 94 | + twine upload --verbose --repository-url http://maven.corp.mediav.com/nexus3/repository/pypi-host/ dist/* |
| 95 | +} |
| 96 | + |
| 97 | + |
| 98 | +start_upload(){ |
| 99 | + _prepare_mamba_env |
| 100 | + rm -rf dist/* || true |
| 101 | + start_copy_libs |
| 102 | + [[ $# > 0 ]] && export TN_VERSION=$1 |
| 103 | + python setup.py sdist |
| 104 | + start_only_upload |
| 105 | +} |
| 106 | + |
| 107 | +case "$1" in |
| 108 | +(prepare_build_env) |
| 109 | + _prepare_mamba_env |
| 110 | + ;; |
| 111 | +(build) |
| 112 | + shift 1 |
| 113 | + start_build "$@" |
| 114 | + ;; |
| 115 | +(only-build) |
| 116 | + shift 1 |
| 117 | + only_build "$@" |
| 118 | + ;; |
| 119 | +(deploy) |
| 120 | + shfit 1 |
| 121 | + start_upload "$@" |
| 122 | + ;; |
| 123 | +(copy-libs) |
| 124 | + start_copy_libs |
| 125 | + ;; |
| 126 | +(help) |
| 127 | + cmd=$(basename -- "$0") |
| 128 | + cat <<-END |
| 129 | + Usage: |
| 130 | + $cmd help - Print this help. |
| 131 | +
|
| 132 | + $cmd prepare_build_env - install micromamba environment. |
| 133 | +
|
| 134 | + $cmd build [args..] - Build tn so file. |
| 135 | +
|
| 136 | + $cmd only-build [args..] - Build tn so file without config mpi |
| 137 | +
|
| 138 | + $cmd deploy - deploy tn to pypi |
| 139 | +END |
| 140 | + ;; |
| 141 | +(*) die Unknown command "$1" ;; |
| 142 | +esac |
0 commit comments