aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorlloyd <[email protected]>2010-07-09 19:16:20 +0000
committerlloyd <[email protected]>2010-07-09 19:16:20 +0000
commita2775c5bd9f6979da3e1981cdb1dec250e274fea (patch)
tree8738f30bf72b178ed5fc9a2592c55b1c46ba1f1d
parent82ae680d8887ce34c7ade3ffeb85c9f7ac07e812 (diff)
Drop support for running configure with Python 2.4. This allows
removing several workarounds for limitations in optparse in that release, and also allows using the ternary operator added in 2.5. As far as I can tell, the only still active release of any Linux/BSD distro that uses 2.4 is RHEL5. The beta of RHEL6 has 2.6, and it seems likely that RHEL6 will be out before 1.10.0.
-rwxr-xr-xconfigure.py99
-rw-r--r--doc/building.tex4
-rw-r--r--doc/log.txt1
-rw-r--r--src/build-data/cc/gcc.txt2
-rw-r--r--src/build-data/cc/icc.txt2
5 files changed, 34 insertions, 74 deletions
diff --git a/configure.py b/configure.py
index eb566cfee..d93db2b83 100755
--- a/configure.py
+++ b/configure.py
@@ -2,14 +2,16 @@
"""
Configuration program for botan (http://botan.randombit.net/)
- (C) 2009 Jack Lloyd
+ (C) 2009-2010 Jack Lloyd
Distributed under the terms of the Botan license
Tested with
- CPython 2.4, 2.5, 2.6 - OK
+ CPython 2.5, 2.6 - OK
Jython 2.5 - Target detection does not work (use --os and --cpu)
- CPython 2.3 and earlier are not supported
+ CPython 2.4 and earlier are not supported
+
+ Use the 2to3 script to use with Python 3
Has not been tested with IronPython or PyPy
"""
@@ -129,12 +131,6 @@ Handle command line options
"""
def process_command_line(args):
- # This is just an implementation of Optik's append_const action,
- # but that is not available in Python 2.4's optparse, so use a
- # callback instead
- def optparse_append_const(option, opt, value, parser, dest, arg):
- parser.values.__dict__[dest].append(arg)
-
parser = OptionParser(
formatter = IndentedHelpFormatter(max_help_position = 50),
version = BuildConfigurationInformation.version_string)
@@ -164,36 +160,20 @@ def process_command_line(args):
dest='unaligned_mem', action='store_false',
help=SUPPRESS_HELP)
- target_group.add_option('--enable-isa', metavar='ISALIST',
- dest='enable_isa_extns',
- action='append', default=[],
- help=SUPPRESS_HELP)
-
- target_group.add_option('--disable-isa', metavar='ISALIST',
- dest='disable_isa_extns',
- action='append', default=[],
- help=SUPPRESS_HELP)
-
for isa_extn_name in ['SSE2', 'SSSE3', 'AltiVec', 'AES-NI']:
isa_extn = isa_extn_name.lower()
target_group.add_option('--enable-%s' % (isa_extn),
- action='callback',
help='enable use of %s' % (isa_extn_name),
- callback=optparse_append_const,
- callback_kwargs = {
- 'dest': 'enable_isa_extns',
- 'arg': isa_extn }
- )
+ action='append_const',
+ const=isa_extn,
+ dest='enable_isa_extns')
target_group.add_option('--disable-%s' % (isa_extn),
- action='callback',
help=SUPPRESS_HELP,
- callback=optparse_append_const,
- callback_kwargs = {
- 'dest': 'disable_isa_extns',
- 'arg': isa_extn }
- )
+ action='append_const',
+ const=isa_extn,
+ dest='disable_isa_extns')
build_group = OptionGroup(parser, 'Build options')
@@ -256,10 +236,10 @@ def process_command_line(args):
mods_group = OptionGroup(parser, 'Module selection')
mods_group.add_option('--enable-modules', dest='enabled_modules',
- metavar='MODS', action='append', default=[],
+ metavar='MODS', action='append',
help='enable specific modules')
mods_group.add_option('--disable-modules', dest='disabled_modules',
- metavar='MODS', action='append', default=[],
+ metavar='MODS', action='append',
help='disable specific modules')
mods_group.add_option('--no-autoload', action='store_true', default=False,
help='disable automatic loading')
@@ -270,19 +250,15 @@ def process_command_line(args):
mods_group.add_option('--with-%s' % (mod),
help='add support for using %s' % (lib),
- action='callback',
- callback=optparse_append_const,
- callback_kwargs = {
- 'dest': 'enabled_modules', 'arg': mod }
- )
+ action='append_const',
+ const=mod,
+ dest='enabled_modules')
mods_group.add_option('--without-%s' % (mod),
help=SUPPRESS_HELP,
- action='callback',
- callback=optparse_append_const,
- callback_kwargs = {
- 'dest': 'disabled_modules', 'arg': mod }
- )
+ action='append_const',
+ const=mod,
+ dest='disabled_modules')
install_group = OptionGroup(parser, 'Installation options')
@@ -334,6 +310,8 @@ def process_command_line(args):
options.with_endian))
def parse_multiple_enable(modules):
+ if modules is None:
+ return []
return sorted(set(flatten([s.split(',') for s in modules])))
options.enabled_modules = parse_multiple_enable(options.enabled_modules)
@@ -497,10 +475,7 @@ class ModuleInfo(object):
self.mp_bits = int(self.mp_bits)
- if self.uses_tr1 == 'yes':
- self.uses_tr1 = True
- else:
- self.uses_tr1 = False
+ self.uses_tr1 = (True if self.uses_tr1 == 'yes' else False)
def sources(self):
return self.source
@@ -521,7 +496,6 @@ class ModuleInfo(object):
return False
if self.need_isa != None:
- logging.debug('Checking if %s in %s' % (self.need_isa, options.disable_isa_extns))
if self.need_isa in options.disable_isa_extns:
return False # explicitly disabled
@@ -591,10 +565,7 @@ class ArchInfo(object):
self.submodel_aliases = force_to_dict(self.submodel_aliases)
- if self.unaligned == 'ok':
- self.unaligned_ok = 1
- else:
- self.unaligned_ok = 0
+ self.unaligned_ok = (1 if self.unaligned == 'ok' else 0)
"""
Return ISA extensions specific to this CPU
@@ -677,7 +648,7 @@ class CompilerInfo(object):
'dll_import_flags': '',
'ar_command': None,
'makefile_style': '',
- 'compiler_has_tr1': False,
+ 'has_tr1': False,
})
self.so_link_flags = force_to_dict(self.so_link_flags)
@@ -770,7 +741,7 @@ class CompilerInfo(object):
return ['USE_BOOST_TR1']
elif with_tr1 == 'system':
return ['USE_STD_TR1']
- elif self.compiler_has_tr1:
+ elif self.has_tr1:
return ['USE_STD_TR1']
return []
@@ -797,16 +768,10 @@ class OsInfo(object):
self.ar_needs_ranlib = bool(self.ar_needs_ranlib)
- if self.build_shared == 'yes':
- self.build_shared = True
- else:
- self.build_shared = False
+ self.build_shared = (True if self.build_shared == 'yes' else False)
def ranlib_command(self):
- if self.ar_needs_ranlib:
- return 'ranlib'
- else:
- return 'true' # no-op
+ return ('ranlib' if self.ar_needs_ranlib else 'true')
def defines(self):
return ['TARGET_OS_IS_%s' % (self.basename.upper())] + \
@@ -1250,10 +1215,7 @@ def setup_build(build_config, options, template_vars):
if style == 'nmake':
return 'nmake.in'
elif style == 'unix':
- if options.build_shared_lib:
- return 'unix_shr.in'
- else:
- return 'unix.in'
+ return ('unix_shr.in' if options.build_shared_lib else 'unix.in')
else:
raise Exception('Unknown makefile style "%s"' % (style))
@@ -1576,10 +1538,7 @@ def main(argv = None):
options.extra_flags = ' -fpermissive'
if options.with_tr1 == None:
- if ccinfo[options.compiler].compiler_has_tr1:
- options.with_tr1 = 'system'
- else:
- options.with_tr1 = 'none'
+ options.with_tr1 = ('system' if ccinfo[options.compiler].has_tr1 else 'none')
if options.gen_amalgamation:
if options.asm_ok:
diff --git a/doc/building.tex b/doc/building.tex
index 68b433924..36a9f1140 100644
--- a/doc/building.tex
+++ b/doc/building.tex
@@ -42,7 +42,7 @@ the build system, primarily due to lack of access. Please contact the
maintainer if you would like to build Botan on such a system.
Botan's build is controlled by configure.py, which is a Python
-script. Python 2.4 or later is required. If you want to use the
+script. Python 2.5 or later is required. If you want to use the
(incompatible) Python 3, you must first run the \texttt{2to3} script
on it.
@@ -65,7 +65,7 @@ spot, you might need to prefix the \texttt{configure.py} command with
The first step is to run \filename{configure.py}, which is a Python
script that creates various directories, config files, and a Makefile
-for building everything. The script requires at least Python 2.4; any
+for building everything. The script requires at least Python 2.5; any
later version of Python 2.x should also work. Python 3.1 will also
work but requires an extra step, see the section ``Using Python 3.1'',
later in this document.
diff --git a/doc/log.txt b/doc/log.txt
index 42d749a4b..4e3c00372 100644
--- a/doc/log.txt
+++ b/doc/log.txt
@@ -1,5 +1,6 @@
* 1.9.10-dev, ????-??-??
+ - Drop support for building with Python 2.4
- Fix benchmarking of block ciphers in ECB mode
- Rename S2K to PBKDF
diff --git a/src/build-data/cc/gcc.txt b/src/build-data/cc/gcc.txt
index 06840b362..700ee0164 100644
--- a/src/build-data/cc/gcc.txt
+++ b/src/build-data/cc/gcc.txt
@@ -2,7 +2,7 @@ macro_name GCC
binary_name g++
-compiler_has_tr1 yes
+has_tr1 yes
compile_option "-c "
output_to_option "-o "
diff --git a/src/build-data/cc/icc.txt b/src/build-data/cc/icc.txt
index ea7936870..e8d14c581 100644
--- a/src/build-data/cc/icc.txt
+++ b/src/build-data/cc/icc.txt
@@ -2,7 +2,7 @@ macro_name INTEL
binary_name icpc
-compiler_has_tr1 yes
+has_tr1 yes
compile_option "-c "
output_to_option "-o "