Scons: remove fast_start feature

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@15343 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Bo Peng 2006-10-16 03:26:14 +00:00
parent f3016d70d9
commit 90cbd48fd3

View File

@ -74,7 +74,7 @@ package_string = '%s %s' % (package_name, package_version)
# various cache/log files # various cache/log files
default_log_file = 'scons_lyx.log' default_log_file = 'scons_lyx.log'
env_cache_file = 'env.cache' opt_cache_file = 'opt.cache'
#---------------------------------------------------------- #----------------------------------------------------------
@ -153,7 +153,7 @@ opts.AddOptions(
EnumOption('packaging', 'Packaging method to use.', default_packaging_method, EnumOption('packaging', 'Packaging method to use.', default_packaging_method,
allowed_values = ('windows', 'posix', 'macosx')), allowed_values = ('windows', 'posix', 'macosx')),
# #
BoolOption('fast_start', 'Whether or not use cached tests and keep current config.h', True), BoolOption('fast_start', 'This option is obsolete.', False),
# No precompiled header support (too troublesome to make it work for msvc) # No precompiled header support (too troublesome to make it work for msvc)
# BoolOption('pch', 'Whether or not use pch', False), # BoolOption('pch', 'Whether or not use pch', False),
# enable assertion, (config.h has ENABLE_ASSERTIOS # enable assertion, (config.h has ENABLE_ASSERTIOS
@ -236,23 +236,8 @@ all_options = [x.key for x in opts.options]
true_strings = ('y', 'yes', 'true', 't', '1', 'on' , 'all' ) true_strings = ('y', 'yes', 'true', 't', '1', 'on' , 'all' )
false_strings = ('n', 'no', 'false', 'f', '0', 'off', 'none') false_strings = ('n', 'no', 'false', 'f', '0', 'off', 'none')
# whether or not use current config.h, and cached tests if ARGUMENTS.has_key('fast_start'):
# print 'fast_start option is obsolete'
# if fast_start=yes (default), load variables from env_cache_file
if (not ARGUMENTS.has_key('fast_start') or \
ARGUMENTS['fast_start'] in true_strings) \
and os.path.isfile(env_cache_file):
fast_start = True
cache_file = open(env_cache_file)
env_cache = cPickle.load(cache_file)
cache_file.close()
print '------------ fast_start mode --------------------'
print ' Use cached test results and current config.h'
print ' use fast_start=no to override'
print
else:
fast_start = False
env_cache = {}
# if load_option=yes (default), load saved comand line options # if load_option=yes (default), load saved comand line options
# #
@ -260,26 +245,17 @@ else:
# and tries to be clever in choosing options to load # and tries to be clever in choosing options to load
if (not ARGUMENTS.has_key('load_option') or \ if (not ARGUMENTS.has_key('load_option') or \
ARGUMENTS['load_option'] not in false_strings) \ ARGUMENTS['load_option'] not in false_strings) \
and os.path.isfile(env_cache_file): and os.path.isfile(opt_cache_file):
cache_file = open(env_cache_file) cache_file = open(opt_cache_file)
opt_cache = cPickle.load(cache_file)['arg_cache'] opt_cache = cPickle.load(cache_file)
cache_file.close() cache_file.close()
# import cached options, but we should ignore qt_dir when frontend changes # import cached options, but we should ignore qt_dir when frontend changes
if ARGUMENTS.has_key('frontend') and opt_cache.has_key('frontend') \ if ARGUMENTS.has_key('frontend') and opt_cache.has_key('frontend') \
and ARGUMENTS['frontend'] != opt_cache['frontend'] \ and ARGUMENTS['frontend'] != opt_cache['frontend'] \
and opt_cache.has_key('qt_dir'): and opt_cache.has_key('qt_dir'):
opt_cache.pop('qt_dir') opt_cache.pop('qt_dir')
# some options will require full rebuild
# these are in general things that will change config.h
for arg in ['version_suffix', 'nls', 'boost', 'spell']:
if ARGUMENTS.has_key(arg) and ((not opt_cache.has_key(arg)) or \
ARGUMENTS[arg] != opt_cache[arg]):
if fast_start:
print " ** fast_start is disabled because of the change of option", arg
print
fast_start = False
# and we do not cache some options (dest_dir is obsolete) # and we do not cache some options (dest_dir is obsolete)
for arg in ['fast_start', 'load_option', 'dest_dir']: for arg in ['load_option', 'dest_dir']:
if opt_cache.has_key(arg): if opt_cache.has_key(arg):
opt_cache.pop(arg) opt_cache.pop(arg)
# remove obsolete cached keys (well, SConstruct is evolving. :-) # remove obsolete cached keys (well, SConstruct is evolving. :-)
@ -318,9 +294,10 @@ for arg in ARGUMENTS.keys():
print ' ' + '\n '.join(textwrap.wrap(', '.join(all_options))) print ' ' + '\n '.join(textwrap.wrap(', '.join(all_options)))
Exit(1) Exit(1)
# save arguments # save options used
env_cache['arg_cache'] = ARGUMENTS cache_file = open(opt_cache_file, 'w')
cPickle.dump(ARGUMENTS, cache_file)
cache_file.close()
#--------------------------------------------------------- #---------------------------------------------------------
# Setting up environment # Setting up environment
@ -673,18 +650,13 @@ conf = Configure(env,
) )
# pkg-config? (if not, we use hard-coded options) # pkg-config? (if not, we use hard-coded options)
if not fast_start:
if conf.CheckPkgConfig('0.15.0'): if conf.CheckPkgConfig('0.15.0'):
env['HAS_PKG_CONFIG'] = True env['HAS_PKG_CONFIG'] = True
else: else:
print 'pkg-config >= 0.1.50 is not found' print 'pkg-config >= 0.1.50 is not found'
env['HAS_PKG_CONFIG'] = False env['HAS_PKG_CONFIG'] = False
env_cache['HAS_PKG_CONFIG'] = env['HAS_PKG_CONFIG']
else:
env['HAS_PKG_CONFIG'] = env_cache['HAS_PKG_CONFIG']
# zlib? This is required. (fast_start assumes the existance of zlib) # zlib? This is required.
if not fast_start:
if (not use_vc and not conf.CheckLibWithHeader('z', 'zlib.h', 'C')) \ if (not use_vc and not conf.CheckLibWithHeader('z', 'zlib.h', 'C')) \
or (use_vc and not conf.CheckLibWithHeader('zdll', 'zlib.h', 'C')): or (use_vc and not conf.CheckLibWithHeader('zdll', 'zlib.h', 'C')):
print 'Did not find zdll.lib or zlib.h, exiting!' print 'Did not find zdll.lib or zlib.h, exiting!'
@ -698,12 +670,9 @@ if not fast_start:
else: else:
print 'Did not find iconv or libiconv, exiting!' print 'Did not find iconv or libiconv, exiting!'
Exit(1) Exit(1)
env_cache['ICONV_LIB'] = env['ICONV_LIB']
else:
env['ICONV_LIB'] = env_cache['ICONV_LIB']
# qt libraries? # qt libraries?
if not fast_start:
# #
# qt3 does not use pkg_config # qt3 does not use pkg_config
if frontend == 'qt3': if frontend == 'qt3':
@ -754,7 +723,6 @@ if use_vc:
env['LINKCOM'] = [env['LINKCOM'], 'mt.exe /MANIFEST %s /outputresource:$TARGET;1' % manifest] env['LINKCOM'] = [env['LINKCOM'], 'mt.exe /MANIFEST %s /outputresource:$TARGET;1' % manifest]
# check socket libs # check socket libs
if not fast_start:
socket_libs = [] socket_libs = []
if conf.CheckLib('socket'): if conf.CheckLib('socket'):
socket_libs.append('socket') socket_libs.append('socket')
@ -762,9 +730,6 @@ if not fast_start:
# transport-level interface to networking services. # transport-level interface to networking services.
if conf.CheckLib('nsl'): if conf.CheckLib('nsl'):
socket_libs.append('nsl') socket_libs.append('nsl')
env_cache['SOCKET_LIBS'] = socket_libs
else:
socket_libs = env_cache['SOCKET_LIBS']
# check available boost libs (since lyx1.4 does not use iostream) # check available boost libs (since lyx1.4 does not use iostream)
boost_libs = [] boost_libs = []
@ -772,7 +737,6 @@ for lib in ['signals', 'regex', 'filesystem', 'iostreams']:
if os.path.isdir(os.path.join(top_src_dir, 'boost', 'libs', lib)): if os.path.isdir(os.path.join(top_src_dir, 'boost', 'libs', lib)):
boost_libs.append(lib) boost_libs.append(lib)
if not fast_start:
# check boost libraries # check boost libraries
boost_opt = ARGUMENTS.get('boost', 'auto') boost_opt = ARGUMENTS.get('boost', 'auto')
# check for system boost # check for system boost
@ -805,15 +769,7 @@ if not fast_start:
else: else:
included_boost = False included_boost = False
(boost_libraries, boost_libpath, env['BOOST_INC_PATH']) = res (boost_libraries, boost_libpath, env['BOOST_INC_PATH']) = res
env_cache['BOOST_LIBRARIES'] = boost_libraries
env_cache['INCLUDED_BOOST'] = included_boost
env_cache['BOOST_INC_PATH'] = env['BOOST_INC_PATH']
env_cache['BOOST_LIBPATH'] = boost_libpath
else:
boost_libraries = env_cache['BOOST_LIBRARIES']
included_boost = env_cache['INCLUDED_BOOST']
env['BOOST_INC_PATH'] = env_cache['BOOST_INC_PATH']
boost_libpath = env_cache['BOOST_LIBPATH']
if boost_libpath is not None: if boost_libpath is not None:
env.AppendUnique(LIBPATH = [boost_libpath]) env.AppendUnique(LIBPATH = [boost_libpath])
@ -821,7 +777,6 @@ if boost_libpath is not None:
env['ENABLE_NLS'] = env['nls'] env['ENABLE_NLS'] = env['nls']
if not fast_start:
if not env['ENABLE_NLS']: if not env['ENABLE_NLS']:
intl_libs = [] intl_libs = []
included_gettext = False included_gettext = False
@ -831,7 +786,11 @@ if not fast_start:
# check for system gettext # check for system gettext
succ = False succ = False
if gettext_opt in ['auto', 'system']: if gettext_opt in ['auto', 'system']:
if conf.CheckLib('intl'): if conf.CheckFunc('gettext'):
included_gettext = False
intl_libs = []
succ = True
elif conf.CheckLib('intl'):
included_gettext = False included_gettext = False
intl_libs = ['intl'] intl_libs = ['intl']
succ = True succ = True
@ -846,30 +805,17 @@ if not fast_start:
# we do not need to set LIBPATH now. # we do not need to set LIBPATH now.
included_gettext = True included_gettext = True
intl_libs = ['included_intl'] intl_libs = ['included_intl']
env_cache['INCLUDED_GETTEXT'] = included_gettext
env_cache['INTL_LIBS'] = intl_libs
else:
included_gettext = env_cache['INCLUDED_GETTEXT']
intl_libs = env_cache['INTL_LIBS']
# #
# check for msgfmt command # check for msgfmt command
if not fast_start:
env['MSGFMT'] = conf.CheckCommand('msgfmt') env['MSGFMT'] = conf.CheckCommand('msgfmt')
env_cache['MSGFMT'] = env['MSGFMT']
else:
env['MSGFMT'] = env_cache['MSGFMT']
# cygwin packaging requires the binaries to be stripped # cygwin packaging requires the binaries to be stripped
if platform_name == 'cygwin': if platform_name == 'cygwin':
if not fast_start:
env['STRIP'] = conf.CheckCommand('strip') env['STRIP'] = conf.CheckCommand('strip')
env_cache['STRIP'] = env['STRIP']
else:
env['STRIP'] = env_cache['STRIP']
# check uic and moc commands for qt frontends # check uic and moc commands for qt frontends
if not fast_start:
if frontend[:2] == 'qt' and (conf.CheckCommand('uic') == None \ if frontend[:2] == 'qt' and (conf.CheckCommand('uic') == None \
or conf.CheckCommand('moc') == None): or conf.CheckCommand('moc') == None):
print 'uic or moc command is not found for frontend', frontend print 'uic or moc command is not found for frontend', frontend
@ -893,8 +839,6 @@ if platform_name == 'win32' and mode == 'debug' and use_vc:
# check the existence of config.h # check the existence of config.h
config_h = os.path.join(env.Dir('$BUILDDIR/common').path, 'config.h') config_h = os.path.join(env.Dir('$BUILDDIR/common').path, 'config.h')
boost_config_h = os.path.join(env.Dir('$BUILDDIR/boost').path, 'config.h') boost_config_h = os.path.join(env.Dir('$BUILDDIR/boost').path, 'config.h')
if not fast_start or not os.path.isfile(boost_config_h) \
or not os.path.isfile(config_h):
# #
print "Creating %s..." % boost_config_h print "Creating %s..." % boost_config_h
# #
@ -1209,7 +1153,6 @@ int mkstemp(char*);
# USE_ASPELL etc does not go through result # USE_ASPELL etc does not go through result
if result.has_key(key): if result.has_key(key):
env[key] = result[key] env[key] = result[key]
env_cache[key] = env[key]
# #
# if nls=yes and gettext=included, create intl/config.h # if nls=yes and gettext=included, create intl/config.h
@ -1323,26 +1266,7 @@ int mkstemp(char*);
# USE_ASPELL etc does not go through result # USE_ASPELL etc does not go through result
if result.has_key(key): if result.has_key(key):
env[key] = result[key] env[key] = result[key]
env_cache[key] = env[key]
else:
#
# this comes as a big surprise, without this line
# (doing nothing obvious), adding fast_start=yes
# to a build with fast_start=no will result in a rebuild
# Note that the exact header file to check does not matter
conf.CheckCHeader('io.h')
# only a few variables need to be rescanned
for key in ['USE_ASPELL', 'USE_PSPELL', 'USE_ISPELL', 'HAVE_FCNTL',\
'HAVE_LIBGDI32', 'HAVE_LIBAIKSAURUS', 'AIKSAURUS_LIB']:
env[key] = env_cache[key]
#
# nls related keys
if env['nls'] and included_gettext:
# only a few variables need to be rescanned
for key in ['HAVE_ASPRINTF', 'HAVE_WPRINTF', 'HAVE_SNPRINTF', \
'HAVE_POSIX_PRINTF', 'HAVE_LIBC']:
env[key] = env_cache[key]
# this looks misplaced, but intl/libintl.h is needed by src/message.C # this looks misplaced, but intl/libintl.h is needed by src/message.C
if env['nls'] and included_gettext: if env['nls'] and included_gettext:
@ -1507,7 +1431,6 @@ if frontend in ['qt3', 'qt4']:
X11: %s X11: %s
''' % (qt_inc_path, qt_lib_path, env['X11']) ''' % (qt_inc_path, qt_lib_path, env['X11'])
if not fast_start:
print env['VERSION_INFO'] print env['VERSION_INFO']
# #
@ -1534,10 +1457,6 @@ if logfile != '' or platform_name == 'win32':
# -h will print out help info # -h will print out help info
Help(opts.GenerateHelpText(env)) Help(opts.GenerateHelpText(env))
# save environment settings (for fast_start option)
cache_file = open(env_cache_file, 'w')
cPickle.dump(env_cache, cache_file)
cache_file.close()
#---------------------------------------------------------- #----------------------------------------------------------
@ -2028,9 +1947,9 @@ if build_msvs_projects:
the full path to start debug them. the full path to start debug them.
''' '''
if rebuildTargetOnly: if rebuildTargetOnly:
cmds = 'fast_start=yes rebuild='+target cmds = 'rebuild='+target
else: else:
cmds = 'fast_start=yes' cmds = ''
if full_target is None: if full_target is None:
build_target = target build_target = target
else: else: