source: TI05-delivery/trunk/setup.py @ 1439

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/TI05-delivery/trunk/setup.py@1441
Revision 1439, 5.6 KB checked in by spascoe, 13 years ago (diff)

Continuing transition to use setuptools. Eggs will now build but
examples and test cases are broken.

Line 
1"""Built bbftp embedded in python.
2"""
3
4import ez_setup
5ez_setup.use_setuptools()
6
7from setuptools import setup, Extension, Command
8import sys, os
9
10bbftpd_home = './src/bbftp-server-3.2.0'
11bbftpc_home = './src/bbftp-client-3.2.0'
12# Get the version from ./VERSION
13version = open('./VERSION').read()
14
15
16# Not all *.c files are compiled into *.o files in bbftpd
17bbftpd_src = [
18    'bbftpd.c',
19    'bbftpd_cd.c',
20    'bbftpd_check.c',
21    'bbftpd_crypt.c',
22    'bbftpd_daemon.c',
23    'bbftpd_list.c',
24    'bbftpd_login.c',
25    'bbftpd_message.c',
26    'bbftpd_mkdir.c',
27    'bbftpd_rm.c',
28    'bbftpd_stat.c',
29    'bbftpd_statfs.c',
30    'bbftpd_readcontrol.c',
31    'bbftpd_retr.c',
32    'bbftpd_signals.c',
33    'bbftpd_socket.c',
34    'bbftpd_store.c',
35    'bbftpd_utils.c',
36    'changetodir.c',
37    'createadir.c',
38    'createreceivesock.c',
39    'readcontrol.c',
40    'sendafile.c',
41    'sendlist.c',
42    'signals_routines.c',
43    'storeafile.c',
44    'bbftpd_private.c',
45    'bbftpd_private_user.c',
46    'bbftpd_private_log.c'
47    ]
48
49server_sources = ['%s/bbftpd/%s' % (bbftpd_home, x) for x in bbftpd_src] + ['./src/python_ext/bbftpd.c',
50                                                                            './src/python_ext/util.c',
51                                                                            ]
52
53bbftpc_src = [ 
54    'bbftp_cd.c',
55    'bbftp_get.c',
56    'bbftp_lcd.c',
57    'bbftp_list.c',
58    'bbftp_mget.c',
59    'bbftp_mkdir.c',
60    'bbftp_mput.c',
61    'bbftp_put.c',
62    'bbftp_rm.c',
63    'bbftp_stat.c',
64    'bbftp_statfs.c',
65    'bbftp_dir.c',
66    'bbftp_retr.c',
67    'bbftp_setremotecos.c',
68    'bbftp_setremoteumask.c',
69    'bbftp_store.c',
70    'bbftp_socket.c',
71    'bbftp_utils.c',
72    'connecttoserver.c',
73    'getdatasock.c',
74    'readmessage.c',
75    'sendproto.c',
76    'treatcommand.c',
77    'bbftp_turl.c',
78    'writemessage.c',
79    'setsignals.c',
80    'bbftp_private.c',
81    'bbftp_private_user.c',
82    'ndg_client.c'
83    ]
84
85client_sources = ['%s/bbftpc/%s' % (bbftpc_home, x) for x in bbftpc_src] + ['./src/python_ext/bbftpc.c', 
86                                                                            './src/python_ext/util.c',
87                                                                            './src/python_ext/bbftpc_main.c']
88
89#-------------------------------------------------------------------------------------------
90
91class Doc(Command):
92    """Build epydoc and doxygen documentation.
93    """
94
95    user_options = []
96
97    def initialize_options(self):
98        pass
99    def finalize_options(self):
100        pass
101
102    def run(self):
103        cmd = ('epydoc -o doc/epydoc -v --docformat javadoc '
104               '--name "NDG Delivery Service" build/lib*/pybbftp/')
105        self.execute(os.system, (cmd,))
106        self.execute(os.system, ('doxygen',))
107
108from distutils.command.build import build
109
110class MyBuild(build):
111    def run(self):
112        # We make the stand-alone client/server here for 2 reasons: The source must be
113        # configured by the respective bbftp configure scripts and some test cases use
114        # the stand-alone client.
115        self.spawn(['make', '-C', 'src'])
116        build.run(self)
117
118#-------------------------------------------------------------------------------------------
119
120bbftpd = Extension('ndg.delivery.server.bbftpd',
121                   define_macros = [('NDG_AUTH', 1),
122                                    ('LOCAL_SYSLOG_FACILITY', 1),
123                                    ('_LARGEFILE64_SOURCE', 1),
124                                    ('_FILE_OFFSET_BITS', 64),
125                                    ('NDG_PYTHON_EMBED', 1),
126                                    ('PRIVATE_LOGGING', 1),
127                                    ('NDG_DELIVERY_VERSION', version)],
128                   include_dirs = [bbftpd_home+'/includes', bbftpd_home+'/bbftpd'],
129                   libraries = ['crypt', 'crypto'],
130                   extra_compile_args = ["-O1", "-Wno-strict-prototypes"],
131                   sources = server_sources)
132
133bbftpc = Extension('ndg.delivery.client.bbftpc',
134                   define_macros = [('NDG_AUTH', 1), ('LOCAL_SYSLOG_FACILITY', 1),
135                                    ('_LARGEFILE64_SOURCE', 1),
136                                    ('_FILE_OFFSET_BITS', 64),
137                                    ('NDG_PYTHON_EMBED', 1),
138                                    ('NDG_DELIVERY_VERSION', version)],
139                   include_dirs = [bbftpc_home+'/includes', bbftpc_home+'/bbftpc'],
140                   libraries = ['crypt', 'crypto'],
141                   extra_compile_args = ["-O1", "-Wno-strict-prototypes"],
142                   sources = client_sources)
143
144setup(name = 'ndg_delivery_server',
145      version = version,
146      description = 'Embedded bbftp server',
147      author = 'Stephen Pascoe',
148      author_email = 'S.Pascoe@rl.ac.uk',
149
150      zip_safe = True,
151      install_requires = ['setuptools'],
152
153      packages = ['ndg', 'ndg.delivery', 'ndg.delivery.server'],
154      namespace_packages = ['ndg', 'ndg.delivery'],
155      package_dir = {'': 'lib/python'},
156      scripts=['examples/deliveryd.py'],
157      ext_modules = [bbftpd],
158      cmdclass = {'doc': Doc, 'build': MyBuild}
159      )
160     
161setup(name = 'ndg_delivery_client',
162      version = version,
163      description = 'Embedded bbftp client',
164      author = 'Stephen Pascoe',
165      author_email = 'S.Pascoe@rl.ac.uk',
166
167      zip_safe = True,
168      install_requires = ['setuptools'],
169
170      packages = ['ndg', 'ndg.delivery', 'ndg.delivery.client'],
171      namespace_packages = ['ndg', 'ndg.delivery'],
172      package_dir = {'': 'lib/python'},
173      scripts=['examples/deliveryclient.py'],
174      ext_modules = [bbftpc],
175      cmdclass = {'doc': Doc, 'build': MyBuild}
176      )
Note: See TracBrowser for help on using the repository browser.