From: <mk...@us...> - 2004-03-14 04:28:17
|
Update of /cvsroot/csp/APPLICATIONS/SimData In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6313 Modified Files: CHANGES.current README SConstruct build_config.py build_support.py Log Message: Index: CHANGES.current =================================================================== RCS file: /cvsroot/csp/APPLICATIONS/SimData/CHANGES.current,v retrieving revision 1.98 retrieving revision 1.99 diff -C2 -d -r1.98 -r1.99 *** CHANGES.current 3 Feb 2004 19:49:56 -0000 1.98 --- CHANGES.current 14 Mar 2004 04:19:23 -0000 1.99 *************** *** 1,4 **** --- 1,10 ---- Version 0.4.0 (in progress) =========================== + 2004-03-13: onsight + * Some enhancements to the scons script (e.g. building + debian packages, fix a popen3 issue under windowns). + * Minor swig interface cleanup of std_vector.i includes. + * Added source code file and line numbers to log output. + 2004-02-03: delta * Added a quick hack in Exception.h to fix a weird *************** *** 17,32 **** as before. 2003-01-31: onsight * Added debian packaging files (experimental). * Added 'docs --clean' target to scons. - * Fixed the source directory for building scons sdist. * Cleaned up swig std includes in the various interface files. Now all loaded up front in cSimData.i. - * Added 'test' target to scons to run the unittests. - 2003-01-30: onsight * Starting with version 1.3.20 of SWIG, the python runtime --- 23,49 ---- as before. + 2003-02-01: onsight + * Renamed CHANGELOG* to ChangeLog* to be slightly more GNUish, + plus vim picks up the syntax highlighting automatically now. + + * Readded a Swig builder to scons to properly track dependencies + between the module, the wrapper, and the interface. + * Fixed the return value of the dist wrapper; dists will now be + reassembled only if necessary. + * Added a very basic debs target, which extracts the sdist archive + and builds the deb. No dependency tracking yet, so it does all + the work everytime. + 2003-01-31: onsight * Added debian packaging files (experimental). * Added 'docs --clean' target to scons. * Fixed the source directory for building scons sdist. + * Added 'test' target to scons to run the unittests. + * Reenabled swig dependency tracking in scons. * Cleaned up swig std includes in the various interface files. Now all loaded up front in cSimData.i. 2003-01-30: onsight * Starting with version 1.3.20 of SWIG, the python runtime *************** *** 105,109 **** * Expanded test_Objects.cpp test to check the interface registry and object introspection. ! 2003-10-23: onsight * Separated Singleton class into Singleton.h (was InterfaceRegistry.h). --- 122,126 ---- * Expanded test_Objects.cpp test to check the interface registry and object introspection. ! 2003-10-23: onsight * Separated Singleton class into Singleton.h (was InterfaceRegistry.h). Index: README =================================================================== RCS file: /cvsroot/csp/APPLICATIONS/SimData/README,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** README 21 Oct 2003 04:53:59 -0000 1.8 --- README 14 Mar 2004 04:19:23 -0000 1.9 *************** *** 3,7 **** Release 0.4.0 ! Copyright (C) 2002, 2003 Mark Rose <mr...@st...> See COPYING for details. --- 3,7 ---- Release 0.4.0 ! Copyright (C) 2002-2004 Mark Rose <mr...@st...> See COPYING for details. Index: SConstruct =================================================================== RCS file: /cvsroot/csp/APPLICATIONS/SimData/SConstruct,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** SConstruct 1 Feb 2004 12:06:43 -0000 1.5 --- SConstruct 14 Mar 2004 04:19:23 -0000 1.6 *************** *** 97,100 **** --- 97,101 ---- Exit(1) env = conf.Finish() + addSwigSupport(env) ConfigPlatform(env) *************** *** 103,107 **** Export('env') ! builddir = SelectBuildDir(env, "Build") BuildDir(builddir, 'Source') --- 104,108 ---- Export('env') ! builddir = SelectBuildDir(env, "build") BuildDir(builddir, 'Source') *************** *** 114,117 **** --- 115,119 ---- package.sdist() package.bdist() + package.debian() Index: build_config.py =================================================================== RCS file: /cvsroot/csp/APPLICATIONS/SimData/build_config.py,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** build_config.py 1 Feb 2004 10:01:03 -0000 1.2 --- build_config.py 14 Mar 2004 04:19:23 -0000 1.3 *************** *** 16,23 **** self.SWIGFLAGS = ' -c++ -python -noexcept -IInclude -I%s' % self.PYTHON_INC if compareVersions(version, '1.3.20') >= 0: ! self.SWIGFLAGS = self.SWIGFLAGS + ' -runtime' else: ! self.SWIGFLAGS = self.SWIGFLAGS + ' -c' ! self.SHLINKLIBS.append('swigpy') --- 16,23 ---- self.SWIGFLAGS = ' -c++ -python -noexcept -IInclude -I%s' % self.PYTHON_INC if compareVersions(version, '1.3.20') >= 0: ! self.SWIGFLAGS = self.SWIGFLAGS + ' -runtime' else: ! self.SWIGFLAGS = self.SWIGFLAGS + ' -c' ! self.SHLINKLIBS.append('swigpy') *************** *** 31,38 **** self.CPPPATH = ['#/Include', self.PYTHON_INC] self.SHLINKFLAGS = ' /MACHINE:I386 /LIBPATH:%s /NODEFAULTLIB:LIBC' % self.PYTHON_LIB ! self.SHLINKLIBS = ['dl', 'swigpy'] ! self.SWIGFLAGS = ' -c -c++ -python -noexcept -IInclude -I%s' % self.PYTHON_INC self.CXXFILESUFFIX = '.cpp' self.ARCHIVE_FORMATS = ['.zip'] --- 31,46 ---- self.CPPPATH = ['#/Include', self.PYTHON_INC] self.SHLINKFLAGS = ' /MACHINE:I386 /LIBPATH:%s /NODEFAULTLIB:LIBC' % self.PYTHON_LIB ! self.SHLINKLIBS = [] self.CXXFILESUFFIX = '.cpp' self.ARCHIVE_FORMATS = ['.zip'] + self.configSwig(env) + def configSwig(self, env): + version = env['SWIG_VERSION'] + self.SWIGFLAGS = ' -c++ -python -noexcept -IInclude -I%s' % self.PYTHON_INC + if compareVersions(version, '1.3.20') >= 0: + self.SWIGFLAGS = self.SWIGFLAGS + ' -runtime' + else: + self.SWIGFLAGS = self.SWIGFLAGS + ' -c' + self.SHLINKLIBS.append('swigpy') Index: build_support.py =================================================================== RCS file: /cvsroot/csp/APPLICATIONS/SimData/build_support.py,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** build_support.py 1 Feb 2004 10:01:03 -0000 1.2 --- build_support.py 14 Mar 2004 04:19:23 -0000 1.3 *************** *** 125,129 **** def CustomConfigure(env): ! conf = env.Configure() addConfigTests(conf) return conf --- 125,129 ---- def CustomConfigure(env): ! conf = env.Configure(log_file='#/.config.log') addConfigTests(conf) return conf *************** *** 185,189 **** ok = 0 context.Message("Checking for swig...") ! swig_in, swig_out, swig_err = os.popen3('%s -version' % SWIG, 't', 1024) if swig_err is not None: output = swig_err.readlines() --- 185,190 ---- ok = 0 context.Message("Checking for swig...") ! #swig_in, swig_out, swig_err = os.popen3('%s -version' % SWIG, 't', 1024) ! swig_err = os.popen('%s -version 2>&1' % SWIG, 'rt', 1024) if swig_err is not None: output = swig_err.readlines() *************** *** 206,222 **** configure_tests['checkSwig'] = checkSwig ! ! def addSwigLib(env): ! # XXX this should work according to the scons dev docs, but builders ! # don't seem to have a Copy() method yet. ! #swiglib = env.SharedLibrary.Copy(SHLIBPREFIX = '', LIBS = env["SWLIBS"]) ! #env.Append(BUILDERS = {'SwigLibrary': swiglib}) ! pass def addSwigBuild(env): ! action = '$SWIG $SWFLAGS $_CPPINCFLAGS -o ${TARGETS[0]} $SOURCES' ! SwigBuild = Builder(action=action, ! src_suffix=".i") ! env.Append(BUILDERS = {'SwigBuild': SwigBuild}) def addSwigDep(env): --- 207,229 ---- configure_tests['checkSwig'] = checkSwig ! ! def emitSwig(target, source, env): ! target = [] ! assert(len(source)==1) ! ext = env['CXXFILESUFFIX'] ! for s in source: ! wrapper = os.path.splitext(str(s))[0]+'_wrap.'+ext ! target.append(wrapper) ! # XXX ! # Module name really should be based on the %module ! # directive in the interface file. ! module = os.path.splitext(str(s))[0]+'.py' ! target.append(module) ! return (target, source) def addSwigBuild(env): ! builder = Builder(action = '$SWIG $SWIGFLAGS -o ${TARGETS[0]} $SOURCE', ! emitter = emitSwig) ! env.Append(BUILDERS = {'Swig': builder}) def addSwigDep(env): *************** *** 227,231 **** deps = map(lambda x: "#/"+x.strip(), deps.split('\\'))[1:] return deps ! scanner = Scanner(function = SwigScanner, skeys = ['.i'], recursive = 0) env.Append(SCANNERS = scanner) --- 234,238 ---- deps = map(lambda x: "#/"+x.strip(), deps.split('\\'))[1:] return deps ! scanner = Scanner(name = 'SwigScanner', function = SwigScanner, skeys = ['.i'], recursive = 0) env.Append(SCANNERS = scanner) *************** *** 235,274 **** env['SWIG'] = SWIG addSwigDep(env) - addSwigLib(env) addSwigBuild(env) - # def addSDist(env): - # def copy(target, source, env): - # info = env["PACKAGE_INFO"] - # base = '%s-%s' % (info.package, info.version) - # dist = os.path.join('dist', base) - # makepaths = {} - # for src in map(str, source): - # dir = os.path.join(dist, os.path.dirname(src)) - # dst = os.path.join(dist, src) - # if not makepaths.has_key(dir): - # makepaths[dir] = 1 - # if not os.path.exists(dir): - # os.makedirs(dir) - #print "copy %s -> %s" % (src, dst) - # shutil.copy2(src, dst) - #print str(target[0]) - #os.system('tar -C %s -zcf %s.tgz %s' % ('dist', base, base)) - #--------- - #env["TARFLAGS"] = '-C dist -cz' - #Action(env["TARCOM"])(base+'.tgz', dist, env) - # def emitter(target, source, env): - # info = env["PACKAGE_INFO"] - # base = '%s-%s' % (info.package, info.version) - # dist = os.path.join('#/dist', base) - # return (dist+'.tgz', source) - # def report(target, source, env): - # info = env["PACKAGE_INFO"] - # base = '%s-%s' % (info.package, info.version) - # dist = os.path.join('dist', base) - # return 'copying sources to %s...' % dist - # SDist = Builder(action=Action(copy, report), emitter=emitter) - # env.Append(BUILDERS = {"SDist": SDist}) - ############################################################ --- 242,247 ---- *************** *** 306,309 **** --- 279,283 ---- class Package: + def _addDistBuilder(self): def DistAction(target, source, env): *************** *** 341,345 **** raise SCons.Errors.UserError(error) return 0 ! Action(command)(target, "", env) def DistReport(target, source, env): print "Creating package archive %s..." % str(target[0]) --- 315,319 ---- raise SCons.Errors.UserError(error) return 0 ! return Action(command)(target, "", env) def DistReport(target, source, env): print "Creating package archive %s..." % str(target[0]) *************** *** 362,365 **** --- 336,340 ---- self.source_content = [] self.binary_content = [] + self.dists = {} def addManifest(self, filename, type='both'): *************** *** 409,413 **** def dump(self): ! print map(str, self.content) def distpath(self, base=''): --- 384,388 ---- def dump(self): ! pass #print map(str, self.content) def distpath(self, base=''): *************** *** 435,453 **** def _getArchiveFormats(self): env = self.env ! try: ! formats = env['ARCHIVE_FORMATS'] ! except KeyError: ! formats = None if formats is None: try: ! formats = [self.default_format[os.name]] except KeyError: error = "Don't know how to create archive on platform '%s'" % os.name raise SCons.Errors.UserError(error) ! else: ! formats = formats.split() ! return formats ! def _archiveExtension(self, format): if format in ['gztar', 'tar.gz', 'gzip', 'gz', 'tgz']: return '.tar.gz' --- 410,423 ---- def _getArchiveFormats(self): env = self.env ! formats = getattr(env, 'ARCHIVE_FORMATS', None) if formats is None: try: ! formats = self.default_format[os.name] except KeyError: error = "Don't know how to create archive on platform '%s'" % os.name raise SCons.Errors.UserError(error) ! return formats.split() ! def _getArchiveExtension(self, format): if format in ['gztar', 'tar.gz', 'gzip', 'gz', 'tgz']: return '.tar.gz' *************** *** 474,482 **** ret.append(env.LinkFile(target, source)) for format in formats: ! ext = self._archiveExtension(format) if ext is None: error = "Don't know how to create distribution archive format '%s'" % format raise SCons.Errors.UserError(error) ret.append(env.DistArchive(dist+ext, dst)) env.Alias(alias, ret) --- 444,453 ---- ret.append(env.LinkFile(target, source)) for format in formats: ! ext = self._getArchiveExtension(format) if ext is None: error = "Don't know how to create distribution archive format '%s'" % format raise SCons.Errors.UserError(error) ret.append(env.DistArchive(dist+ext, dst)) + self.dists[alias] = ret env.Alias(alias, ret) *************** *** 492,495 **** --- 463,485 ---- env.Alias('install', install_package + install_headers) + def debian(self): + env = self.env + info = self.info + base = self.base() + path = self.distpath('debian') + user = os.environ.get('USER', '') + cmd = ['rm -rf %s && mkdir -p %s' % (path, path), + 'cd %s && tar -vxzf ../%s-src.tar.gz && mv %s-src %s' % (path, base, base, base.lower()), + 'cd %s/%s && LOGNAME="%s" dpkg-buildpackage -rfakeroot -d "-i.sconsign|.pyc|debian|.cache"' % (path, base.lower(), user)] + env.Command('debs', self.dists['sdist'], cmd) + + def setTargets(self, targets, default=1): + self.targets = targets + if default: self.env.Default(targets) + + def unitTests(self, command): + self.env.Depends('unittests', self.targets) + self.env.Alias('test', self.env.Command('unittests', '', command)) + def Prefix(dir, names): if type(names) == type(''): *************** *** 533,534 **** --- 523,525 ---- return dict.get(attr,None) + |