6b66edfd46
Fixed bugs / style issues to please Lord Travis Squashed commit of the following: commit f25048a1e1e9d0be355f33fbaff6ef74845f4782 Author: Luke Campagnola <luke.campagnola@gmail.com> Date: Sun Mar 30 02:40:47 2014 -0400 syntax commit cc8b69695a2698b75ff216dce27fabe46c79a325 Author: Luke Campagnola <luke.campagnola@gmail.com> Date: Sun Mar 30 02:36:49 2014 -0400 add size check, diff style check commit 5d5ea065a4d4cc714bfaf7c7e7624295164cd86c Author: Luke Campagnola <luke.campagnola@gmail.com> Date: Sun Mar 30 02:16:05 2014 -0400 travis fix commit b154c6d9971d35c2a46e575a0a884880ec14c8b1 Author: Luke Campagnola <luke.campagnola@gmail.com> Date: Sun Mar 30 02:09:41 2014 -0400 travis, flake colored output commit 46921dcd878fdc08f05ef74d08be7953b1820a85 Author: Luke Campagnola <luke.campagnola@gmail.com> Date: Wed Mar 26 12:37:54 2014 -0400 fix pyside+py3 bugs to satisfy CI commit 1d30f3c5c7763876ccfff54e460b83cb7422a5b4 Author: Luke Campagnola <luke.campagnola@gmail.com> Date: Wed Mar 26 11:13:18 2014 -0400 fix py3 tests commit 426578fa4c5ec991d361c60005c32ca88c85e505 Author: Luke Campagnola <luke.campagnola@gmail.com> Date: Wed Mar 26 07:39:19 2014 -0400 fix pytest install commit 88a13c1a7158904af7d25c5ba5bfc8e63e6cf49d Author: Luke Campagnola <luke.campagnola@gmail.com> Date: Wed Mar 26 00:29:29 2014 -0400 qt5 updates commit 51995488ccc9f286aeced3bd49c3213819529e57 Author: Luke Campagnola <luke.campagnola@gmail.com> Date: Wed Mar 26 00:16:04 2014 -0400 correct py.test command for py3 commit e2b02fbcbdbd95cbec5dd9307870f39337e6eb45 Author: Luke Campagnola <luke.campagnola@gmail.com> Date: Tue Mar 25 23:50:38 2014 -0400 fix 2nd install test commit 4b3e3ee04adee3a8d1aabdfb18a198cbd0e83a06 Author: Luke Campagnola <luke.campagnola@gmail.com> Date: Tue Mar 25 23:31:31 2014 -0400 syntax error commit 250eabdb34cac48d6f9622e6453235f0ec7f1151 Author: Luke Campagnola <luke.campagnola@gmail.com> Date: Tue Mar 25 23:13:42 2014 -0400 look for py.test3 commit 9f9bca47c1a0a5c35be21835a674058242aa5f48 Author: Luke Campagnola <luke.campagnola@gmail.com> Date: Tue Mar 25 22:54:19 2014 -0400 fix syntax commit 0a871c6f36ecddb7a1002b74d3b6d433e1648e8f Author: Luke Campagnola <luke.campagnola@gmail.com> Date: Tue Mar 25 22:47:58 2014 -0400 output pip build log commit dbce58d8cd3f3a558202f8d7a149b5ec8fbfcf78 Author: Luke Campagnola <luke.campagnola@gmail.com> Date: Tue Mar 25 22:38:55 2014 -0400 no comments allowed between shall lines commit b79c06121d8e40d8b2d2db0a4dd0a60fbf48edba Author: Luke Campagnola <luke.campagnola@gmail.com> Date: Tue Mar 25 20:56:35 2014 -0400 another pip try commit 09f4f5d82ab41f66e5c746985f09dfcbe36f2089 Author: Luke Campagnola <luke.campagnola@gmail.com> Date: Tue Mar 25 13:36:09 2014 -0400 pip correction commit 0eedb5c18e7242370f996c6b7481fbcdc8e6caf2 Author: Luke Campagnola <luke.campagnola@gmail.com> Date: Tue Mar 25 13:29:00 2014 -0400 correct py version output commit d9fd039be22cb297f4de83f7ab543de25e2969dd Author: Luke Campagnola <luke.campagnola@gmail.com> Date: Tue Mar 25 11:55:43 2014 -0400 apt checks commit cf95ccef86bd26964d73bdc649de8f23f64d2575 Author: Luke Campagnola <luke.campagnola@gmail.com> Date: Tue Mar 25 10:23:10 2014 -0400 alternate pip install method commit bee0bcddfef44917a5ee425557ba6ff246edec87 Author: Luke Campagnola <luke.campagnola@gmail.com> Date: Mon Mar 24 23:51:45 2014 -0400 correct deps install commit 963a4211fcaa5ebbfe0e13a5d879635bd77334ac Author: Luke Campagnola <luke.campagnola@gmail.com> Date: Mon Mar 24 23:47:30 2014 -0400 fixes commit 0c86cd1dc28e286f999f01b37beb3c3252a8c864 Author: Luke Campagnola <luke.campagnola@gmail.com> Date: Mon Mar 24 23:31:06 2014 -0400 permission fix commit 5d04ef53b80a83aa62452ff9a9f9152ca862f8d8 Author: Luke Campagnola <luke.campagnola@gmail.com> Date: Mon Mar 24 23:30:19 2014 -0400 Fix py.test version selection commit b0e6c7cb94c7fa85653e492f8817e79b1ca30426 Author: Luke Campagnola <luke.campagnola@gmail.com> Date: Mon Mar 24 23:25:34 2014 -0400 try another pyqt5 install method commit 422a7928665b5afb72861400672cc81b4bcd9779 Author: Luke Campagnola <luke.campagnola@gmail.com> Date: Mon Mar 24 23:12:36 2014 -0400 syntax error commit 533133905a8e4f2ba26bc6e8f0e4fe631fbd119e Author: Luke Campagnola <luke.campagnola@gmail.com> Date: Mon Mar 24 23:04:37 2014 -0400 fixes commit 8d65211ba4e08e4f4b13b68f9778c3aee4b43cdc Author: Luke Campagnola <luke.campagnola@gmail.com> Date: Mon Mar 24 22:40:18 2014 -0400 Add Qt5 test minor fixes commit 4484efaefe0c99516940812d0472e82998e801f6 Author: Luke Campagnola <luke.campagnola@gmail.com> Date: Mon Mar 24 22:31:56 2014 -0400 use correct py.test for python version commit 5d2441a29b98ed573e15580fc5efd533352ffb45 Author: Luke Campagnola <luke.campagnola@gmail.com> Date: Mon Mar 24 22:24:27 2014 -0400 add setup tests commit 9291db64f25afeb46ee46d92b3bd13aabb325cfe Author: Luke Campagnola <luke.campagnola@gmail.com> Date: Mon Mar 24 21:48:43 2014 -0400 fix py3-pyqt install commit a7aa675c5a5a5c4a2fff69feefc9298bcc626641 Author: Luke Campagnola <luke.campagnola@gmail.com> Date: Mon Mar 24 21:31:33 2014 -0400 travis tests commit e71cd2b23ab09490c29c1c8ee18fc4db87ff0c01 Author: Luke Campagnola <luke.campagnola@gmail.com> Date: Mon Mar 24 21:17:15 2014 -0400 more corrections commit 527df3bca897ba6a02cb3fe4a5a6db34042600b5 Author: Luke Campagnola <luke.campagnola@gmail.com> Date: Mon Mar 24 20:56:01 2014 -0400 travis corrections commit 87d65cac4aa3bf815860030fac78e8e28069e29d Author: Luke Campagnola <luke.campagnola@gmail.com> Date: Mon Mar 24 20:48:02 2014 -0400 Add flake tests Correct style in a few files to please Lord Travis commit 537028f88f17da59a6e8a09b9a3dee34282791cf Author: Luke Campagnola <luke.campagnola@gmail.com> Date: Mon Mar 24 17:36:24 2014 -0400 minimize pyside package install correct line endings to satisfy Lord Travis commit 1e3cc95e37f03f70f50900dcb2e8a4dc4772208a Author: Luke Campagnola <luke.campagnola@gmail.com> Date: Mon Mar 24 17:23:03 2014 -0400 enable pyside, line ending check fix test commit d7df4517f9004399703cb44237d27be313405e84 Author: Luke Campagnola <luke.campagnola@gmail.com> Date: Mon Mar 24 17:12:06 2014 -0400 syntax fix commit 1ad77a21551c38f7ff77bd537eb6c2a9e13a26ae Author: Luke Campagnola <luke.campagnola@gmail.com> Date: Mon Mar 24 17:00:30 2014 -0400 alt. pytest install commit 5edcc020729b1ecd452555852652720b4c3285f5 Author: Luke Campagnola <luke.campagnola@gmail.com> Date: Mon Mar 24 16:52:33 2014 -0400 Added initial travis.yml
439 lines
15 KiB
Python
439 lines
15 KiB
Python
# -*- coding: utf-8 -*-
|
||
import os, sys, re
|
||
try:
|
||
from subprocess import check_output
|
||
except ImportError:
|
||
import subprocess as sp
|
||
def check_output(*args, **kwds):
|
||
kwds['stdout'] = sp.PIPE
|
||
proc = sp.Popen(*args, **kwds)
|
||
output = proc.stdout.read()
|
||
proc.wait()
|
||
if proc.returncode != 0:
|
||
ex = Exception("Process had nonzero return value %d" % proc.returncode)
|
||
ex.returncode = proc.returncode
|
||
ex.output = output
|
||
raise ex
|
||
return output
|
||
|
||
# Paths that are checked for style by flake and flake_diff
|
||
FLAKE_CHECK_PATHS = ['pyqtgraph', 'examples', 'tools']
|
||
|
||
# Flake style checks -- mandatory, recommended, optional
|
||
# See: http://pep8.readthedocs.org/en/1.4.6/intro.html
|
||
# and https://flake8.readthedocs.org/en/2.0/warnings.html
|
||
FLAKE_MANDATORY = set([
|
||
'E101', # indentation contains mixed spaces and tabs
|
||
'E112', # expected an indented block
|
||
'E122', # continuation line missing indentation or outdented
|
||
'E125', # continuation line does not distinguish itself from next line
|
||
'E133', # closing bracket is missing indentation
|
||
|
||
'E223', # tab before operator
|
||
'E224', # tab after operator
|
||
'E242', # tab after ‘,’
|
||
'E273', # tab after keyword
|
||
'E274', # tab before keyword
|
||
|
||
'E901', # SyntaxError or IndentationError
|
||
'E902', # IOError
|
||
|
||
'W191', # indentation contains tabs
|
||
|
||
'W601', # .has_key() is deprecated, use ‘in’
|
||
'W602', # deprecated form of raising exception
|
||
'W603', # ‘<>’ is deprecated, use ‘!=’
|
||
'W604', # backticks are deprecated, use ‘repr()’
|
||
])
|
||
|
||
FLAKE_RECOMMENDED = set([
|
||
'E124', # closing bracket does not match visual indentation
|
||
'E231', # missing whitespace after ‘,’
|
||
|
||
'E211', # whitespace before ‘(‘
|
||
'E261', # at least two spaces before inline comment
|
||
'E271', # multiple spaces after keyword
|
||
'E272', # multiple spaces before keyword
|
||
'E304', # blank lines found after function decorator
|
||
|
||
'F401', # module imported but unused
|
||
'F402', # import module from line N shadowed by loop variable
|
||
'F403', # ‘from module import *’ used; unable to detect undefined names
|
||
'F404', # future import(s) name after other statements
|
||
|
||
'E501', # line too long (82 > 79 characters)
|
||
'E502', # the backslash is redundant between brackets
|
||
|
||
'E702', # multiple statements on one line (semicolon)
|
||
'E703', # statement ends with a semicolon
|
||
'E711', # comparison to None should be ‘if cond is None:’
|
||
'E712', # comparison to True should be ‘if cond is True:’ or ‘if cond:’
|
||
'E721', # do not compare types, use ‘isinstance()’
|
||
|
||
'F811', # redefinition of unused name from line N
|
||
'F812', # list comprehension redefines name from line N
|
||
'F821', # undefined name name
|
||
'F822', # undefined name name in __all__
|
||
'F823', # local variable name ... referenced before assignment
|
||
'F831', # duplicate argument name in function definition
|
||
'F841', # local variable name is assigned to but never used
|
||
|
||
'W292', # no newline at end of file
|
||
|
||
])
|
||
|
||
FLAKE_OPTIONAL = set([
|
||
'E121', # continuation line indentation is not a multiple of four
|
||
'E123', # closing bracket does not match indentation of opening bracket
|
||
'E126', # continuation line over-indented for hanging indent
|
||
'E127', # continuation line over-indented for visual indent
|
||
'E128', # continuation line under-indented for visual indent
|
||
|
||
'E201', # whitespace after ‘(‘
|
||
'E202', # whitespace before ‘)’
|
||
'E203', # whitespace before ‘:’
|
||
'E221', # multiple spaces before operator
|
||
'E222', # multiple spaces after operator
|
||
'E225', # missing whitespace around operator
|
||
'E227', # missing whitespace around bitwise or shift operator
|
||
'E226', # missing whitespace around arithmetic operator
|
||
'E228', # missing whitespace around modulo operator
|
||
'E241', # multiple spaces after ‘,’
|
||
'E251', # unexpected spaces around keyword / parameter equals
|
||
'E262', # inline comment should start with ‘# ‘
|
||
|
||
'E301', # expected 1 blank line, found 0
|
||
'E302', # expected 2 blank lines, found 0
|
||
'E303', # too many blank lines (3)
|
||
|
||
'E401', # multiple imports on one line
|
||
|
||
'E701', # multiple statements on one line (colon)
|
||
|
||
'W291', # trailing whitespace
|
||
'W293', # blank line contains whitespace
|
||
|
||
'W391', # blank line at end of file
|
||
])
|
||
|
||
FLAKE_IGNORE = set([
|
||
# 111 and 113 are ignored because they appear to be broken.
|
||
'E111', # indentation is not a multiple of four
|
||
'E113', # unexpected indentation
|
||
])
|
||
|
||
|
||
#def checkStyle():
|
||
#try:
|
||
#out = check_output(['flake8', '--select=%s' % FLAKE_TESTS, '--statistics', 'pyqtgraph/'])
|
||
#ret = 0
|
||
#print("All style checks OK.")
|
||
#except Exception as e:
|
||
#out = e.output
|
||
#ret = e.returncode
|
||
#print(out.decode('utf-8'))
|
||
#return ret
|
||
|
||
|
||
def checkStyle():
|
||
""" Run flake8, checking only lines that are modified since the last
|
||
git commit. """
|
||
test = [ 1,2,3 ]
|
||
|
||
# First check _all_ code against mandatory error codes
|
||
print('flake8: check all code against mandatory error set...')
|
||
errors = ','.join(FLAKE_MANDATORY)
|
||
cmd = ['flake8', '--select=' + errors] + FLAKE_CHECK_PATHS
|
||
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE)
|
||
#ret = proc.wait()
|
||
output = proc.stdout.read().decode('utf-8')
|
||
ret = proc.wait()
|
||
printFlakeOutput(output)
|
||
|
||
# Next check new code with optional error codes
|
||
print('flake8: check new code against recommended error set...')
|
||
diff = subprocess.check_output(['git', 'diff'])
|
||
proc = subprocess.Popen(['flake8', '--diff', #'--show-source',
|
||
'--ignore=' + errors],
|
||
stdin=subprocess.PIPE,
|
||
stdout=subprocess.PIPE)
|
||
proc.stdin.write(diff)
|
||
proc.stdin.close()
|
||
output = proc.stdout.read().decode('utf-8')
|
||
ret |= printFlakeOutput(output)
|
||
|
||
if ret == 0:
|
||
print('flake8 test passed.')
|
||
else:
|
||
print('flake8 test failed: %d' % ret)
|
||
sys.exit(ret)
|
||
|
||
|
||
def printFlakeOutput(text):
|
||
""" Print flake output, colored by error category.
|
||
Return 2 if there were any mandatory errors,
|
||
1 if only recommended / optional errors, and
|
||
0 if only optional errors.
|
||
"""
|
||
ret = 0
|
||
gotError = False
|
||
for line in text.split('\n'):
|
||
m = re.match(r'[^\:]+\:\d+\:\d+\: (\w+) .*', line)
|
||
if m is None:
|
||
print(line)
|
||
else:
|
||
gotError = True
|
||
error = m.group(1)
|
||
if error in FLAKE_MANDATORY:
|
||
print("\033[0;31m" + line + "\033[0m")
|
||
ret |= 2
|
||
elif error in FLAKE_RECOMMENDED:
|
||
print("\033[0;33m" + line + "\033[0m")
|
||
#ret |= 1
|
||
elif error in FLAKE_OPTIONAL:
|
||
print("\033[0;32m" + line + "\033[0m")
|
||
elif error in FLAKE_IGNORE:
|
||
continue
|
||
else:
|
||
print("\033[0;36m" + line + "\033[0m")
|
||
if not gotError:
|
||
print(" [ no errors ]\n")
|
||
return ret
|
||
|
||
|
||
|
||
def unitTests():
|
||
try:
|
||
if sys.version[0] == '3':
|
||
out = check_output('PYTHONPATH=. py.test-3', shell=True)
|
||
else:
|
||
out = check_output('PYTHONPATH=. py.test', shell=True)
|
||
ret = 0
|
||
except Exception as e:
|
||
out = e.output
|
||
ret = e.returncode
|
||
print(out.decode('utf-8'))
|
||
return ret
|
||
|
||
def listAllPackages(pkgroot):
|
||
path = os.getcwd()
|
||
n = len(path.split(os.path.sep))
|
||
subdirs = [i[0].split(os.path.sep)[n:] for i in os.walk(os.path.join(path, pkgroot)) if '__init__.py' in i[2]]
|
||
return ['.'.join(p) for p in subdirs]
|
||
|
||
|
||
def getInitVersion(pkgroot):
|
||
"""Return the version string defined in __init__.py"""
|
||
path = os.getcwd()
|
||
initfile = os.path.join(path, pkgroot, '__init__.py')
|
||
init = open(initfile).read()
|
||
m = re.search(r'__version__ = (\S+)\n', init)
|
||
if m is None or len(m.groups()) != 1:
|
||
raise Exception("Cannot determine __version__ from init file: '%s'!" % initfile)
|
||
version = m.group(1).strip('\'\"')
|
||
return version
|
||
|
||
def gitCommit(name):
|
||
"""Return the commit ID for the given name."""
|
||
commit = check_output(['git', 'show', name], universal_newlines=True).split('\n')[0]
|
||
assert commit[:7] == 'commit '
|
||
return commit[7:]
|
||
|
||
def getGitVersion(tagPrefix):
|
||
"""Return a version string with information about this git checkout.
|
||
If the checkout is an unmodified, tagged commit, then return the tag version.
|
||
If this is not a tagged commit, return version-branch_name-commit_id.
|
||
If this checkout has been modified, append "+" to the version.
|
||
"""
|
||
path = os.getcwd()
|
||
if not os.path.isdir(os.path.join(path, '.git')):
|
||
return None
|
||
|
||
# Find last tag matching "tagPrefix.*"
|
||
tagNames = check_output(['git', 'tag'], universal_newlines=True).strip().split('\n')
|
||
while True:
|
||
if len(tagNames) == 0:
|
||
raise Exception("Could not determine last tagged version.")
|
||
lastTagName = tagNames.pop()
|
||
if re.match(tagPrefix+r'\d+\.\d+.*', lastTagName):
|
||
break
|
||
gitVersion = lastTagName.replace(tagPrefix, '')
|
||
|
||
# is this commit an unchanged checkout of the last tagged version?
|
||
lastTag = gitCommit(lastTagName)
|
||
head = gitCommit('HEAD')
|
||
if head != lastTag:
|
||
branch = getGitBranch()
|
||
gitVersion = gitVersion + "-%s-%s" % (branch, head[:10])
|
||
|
||
# any uncommitted modifications?
|
||
modified = False
|
||
status = check_output(['git', 'status', '-s'], universal_newlines=True).strip().split('\n')
|
||
for line in status:
|
||
if line[:2] != '??':
|
||
modified = True
|
||
break
|
||
|
||
if modified:
|
||
gitVersion = gitVersion + '+'
|
||
|
||
return gitVersion
|
||
|
||
def getGitBranch():
|
||
m = re.search(r'\* (.*)', check_output(['git', 'branch'], universal_newlines=True))
|
||
if m is None:
|
||
return ''
|
||
else:
|
||
return m.group(1)
|
||
|
||
def getVersionStrings(pkg):
|
||
"""
|
||
Returns 4 version strings:
|
||
|
||
* the version string to use for this build,
|
||
* version string requested with --force-version (or None)
|
||
* version string that describes the current git checkout (or None).
|
||
* version string in the pkg/__init__.py,
|
||
|
||
The first return value is (forceVersion or gitVersion or initVersion).
|
||
"""
|
||
|
||
## Determine current version string from __init__.py
|
||
initVersion = getInitVersion(pkgroot='pyqtgraph')
|
||
|
||
## If this is a git checkout, try to generate a more descriptive version string
|
||
try:
|
||
gitVersion = getGitVersion(tagPrefix='pyqtgraph-')
|
||
except:
|
||
gitVersion = None
|
||
sys.stderr.write("This appears to be a git checkout, but an error occurred "
|
||
"while attempting to determine a version string for the "
|
||
"current commit.\n")
|
||
sys.excepthook(*sys.exc_info())
|
||
|
||
# See whether a --force-version flag was given
|
||
forcedVersion = None
|
||
for i,arg in enumerate(sys.argv):
|
||
if arg.startswith('--force-version'):
|
||
if arg == '--force-version':
|
||
forcedVersion = sys.argv[i+1]
|
||
sys.argv.pop(i)
|
||
sys.argv.pop(i)
|
||
elif arg.startswith('--force-version='):
|
||
forcedVersion = sys.argv[i].replace('--force-version=', '')
|
||
sys.argv.pop(i)
|
||
|
||
|
||
## Finally decide on a version string to use:
|
||
if forcedVersion is not None:
|
||
version = forcedVersion
|
||
elif gitVersion is not None and getGitBranch() != 'debian': # ignore git version if this is debian branch
|
||
version = gitVersion
|
||
sys.stderr.write("Detected git commit; will use version string: '%s'\n" % version)
|
||
else:
|
||
version = initVersion
|
||
|
||
return version, forcedVersion, gitVersion, initVersion
|
||
|
||
|
||
from distutils.core import Command
|
||
import shutil, subprocess
|
||
from generateChangelog import generateDebianChangelog
|
||
|
||
class DebCommand(Command):
|
||
description = "build .deb package using `debuild -us -uc`"
|
||
maintainer = "Luke Campagnola <luke.campagnola@gmail.com>"
|
||
debTemplate = "debian"
|
||
debDir = "deb_build"
|
||
|
||
user_options = []
|
||
|
||
def initialize_options(self):
|
||
self.cwd = None
|
||
|
||
def finalize_options(self):
|
||
self.cwd = os.getcwd()
|
||
|
||
def run(self):
|
||
version = self.distribution.get_version()
|
||
pkgName = self.distribution.get_name()
|
||
debName = "python-" + pkgName
|
||
debDir = self.debDir
|
||
|
||
assert os.getcwd() == self.cwd, 'Must be in package root: %s' % self.cwd
|
||
|
||
if os.path.isdir(debDir):
|
||
raise Exception('DEB build dir already exists: "%s"' % debDir)
|
||
sdist = "dist/%s-%s.tar.gz" % (pkgName, version)
|
||
if not os.path.isfile(sdist):
|
||
raise Exception("No source distribution; run `setup.py sdist` first.")
|
||
|
||
# copy sdist to build directory and extract
|
||
os.mkdir(debDir)
|
||
renamedSdist = '%s_%s.orig.tar.gz' % (debName, version)
|
||
print("copy %s => %s" % (sdist, os.path.join(debDir, renamedSdist)))
|
||
shutil.copy(sdist, os.path.join(debDir, renamedSdist))
|
||
print("cd %s; tar -xzf %s" % (debDir, renamedSdist))
|
||
if os.system("cd %s; tar -xzf %s" % (debDir, renamedSdist)) != 0:
|
||
raise Exception("Error extracting source distribution.")
|
||
buildDir = '%s/%s-%s' % (debDir, pkgName, version)
|
||
|
||
# copy debian control structure
|
||
print("copytree %s => %s" % (self.debTemplate, buildDir+'/debian'))
|
||
shutil.copytree(self.debTemplate, buildDir+'/debian')
|
||
|
||
# Write new changelog
|
||
chlog = generateDebianChangelog(pkgName, 'CHANGELOG', version, self.maintainer)
|
||
print("write changelog %s" % buildDir+'/debian/changelog')
|
||
open(buildDir+'/debian/changelog', 'w').write(chlog)
|
||
|
||
# build package
|
||
print('cd %s; debuild -us -uc' % buildDir)
|
||
if os.system('cd %s; debuild -us -uc' % buildDir) != 0:
|
||
raise Exception("Error during debuild.")
|
||
|
||
|
||
class DebugCommand(Command):
|
||
"""Just for learning about distutils."""
|
||
description = ""
|
||
user_options = []
|
||
def initialize_options(self):
|
||
pass
|
||
def finalize_options(self):
|
||
pass
|
||
def run(self):
|
||
global cmd
|
||
cmd = self
|
||
print(self.distribution.name)
|
||
print(self.distribution.version)
|
||
|
||
|
||
class TestCommand(Command):
|
||
description = "Run all package tests and exit immediately with informative return code."
|
||
user_options = []
|
||
|
||
def run(self):
|
||
sys.exit(unitTests())
|
||
|
||
|
||
def initialize_options(self):
|
||
pass
|
||
|
||
def finalize_options(self):
|
||
pass
|
||
|
||
|
||
class StyleCommand(Command):
|
||
description = "Check all code for style, exit immediately with informative return code."
|
||
user_options = []
|
||
|
||
def run(self):
|
||
sys.exit(checkStyle())
|
||
|
||
def initialize_options(self):
|
||
pass
|
||
|
||
def finalize_options(self):
|
||
pass
|
||
|