summaryrefslogtreecommitdiff
blob: 140e23c84bb5960b622b868be8005fe322c3b817 (plain)
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