Added a hammer command for buildbot.
This commit is contained in:
parent
d85c266aa0
commit
075043a877
|
@ -1,2 +1,3 @@
|
|||
@echo off
|
||||
python hm.py %*
|
||||
exit /b %errorlevel%
|
103
hm.py
103
hm.py
|
@ -49,6 +49,7 @@ commands = [
|
|||
'usage',
|
||||
'revision',
|
||||
'help',
|
||||
'hammer',
|
||||
'--help',
|
||||
'-h',
|
||||
'/?'
|
||||
|
@ -96,9 +97,14 @@ sln_filename = '%s.sln' % project
|
|||
xcodeproj_filename = '%s.xcodeproj' % project
|
||||
config_filename = '%s.cfg' % this_cmd
|
||||
|
||||
config_filepath = '%s/%s' % (bin_dir, config_filename)
|
||||
sln_filepath = '%s\%s' % (bin_dir, sln_filename)
|
||||
xcodeproj_filepath= '%s/%s' % (bin_dir, xcodeproj_filename)
|
||||
def config_filepath():
|
||||
return '%s/%s' % (bin_dir, config_filename)
|
||||
|
||||
def sln_filepath():
|
||||
return '%s\%s' % (bin_dir, sln_filename)
|
||||
|
||||
def xcodeproj_filepath():
|
||||
return '%s/%s' % (bin_dir, xcodeproj_filename)
|
||||
|
||||
# try_chdir(...) and restore_chdir() will use this
|
||||
prevdir = ''
|
||||
|
@ -119,6 +125,7 @@ def usage():
|
|||
' revision Display the current source code revision\n'
|
||||
' package Create a distribution package (e.g. tar.gz)\n'
|
||||
' install Installs the program\n'
|
||||
' hammer Golden hammer (config, build, package)\n'
|
||||
' usage Shows the help screen\n'
|
||||
'\n'
|
||||
'Alias commands:\n'
|
||||
|
@ -266,10 +273,10 @@ def clean(mode):
|
|||
def open_project():
|
||||
generator = get_generator()
|
||||
if generator.startswith('Visual Studio'):
|
||||
open_project_internal(sln_filepath)
|
||||
open_project_internal(sln_filepath())
|
||||
return True
|
||||
elif generator.startswith('Xcode'):
|
||||
open_project_internal(xcodeproj_filepath, 'open')
|
||||
open_project_internal(xcodeproj_filepath(), 'open')
|
||||
return True
|
||||
else:
|
||||
print 'Not supported with generator:',generator
|
||||
|
@ -301,14 +308,9 @@ def package(type):
|
|||
|
||||
if type == None:
|
||||
package_usage()
|
||||
elif type == 'src-tgz':
|
||||
elif type == 'src':
|
||||
if sys.platform in ['linux2', 'darwin']:
|
||||
package_src()
|
||||
else:
|
||||
package_unsupported = True
|
||||
elif type == 'src-zip':
|
||||
if sys.platform == 'win32':
|
||||
package_src()
|
||||
package_tgz()
|
||||
else:
|
||||
package_unsupported = True
|
||||
elif type == 'rpm':
|
||||
|
@ -338,8 +340,7 @@ def package(type):
|
|||
print ('Package type, %s is not '
|
||||
'supported for platform, %s') % (type, sys.platform)
|
||||
|
||||
def package_src():
|
||||
# Enter the temp build dir, to preserve source tree.
|
||||
def package_tgz():
|
||||
try_chdir(bin_dir)
|
||||
os.system('make package_source')
|
||||
restore_chdir()
|
||||
|
@ -368,12 +369,11 @@ def package_usage():
|
|||
print ('Usage: %s package [package-type]\n'
|
||||
'\n'
|
||||
'Replace [package-type] with one of:\n'
|
||||
' src-tgz Create a .tar.gz source distribution\n'
|
||||
' src-zip Create a .zip source distribution\n'
|
||||
' rpm Create a .rpm package (Red Hat)\n'
|
||||
' deb Create a .deb paclage (Debian)\n'
|
||||
' win Create a .exe installer (Windows)\n'
|
||||
' mac Create a .dmg package (Mac OS X)\n'
|
||||
' src .tar.gz source (Posix only)\n'
|
||||
' rpm .rpm package (Red Hat)\n'
|
||||
' deb .deb paclage (Debian)\n'
|
||||
' win .exe installer (Windows)\n'
|
||||
' mac .dmg package (Mac OS X)\n'
|
||||
'\n'
|
||||
'Example: %s package src-tgz') % (this_cmd, this_cmd)
|
||||
|
||||
|
@ -442,6 +442,8 @@ def main(argv):
|
|||
destroy()
|
||||
elif cmd in ['setup']:
|
||||
setup()
|
||||
elif cmd in ['hammer']:
|
||||
hammer()
|
||||
else:
|
||||
print 'Command not yet implemented:',cmd
|
||||
|
||||
|
@ -504,9 +506,9 @@ def setup(generator = None):
|
|||
if not os.path.exists(bin_dir):
|
||||
os.mkdir(bin_dir)
|
||||
|
||||
if os.path.exists(config_filepath):
|
||||
if os.path.exists(config_filepath()):
|
||||
config = ConfigParser.ConfigParser()
|
||||
config.read(config_filepath)
|
||||
config.read(config_filepath())
|
||||
else:
|
||||
config = ConfigParser.ConfigParser()
|
||||
|
||||
|
@ -529,18 +531,18 @@ def setup(generator = None):
|
|||
print "\nSetup complete."
|
||||
|
||||
def write_config(config):
|
||||
configfile = open(config_filepath, 'wb')
|
||||
configfile = open(config_filepath(), 'wb')
|
||||
config.write(configfile)
|
||||
|
||||
def get_generator():
|
||||
config = ConfigParser.RawConfigParser()
|
||||
config.read(config_filepath)
|
||||
config.read(config_filepath())
|
||||
return config.get('cmake', 'generator')
|
||||
|
||||
def has_setup_version(version):
|
||||
if os.path.exists(config_filepath):
|
||||
if os.path.exists(config_filepath()):
|
||||
config = ConfigParser.RawConfigParser()
|
||||
config.read(config_filepath)
|
||||
config.read(config_filepath())
|
||||
|
||||
try:
|
||||
return config.getint('hm', 'setup_version') >= version
|
||||
|
@ -552,7 +554,7 @@ def has_setup_version(version):
|
|||
def has_conf_run():
|
||||
if has_setup_version(2):
|
||||
config = ConfigParser.RawConfigParser()
|
||||
config.read(config_filepath)
|
||||
config.read(config_filepath())
|
||||
try:
|
||||
return config.getboolean('hm', 'has_conf_run')
|
||||
except:
|
||||
|
@ -563,7 +565,7 @@ def has_conf_run():
|
|||
def set_conf_run():
|
||||
if has_setup_version(3):
|
||||
config = ConfigParser.RawConfigParser()
|
||||
config.read(config_filepath)
|
||||
config.read(config_filepath())
|
||||
config.set('hm', 'has_conf_run', True)
|
||||
write_config(config)
|
||||
else:
|
||||
|
@ -654,7 +656,7 @@ def run_vcbuild(generator, mode, args=''):
|
|||
cmd = ('@echo off\n'
|
||||
'call "%s" %s \n'
|
||||
'vcbuild /nologo %s "%s" "%s"'
|
||||
) % (get_vcvarsall(generator), vcvars_platform, args, sln_filepath, config)
|
||||
) % (get_vcvarsall(generator), vcvars_platform, args, sln_filepath(), config)
|
||||
print cmd
|
||||
# Generate a batch file, since we can't use environment variables directly.
|
||||
temp_bat = bin_dir + r'\vcbuild.bat'
|
||||
|
@ -668,5 +670,48 @@ def ensure_setup_latest(generator = None):
|
|||
if not has_setup_version(setup_version):
|
||||
setup(generator)
|
||||
|
||||
class HammerBuild:
|
||||
generator = None
|
||||
target_dir = None
|
||||
|
||||
def __init__(self, _generator, _target_dir):
|
||||
self.generator = _generator
|
||||
self.target_dir = _target_dir
|
||||
|
||||
def run(self):
|
||||
global bin_dir
|
||||
bin_dir = self.target_dir
|
||||
configure(self.generator)
|
||||
build('debug')
|
||||
build('release')
|
||||
|
||||
def hammer():
|
||||
|
||||
hammer_builds = []
|
||||
if sys.platform == 'win32':
|
||||
hammer_builds += [
|
||||
HammerBuild('Visual Studio 9 2008', 'bin32'),
|
||||
HammerBuild('Visual Studio 9 2008 Win64', 'bin64')]
|
||||
elif sys.platform in ['linux2', 'sunos5', 'freebsd7']:
|
||||
hammer_builds += [
|
||||
HammerBuild('Unix Makefiles', 'bin')]
|
||||
elif sys.platform == 'darwin':
|
||||
hammer_builds += [
|
||||
HammerBuild('Xcode', 'bin')]
|
||||
|
||||
for hb in hammer_builds:
|
||||
hb.run()
|
||||
|
||||
package_types = []
|
||||
if sys.platform == 'win32':
|
||||
package_types += ['win']
|
||||
elif sys.platform == 'linux2':
|
||||
package_types += ['src', 'rpm', 'deb']
|
||||
elif sys.platform == 'darwin':
|
||||
package_types += ['mac']
|
||||
|
||||
for pt in package_types:
|
||||
package(pt)
|
||||
|
||||
# Start the program.
|
||||
main(sys.argv)
|
||||
|
|
Loading…
Reference in New Issue