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

Y
Yancey 已提交
8 9 10 11 12 13 14 15 16 17 18 19
RC      = 0



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

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
def _get_version_detail(idx):
    assert idx < 3

    version_details = '${PADDLE_VERSION}'.split('.')
    if len(version_details) == 3:
        if re.match('[0-9]+', version_details[idx]):
            return int(version_details[idx])

    return None

def get_minor():
    minor = _get_version_detail(0)
    if minor is not None:
        return minor

    return MINOR

def get_major():
    major = _get_version_detail(1)
    if major is not None:
        return major

    return MAJOR

def get_patch():
    patch = _get_version_detail(2)
    if patch is not None:
        return patch

    return PATCH

def is_taged():
M
minqiyang 已提交
52 53 54 55 56 57 58 59
    try:
        #  release/0.13.0
        #  git describe --exact-match --tags
        cmd = ['git', 'rev-parse', 'HEAD']
        git_commit = subprocess.Popen(cmd, stdout = subprocess.PIPE).communicate()[0].strip()
    except:
        git_commit = 'Unknown'
    return git_commit
60 61
    return ISTAGED

Y
Yancey 已提交
62 63 64 65 66 67 68 69 70 71 72
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 已提交
73
with_mkl        = '%(with_mkl)s'
Y
Yancey 已提交
74 75 76 77 78 79 80 81 82 83

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 已提交
84 85 86

def mkl():
    return with_mkl
Y
Yancey 已提交
87 88 89 90
'''
    commit = git_commit()
    with open(filename, 'w') as f:
        f.write(cnt % {
91 92 93
            'major': get_major(),
            'minor': get_minor(),
            'patch': get_patch(),
Y
Yancey 已提交
94 95 96
            'rc': RC,
            'version': '${PADDLE_VERSION}',
            'commit': commit,
97
            'istaged': is_taged(),
L
Luo Tao 已提交
98
            'with_mkl': '@WITH_MKL@'})
Y
Yancey 已提交
99

100
write_version_py(filename='@PADDLE_BINARY_DIR@/python/paddle/version.py')
Y
Yancey 已提交
101 102


Z
zhangjinchao01 已提交
103
packages=['paddle',
Q
qiaolongfei 已提交
104
          'paddle.utils',
105 106
          'paddle.dataset',
          'paddle.reader',
107 108
          'paddle.fluid',
          'paddle.fluid.proto',
X
Xin Pan 已提交
109
          'paddle.fluid.proto.profiler',
Y
Yancey 已提交
110
          'paddle.fluid.layers',
Q
qiaolongfei 已提交
111 112
          'paddle.fluid.transpiler',
          'paddle.fluid.transpiler.details']
L
Luo Tao 已提交
113

114
if '${WITH_FLUID_ONLY}'== 'OFF':
L
Luo Tao 已提交
115 116 117 118 119 120
    packages+=['paddle.proto',
               'paddle.trainer',
               'paddle.trainer_config_helpers',
               'paddle.v2',
               'paddle.v2.master',
               'paddle.v2.plot',
121 122
               'paddle.v2.reader',
               'paddle.v2.dataset',
L
Luo Tao 已提交
123
               'py_paddle']
Z
zhangjinchao01 已提交
124

125 126
with open('@PADDLE_SOURCE_DIR@/python/requirements.txt') as f:
    setup_requires = f.read().splitlines()
127 128

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

131
# the prefix is sys.prefix which should always be usr
L
Luo Tao 已提交
132
paddle_bins = ''
133
if '${WITH_FLUID_ONLY}'== 'OFF':
L
Luo Tao 已提交
134 135 136 137 138 139 140
    paddle_bin_dir = 'opt/paddle/bin'
    paddle_bins = ['${PADDLE_BINARY_DIR}/paddle/trainer/paddle_trainer',
                   '${PADDLE_BINARY_DIR}/paddle/trainer/paddle_merge_model',
                   '${PADDLE_BINARY_DIR}/paddle/pserver/paddle_pserver_main',
                   '${PADDLE_BINARY_DIR}/paddle/scripts/paddle']

package_data={'paddle.fluid': ['core.so']}
141
if '${WITH_FLUID_ONLY}'== 'OFF':
L
Luo Tao 已提交
142 143 144 145
    package_data['paddle.v2.master']=['libpaddle_master.so']
    package_data['py_paddle']=['*.py','_swig_paddle.so']

package_dir={
146
    '': '${PADDLE_BINARY_DIR}/python',
L
Luo Tao 已提交
147 148 149 150
    # The paddle.fluid.proto will be generated while compiling.
    # So that package points to other directory.
    'paddle.fluid.proto.profiler': '${PADDLE_BINARY_DIR}/paddle/fluid/platform',
    'paddle.fluid.proto': '${PADDLE_BINARY_DIR}/paddle/fluid/framework',
Q
qiaolongfei 已提交
151
    'paddle.fluid': '${PADDLE_BINARY_DIR}/python/paddle/fluid',
L
Luo Tao 已提交
152
}
153
if '${WITH_FLUID_ONLY}'== 'OFF':
154
    package_dir['py_paddle']='${PADDLE_BINARY_DIR}/python/py_paddle'
155

156

157
paddle_rt_lib_dir = 'lib'
L
Luo Tao 已提交
158 159 160
paddle_rt_libs = ['${WARPCTC_LIBRARIES}']
if '${MKL_SHARED_LIBS}'!= '':
  paddle_rt_libs += '${MKL_SHARED_LIBS}'.split(';')
T
tensor-tang 已提交
161

T
typhoonzero 已提交
162
setup(name='${PACKAGE_NAME}',
Z
zhangjinchao01 已提交
163 164
      version='${PADDLE_VERSION}',
      description='Parallel Distributed Deep Learning',
165
      install_requires=setup_requires,
L
Luo Tao 已提交
166
      packages=packages,
T
typhoonzero 已提交
167
      ext_modules=[Extension('_foo', ['stub.cc'])],
L
Luo Tao 已提交
168 169
      package_data=package_data,
      package_dir=package_dir,
170 171
      scripts=paddle_bins,
      data_files=[(paddle_rt_lib_dir, paddle_rt_libs)]
Z
zhangjinchao01 已提交
172
)