5 . `dirname "$(readlink -f "$0")"`/run-library.sh
6 #. `dirname "$(readlink -f "$0")"`/libcloud-pin
8 read -rd "\000" helpmessage <<EOF
9 $(basename $0): Build Arvados Python packages and Ruby gems
12 WORKSPACE=/path/to/arvados $(basename $0) [options]
17 Output debug information (default: false)
19 If the build and test steps are successful, upload the python
20 packages to pypi and the gems to rubygems (default: false)
22 WORKSPACE=path Path to the Arvados source tree to build packages from
33 local gem_name="$1"; shift
34 local gem_directory="$1"; shift
36 title "Start $gem_name gem build"
40 handle_ruby_gem $gem_name
42 checkexit $? "$gem_name gem build"
43 title "End of $gem_name gem build (`timer`)"
47 local package_name="$1"; shift
48 local package_directory="$1"; shift
50 title "Start $package_name python package build"
53 cd "$package_directory"
54 if [[ $DEBUG > 0 ]]; then
59 checkexit $? "$package_name python package build"
60 title "End of $package_name python package build (`timer`)"
65 DEBUG=${ARVADOS_DEBUG:-0}
67 PARSEDOPTS=$(getopt --name "$0" --longoptions \
68 help,debug,upload,target: \
74 eval set -- "$PARSEDOPTS"
75 while [ $# -gt 0 ]; do
78 echo >&2 "$helpmessage"
93 echo >&2 "$0: unrecognized argument '$2'. Try: $0 --help"
101 if ! [[ -n "$WORKSPACE" ]]; then
102 echo >&2 "$helpmessage"
104 echo >&2 "Error: WORKSPACE environment variable not set"
109 STDOUT_IF_DEBUG=/dev/null
110 STDERR_IF_DEBUG=/dev/null
111 DASHQ_UNLESS_DEBUG=-q
112 if [[ "$DEBUG" != 0 ]]; then
113 STDOUT_IF_DEBUG=/dev/stdout
114 STDERR_IF_DEBUG=/dev/stderr
118 EASY_INSTALL2=$(find_easy_install -$PYTHON2_VERSION "")
119 EASY_INSTALL3=$(find_easy_install -$PYTHON3_VERSION 3)
121 RUN_BUILD_PACKAGES_PATH="`dirname \"$0\"`"
122 RUN_BUILD_PACKAGES_PATH="`( cd \"$RUN_BUILD_PACKAGES_PATH\" && pwd )`" # absolutized and normalized
123 if [ -z "$RUN_BUILD_PACKAGES_PATH" ] ; then
124 # error; for some reason, the path is not accessible
125 # to the script (e.g. permissions re-evaled after suid)
129 debug_echo "$0 is running from $RUN_BUILD_PACKAGES_PATH"
130 debug_echo "Workspace is $WORKSPACE"
132 if [[ -f /etc/profile.d/rvm.sh ]]; then
133 source /etc/profile.d/rvm.sh
134 GEM="rvm-exec default gem"
139 # Make all files world-readable -- jenkins runs with umask 027, and has checked
140 # out our git tree here
141 chmod o+r "$WORKSPACE" -R
143 # More cleanup - make sure all executables that we'll package are 755
145 find -type d -name 'bin' |xargs -I {} find {} -type f |xargs -I {} chmod 755 {}
147 # Now fix our umask to something better suited to building and publishing
151 debug_echo "umask is" `umask`
153 gem_wrapper arvados "$WORKSPACE/sdk/ruby"
154 gem_wrapper arvados-cli "$WORKSPACE/sdk/cli"
155 gem_wrapper arvados-login-sync "$WORKSPACE/services/login-sync"
158 if [ ${#failures[@]} -ne 0 ]; then
159 GEM_BUILD_FAILURES=${#failures[@]}
162 python_wrapper arvados-pam "$WORKSPACE/sdk/pam"
163 python_wrapper arvados-python-client "$WORKSPACE/sdk/python"
164 python_wrapper arvados-cwl-runner "$WORKSPACE/sdk/cwl"
165 python_wrapper arvados_fuse "$WORKSPACE/services/fuse"
166 python_wrapper arvados-node-manager "$WORKSPACE/services/nodemanager"
168 PYTHON_BUILD_FAILURES=0
169 if [ $((${#failures[@]} - $GEM_BUILD_FAILURES)) -ne 0 ]; then
170 PYTHON_BUILD_FAILURES=${#failures[@]} - $GEM_BUILD_FAILURES
173 if [[ "$UPLOAD" != 0 ]]; then
175 if [[ $DEBUG > 0 ]]; then
176 EXTRA_UPLOAD_FLAGS=" --verbose"
178 EXTRA_UPLOAD_FLAGS=""
181 if [[ ! -e "$WORKSPACE/packages" ]]; then
182 mkdir -p "$WORKSPACE/packages"
185 title "Start upload python packages"
188 if [ "$PYTHON_BUILD_FAILURES" -eq 0 ]; then
189 /usr/local/arvados-dev/jenkins/run_upload_packages.py $EXTRA_UPLOAD_FLAGS --workspace $WORKSPACE python
191 echo "Skipping python packages upload, there were errors building the packages"
193 checkexit $? "upload python packages"
194 title "End of upload python packages (`timer`)"
196 title "Start upload ruby gems"
199 if [ "$GEM_BUILD_FAILURES" -eq 0 ]; then
200 /usr/local/arvados-dev/jenkins/run_upload_packages.py $EXTRA_UPLOAD_FLAGS --workspace $WORKSPACE gems
202 echo "Skipping ruby gem upload, there were errors building the packages"
204 checkexit $? "upload ruby gems"
205 title "End of upload ruby gems (`timer`)"