-
Notifications
You must be signed in to change notification settings - Fork 205
/
setup.py
87 lines (74 loc) · 2.49 KB
/
setup.py
1
2
3
4
5
6
7
8
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
## Copyright 2011, IOActive, Inc. All rights reserved.
##
## AndBug is free software: you can redistribute it and/or modify it under
## the terms of version 3 of the GNU Lesser General Public License as
## published by the Free Software Foundation.
##
## AndBug is distributed in the hope that it will be useful, but WITHOUT ANY
## WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
## FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
## more details.
##
## You should have received a copy of the GNU Lesser General Public License
## along with AndBug. If not, see <http://www.gnu.org/licenses/>.
from distutils.core import setup, Extension, Command
# Used by TestCommand and CleanCommand
from unittest import TextTestRunner, TestLoader
from glob import glob
from os.path import splitext, basename, join as pjoin, walk
import os
class TestCommand(Command):
# From: http://da44en.wordpress.com/2002/11/22/using-distutils/
user_options = []
def initialize_options(self):
self._dir = os.getcwd()
def finalize_options(self):
pass
def run(self):
testfiles = [ ]
for t in glob(pjoin(self._dir, 'tests', '*.py')):
if not t.endswith('__init__.py'):
testfiles.append('.'.join(
['tests', splitext(basename(t))[0]])
)
tests = TestLoader().loadTestsFromNames(testfiles)
t = TextTestRunner(verbosity = 1)
t.run(tests)
class CleanCommand(Command):
# From: http://da44en.wordpress.com/2002/11/22/using-distutils/
user_options = [ ]
def initialize_options(self):
self._clean_me = [ ]
for root, dirs, files in os.walk('.'):
for f in files:
if f.endswith('.pyc'):
self._clean_me.append(pjoin(root, f))
def finalize_options(self):
pass
def run(self):
for clean_me in self._clean_me:
try:
os.unlink(clean_me)
except:
pass
jdwp = Extension(
'andbug.jdwp', ['lib/jdwp/jdwp.c', 'lib/jdwp/wire.c']
)
setup(
name = 'andbug',
version = '0.1',
description = 'The AndBug scriptable Android debugger',
author = 'Scott Dunlop',
author_email = 'swdunlop@gmail.com',
package_dir = {
'andbug' : 'lib/andbug',
'andbug.cmd' : 'lib/andbug/cmd'
},
packages = ['andbug', 'andbug.cmd'],
ext_modules = [jdwp],
cmdclass = {
'test' : TestCommand,
'clean' : CleanCommand
},
scripts = ['andbug']
)