-
Notifications
You must be signed in to change notification settings - Fork 2
/
build_pip_pkg.sh
executable file
·104 lines (87 loc) · 2.72 KB
/
build_pip_pkg.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#!/usr/bin/env bash
# Copyright 2019 The TensorFlow Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ==============================================================================
set -e
set -x
PLATFORM="$(uname -s | tr 'A-Z' 'a-z')"
function is_windows() {
# On windows, the shell script is actually running in msys
[[ "${PLATFORM}" =~ msys_nt*|mingw*|cygwin*|uwin* ]]
}
function is_macos() {
[[ "${PLATFORM}" == "darwin" ]]
}
if is_windows; then
PIP_FILE_PREFIX="bazel-bin/build_pip_pkg.exe.runfiles/__main__/"
else
PIP_FILE_PREFIX="bazel-bin/build_pip_pkg.runfiles/__main__/"
fi
function abspath() {
cd "$(dirname $1)"
echo "$PWD/$(basename $1)"
cd "$OLDPWD"
}
function main() {
DEST=${1}
NIGHTLY_FLAG=${2}
if [[ -z ${DEST} ]]; then
echo "No destination dir provided"
exit 1
fi
mkdir -p ${DEST}
DEST=$(abspath "${DEST}")
echo "=== destination directory: ${DEST}"
TMPDIR=$(mktemp -d -t tmp.XXXXXXXXXX)
echo $(date) : "=== Using tmpdir: ${TMPDIR}"
echo "=== Copy TF Miss files"
cp ${PIP_FILE_PREFIX}setup.py "${TMPDIR}"
cp ${PIP_FILE_PREFIX}README.md "${TMPDIR}"
cp ${PIP_FILE_PREFIX}MANIFEST.in "${TMPDIR}"
cp ${PIP_FILE_PREFIX}LICENSE "${TMPDIR}"
cp ${PIP_FILE_PREFIX}requirements.txt "${TMPDIR}"
touch ${TMPDIR}/stub.cc
if is_windows; then
from=$(cygpath -w ${PIP_FILE_PREFIX}tfmiss)
to=$(cygpath -w "${TMPDIR}"/tfmiss)
start robocopy //S "${from}" "${to}" //xf *_test.py
sleep 5
else
rsync -avm -L --exclude='*_test.py' ${PIP_FILE_PREFIX}tfmiss "${TMPDIR}"
fi
pushd ${TMPDIR}
echo $(date) : "=== Building wheel"
BUILD_CMD="setup.py bdist_wheel --platlib-patch"
if is_macos; then
if [[ x"$(arch)" == x"arm64" ]]; then
BUILD_CMD="${BUILD_CMD} --plat-name macosx_11_0_arm64"
else
BUILD_CMD="${BUILD_CMD} --plat-name macosx_10_13_x86_64"
fi
PYTHON=python3
else
PYTHON=python
fi
if [[ -z ${NIGHTLY_FLAG} ]]; then
# Windows has issues with locking library files for deletion so do not fail here
$PYTHON ${BUILD_CMD} || true
else
$PYTHON ${BUILD_CMD} ${NIGHTLY_FLAG} || true
fi
cp dist/*.whl "${DEST}"
popd
rm -rf ${TMPDIR}
echo $(date) : "=== Output wheel file is in: ${DEST}"
}
main "$@"