Commit c420730d authored by Yuxin Wu's avatar Yuxin Wu

check protoc version

parent b912c32a
...@@ -193,21 +193,27 @@ def start_proc_mask_signal(proc): ...@@ -193,21 +193,27 @@ def start_proc_mask_signal(proc):
def subproc_call(cmd, timeout=None): def subproc_call(cmd, timeout=None):
""" """
Execute a command with timeout, and return both STDOUT/STDERR. Execute a command with timeout, and return both STDOUT/STDERR.
Args: Args:
cmd(str): the command to execute. cmd(str): the command to execute.
timeout(float): timeout in seconds. timeout(float): timeout in seconds.
Returns:
output(str), retcode(int). If timeout, retcode is -1.
""" """
try: try:
output = subprocess.check_output( output = subprocess.check_output(
cmd, stderr=subprocess.STDOUT, cmd, stderr=subprocess.STDOUT,
shell=True, timeout=timeout) shell=True, timeout=timeout)
return output return output, 0
except subprocess.TimeoutExpired as e: except subprocess.TimeoutExpired as e:
logger.warn("Command timeout!") logger.warn("Command timeout!")
logger.warn(e.output) logger.warn(e.output)
return e.output, -1
except subprocess.CalledProcessError as e: except subprocess.CalledProcessError as e:
logger.warn("Commnad failed: {}".format(e.returncode)) logger.warn("Commnad failed: {}".format(e.returncode))
logger.warn(e.output) logger.warn(e.output)
return e.output, e.returncode
class OrderedContainer(object): class OrderedContainer(object):
......
...@@ -3,11 +3,13 @@ ...@@ -3,11 +3,13 @@
# File: loadcaffe.py # File: loadcaffe.py
# Author: Yuxin Wu <ppwwyyxxc@gmail.com> # Author: Yuxin Wu <ppwwyyxxc@gmail.com>
import sys
import numpy as np import numpy as np
import os import os
from .utils import change_env from .utils import change_env
from .fs import download, get_dataset_path from .fs import download, get_dataset_path
from .concurrency import subproc_call
from . import logger from . import logger
__all__ = ['load_caffe', 'get_caffe_pb'] __all__ = ['load_caffe', 'get_caffe_pb']
...@@ -123,6 +125,20 @@ def get_caffe_pb(): ...@@ -123,6 +125,20 @@ def get_caffe_pb():
if not os.path.isfile(caffe_pb_file): if not os.path.isfile(caffe_pb_file):
download(CAFFE_PROTO_URL, dir) download(CAFFE_PROTO_URL, dir)
assert os.path.isfile(os.path.join(dir, 'caffe.proto')) assert os.path.isfile(os.path.join(dir, 'caffe.proto'))
if sys.version_info.major == 3:
cmd = "protoc --version"
version, ret = subproc_call(cmd, timeout=3)
if ret != 0:
sys.exit(1)
try:
version = version.decode('utf-8')
version = float('.'.join(version.split(' ')[1].split('.')[:2]))
assert version >= 2.7, "Require protoc>=2.7 for Python3"
except:
logger.exception("protoc --version gives: " + str(version))
raise
cmd = 'cd {} && protoc caffe.proto --python_out .'.format(dir) cmd = 'cd {} && protoc caffe.proto --python_out .'.format(dir)
ret = os.system(cmd) ret = os.system(cmd)
assert ret == 0, \ assert ret == 0, \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment