scons_gd/scons/bin/scons_dev_master.py
2022-10-15 16:06:26 +02:00

229 lines
6.0 KiB
Python
Executable File

#!/usr/bin/python
#
# A script for turning a generic Ubuntu system into a master for
# SCons development.
import getopt
import sys
from Command import CommandRunner, Usage
INITIAL_PACKAGES = [
'git',
]
INSTALL_PACKAGES = [
'wget',
'xz-utils',
]
PYTHON_PACKAGES = [
'g++',
'gcc',
'make',
'zlib1g-dev',
'libreadline-gplv2-dev',
'libncursesw5-dev',
'libssl-dev',
'libsqlite3-dev',
'tk-dev',
'libgdbm-dev',
'libc6-dev',
'libbz2-dev'
]
BUILDING_PACKAGES = [
'python3-lxml',
'fop',
'python3-dev',
'rpm',
'tar',
'lynx',
# additional packages that Bill Deegan's web page suggests
#'docbook-to-man',
#'docbook-xsl',
#'docbook2x',
#'tetex-bin',
#'tetex-latex',
'python3-sphinx',
'python3-sphinx-rtd-theme',
]
DOCUMENTATION_PACKAGES = [
'docbook-doc',
'sphinx-doc',
'gcc-doc',
'pkg-config',
'python3-doc',
'openjdk-8-doc',
'swig-doc',
'texlive-doc',
]
TESTING_PACKAGES = [
'bison',
'cssc',
'cvs',
'flex',
'g++',
'gcc',
# not on ubuntu 18.04
# 'gcj',
# 'hg',
'ghostscript',
'm4',
'openssh-client',
'openssh-server',
'python3-profiler',
'python3-line-profiler',
'python3-all-dev',
'pypy3-dev',
'rcs',
'rpm',
'openjdk-8-jdk',
'swig',
'texlive-base-bin',
'texlive-extra-utils',
'texlive-latex-base',
'texlive-latex-extra',
'zip',
]
BUILDBOT_PACKAGES = [
'buildbot-worker',
'cron',
]
default_args = [
'upgrade',
'checkout',
'building',
'testing',
'python-versions',
'scons-versions',
]
def main(argv=None):
if argv is None:
argv = sys.argv
short_options = 'hnqy'
long_options = ['help', 'no-exec', 'password=', 'quiet', 'username=',
'yes', 'assume-yes']
helpstr = """\
Usage: scons_dev_master.py [-hnqy] [--password PASSWORD] [--username USER]
[ACTIONS ...]
ACTIONS (in default order):
upgrade Upgrade the system
checkout Check out SCons
building Install packages for building SCons
testing Install packages for testing SCons
scons-versions Install versions of SCons
python-versions Install versions of Python
ACTIONS (optional):
buildbot Install packages for running BuildBot
"""
scons_url = 'https://github.com/SCons/scons.git'
sudo = 'sudo'
password = '""'
username = 'guest'
yesflag = ''
try:
try:
opts, args = getopt.getopt(argv[1:], short_options, long_options)
except getopt.error as msg:
raise Usage(msg)
for o, a in opts:
if o in ('-h', '--help'):
print(helpstr)
sys.exit(0)
elif o in ('-n', '--no-exec'):
CommandRunner.execute = CommandRunner.do_not_execute
elif o == '--password':
password = a
elif o in ('-q', '--quiet'):
CommandRunner.display = CommandRunner.do_not_display
elif o == '--username':
username = a
elif o in ('-y', '--yes', '--assume-yes'):
yesflag = o
except Usage as err:
sys.stderr.write(str(err.msg) + '\n')
sys.stderr.write('use -h to get help\n')
return 2
if not args:
args = default_args
initial_packages = ' '.join(INITIAL_PACKAGES)
install_packages = ' '.join(INSTALL_PACKAGES)
building_packages = ' '.join(BUILDING_PACKAGES)
testing_packages = ' '.join(TESTING_PACKAGES)
buildbot_packages = ' '.join(BUILDBOT_PACKAGES)
python_packages = ' '.join(PYTHON_PACKAGES)
doc_packages = ' '.join(DOCUMENTATION_PACKAGES)
cmd = CommandRunner(locals())
for arg in args:
if arg == 'upgrade':
cmd.run('%(sudo)s apt-get %(yesflag)s upgrade')
elif arg == 'checkout':
cmd.run('%(sudo)s apt-get %(yesflag)s install %(initial_packages)s')
cmd.run('git clone" %(scons_url)s')
elif arg == 'building':
cmd.run('%(sudo)s apt-get %(yesflag)s install %(building_packages)s')
elif arg == 'docs':
cmd.run('%(sudo)s apt-get %(yesflag)s install %(doc_packages)s')
elif arg == 'testing':
cmd.run('%(sudo)s apt-get %(yesflag)s install %(testing_packages)s')
#TODO: maybe copy ipkg-build from openwrt git
#cmd.run('%(sudo)s wget https://raw.githubusercontent.com/openwrt/openwrt/master/scripts/ipkg-build SOMEWHERE')
elif arg == 'buildbot':
cmd.run('%(sudo)s apt-get %(yesflag)s install %(buildbot_packages)s')
elif arg == 'python-versions':
if install_packages:
cmd.run('%(sudo)s apt-get %(yesflag)s install %(install_packages)s')
install_packages = None
cmd.run('%(sudo)s apt-get %(yesflag)s install %(python_packages)s')
try:
import install_python
except ImportError:
msg = 'Could not import install_python; skipping python-versions.\n'
sys.stderr.write(msg)
else:
install_python.main(['install_python.py', '-a'])
elif arg == 'scons-versions':
if install_packages:
cmd.run('%(sudo)s apt-get %(yesflag)s install %(install_packages)s')
install_packages = None
try:
import install_scons
except ImportError:
msg = 'Could not import install_scons; skipping scons-versions.\n'
sys.stderr.write(msg)
else:
install_scons.main(['install_scons.py', '-a'])
else:
msg = '%s: unknown argument %s\n'
sys.stderr.write(msg % (argv[0], repr(arg)))
sys.exit(1)
if __name__ == "__main__":
sys.exit(main())
# Local Variables:
# tab-width:4
# indent-tabs-mode:nil
# End:
# vim: set expandtab tabstop=4 shiftwidth=4: