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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
|
From 897b25418ae0f77bcee7fdd7070d5c22677dc218 Mon Sep 17 00:00:00 2001
From: Jason Zaman <jason@perfinion.com>
Date: Sat, 2 Feb 2019 15:19:44 +0800
Subject: [PATCH] pip_package: modularize build script to allow distros to
install more flexibly
Gentoo Linux handles python modules slightly differently and packaging
wheels is complicated. We prefer to run setup.py directly ourselves
rather than build a wheel and then install from there.
This modularizes build_pip_package.sh to allow running parts separately.
using --src srcdir will prepare the package in a known dir so the distro
package can take it from there. If only dstdir is given (either with
--dst or as the only argument to preserve backwards compat) then
behaviour is the same as before, the sources are prepared and the wheel
is built and placed in dstdir.
Signed-off-by: Jason Zaman <jason@perfinion.com>
---
.../tools/pip_package/build_pip_package.sh | 73 +++++++++++++++++--
1 file changed, 66 insertions(+), 7 deletions(-)
diff --git a/tensorflow_estimator/tools/pip_package/build_pip_package.sh b/tensorflow_estimator/tools/pip_package/build_pip_package.sh
index 5d06dd6..1667169 100755
--- a/tensorflow_estimator/tools/pip_package/build_pip_package.sh
+++ b/tensorflow_estimator/tools/pip_package/build_pip_package.sh
@@ -23,10 +23,8 @@ function real_path() {
is_absolute "$1" && echo "$1" || echo "$PWD/${1#./}"
}
-function build_wheel() {
+function prepare_src() {
TMPDIR="$1"
- DEST="$2"
- PROJECT_NAME="$3"
mkdir -p "$TMPDIR"
echo $(date) : "=== Preparing sources in dir: ${TMPDIR}"
@@ -67,6 +65,17 @@ function build_wheel() {
touch "${TMPDIR}/tensorflow_estimator/contrib/estimator/python/__init__.py"
touch "${TMPDIR}/tensorflow_estimator/contrib/estimator/python/estimator/__init__.py"
fi
+}
+
+function build_wheel() {
+ if [ $# -lt 2 ] ; then
+ echo "No src and dest dir provided"
+ exit 1
+ fi
+
+ TMPDIR="$1"
+ DEST="$2"
+ PROJECT_NAME="$3"
pushd ${TMPDIR} > /dev/null
echo $(date) : "=== Building wheel"
@@ -75,15 +84,39 @@ function build_wheel() {
cp dist/* ${DEST}
popd > /dev/null
echo $(date) : "=== Output wheel file is in: ${DEST}"
- rm -rf "${TMPDIR}"
+}
+
+function usage() {
+ echo "Usage:"
+ echo "$0 [--src srcdir] [--dst dstdir] [options]"
+ echo "$0 dstdir [options]"
+ echo ""
+ echo " --src prepare sources in srcdir"
+ echo " will use temporary dir if not specified"
+ echo ""
+ echo " --dst build wheel in dstdir"
+ echo " if dstdir is not set do not build, only prepare sources"
+ echo ""
+ echo " Options:"
+ echo " --project_name <name> set project name to name"
+ echo " --nightly build tensorflow_estimator nightly"
+ echo ""
+ exit 1
}
function main() {
NIGHTLY_BUILD=0
+ PROJECT_NAME=""
+ SRCDIR=""
+ DSTDIR=""
+ CLEANSRC=1
while true; do
if [[ -z "$1" ]]; then
break
+ elif [[ "$1" == "--help" ]]; then
+ usage
+ exit 1
elif [[ "$1" == "--nightly" ]]; then
NIGHTLY_BUILD=1
elif [[ "$1" == "--project_name" ]]; then
@@ -92,6 +125,19 @@ function main() {
break
fi
PROJECT_NAME="$1"
+ elif [[ "$1" == "--src" ]]; then
+ shift
+ if [[ -z "$1" ]]; then
+ break
+ fi
+ SRCDIR="$(real_path $1)"
+ CLEANSRC=0
+ elif [[ "$1" == "--dst" ]]; then
+ shift
+ if [[ -z "$1" ]]; then
+ break
+ fi
+ DSTDIR="$(real_path $1)"
else
DSTDIR="$(real_path $1)"
fi
@@ -105,16 +151,29 @@ function main() {
fi
fi
- SRCDIR="$(mktemp -d -t tmp.XXXXXXXXXX)"
-
- if [[ -z "$DSTDIR" ]]; then
+ if [[ -z "$DSTDIR" ]] && [[ -z "$SRCDIR" ]]; then
echo "No destination dir provided"
+ usage
exit 1
fi
+ if [[ -z "$SRCDIR" ]]; then
+ # make temp srcdir if none set
+ SRCDIR="$(mktemp -d -t tmp.XXXXXXXXXX)"
+ fi
+ prepare_src "$SRCDIR"
+
+ if [[ -z "$DSTDIR" ]]; then
+ # only want to prepare sources
+ exit
+ fi
build_wheel "$SRCDIR" "$DSTDIR" "$PROJECT_NAME"
+
+ if [[ $CLEANSRC -ne 0 ]]; then
+ rm -rf "${TMPDIR}"
+ fi
}
main "$@"
--
2.19.2
|