setup.py.in 3.5 KB
Newer Older
T
typhoonzero 已提交
1
from setuptools import setup, Distribution, Extension
Y
Yancey 已提交
2
import subprocess
3 4 5
class BinaryDistribution(Distribution):
    def has_ext_modules(foo):
        return True
Z
zhangjinchao01 已提交
6

Y
Yancey 已提交
7
MAJOR   = 0
T
typhoonzero 已提交
8
MINOR   = 11
Y
Yancey 已提交
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
PATCH   = 0
RC      = 0
ISTAGED = False



def git_commit():
    try:
        cmd = ['git', 'rev-parse', 'HEAD']
        git_commit = subprocess.Popen(cmd, stdout = subprocess.PIPE).communicate()[0].strip()
    except:
        git_commit = 'Unknown'
    return git_commit

def write_version_py(filename='paddle/version.py'):
    cnt = '''
# THIS FILE IS GENERATED FROM PADDLEPADDLE SETUP.PY
#
full_version    = '%(major)d.%(minor)d.%(patch)d'
major           = '%(major)d'
minor           = '%(minor)d'
patch           = '%(patch)d'
rc              = '%(rc)d'
istaged         = %(istaged)s
commit          = '%(commit)s'
L
Luo Tao 已提交
34
with_mkl        = '%(with_mkl)s'
Y
Yancey 已提交
35 36 37 38 39 40 41 42 43 44

def show():
    if istaged:
        print 'full_version:', full_version
        print 'major:', major
        print 'minor:', minor
        print 'patch:', patch
        print 'rc:', rc
    else:
        print 'commit:', commit
L
Luo Tao 已提交
45 46 47

def mkl():
    return with_mkl
Y
Yancey 已提交
48 49 50 51 52 53 54 55 56 57
'''
    commit = git_commit()
    with open(filename, 'w') as f:
        f.write(cnt % {
            'major': MAJOR,
            'minor': MINOR,
            'patch': PATCH,
            'rc': RC,
            'version': '${PADDLE_VERSION}',
            'commit': commit,
L
Luo Tao 已提交
58 59
            'istaged': ISTAGED,
            'with_mkl': '@WITH_MKL@'})
Y
Yancey 已提交
60 61 62 63

write_version_py(filename='@PADDLE_SOURCE_DIR@/python/paddle/version.py')


Z
zhangjinchao01 已提交
64 65 66 67
packages=['paddle',
          'paddle.proto',
          'paddle.trainer',
          'paddle.trainer_config_helpers',
Q
qiaolongfei 已提交
68
          'paddle.utils',
Y
Yu Yang 已提交
69 70
          'paddle.v2',
          'paddle.v2.dataset',
Y
Yancey1989 已提交
71
          'paddle.v2.reader',
H
Helin Wang 已提交
72
          'paddle.v2.master',
73
          'paddle.v2.plot',
74 75
          'paddle.fluid',
          'paddle.fluid.proto',
X
Xin Pan 已提交
76
          'paddle.fluid.proto.profiler',
77
          'paddle.fluid.layers',
78
          'py_paddle']
Z
zhangjinchao01 已提交
79

80 81
with open('@PADDLE_SOURCE_DIR@/python/requirements.txt') as f:
    setup_requires = f.read().splitlines()
82 83

if '${CMAKE_SYSTEM_PROCESSOR}' not in ['arm', 'armv7-a', 'aarch64']:
Y
Yancey 已提交
84
    setup_requires+=['opencv-python']
85

86
# the prefix is sys.prefix which should always be usr
87
paddle_bin_dir = 'opt/paddle/bin'
L
Luo Tao 已提交
88
paddle_bins = ['${PADDLE_BINARY_DIR}/paddle/trainer/paddle_trainer',
89
               '${PADDLE_BINARY_DIR}/paddle/trainer/paddle_merge_model',
90 91
               '${PADDLE_BINARY_DIR}/paddle/pserver/paddle_pserver_main',
               '${PADDLE_BINARY_DIR}/paddle/scripts/paddle']
92

93
paddle_rt_lib_dir = 'lib'
L
Luo Tao 已提交
94 95 96
paddle_rt_libs = ['${WARPCTC_LIBRARIES}']
if '${MKL_SHARED_LIBS}'!= '':
  paddle_rt_libs += '${MKL_SHARED_LIBS}'.split(';')
T
tensor-tang 已提交
97

T
typhoonzero 已提交
98
setup(name='${PACKAGE_NAME}',
Z
zhangjinchao01 已提交
99 100
      version='${PADDLE_VERSION}',
      description='Parallel Distributed Deep Learning',
101
      install_requires=setup_requires,
L
Luo Tao 已提交
102
      packages=packages,
T
typhoonzero 已提交
103
      ext_modules=[Extension('_foo', ['stub.cc'])],
104 105
      package_data={
        'paddle.v2.master': ['libpaddle_master.so'],
106
        'paddle.fluid': ['core.so'],
107
        'py_paddle':['*.py','_swig_paddle.so']
108
      },
Z
zhangjinchao01 已提交
109
      package_dir={
110
          '': '${CMAKE_CURRENT_SOURCE_DIR}',
111
          # The paddle.fluid.proto will be generated while compiling.
112
          # So that package points to other directory.
X
Xin Pan 已提交
113
          'paddle.fluid.proto.profiler': '${PADDLE_BINARY_DIR}/paddle/fluid/platform',
114
          'paddle.fluid.proto': '${PADDLE_BINARY_DIR}/paddle/fluid/framework',
115
          'py_paddle': '${PADDLE_SOURCE_DIR}/paddle/py_paddle'
116
      },
117 118
      scripts=paddle_bins,
      data_files=[(paddle_rt_lib_dir, paddle_rt_libs)]
Z
zhangjinchao01 已提交
119
)