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

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

Client-side authentication handling is implemented but currently broken.
I'm still working out what's wrong.

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