webrtc/tools/barcode_tools/build_zxing.py
kjellander@webrtc.org b13dfbffd7 Making barcode tools work on Windows + fixes.
This makes it possible to compile on the bots without hardcoding paths
to Ant, Java and ffmpeg deep into the Python scripts (hardcoded paths exists only in the buildbot configuration).
For bots, the ANT_HOME, JAVA_HOME and FFMPEG_HOME environment variables must be set to the install locations for each of these dependencies, for Windows.

This CL also improves the return code handling to make failures easier to detect when things break.

TEST=running build_zxing.py without Ant or Java in the PATH, but with
ANT_HOME, JAVA_HOME and FFMPEG_HOME set. Running Chromium's src/chrome/test/functional/webrtc_video_quality.py.
BUG=none

Review URL: https://webrtc-codereview.appspot.com/1002005

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3311 4adac7df-926f-26a2-2b94-8c16560cd09d
2012-12-18 19:53:00 +00:00

44 lines
1.4 KiB
Python
Executable File

#!/usr/bin/env python
# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
#
# Use of this source code is governed by a BSD-style license
# that can be found in the LICENSE file in the root of the source
# tree. An additional intellectual property rights grant can be found
# in the file PATENTS. All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.
import os
import subprocess
import sys
def run_ant_build_command(path_to_ant_build_file):
"""Tries to build the passed build file with ant."""
ant_executable = 'ant'
if sys.platform == 'win32':
if os.getenv('ANT_HOME'):
ant_executable = os.path.join(os.getenv('ANT_HOME'), 'bin', 'ant.bat')
else:
ant_executable = 'ant.bat'
cmd = [ant_executable, '-buildfile', path_to_ant_build_file]
try:
process = subprocess.Popen(cmd, stdout=sys.stdout, stderr=sys.stderr)
process.wait()
if process.returncode != 0:
print >> sys.stderr, 'Failed to execute: %s' % ' '.join(cmd)
return process.returncode
except Exception as e:
print >> sys.stderr, 'Failed to execute: %s' % ' '.join(cmd)
return -1
def _main():
core_build = os.path.join('third_party', 'zxing', 'core', 'build.xml')
run_ant_build_command(core_build)
javase_build = os.path.join('third_party', 'zxing', 'javase', 'build.xml')
return run_ant_build_command(javase_build)
if __name__ == '__main__':
sys.exit(_main())