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

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

Fixed the client API testcase problem. The client and server modules
cannot be linked into the same python interpreter, presumably because of
symbol conflicts. This should only be an issue during testing so I've created
the runclient.py script to circumvent it. There are now a set of test cases that wrap both client and server in python.

bbftp.c has been ammended to ensure all global variables are reset on each
invocation of bbftpc_main().

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
47bbftpc_src = [  'bbftp.c',
48                'bbftp_cd.c',
49                'bbftp_get.c',
50                'bbftp_lcd.c',
51                'bbftp_list.c',
52                'bbftp_mget.c',
53                'bbftp_mkdir.c',
54                'bbftp_mput.c',
55                'bbftp_put.c',
56                'bbftp_rm.c',
57                'bbftp_stat.c',
58                'bbftp_statfs.c',
59                'bbftp_dir.c',
60                'bbftp_retr.c',
61                'bbftp_setremotecos.c',
62                'bbftp_setremoteumask.c',
63                'bbftp_store.c',
64                'bbftp_socket.c',
65                'bbftp_utils.c',
66                'connecttoserver.c',
67                'getdatasock.c',
68                'readmessage.c',
69                'sendproto.c',
70                'treatcommand.c',
71                'bbftp_turl.c',
72                'writemessage.c',
73                'setsignals.c',
74                'bbftp_private.c',
75                'bbftp_private_user.c'
76                ]
77
78client_sources = ['%s/bbftpc/%s' % (bbftpc_home, x) for x in bbftpc_src] + ['./src/python_ext/bbftpc.c', 
79                                                                            './src/python_ext/util.c']
80
81#-------------------------------------------------------------------------------------------
82
83class Doc(Command):
84    """Build epydoc and doxygen documentation.
85    """
86
87    user_options = []
88
89    def initialize_options(self):
90        pass
91    def finalize_options(self):
92        pass
93
94    def run(self):
95        cmd = 'epydoc -o doc/epydoc -v --docformat javadoc --name "NDG Delivery Service" build/lib*/delivery/'
96        self.execute(os.system, (cmd,))
97        self.execute(os.system, ('doxygen',))
98
99from distutils.command.build import build
100
101class MyBuild(build):
102    def run(self):
103        self.execute(os.system, ('make -C src',))
104        build.run(self)
105
106#-------------------------------------------------------------------------------------------
107
108
109
110
111
112
113
114
115bbftpd = Extension('delivery.bbftpd',
116                   define_macros = [('NDG_AUTH', 1), ('LOCAL_SYSLOG_FACILITY', 1),
117                                    ('_LARGEFILE64_SOURCE', 1),
118                                    ('NDG_PYTHON_EMBED', 1),
119                                    ('NDG_DELIVERY_VERSION', version)],
120                   include_dirs = [bbftpd_home+'/includes', bbftpd_home+'/bbftpd'],
121                   libraries = ['crypt', 'crypto'],
122                   sources = server_sources)
123
124bbftpc = Extension('delivery.bbftpc',
125                   define_macros = [('NDG_AUTH', 1), ('LOCAL_SYSLOG_FACILITY', 1),
126                                    ('_LARGEFILE64_SOURCE', 1),
127                                    ('NDG_PYTHON_EMBED', 1),
128                                    ('NDG_DELIVERY_VERSION', version)],
129                   include_dirs = [bbftpc_home+'/includes', bbftpc_home+'/bbftpc'],
130                   libraries = ['crypt', 'crypto'],
131                   sources = client_sources)
132
133setup(name = 'bbftp-python',
134      version = version,
135      description = 'Embedded bbftp server',
136      author = 'Stephen Pascoe',
137      author_email = 'S.Pascoe@rl.ac.uk',
138      package_dir = {'': 'lib/python'},
139      packages = ['delivery'],
140      ext_modules = [
141                     bbftpd,
142                     bbftpc],
143      cmdclass = {'doc': Doc, 'build': MyBuild}
144      )
145     
Note: See TracBrowser for help on using the repository browser.