--- Begin Message ---
- To: Debian Bug Tracking System <submit@bugs.debian.org>
- Subject: unblock: gtkimageview/0_1.6.4+dfsg-0.1
- From: Scott Kitterman <debian@kitterman.com>
- Date: Sat, 28 Jul 2012 23:10:54 -0400
- Message-id: <20120729031054.11146.14487.reportbug@Scott-Latitude-E6320>
Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock
Please unblock package gtkimageview
Fixes RC bug #654472.
The diff is slightly painful, but it's just the unpacked waf binary. It
builds a package with an identical file list.
unblock gtkimageview/0_1.6.4+dfsg-0.1
diff -Nru gtkimageview-1.6.4/debian/changelog gtkimageview-1.6.4+dfsg/debian/changelog
--- gtkimageview-1.6.4/debian/changelog 2012-07-28 23:00:04.000000000 -0400
+++ gtkimageview-1.6.4+dfsg/debian/changelog 2012-07-28 23:00:04.000000000 -0400
@@ -1,3 +1,11 @@
+gtkimageview (1.6.4+dfsg-0.1) unstable; urgency=low
+
+ * Non-maintainer upload.
+ * Unpack waf binary to produce source in preferred form of modification
+ (Closes: #654472)
+
+ -- Scott Kitterman <scott@kitterman.com> Sat, 28 Jul 2012 22:52:32 -0400
+
gtkimageview (1.6.4-1) unstable; urgency=low
* New upstream release
Binary files /tmp/Q95NIBajEe/gtkimageview-1.6.4/gtkdoc.pyc and /tmp/KMUsdKoHFj/gtkimageview-1.6.4+dfsg/gtkdoc.pyc differ
Binary files /tmp/Q95NIBajEe/gtkimageview-1.6.4/waf and /tmp/KMUsdKoHFj/gtkimageview-1.6.4+dfsg/waf differ
diff -Nru gtkimageview-1.6.4/wafadmin/Build.py gtkimageview-1.6.4+dfsg/wafadmin/Build.py
--- gtkimageview-1.6.4/wafadmin/Build.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Build.py 2009-04-04 19:27:22.000000000 -0400
@@ -0,0 +1,583 @@
+#! /usr/bin/env python
+# encoding: utf-8
+import sys
+if sys.hexversion < 0x020400f0: from sets import Set as set
+import os,sys,errno,re,glob,gc,time,shutil
+try:import cPickle
+except:import pickle as cPickle
+import Runner,TaskGen,Node,Scripting,Utils,Environment,Task,Logs,Options
+from Logs import debug,error,info
+from Constants import*
+SAVED_ATTRS='root srcnode bldnode node_sigs node_deps raw_deps task_sigs id_nodes'.split()
+bld=None
+class BuildError(Utils.WafError):
+ def __init__(self,b=None,t=[]):
+ self.bld=b
+ self.tasks=t
+ self.ret=1
+ Utils.WafError.__init__(self,self.format_error())
+ def format_error(self):
+ lst=['Build failed']
+ for tsk in self.tasks:
+ txt=tsk.format_error()
+ if txt:lst.append(txt)
+ return'\n'.join(lst)
+class BuildContext(Utils.Context):
+ def __init__(self):
+ global bld
+ bld=self
+ self.task_manager=Task.TaskManager()
+ self.id_nodes=0
+ self.idx={}
+ self.all_envs={}
+ self.bdir=''
+ self.path=None
+ self.deps_man=Utils.DefaultDict(list)
+ self.cache_node_abspath={}
+ self.cache_scanned_folders={}
+ self.uninstall=[]
+ for v in'cache_node_abspath task_sigs node_deps raw_deps node_sigs'.split():
+ var={}
+ setattr(self,v,var)
+ self.cache_dir_contents={}
+ self.all_task_gen=[]
+ self.task_gen_cache_names={}
+ self.cache_sig_vars={}
+ self.log=None
+ self.root=None
+ self.srcnode=None
+ self.bldnode=None
+ class node_class(Node.Node):
+ pass
+ self.node_class=node_class
+ self.node_class.__module__="Node"
+ self.node_class.__name__="Nodu"
+ self.node_class.bld=self
+ def __copy__(self):
+ raise Utils.WafError('build contexts are not supposed to be cloned')
+ def load(self):
+ try:
+ env=Environment.Environment(os.path.join(self.cachedir,'build.config.py'))
+ except(IOError,OSError):
+ pass
+ else:
+ if env['version']<HEXVERSION:
+ raise Utils.WafError('Version mismatch! reconfigure the project')
+ for t in env['tools']:
+ self.setup(**t)
+ try:
+ gc.disable()
+ f=data=None
+ Node.Nodu=self.node_class
+ try:
+ f=open(os.path.join(self.bdir,DBFILE),'rb')
+ except(IOError,EOFError):
+ pass
+ try:
+ if f:data=cPickle.load(f)
+ except AttributeError:
+ if Logs.verbose>1:raise
+ if data:
+ for x in SAVED_ATTRS:setattr(self,x,data[x])
+ else:
+ debug('build: Build cache loading failed')
+ finally:
+ if f:f.close()
+ gc.enable()
+ def save(self):
+ gc.disable()
+ self.root.__class__.bld=None
+ Node.Nodu=self.node_class
+ db=os.path.join(self.bdir,DBFILE)
+ file=open(db+'.tmp','wb')
+ data={}
+ for x in SAVED_ATTRS:data[x]=getattr(self,x)
+ cPickle.dump(data,file,-1)
+ file.close()
+ try:os.unlink(db)
+ except OSError:pass
+ os.rename(db+'.tmp',db)
+ self.root.__class__.bld=self
+ gc.enable()
+ def clean(self):
+ debug('build: clean called')
+ precious=set([])
+ for env in self.all_envs.values():
+ for x in env[CFG_FILES]:
+ node=self.srcnode.find_resource(x)
+ if node:
+ precious.add(node.id)
+ def clean_rec(node):
+ for x in node.childs.keys():
+ nd=node.childs[x]
+ tp=nd.id&3
+ if tp==Node.DIR:
+ clean_rec(nd)
+ elif tp==Node.BUILD:
+ if nd.id in precious:continue
+ for env in self.all_envs.values():
+ try:os.remove(nd.abspath(env))
+ except OSError:pass
+ node.childs.__delitem__(x)
+ clean_rec(self.srcnode)
+ for v in'node_sigs node_deps task_sigs raw_deps cache_node_abspath'.split():
+ setattr(self,v,{})
+ def compile(self):
+ debug('build: compile called')
+ os.chdir(self.bdir)
+ self.flush()
+ self.generator=Runner.Parallel(self,Options.options.jobs)
+ def dw(on=True):
+ if Options.options.progress_bar:
+ if on:sys.stderr.write(Logs.colors.cursor_on)
+ else:sys.stderr.write(Logs.colors.cursor_off)
+ debug('build: executor starting')
+ try:
+ dw(on=False)
+ self.generator.start()
+ except KeyboardInterrupt:
+ dw()
+ os.chdir(self.srcnode.abspath())
+ if self.generator.consumers:
+ self.save()
+ raise
+ except Exception:
+ dw()
+ raise
+ else:
+ dw()
+ if self.generator.consumers:
+ self.save()
+ if self.generator.error:
+ os.chdir(self.srcnode.abspath())
+ raise BuildError(self,self.task_manager.tasks_done)
+ os.chdir(self.srcnode.abspath())
+ def install(self):
+ debug('build: install called')
+ self.flush()
+ if Options.commands['uninstall']:
+ lst=[]
+ for x in self.uninstall:
+ dir=os.path.dirname(x)
+ if not dir in lst:lst.append(dir)
+ lst.sort()
+ lst.reverse()
+ nlst=[]
+ for y in lst:
+ x=y
+ while len(x)>4:
+ if not x in nlst:nlst.append(x)
+ x=os.path.dirname(x)
+ nlst.sort()
+ nlst.reverse()
+ for x in nlst:
+ try:os.rmdir(x)
+ except OSError:pass
+ def new_task_gen(self,*k,**kw):
+ kw['bld']=self
+ if len(k)==0:return TaskGen.task_gen(*k,**kw)
+ cls_name=k[0]
+ try:cls=TaskGen.task_gen.classes[cls_name]
+ except KeyError:raise Utils.WscriptError('%s is not a valid task generator -> %s'%(cls_name,[x for x in TaskGen.task_gen.classes]))
+ else:return cls(*k,**kw)
+ def load_envs(self):
+ try:
+ lst=Utils.listdir(self.cachedir)
+ except OSError,e:
+ if e.errno==errno.ENOENT:
+ raise Utils.WafError('The project was not configured: run "waf configure" first!')
+ else:
+ raise
+ if not lst:
+ raise Utils.WafError('The cache directory is empty: reconfigure the project')
+ for file in lst:
+ if file.endswith(CACHE_SUFFIX):
+ env=Environment.Environment(os.path.join(self.cachedir,file))
+ name=file[:-len(CACHE_SUFFIX)]
+ self.all_envs[name]=env
+ self.init_variants()
+ for env in self.all_envs.values():
+ for f in env[CFG_FILES]:
+ newnode=self.path.find_or_declare(f)
+ try:
+ hash=Utils.h_file(newnode.abspath(env))
+ except(IOError,AttributeError):
+ error("cannot find "+f)
+ hash=SIG_NIL
+ self.node_sigs[env.variant()][newnode.id]=hash
+ self.bldnode=self.root.find_dir(self.bldnode.abspath())
+ self.path=self.srcnode=self.root.find_dir(self.srcnode.abspath())
+ self.cwd=self.bldnode.abspath()
+ def setup(self,tool,tooldir=None,funs=None):
+ if isinstance(tool,list):
+ for i in tool:self.setup(i,tooldir)
+ return
+ if not tooldir:tooldir=Options.tooldir
+ file=None
+ module=Utils.load_tool(tool,tooldir)
+ if hasattr(module,"setup"):module.setup(self)
+ if file:file.close()
+ def init_variants(self):
+ debug('build: init variants')
+ lstvariants=[]
+ for env in self.all_envs.values():
+ if not env.variant()in lstvariants:
+ lstvariants.append(env.variant())
+ self.lst_variants=lstvariants
+ debug('build: list of variants is %r'%lstvariants)
+ for name in lstvariants+[0]:
+ for v in'node_sigs cache_node_abspath'.split():
+ var=getattr(self,v)
+ if not name in var:
+ var[name]={}
+ def load_dirs(self,srcdir,blddir,load_cache=1):
+ assert(os.path.isabs(srcdir))
+ assert(os.path.isabs(blddir))
+ self.cachedir=os.path.join(blddir,CACHE_DIR)
+ if srcdir==blddir:
+ raise Utils.WafError("build dir must be different from srcdir: %s <-> %s "%(srcdir,blddir))
+ self.bdir=blddir
+ self.load()
+ if not self.root:
+ Node.Nodu=self.node_class
+ self.root=Node.Nodu('',None,Node.DIR)
+ if not self.srcnode:
+ self.srcnode=self.root.ensure_dir_node_from_path(srcdir)
+ debug('build: srcnode is %s and srcdir %s'%(self.srcnode.name,srcdir))
+ self.path=self.srcnode
+ try:os.makedirs(blddir)
+ except OSError:pass
+ if not self.bldnode:
+ self.bldnode=self.root.ensure_dir_node_from_path(blddir)
+ self.init_variants()
+ def rescan(self,src_dir_node):
+ if self.cache_scanned_folders.get(src_dir_node.id,None):return
+ self.cache_scanned_folders[src_dir_node.id]=1
+ if hasattr(self,'repository'):self.repository(src_dir_node)
+ if sys.platform=="win32"and not src_dir_node.name:
+ return
+ self.listdir_src(src_dir_node)
+ h1=self.srcnode.height()
+ h2=src_dir_node.height()
+ lst=[]
+ child=src_dir_node
+ while h2>h1:
+ lst.append(child.name)
+ child=child.parent
+ h2-=1
+ lst.reverse()
+ for variant in self.lst_variants:
+ sub_path=os.path.join(self.bldnode.abspath(),variant,*lst)
+ try:
+ self.listdir_bld(src_dir_node,sub_path,variant)
+ except OSError:
+ dict=self.node_sigs[variant]
+ for node in src_dir_node.childs.values():
+ if node.id in dict:
+ dict.__delitem__(node.id)
+ if node.id!=self.bldnode.id:
+ src_dir_node.childs.__delitem__(node.name)
+ os.makedirs(sub_path)
+ def listdir_src(self,parent_node):
+ parent_path=parent_node.abspath()
+ try:
+ lst=set(Utils.listdir(parent_path))
+ except OSError:
+ if not parent_node.childs:
+ raise
+ for x in parent_node.childs.values():
+ if x.id&3==Node.FILE:
+ raise
+ lst=set([])
+ self.cache_dir_contents[parent_node.id]=lst
+ debug('build: folder contents %r'%lst)
+ node_names=set([x.name for x in parent_node.childs.values()if x.id&3 in(Node.FILE,Node.DIR)])
+ cache=self.node_sigs[0]
+ to_keep=lst&node_names
+ for x in to_keep:
+ node=parent_node.childs[x]
+ if node.id&3==Node.DIR:continue
+ try:
+ cache[node.id]=Utils.h_file(parent_path+os.sep+node.name)
+ except IOError:
+ raise Utils.WafError("The file %s is not readable or has become a dir"%node.abspath())
+ to_remove=node_names-lst
+ if to_remove:
+ for name in to_remove:
+ nd=parent_node.childs[name]
+ if nd.id&3==Node.DIR:
+ for x in nd.childs.values():
+ if x.id&3==Node.FILE:
+ break
+ else:
+ continue
+ self.remove_node(nd)
+ def remove_node(self,node):
+ if node.id&3==Node.DIR:
+ for x in node.childs.values():
+ self.remove_node(x)
+ if node.id!=self.bldnode.id:
+ node.parent.childs.__delitem__(node.name)
+ elif node.id&3==Node.FILE:
+ if node.id in self.node_sigs[0]:
+ self.node_sigs[0].__delitem__(node.id)
+ node.parent.childs.__delitem__(node.name)
+ else:
+ for variant in self.lst_variants:
+ if node.id in self.node_sigs[variant]:
+ self.node_sigs[variant].__delitem__(node.id)
+ node.parent.childs.__delitem__(node.name)
+ def listdir_bld(self,parent_node,path,variant):
+ i_existing_nodes=[x for x in parent_node.childs.values()if x.id&3==Node.BUILD]
+ lst=set(Utils.listdir(path))
+ node_names=set([x.name for x in i_existing_nodes])
+ remove_names=node_names-lst
+ ids_to_remove=[x.id for x in i_existing_nodes if x.name in remove_names]
+ cache=self.node_sigs[variant]
+ for nid in ids_to_remove:
+ if nid in cache:
+ cache.__delitem__(nid)
+ def get_env(self):
+ return self.env_of_name('default')
+ def set_env(self,name,val):
+ self.all_envs[name]=val
+ env=property(get_env,set_env)
+ def add_manual_dependency(self,path,value):
+ if isinstance(path,Node.Node):
+ node=path
+ elif os.path.isabs(path):
+ node=self.root.find_resource(path)
+ else:
+ node=self.path.find_resource(path)
+ self.deps_man[node.id].append(value)
+ def launch_node(self):
+ try:
+ return self.p_ln
+ except AttributeError:
+ self.p_ln=self.root.find_dir(Options.launch_dir)
+ return self.p_ln
+ def glob(self,pattern,relative=True):
+ path=self.path.abspath()
+ files=[self.root.find_resource(x)for x in glob.glob(path+os.sep+pattern)]
+ if relative:
+ files=[x.path_to_parent(self.path)for x in files if x]
+ else:
+ files=[x.abspath()for x in files if x]
+ return files
+ def add_group(self):
+ self.flush(all=0)
+ self.task_manager.add_group()
+ def hash_env_vars(self,env,vars_lst):
+ idx=str(id(env))+str(vars_lst)
+ try:return self.cache_sig_vars[idx]
+ except KeyError:pass
+ lst=[str(env[a])for a in vars_lst]
+ ret=Utils.h_list(lst)
+ debug("envhash: %r %r"%(ret,lst))
+ self.cache_sig_vars[idx]=ret
+ return ret
+ def name_to_obj(self,name,env):
+ cache=self.task_gen_cache_names
+ if not cache:
+ for x in self.all_task_gen:
+ vt=x.env.variant()+'_'
+ if x.name:
+ cache[vt+x.name]=x
+ else:
+ if isinstance(x.target,str):
+ target=x.target
+ else:
+ target=' '.join(x.target)
+ v=vt+target
+ if not cache.get(v,None):
+ cache[v]=x
+ return cache.get(env.variant()+'_'+name,None)
+ def flush(self,all=1):
+ self.ini=time.time()
+ self.task_gen_cache_names={}
+ self.name_to_obj('',self.env)
+ debug('build: delayed operation TaskGen.flush() called')
+ if Options.options.compile_targets:
+ debug('task_gen: posting objects listed in compile_targets')
+ target_objects=Utils.DefaultDict(list)
+ for target_name in Options.options.compile_targets.split(','):
+ target_name=target_name.strip()
+ for env in self.all_envs.values():
+ obj=self.name_to_obj(target_name,env)
+ if obj:
+ target_objects[target_name].append(obj)
+ if not target_name in target_objects and all:
+ raise Utils.WafError("target '%s' does not exist"%target_name)
+ for target_obj in target_objects.values():
+ for x in target_obj:
+ x.post()
+ else:
+ debug('task_gen: posting objects (normal)')
+ ln=self.launch_node()
+ if ln.is_child_of(self.bldnode)or not ln.is_child_of(self.srcnode):
+ ln=self.srcnode
+ proj_node=self.root.find_dir(os.path.split(Utils.g_module.root_path)[0])
+ if proj_node.id!=self.srcnode.id:
+ ln=self.srcnode
+ for obj in self.all_task_gen:
+ if not obj.path.is_child_of(ln):continue
+ obj.post()
+ def env_of_name(self,name):
+ try:
+ return self.all_envs[name]
+ except KeyError:
+ error('no such environment: '+name)
+ return None
+ def progress_line(self,state,total,col1,col2):
+ n=len(str(total))
+ Utils.rot_idx+=1
+ ind=Utils.rot_chr[Utils.rot_idx%4]
+ ini=self.ini
+ pc=(100.*state)/total
+ eta=time.strftime('%H:%M:%S',time.gmtime(time.time()-ini))
+ fs="[%%%dd/%%%dd][%%s%%2d%%%%%%s][%s]["%(n,n,ind)
+ left=fs%(state,total,col1,pc,col2)
+ right='][%s%s%s]'%(col1,eta,col2)
+ cols=Utils.get_term_cols()-len(left)-len(right)+2*len(col1)+2*len(col2)
+ if cols<7:cols=7
+ ratio=int((cols*state)/total)-1
+ bar=('='*ratio+'>').ljust(cols)
+ msg=Utils.indicator%(left,bar,right)
+ return msg
+ def do_install(self,src,tgt,chmod=O644):
+ if Options.commands['install']:
+ if not Options.options.force:
+ try:
+ st1=os.stat(tgt)
+ st2=os.stat(src)
+ except OSError:
+ pass
+ else:
+ if st1.st_mtime>=st2.st_mtime and st1.st_size==st2.st_size:
+ return False
+ srclbl=src.replace(self.srcnode.abspath(None)+os.sep,'')
+ info("* installing %s as %s"%(srclbl,tgt))
+ try:os.remove(tgt)
+ except OSError:pass
+ try:
+ shutil.copy2(src,tgt)
+ os.chmod(tgt,chmod)
+ except IOError:
+ try:
+ os.stat(src)
+ except(OSError,IOError):
+ error('File %r does not exist'%src)
+ raise Utils.WafError('Could not install the file %r'%tgt)
+ return True
+ elif Options.commands['uninstall']:
+ info("* uninstalling %s"%tgt)
+ self.uninstall.append(tgt)
+ try:os.remove(tgt)
+ except OSError:pass
+ return True
+ def get_install_path(self,path,env=None):
+ if not env:env=self.env
+ destdir=env.get_destdir()
+ path=path.replace('/',os.sep)
+ destpath=Utils.subst_vars(path,env)
+ if destdir:
+ destpath=os.path.join(destdir,destpath.lstrip(os.sep))
+ return destpath
+ def install_files(self,path,files,env=None,chmod=O644,relative_trick=False):
+ if env:
+ assert isinstance(env,Environment.Environment),"invalid parameter"
+ if not Options.is_install:return[]
+ if not path:return[]
+ node=self.path
+ if isinstance(files,str)and'*'in files:
+ gl=node.abspath()+os.sep+files
+ lst=glob.glob(gl)
+ else:
+ lst=Utils.to_list(files)
+ env=env or self.env
+ destpath=self.get_install_path(path,env)
+ Utils.check_dir(destpath)
+ installed_files=[]
+ for filename in lst:
+ if not os.path.isabs(filename):
+ nd=node.find_resource(filename)
+ if not nd:
+ raise Utils.WafError("Unable to install the file `%s': not found in %s"%(filename,node))
+ if relative_trick:
+ destfile=os.path.join(destpath,filename)
+ Utils.check_dir(os.path.dirname(destfile))
+ else:
+ destfile=os.path.join(destpath,nd.name)
+ filename=nd.abspath(env)
+ else:
+ alst=Utils.split_path(filename)
+ destfile=os.path.join(destpath,alst[-1])
+ if self.do_install(filename,destfile,chmod):
+ installed_files.append(destfile)
+ return installed_files
+ def install_as(self,path,srcfile,env=None,chmod=O644):
+ if env:
+ assert isinstance(env,Environment.Environment),"invalid parameter"
+ if not Options.is_install:return False
+ if not path:return False
+ if not env:env=self.env
+ node=self.path
+ destpath=self.get_install_path(path,env)
+ dir,name=os.path.split(destpath)
+ Utils.check_dir(dir)
+ if not os.path.isabs(srcfile):
+ filenode=node.find_resource(srcfile)
+ src=filenode.abspath(env)
+ else:
+ src=srcfile
+ return self.do_install(src,destpath,chmod)
+ def symlink_as(self,path,src,env=None):
+ if not Options.is_install:return
+ if not path:return
+ tgt=self.get_install_path(path,env)
+ dir,name=os.path.split(tgt)
+ Utils.check_dir(dir)
+ if Options.commands['install']:
+ link=False
+ if not os.path.islink(tgt):
+ link=True
+ elif os.readlink(tgt)!=src:
+ link=True
+ try:os.remove(tgt)
+ except OSError:pass
+ if link:
+ info('* symlink %s (-> %s)'%(tgt,src))
+ os.symlink(src,tgt)
+ return 0
+ elif Options.commands['uninstall']:
+ try:
+ info("* removing %s"%(tgt))
+ os.remove(tgt)
+ return 0
+ except OSError:
+ return 1
+ def exec_command(self,cmd,**kw):
+ debug('runner: system command -> %s'%cmd)
+ if self.log:
+ self.log.write('%s\n'%cmd)
+ kw['log']=self.log
+ try:
+ if not'cwd'in kw:kw['cwd']=self.cwd
+ except AttributeError:
+ self.cwd=kw['cwd']=self.bldnode.abspath()
+ return Utils.exec_command(cmd,**kw)
+ def printout(self,s):
+ f=self.log or sys.stderr
+ f.write(s)
+ f.flush()
+ def add_subdirs(self,dirs):
+ self.recurse(dirs,'build')
+ def pre_recurse(self,name_or_mod,path,nexdir):
+ if not hasattr(self,'oldpath'):
+ self.oldpath=[]
+ self.oldpath.append(self.path)
+ self.path=self.root.find_dir(nexdir)
+ return{'bld':self,'ctx':self}
+ def post_recurse(self,name_or_mod,path,nexdir):
+ self.path=self.oldpath.pop()
+
diff -Nru gtkimageview-1.6.4/wafadmin/Configure.py gtkimageview-1.6.4+dfsg/wafadmin/Configure.py
--- gtkimageview-1.6.4/wafadmin/Configure.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Configure.py 2009-04-04 19:27:22.000000000 -0400
@@ -0,0 +1,199 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+import os,shlex,sys,time
+try:import cPickle
+except ImportError:import pickle as cPickle
+import Environment,Utils,Options
+from Logs import warn
+from Constants import*
+conf_template='''# project configured on %s by
+# waf %s (abi %r, rev %r, python %x) using
+# %s
+#
+'''
+class ConfigurationError(Utils.WscriptError):
+ pass
+autoconfig=False
+def find_file(filename,path_list):
+ for directory in Utils.to_list(path_list):
+ if os.path.exists(os.path.join(directory,filename)):
+ return directory
+ return''
+def find_program_impl(env,filename,path_list=[],var=None,environ=None):
+ if not environ:
+ environ=os.environ
+ try:path_list=path_list.split()
+ except AttributeError:pass
+ if var:
+ if var in environ:env[var]=environ[var]
+ if env[var]:return env[var]
+ if not path_list:path_list=environ['PATH'].split(os.pathsep)
+ ext=(Options.platform=='win32')and'.exe,.com,.bat,.cmd'or''
+ for y in[filename+x for x in ext.split(',')]:
+ for directory in path_list:
+ x=os.path.join(directory,y)
+ if os.path.isfile(x):
+ if var:env[var]=x
+ return x
+ return''
+class ConfigurationContext(Utils.Context):
+ tests={}
+ error_handlers=[]
+ def __init__(self,env=None,blddir='',srcdir=''):
+ self.env=None
+ self.envname=''
+ self.environ=dict(os.environ)
+ self.line_just=40
+ self.blddir=blddir
+ self.srcdir=srcdir
+ self.all_envs={}
+ self.cwd=self.curdir=os.getcwd()
+ self.tools=[]
+ self.setenv(DEFAULT)
+ self.lastprog=''
+ self.hash=0
+ self.files=[]
+ self.tool_cache=[]
+ if self.blddir:
+ self.post_init()
+ def post_init(self):
+ self.cachedir=os.path.join(self.blddir,CACHE_DIR)
+ path=os.path.join(self.blddir,WAF_CONFIG_LOG)
+ try:os.unlink(path)
+ except(OSError,IOError):pass
+ self.log=open(path,'w')
+ self.log.write(conf_template%(time.ctime(),WAFVERSION,ABI,WAFREVISION,sys.hexversion," ".join(sys.argv)))
+ def __del__(self):
+ if hasattr(self,'log')and self.log:
+ self.log.close()
+ def fatal(self,msg):
+ raise ConfigurationError(msg)
+ def check_tool(self,input,tooldir=None,funs=None):
+ tools=Utils.to_list(input)
+ if tooldir:tooldir=Utils.to_list(tooldir)
+ for tool in tools:
+ tool=tool.replace('++','xx')
+ mag=(tool,id(self.env),funs)
+ if mag in self.tool_cache:
+ continue
+ self.tool_cache.append(mag)
+ module=Utils.load_tool(tool,tooldir)
+ func=getattr(module,'detect',None)
+ if func:
+ if type(func)is type(find_file):func(self)
+ else:self.eval_rules(funs or func)
+ self.tools.append({'tool':tool,'tooldir':tooldir,'funs':funs})
+ def sub_config(self,k):
+ self.recurse(k,name='configure')
+ def pre_recurse(self,name_or_mod,path,nexdir):
+ return{'conf':self,'ctx':self}
+ def post_recurse(self,name_or_mod,path,nexdir):
+ if not autoconfig:
+ return
+ self.hash=hash((self.hash,getattr(name_or_mod,'waf_hash_val',name_or_mod)))
+ self.files.append(path)
+ def store(self,file=''):
+ if not os.path.isdir(self.cachedir):
+ os.makedirs(self.cachedir)
+ if not file:
+ file=open(os.path.join(self.cachedir,'build.config.py'),'w')
+ file.write('version = 0x%x\n'%HEXVERSION)
+ file.write('tools = %r\n'%self.tools)
+ file.close()
+ if not self.all_envs:
+ self.fatal('nothing to store in the configuration context!')
+ for key in self.all_envs:
+ tmpenv=self.all_envs[key]
+ tmpenv.store(os.path.join(self.cachedir,key+CACHE_SUFFIX))
+ def set_env_name(self,name,env):
+ self.all_envs[name]=env
+ return env
+ def retrieve(self,name,fromenv=None):
+ try:
+ env=self.all_envs[name]
+ except KeyError:
+ env=Environment.Environment()
+ env['PREFIX']=os.path.abspath(os.path.expanduser(Options.options.prefix))
+ self.all_envs[name]=env
+ else:
+ if fromenv:warn("The environment %s may have been configured already"%name)
+ return env
+ def setenv(self,name):
+ self.env=self.retrieve(name)
+ self.envname=name
+ def add_os_flags(self,var,dest=None):
+ if not dest:dest=var
+ try:self.env[dest]=Utils.to_list(self.environ[var])
+ except KeyError:pass
+ def check_message_1(self,sr):
+ self.line_just=max(self.line_just,len(sr))
+ self.log.write(sr+'\n\n')
+ Utils.pprint('NORMAL',"%s :"%sr.ljust(self.line_just),sep='')
+ def check_message_2(self,sr,color='GREEN'):
+ Utils.pprint(color,sr)
+ def check_message(self,th,msg,state,option=''):
+ sr='Checking for %s %s'%(th,msg)
+ self.check_message_1(sr)
+ p=self.check_message_2
+ if state:p('ok '+option)
+ else:p('not found','YELLOW')
+ def check_message_custom(self,th,msg,custom,option='',color='PINK'):
+ sr='Checking for %s %s'%(th,msg)
+ self.check_message_1(sr)
+ self.check_message_2(custom,color)
+ def find_program(self,filename,path_list=[],var=None,mandatory=False):
+ ret=find_program_impl(self.env,filename,path_list,var,environ=self.environ)
+ self.check_message('program',filename,ret,ret)
+ self.log.write('find program=%r paths=%r var=%r -> %r\n\n'%(filename,path_list,var,ret))
+ if not ret and mandatory:
+ self.fatal('The program %s could not be found'%filename)
+ return ret
+ def cmd_to_list(self,cmd):
+ if isinstance(cmd,str)and cmd.find(' '):
+ try:
+ os.stat(cmd)
+ except OSError:
+ return shlex.split(cmd)
+ else:
+ return[cmd]
+ return cmd
+ def __getattr__(self,name):
+ r=self.__class__.__dict__.get(name,None)
+ if r:return r
+ if name and name.startswith('require_'):
+ for k in['check_','find_']:
+ n=name.replace('require_',k)
+ ret=self.__class__.__dict__.get(n,None)
+ if ret:
+ def run(*k,**kw):
+ r=ret(self,*k,**kw)
+ if not r:
+ self.fatal('requirement failure')
+ return r
+ return run
+ self.fatal('No such method %r'%name)
+ def eval_rules(self,rules):
+ self.rules=Utils.to_list(rules)
+ for x in self.rules:
+ f=getattr(self,x)
+ if not f:self.fatal("No such method '%s'."%x)
+ try:
+ f()
+ except Exception,e:
+ ret=self.err_handler(x,e)
+ if ret==BREAK:
+ break
+ elif ret==CONTINUE:
+ continue
+ else:
+ self.fatal(e)
+ def err_handler(self,fun,error):
+ pass
+def conf(f):
+ setattr(ConfigurationContext,f.__name__,f)
+ return f
+def conftest(f):
+ ConfigurationContext.tests[f.__name__]=f
+ return conf(f)
+
diff -Nru gtkimageview-1.6.4/wafadmin/Constants.py gtkimageview-1.6.4+dfsg/wafadmin/Constants.py
--- gtkimageview-1.6.4/wafadmin/Constants.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Constants.py 2009-04-04 19:27:22.000000000 -0400
@@ -0,0 +1,45 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+HEXVERSION=0x10504
+WAFVERSION="1.5.4"
+WAFREVISION="5978M"
+ABI=7
+O644=420
+O755=493
+MAXJOBS=99999999
+CACHE_DIR='c4che'
+CACHE_SUFFIX='.cache.py'
+DBFILE='.wafpickle-%d'%ABI
+WSCRIPT_FILE='wscript'
+WSCRIPT_BUILD_FILE='wscript_build'
+WAF_CONFIG_LOG='config.log'
+WAF_CONFIG_H='config.h'
+SIG_NIL='iluvcuteoverload'
+VARIANT='_VARIANT_'
+DEFAULT='default'
+SRCDIR='srcdir'
+BLDDIR='blddir'
+APPNAME='APPNAME'
+VERSION='VERSION'
+DEFINES='defines'
+UNDEFINED=()
+BREAK="break"
+CONTINUE="continue"
+JOBCONTROL="JOBCONTROL"
+MAXPARALLEL="MAXPARALLEL"
+NORMAL="NORMAL"
+NOT_RUN=0
+MISSING=1
+CRASHED=2
+EXCEPTION=3
+SKIPPED=8
+SUCCESS=9
+ASK_LATER=-1
+SKIP_ME=-2
+RUN_ME=-3
+LOG_FORMAT="%(asctime)s %(c1)s%(zone)s%(c2)s %(message)s"
+HOUR_FORMAT="%H:%M:%S"
+TEST_OK=True
+CFG_FILES='cfg_files'
+
diff -Nru gtkimageview-1.6.4/wafadmin/Environment.py gtkimageview-1.6.4+dfsg/wafadmin/Environment.py
--- gtkimageview-1.6.4/wafadmin/Environment.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Environment.py 2009-04-04 19:27:22.000000000 -0400
@@ -0,0 +1,125 @@
+#! /usr/bin/env python
+# encoding: utf-8
+import sys
+if sys.hexversion < 0x020400f0: from sets import Set as set
+import os,copy,re
+import Logs,Options
+from Constants import*
+re_imp=re.compile('^(#)*?([^#=]*?)\ =\ (.*?)$',re.M)
+class Environment(object):
+ __slots__=("table","parent")
+ def __init__(self,filename=None):
+ self.table={}
+ if filename:
+ self.load(filename)
+ def __contains__(self,key):
+ if key in self.table:return True
+ try:return self.parent.__contains__(key)
+ except AttributeError:return False
+ def __str__(self):
+ keys=set()
+ cur=self
+ while cur:
+ keys.update(cur.table.keys())
+ cur=getattr(cur,'parent',None)
+ keys=list(keys)
+ keys.sort()
+ return"\n".join(["%r %r"%(x,self.__getitem__(x))for x in keys])
+ def __getitem__(self,key):
+ try:
+ while 1:
+ x=self.table.get(key,None)
+ if not x is None:
+ return x
+ self=self.parent
+ except AttributeError:
+ return[]
+ def __setitem__(self,key,value):
+ self.table[key]=value
+ def set_variant(self,name):
+ self.table[VARIANT]=name
+ def variant(self):
+ try:
+ while 1:
+ x=self.table.get(VARIANT,None)
+ if not x is None:
+ return x
+ self=self.parent
+ except AttributeError:
+ return DEFAULT
+ def copy(self):
+ newenv=Environment()
+ newenv.parent=self
+ return newenv
+ def get_flat(self,key):
+ s=self[key]
+ if isinstance(s,str):return s
+ return' '.join(s)
+ def _get_list_value_for_modification(self,key):
+ try:
+ value=self.table[key]
+ except KeyError:
+ try:value=self.parent[key]
+ except AttributeError:value=[]
+ if isinstance(value,list):
+ value=copy.copy(value)
+ else:
+ value=[value]
+ else:
+ if not isinstance(value,list):
+ value=[value]
+ self.table[key]=value
+ return value
+ def append_value(self,var,value):
+ current_value=self._get_list_value_for_modification(var)
+ if isinstance(value,list):
+ current_value.extend(value)
+ else:
+ current_value.append(value)
+ def prepend_value(self,var,value):
+ current_value=self._get_list_value_for_modification(var)
+ if isinstance(value,list):
+ current_value=value+current_value
+ self.table[var]=current_value
+ else:
+ current_value.insert(0,value)
+ def append_unique(self,var,value):
+ current_value=self._get_list_value_for_modification(var)
+ if isinstance(value,list):
+ for value_item in value:
+ if value_item not in current_value:
+ current_value.append(value_item)
+ else:
+ if value not in current_value:
+ current_value.append(value)
+ def get_merged_dict(self):
+ table_list=[]
+ env=self
+ while 1:
+ table_list.insert(0,env.table)
+ try:env=env.parent
+ except AttributeError:break
+ merged_table={}
+ for table in table_list:
+ merged_table.update(table)
+ return merged_table
+ def store(self,filename):
+ file=open(filename,'w')
+ merged_table=self.get_merged_dict()
+ keys=merged_table.keys()
+ keys.sort()
+ for k in keys:file.write('%s = %r\n'%(k,merged_table[k]))
+ file.close()
+ def load(self,filename):
+ tbl=self.table
+ file=open(filename,'r')
+ code=file.read()
+ file.close()
+ for m in re_imp.finditer(code):
+ g=m.group
+ tbl[g(2)]=eval(g(3))
+ Logs.debug('env: %s'%str(self.table))
+ def get_destdir(self):
+ if self.__getitem__('NOINSTALL'):return''
+ return Options.options.destdir
+
diff -Nru gtkimageview-1.6.4/wafadmin/__init__.py gtkimageview-1.6.4+dfsg/wafadmin/__init__.py
--- gtkimageview-1.6.4/wafadmin/__init__.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/__init__.py 2009-04-04 19:27:22.000000000 -0400
@@ -0,0 +1,4 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+
diff -Nru gtkimageview-1.6.4/wafadmin/Logs.py gtkimageview-1.6.4+dfsg/wafadmin/Logs.py
--- gtkimageview-1.6.4/wafadmin/Logs.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Logs.py 2009-04-04 19:27:22.000000000 -0400
@@ -0,0 +1,82 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+import os,re,logging,traceback,sys,Utils
+from Constants import*
+zones=''
+verbose=0
+colors_lst={'USE':True,'BOLD':'\x1b[01;1m','RED':'\x1b[01;91m','GREEN':'\x1b[32m','YELLOW':'\x1b[33m','PINK':'\x1b[35m','BLUE':'\x1b[01;34m','CYAN':'\x1b[36m','NORMAL':'\x1b[0m','cursor_on':'\x1b[?25h','cursor_off':'\x1b[?25l',}
+if(sys.platform=='win32')or('NOCOLOR'in os.environ)or(os.environ.get('TERM','dumb')in['dumb','emacs'])or(not sys.stderr.isatty()):
+ colors_lst['USE']=False
+def get_color(cl):
+ if not colors_lst['USE']:return''
+ return colors_lst.get(cl,'')
+class foo(object):
+ def __getattr__(self,a):
+ return get_color(a)
+ def __call__(self,a):
+ return get_color(a)
+colors=foo()
+re_log=re.compile(r'(\w+): (.*)',re.M)
+class log_filter(logging.Filter):
+ def __init__(self,name=None):
+ pass
+ def filter(self,rec):
+ rec.c1=colors.PINK
+ rec.c2=colors.NORMAL
+ rec.zone=rec.module
+ if rec.levelno>=logging.INFO:
+ if rec.levelno>=logging.ERROR:
+ rec.c1=colors.RED
+ elif rec.levelno>=logging.WARNING:
+ rec.c1=colors.YELLOW
+ else:
+ rec.c1=colors.GREEN
+ return True
+ zone=''
+ m=re_log.match(rec.msg)
+ if m:
+ zone=rec.zone=m.group(1)
+ rec.msg=m.group(2)
+ if zones:
+ return getattr(rec,'zone','')in zones or'*'in zones
+ elif not verbose>2:
+ return False
+ return True
+class formatter(logging.Formatter):
+ def __init__(self):
+ logging.Formatter.__init__(self,LOG_FORMAT,HOUR_FORMAT)
+ def format(self,rec):
+ if rec.levelno>=logging.WARNING or rec.levelno==logging.INFO:
+ return'%s%s%s'%(rec.c1,rec.msg,rec.c2)
+ return logging.Formatter.format(self,rec)
+def debug(msg):
+ if verbose:
+ msg=msg.replace('\n',' ')
+ logging.debug(msg)
+def error(msg):
+ logging.error(msg)
+ if verbose:
+ if isinstance(msg,Utils.WafError):
+ st=msg.stack
+ else:
+ st=traceback.extract_stack()
+ if st:
+ st=st[:-1]
+ buf=[]
+ for filename,lineno,name,line in st:
+ buf.append(' File "%s", line %d, in %s'%(filename,lineno,name))
+ if line:
+ buf.append(' %s'%line.strip())
+ if buf:logging.error("\n".join(buf))
+warn=logging.warn
+info=logging.info
+def init_log():
+ log=logging.getLogger()
+ log.handlers=[]
+ hdlr=logging.StreamHandler()
+ hdlr.setFormatter(formatter())
+ log.addHandler(hdlr)
+ log.addFilter(log_filter())
+ log.setLevel(logging.DEBUG)
+
diff -Nru gtkimageview-1.6.4/wafadmin/Node.py gtkimageview-1.6.4+dfsg/wafadmin/Node.py
--- gtkimageview-1.6.4/wafadmin/Node.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Node.py 2009-04-04 19:27:22.000000000 -0400
@@ -0,0 +1,444 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+import os,sys,fnmatch,re
+import Utils
+UNDEFINED=0
+DIR=1
+FILE=2
+BUILD=3
+type_to_string={UNDEFINED:"unk",DIR:"dir",FILE:"src",BUILD:"bld"}
+exclude_regs='''
+**/*~
+**/#*#
+**/.#*
+**/%*%
+**/._*
+**/CVS
+**/CVS/**
+**/.cvsignore
+**/SCCS
+**/SCCS/**
+**/vssver.scc
+**/.svn
+**/.svn/**
+**/.DS_Store'''.split()
+exc_fun=None
+def default_excludes():
+ global exc_fun
+ if exc_fun:
+ return exc_fun
+ regs=[Utils.jar_regexp(x)for x in exclude_regs]
+ def mat(path):
+ for x in regs:
+ if x.match(path):
+ return True
+ return False
+ exc_fun=mat
+ return exc_fun
+class Node(object):
+ __slots__=("name","parent","id","childs")
+ def __init__(self,name,parent,node_type=UNDEFINED):
+ self.name=name
+ self.parent=parent
+ self.__class__.bld.id_nodes+=4
+ self.id=self.__class__.bld.id_nodes+node_type
+ if node_type==DIR:self.childs={}
+ if Utils.split_path(name)[0]!=name:
+ raise Utils.WafError('name %r forbidden '%name)
+ if parent and name in parent.childs:
+ raise Utils.WafError('node %s exists in the parent files %r already'%(name,parent))
+ if parent:parent.childs[name]=self
+ def __setstate__(self,data):
+ if len(data)==4:
+ (self.parent,self.name,self.id,self.childs)=data
+ else:
+ (self.parent,self.name,self.id)=data
+ def __getstate__(self):
+ if getattr(self,'childs',None)is None:
+ return(self.parent,self.name,self.id)
+ else:
+ return(self.parent,self.name,self.id,self.childs)
+ def __str__(self):
+ if not self.parent:return''
+ return"%s://%s"%(type_to_string[self.id&3],self.abspath())
+ def __repr__(self):
+ return self.__str__()
+ def __hash__(self):
+ raise Utils.WafError('nodes, you are doing it wrong')
+ def __copy__(self):
+ raise Utils.WafError('nodes are not supposed to be cloned')
+ def get_type(self):
+ return self.id&3
+ def set_type(self,t):
+ self.id=self.id+t-self.id&3
+ def dirs(self):
+ return[x for x in self.childs.values()if x.id&3==DIR]
+ def files(self):
+ return[x for x in self.childs.values()if x.id&3==FILE]
+ def get_dir(self,name,default=None):
+ node=self.childs.get(name,None)
+ if not node or node.id&3!=DIR:return default
+ return node
+ def get_file(self,name,default=None):
+ node=self.childs.get(name,None)
+ if not node or node.id&3!=FILE:return default
+ return node
+ def get_build(self,name,default=None):
+ node=self.childs.get(name,None)
+ if not node or node.id&3!=BUILD:return default
+ return node
+ def find_resource(self,lst):
+ if isinstance(lst,str):
+ lst=Utils.split_path(lst)
+ if len(lst)==1:
+ parent=self
+ else:
+ parent=self.find_dir(lst[:-1])
+ if not parent:return None
+ self.__class__.bld.rescan(parent)
+ name=lst[-1]
+ node=parent.childs.get(name,None)
+ if node:
+ tp=node.id&3
+ if tp==FILE or tp==BUILD:
+ return node
+ else:
+ return None
+ tree=self.__class__.bld
+ if not name in tree.cache_dir_contents[parent.id]:
+ return None
+ path=parent.abspath()+os.sep+name
+ try:
+ st=Utils.h_file(path)
+ except IOError:
+ return None
+ child=self.__class__(name,parent,FILE)
+ tree.node_sigs[0][child.id]=st
+ return child
+ def find_or_declare(self,lst):
+ if isinstance(lst,str):
+ lst=Utils.split_path(lst)
+ if len(lst)==1:
+ parent=self
+ else:
+ parent=self.find_dir(lst[:-1])
+ if not parent:return None
+ self.__class__.bld.rescan(parent)
+ name=lst[-1]
+ node=parent.childs.get(name,None)
+ if node:
+ tp=node.id&3
+ if tp!=BUILD:
+ raise Utils.WafError("find_or_declare returns a build node, not a source nor a directory %r"%lst)
+ return node
+ node=self.__class__(name,parent,BUILD)
+ return node
+ def find_dir(self,lst):
+ if isinstance(lst,str):
+ lst=Utils.split_path(lst)
+ current=self
+ for name in lst:
+ self.__class__.bld.rescan(current)
+ prev=current
+ if not current.parent and name==current.name:
+ continue
+ elif not name:
+ continue
+ elif name=='.':
+ continue
+ elif name=='..':
+ current=current.parent or current
+ else:
+ current=prev.childs.get(name,None)
+ if current is None:
+ dir_cont=self.__class__.bld.cache_dir_contents
+ if prev.id in dir_cont and name in dir_cont[prev.id]:
+ if not os.path.isdir(prev.abspath()+os.sep+name):
+ return None
+ current=self.__class__(name,prev,DIR)
+ else:
+ return None
+ else:
+ if current.id&3!=DIR:
+ return None
+ return current
+ def ensure_dir_node_from_path(self,lst):
+ if isinstance(lst,str):
+ lst=Utils.split_path(lst)
+ current=self
+ for name in lst:
+ if not name:
+ continue
+ elif name=='.':
+ continue
+ elif name=='..':
+ current=current.parent or current
+ else:
+ prev=current
+ current=prev.childs.get(name,None)
+ if current is None:
+ current=self.__class__(name,prev,DIR)
+ return current
+ def exclusive_build_node(self,path):
+ lst=Utils.split_path(path)
+ name=lst[-1]
+ if len(lst)>1:
+ parent=None
+ try:
+ parent=self.find_dir(lst[:-1])
+ except OSError:
+ pass
+ if not parent:
+ parent=self.ensure_dir_node_from_path(lst[:-1])
+ self.__class__.bld.cache_scanned_folders[parent.id]=1
+ else:
+ try:
+ self.__class__.bld.rescan(parent)
+ except OSError:
+ pass
+ else:
+ parent=self
+ node=parent.childs.get(name,None)
+ if not node:
+ node=self.__class__(name,parent,BUILD)
+ return node
+ def path_to_parent(self,parent):
+ lst=[]
+ p=self
+ h1=parent.height()
+ h2=p.height()
+ while h2>h1:
+ h2-=1
+ lst.append(p.name)
+ p=p.parent
+ if lst:
+ lst.reverse()
+ ret=os.path.join(*lst)
+ else:
+ ret=''
+ return ret
+ def find_ancestor(self,node):
+ dist=self.height()-node.height()
+ if dist<0:return node.find_ancestor(self)
+ cand=self
+ while dist>0:
+ cand=cand.parent
+ dist-=1
+ if cand==node:return cand
+ cursor=node
+ while cand.parent:
+ cand=cand.parent
+ cursor=cursor.parent
+ if cand==cursor:return cand
+ def relpath_gen(self,going_to):
+ if self==going_to:return'.'
+ if going_to.parent==self:return'..'
+ ancestor=self.find_ancestor(going_to)
+ lst=[]
+ cand=self
+ while not cand.id==ancestor.id:
+ lst.append(cand.name)
+ cand=cand.parent
+ cand=going_to
+ while not cand.id==ancestor.id:
+ lst.append('..')
+ cand=cand.parent
+ lst.reverse()
+ return os.sep.join(lst)
+ def nice_path(self,env=None):
+ tree=self.__class__.bld
+ ln=tree.launch_node()
+ if self.id&3==FILE:return self.relpath_gen(ln)
+ else:return os.path.join(tree.bldnode.relpath_gen(ln),env.variant(),self.relpath_gen(tree.srcnode))
+ def is_child_of(self,node):
+ p=self
+ diff=self.height()-node.height()
+ while diff>0:
+ diff-=1
+ p=p.parent
+ return p.id==node.id
+ def variant(self,env):
+ if not env:return 0
+ elif self.id&3==FILE:return 0
+ else:return env.variant()
+ def height(self):
+ d=self
+ val=-1
+ while d:
+ d=d.parent
+ val+=1
+ return val
+ def abspath(self,env=None):
+ if not self.name:
+ return'/'
+ variant=(env and(self.id&3!=FILE)and env.variant())or 0
+ ret=self.__class__.bld.cache_node_abspath[variant].get(self.id,None)
+ if ret:return ret
+ if not variant:
+ if not self.parent:
+ val=os.sep
+ elif not self.parent.name:
+ val=os.sep+self.name
+ else:
+ val=self.parent.abspath()+os.sep+self.name
+ else:
+ val=os.sep.join((self.__class__.bld.bldnode.abspath(),env.variant(),self.path_to_parent(self.__class__.bld.srcnode)))
+ self.__class__.bld.cache_node_abspath[variant][self.id]=val
+ return val
+ def change_ext(self,ext):
+ name=self.name
+ k=name.rfind('.')
+ if k>=0:
+ name=name[:k]+ext
+ else:
+ name=name+ext
+ return self.parent.childs.get(name,None)or self.__class__(name,self.parent,BUILD)
+ def src_dir(self,env):
+ return self.parent.srcpath(env)
+ def bld_dir(self,env):
+ return self.parent.bldpath(env)
+ def bld_base(self,env):
+ s=os.path.splitext(self.name)[0]
+ return os.path.join(self.bld_dir(env),s)
+ def bldpath(self,env=None):
+ if self.id&3==FILE:
+ return self.relpath_gen(self.__class__.bld.bldnode)
+ if self.path_to_parent(self.__class__.bld.srcnode)is not'':
+ return os.path.join(env.variant(),self.path_to_parent(self.__class__.bld.srcnode))
+ return env.variant()
+ def srcpath(self,env=None):
+ if self.id&3==BUILD:
+ return self.bldpath(env)
+ return self.relpath_gen(self.__class__.bld.bldnode)
+ def read(self,env):
+ return Utils.readf(self.abspath(env))
+ def dir(self,env):
+ return self.parent.abspath(env)
+ def file(self):
+ return self.name
+ def file_base(self):
+ return os.path.splitext(self.name)[0]
+ def suffix(self):
+ k=max(0,self.name.rfind('.'))
+ return self.name[k:]
+ def find_iter_impl(self,src=True,bld=True,dir=True,accept_name=None,is_prune=None,maxdepth=25):
+ self.__class__.bld.rescan(self)
+ for name in self.__class__.bld.cache_dir_contents[self.id]:
+ if accept_name(self,name):
+ node=self.find_resource(name)
+ if node:
+ if src and node.id&3==FILE:
+ yield node
+ else:
+ node=self.find_dir(name)
+ if node and node.id!=self.__class__.bld.bldnode.id:
+ if dir:
+ yield node
+ if not is_prune(self,name):
+ if maxdepth:
+ for k in node.find_iter_impl(src,bld,dir,accept_name,is_prune,maxdepth=maxdepth-1):
+ yield k
+ else:
+ if not is_prune(self,name):
+ node=self.find_resource(name)
+ if not node:
+ node=self.find_dir(name)
+ if node and node.id!=self.__class__.bld.bldnode.id:
+ if dir:
+ yield node
+ if maxdepth:
+ for k in node.find_iter_impl(src,bld,dir,accept_name,is_prune,maxdepth=maxdepth-1):
+ yield k
+ if bld:
+ for node in self.childs.values():
+ if node.id==self.__class__.bld.bldnode.id:
+ continue
+ if node.id&3==BUILD:
+ if accept_name(self,node.name):
+ yield node
+ raise StopIteration
+ def find_iter(self,in_pat=['*'],ex_pat=[],prune_pat=['.svn'],src=True,bld=True,dir=False,maxdepth=25,flat=False):
+ if not(src or bld or dir):
+ raise StopIteration
+ if self.id&3!=DIR:
+ raise StopIteration
+ in_pat=Utils.to_list(in_pat)
+ ex_pat=Utils.to_list(ex_pat)
+ prune_pat=Utils.to_list(prune_pat)
+ def accept_name(node,name):
+ for pat in ex_pat:
+ if fnmatch.fnmatchcase(name,pat):
+ return False
+ for pat in in_pat:
+ if fnmatch.fnmatchcase(name,pat):
+ return True
+ return False
+ def is_prune(node,name):
+ for pat in prune_pat:
+ if fnmatch.fnmatchcase(name,pat):
+ return True
+ return False
+ ret=self.find_iter_impl(src,bld,dir,accept_name,is_prune,maxdepth=maxdepth)
+ if flat:
+ return" ".join([x.relpath_gen(self)for x in ret])
+ return ret
+ def ant_glob(self,*k,**kw):
+ regex=Utils.jar_regexp(k[0])
+ def accept(node,name):
+ ts=node.relpath_gen(self)+'/'+name
+ return regex.match(ts)
+ def reject(node,name):
+ ts=node.relpath_gen(self)+'/'+name
+ return default_excludes()(ts)
+ ret=[x for x in self.find_iter_impl(accept_name=accept,is_prune=reject,src=kw.get('src',1),bld=kw.get('bld',1),dir=kw.get('dir',0),maxdepth=kw.get('maxdepth',25))]
+ if kw.get('flat',True):
+ return" ".join([x.relpath_gen(self)for x in ret])
+ return ret
+if sys.platform=="win32":
+ def find_dir_win32(self,lst):
+ if isinstance(lst,str):
+ lst=Utils.split_path(lst)
+ current=self
+ for name in lst:
+ self.__class__.bld.rescan(current)
+ prev=current
+ if not current.parent and name==current.name:
+ continue
+ if not name:
+ continue
+ elif name=='.':
+ continue
+ elif name=='..':
+ current=current.parent or current
+ else:
+ current=prev.childs.get(name,None)
+ if current is None:
+ if(name in self.__class__.bld.cache_dir_contents[prev.id]or(not prev.parent and name[1]==":")):
+ current=self.__class__(name,prev,DIR)
+ else:
+ return None
+ return current
+ Node.find_dir=find_dir_win32
+ def abspath_win32(self,env=None):
+ variant=self.variant(env)
+ ret=self.__class__.bld.cache_node_abspath[variant].get(self.id,None)
+ if ret:return ret
+ if not variant:
+ cur=self
+ lst=[]
+ while cur:
+ lst.append(cur.name)
+ cur=cur.parent
+ lst.reverse()
+ val=os.sep.join(lst)
+ else:
+ val=os.sep.join((self.__class__.bld.bldnode.abspath(),env.variant(),self.path_to_parent(self.__class__.bld.srcnode)))
+ if val.startswith("\\"):val=val[1:]
+ if val.startswith("\\"):val=val[1:]
+ self.__class__.bld.cache_node_abspath[variant][self.id]=val
+ return val
+ Node.abspath=abspath_win32
+class Nodu(Node):
+ pass
+
diff -Nru gtkimageview-1.6.4/wafadmin/Options.py gtkimageview-1.6.4+dfsg/wafadmin/Options.py
--- gtkimageview-1.6.4/wafadmin/Options.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Options.py 2009-04-04 19:27:22.000000000 -0400
@@ -0,0 +1,154 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+import os,sys,imp,types,tempfile,optparse
+import Logs,Utils,Configure
+from Constants import*
+cmds='distclean configure build install clean uninstall check dist distcheck'.split()
+options={}
+commands={}
+arg_line=[]
+launch_dir=''
+tooldir=''
+lockfile=os.environ.get('WAFLOCK','.lock-wscript')
+try:cache_global=os.path.abspath(os.environ['WAFCACHE'])
+except KeyError:cache_global=''
+platform=Utils.detect_platform()
+conf_file='conf-runs-%s-%d.pickle'%(platform,ABI)
+is_install=False
+default_prefix=os.environ.get('PREFIX')
+if not default_prefix:
+ if platform=='win32':default_prefix=tempfile.gettempdir()
+ else:default_prefix='/usr/local/'
+default_jobs=os.environ.get('JOBS',-1)
+if default_jobs<1:
+ try:
+ if os.sysconf_names.has_key('SC_NPROCESSORS_ONLN'):
+ default_jobs=os.sysconf('SC_NPROCESSORS_ONLN')
+ else:
+ default_jobs=int(Utils.cmd_output(['sysctl','-n','hw.ncpu']))
+ except:
+ default_jobs=int(os.environ.get('NUMBER_OF_PROCESSORS',1))
+default_destdir=os.environ.get('DESTDIR','')
+def create_parser(module=None):
+ Logs.debug('options: create_parser is called')
+ cmds_str=[]
+ if module:
+ tbl=Utils.g_module.__dict__
+ keys=tbl.keys()
+ keys.sort()
+ if'build'in module.__dict__:
+ if not module.build.__doc__:
+ module.build.__doc__='builds the project'
+ if'configure'in module.__dict__:
+ if not module.configure.__doc__:
+ module.configure.__doc__='configures the project'
+ ban=['set_options','init','shutdown']
+ optlst=[x for x in keys if not x in ban and type(tbl[x])is type(parse_args_impl)and tbl[x].__doc__ and not x.startswith('_')]
+ just=max([len(x)for x in optlst])
+ for x in optlst:
+ cmds_str.append(' %s: %s'%(x.ljust(just),tbl[x].__doc__))
+ cmds_str='\n'.join(cmds_str)
+ else:
+ cmd_str=' '.join(cmds)
+ parser=optparse.OptionParser(conflict_handler="resolve",usage='''waf [command] [options]
+
+* Main commands (example: ./waf build -j4)
+%s'''%cmds_str,version='waf %s (%s)'%(WAFVERSION,WAFREVISION))
+ parser.formatter.width=Utils.get_term_cols()
+ p=parser.add_option
+ p('-j','--jobs',type='int',default=default_jobs,help='amount of parallel jobs (%r)'%default_jobs,dest='jobs')
+ p('-k','--keep',action='store_true',default=False,help='keep running happily on independent task groups',dest='keep')
+ p('-v','--verbose',action='count',default=0,help='verbosity level -v -vv or -vvv [default: 0]',dest='verbose')
+ p('--nocache',action='store_true',default=False,help='ignore the WAFCACHE (if set)',dest='nocache')
+ p('--zones',action='store',default='',help='debugging zones (task_gen, deps, tasks, etc)',dest='zones')
+ p('-p','--progress',action='count',default=0,help='-p: progress bar; -pp: ide output',dest='progress_bar')
+ p('--targets',action='store',default='',help='build given task generators, e.g. "target1,target2"',dest='compile_targets')
+ gr=optparse.OptionGroup(parser,'configuration options')
+ parser.add_option_group(gr)
+ gr.add_option('-b','--blddir',action='store',default='',help='build dir for the project (configuration)',dest='blddir')
+ gr.add_option('-s','--srcdir',action='store',default='',help='src dir for the project (configuration)',dest='srcdir')
+ gr.add_option('--prefix',help='installation prefix (configuration) [default: %r]'%default_prefix,default=default_prefix,dest='prefix')
+ gr=optparse.OptionGroup(parser,'installation options')
+ parser.add_option_group(gr)
+ gr.add_option('--destdir',help='installation root [default: %r]'%default_destdir,default=default_destdir,dest='destdir')
+ gr.add_option('-f','--force',action='store_true',default=False,help='force file installation',dest='force')
+ return parser
+def parse_args_impl(parser,_args=None):
+ global options,commands,arg_line
+ (options,args)=parser.parse_args(args=_args)
+ arg_line=args
+ commands={}
+ for var in cmds:commands[var]=0
+ if not args:
+ commands['build']=1
+ args.append('build')
+ for arg in args:
+ commands[arg]=True
+ if'check'in args:
+ idx=args.index('check')
+ try:
+ bidx=args.index('build')
+ if bidx>idx:
+ raise ValueError,'build before check'
+ except ValueError,e:
+ args.insert(idx,'build')
+ if'install'in args:
+ idx=args.index('install')
+ if idx==0 or args[idx-1]!='build':
+ args.insert(idx,'build')
+ if'uninstall'in args:
+ idx=args.index('uninstall')
+ if idx==0 or args[idx-1]!='build':
+ args.insert(idx,'build')
+ if args[0]!='init':
+ args.insert(0,'init')
+ if commands['install']or commands['uninstall']:
+ global is_install
+ is_install=True
+ if options.keep:options.jobs=1
+ if options.jobs<1:options.jobs=1
+ if'install'in sys.argv or'uninstall'in sys.argv:
+ options.destdir=options.destdir and os.path.abspath(os.path.expanduser(options.destdir))
+ Logs.verbose=options.verbose
+ Logs.init_log()
+ if options.zones:
+ Logs.zones=options.zones.split(',')
+ if not Logs.verbose:Logs.verbose=1
+ elif Logs.verbose>0:
+ Logs.zones=['runner']
+ if Logs.verbose>2:
+ Logs.zones=['*']
+class Handler(Utils.Context):
+ parser=None
+ def __init__(self,module=None):
+ self.parser=create_parser(module)
+ self.cwd=os.getcwd()
+ Handler.parser=self
+ def add_option(self,*k,**kw):
+ self.parser.add_option(*k,**kw)
+ def add_option_group(self,*k,**kw):
+ return self.parser.add_option_group(*k,**kw)
+ def get_option_group(self,opt_str):
+ return self.parser.get_option_group(opt_str)
+ def sub_options(self,*k,**kw):
+ if not k:raise Utils.WscriptError('folder expected')
+ self.recurse(k[0],name='set_options')
+ def tool_options(self,*k,**kw):
+
+ if not k[0]:
+ raise Utils.WscriptError('invalid tool_options call %r %r'%(k,kw))
+ tools=Utils.to_list(k[0])
+ path=Utils.to_list(kw.get('tdir',kw.get('tooldir',tooldir)))
+ for tool in tools:
+ tool=tool.replace('++','xx')
+ module=Utils.load_tool(tool,path)
+ try:
+ fun=module.set_options
+ except AttributeError:
+ pass
+ else:
+ fun(kw.get('option_group',self))
+ def parse_args(self,args=None):
+ parse_args_impl(self.parser,args)
+
diff -Nru gtkimageview-1.6.4/wafadmin/pproc.py gtkimageview-1.6.4+dfsg/wafadmin/pproc.py
--- gtkimageview-1.6.4/wafadmin/pproc.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/pproc.py 2009-04-04 19:27:22.000000000 -0400
@@ -0,0 +1,496 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+import sys
+mswindows=(sys.platform=="win32")
+import os
+import types
+import traceback
+import gc
+class CalledProcessError(Exception):
+ def __init__(self,returncode,cmd):
+ self.returncode=returncode
+ self.cmd=cmd
+ def __str__(self):
+ return"Command '%s' returned non-zero exit status %d"%(self.cmd,self.returncode)
+if mswindows:
+ import threading
+ import msvcrt
+ if 0:
+ import pywintypes
+ from win32api import GetStdHandle,STD_INPUT_HANDLE,STD_OUTPUT_HANDLE,STD_ERROR_HANDLE
+ from win32api import GetCurrentProcess,DuplicateHandle,GetModuleFileName,GetVersion
+ from win32con import DUPLICATE_SAME_ACCESS,SW_HIDE
+ from win32pipe import CreatePipe
+ from win32process import CreateProcess,STARTUPINFO,GetExitCodeProcess,STARTF_USESTDHANDLES,STARTF_USESHOWWINDOW,CREATE_NEW_CONSOLE
+ from win32event import WaitForSingleObject,INFINITE,WAIT_OBJECT_0
+ else:
+ from _subprocess import*
+ class STARTUPINFO:
+ dwFlags=0
+ hStdInput=None
+ hStdOutput=None
+ hStdError=None
+ wShowWindow=0
+ class pywintypes:
+ error=IOError
+else:
+ import select
+ import errno
+ import fcntl
+ import pickle
+__all__=["Popen","PIPE","STDOUT","call","check_call","CalledProcessError"]
+try:
+ MAXFD=os.sysconf("SC_OPEN_MAX")
+except:
+ MAXFD=256
+try:
+ False
+except NameError:
+ False=0
+ True=1
+_active=[]
+def _cleanup():
+ for inst in _active[:]:
+ if inst.poll(_deadstate=sys.maxint)>=0:
+ try:
+ _active.remove(inst)
+ except ValueError:
+ pass
+PIPE=-1
+STDOUT=-2
+def call(*popenargs,**kwargs):
+ return Popen(*popenargs,**kwargs).wait()
+def check_call(*popenargs,**kwargs):
+ retcode=call(*popenargs,**kwargs)
+ cmd=kwargs.get("args")
+ if cmd is None:
+ cmd=popenargs[0]
+ if retcode:
+ raise CalledProcessError(retcode,cmd)
+ return retcode
+def list2cmdline(seq):
+ result=[]
+ needquote=False
+ for arg in seq:
+ bs_buf=[]
+ if result:
+ result.append(' ')
+ needquote=(" "in arg)or("\t"in arg)or arg==""
+ if needquote:
+ result.append('"')
+ for c in arg:
+ if c=='\\':
+ bs_buf.append(c)
+ elif c=='"':
+ result.append('\\'*len(bs_buf)*2)
+ bs_buf=[]
+ result.append('\\"')
+ else:
+ if bs_buf:
+ result.extend(bs_buf)
+ bs_buf=[]
+ result.append(c)
+ if bs_buf:
+ result.extend(bs_buf)
+ if needquote:
+ result.extend(bs_buf)
+ result.append('"')
+ return''.join(result)
+class Popen(object):
+ def __init__(self,args,bufsize=0,executable=None,stdin=None,stdout=None,stderr=None,preexec_fn=None,close_fds=False,shell=False,cwd=None,env=None,universal_newlines=False,startupinfo=None,creationflags=0):
+ _cleanup()
+ self._child_created=False
+ if not isinstance(bufsize,(int,long)):
+ raise TypeError("bufsize must be an integer")
+ if mswindows:
+ if preexec_fn is not None:
+ raise ValueError("preexec_fn is not supported on Windows platforms")
+ if close_fds:
+ raise ValueError("close_fds is not supported on Windows platforms")
+ else:
+ if startupinfo is not None:
+ raise ValueError("startupinfo is only supported on Windows platforms")
+ if creationflags!=0:
+ raise ValueError("creationflags is only supported on Windows platforms")
+ self.stdin=None
+ self.stdout=None
+ self.stderr=None
+ self.pid=None
+ self.returncode=None
+ self.universal_newlines=universal_newlines
+ (p2cread,p2cwrite,c2pread,c2pwrite,errread,errwrite)=self._get_handles(stdin,stdout,stderr)
+ self._execute_child(args,executable,preexec_fn,close_fds,cwd,env,universal_newlines,startupinfo,creationflags,shell,p2cread,p2cwrite,c2pread,c2pwrite,errread,errwrite)
+ if mswindows:
+ if stdin is None and p2cwrite is not None:
+ os.close(p2cwrite)
+ p2cwrite=None
+ if stdout is None and c2pread is not None:
+ os.close(c2pread)
+ c2pread=None
+ if stderr is None and errread is not None:
+ os.close(errread)
+ errread=None
+ if p2cwrite:
+ self.stdin=os.fdopen(p2cwrite,'wb',bufsize)
+ if c2pread:
+ if universal_newlines:
+ self.stdout=os.fdopen(c2pread,'rU',bufsize)
+ else:
+ self.stdout=os.fdopen(c2pread,'rb',bufsize)
+ if errread:
+ if universal_newlines:
+ self.stderr=os.fdopen(errread,'rU',bufsize)
+ else:
+ self.stderr=os.fdopen(errread,'rb',bufsize)
+ def _translate_newlines(self,data):
+ data=data.replace("\r\n","\n")
+ data=data.replace("\r","\n")
+ return data
+ def __del__(self,sys=sys):
+ if not self._child_created:
+ return
+ self.poll(_deadstate=sys.maxint)
+ if self.returncode is None and _active is not None:
+ _active.append(self)
+ def communicate(self,input=None):
+ if[self.stdin,self.stdout,self.stderr].count(None)>=2:
+ stdout=None
+ stderr=None
+ if self.stdin:
+ if input:
+ self.stdin.write(input)
+ self.stdin.close()
+ elif self.stdout:
+ stdout=self.stdout.read()
+ elif self.stderr:
+ stderr=self.stderr.read()
+ self.wait()
+ return(stdout,stderr)
+ return self._communicate(input)
+ if mswindows:
+ def _get_handles(self,stdin,stdout,stderr):
+ if stdin is None and stdout is None and stderr is None:
+ return(None,None,None,None,None,None)
+ p2cread,p2cwrite=None,None
+ c2pread,c2pwrite=None,None
+ errread,errwrite=None,None
+ if stdin is None:
+ p2cread=GetStdHandle(STD_INPUT_HANDLE)
+ if p2cread is not None:
+ pass
+ elif stdin is None or stdin==PIPE:
+ p2cread,p2cwrite=CreatePipe(None,0)
+ p2cwrite=p2cwrite.Detach()
+ p2cwrite=msvcrt.open_osfhandle(p2cwrite,0)
+ elif isinstance(stdin,int):
+ p2cread=msvcrt.get_osfhandle(stdin)
+ else:
+ p2cread=msvcrt.get_osfhandle(stdin.fileno())
+ p2cread=self._make_inheritable(p2cread)
+ if stdout is None:
+ c2pwrite=GetStdHandle(STD_OUTPUT_HANDLE)
+ if c2pwrite is not None:
+ pass
+ elif stdout is None or stdout==PIPE:
+ c2pread,c2pwrite=CreatePipe(None,0)
+ c2pread=c2pread.Detach()
+ c2pread=msvcrt.open_osfhandle(c2pread,0)
+ elif isinstance(stdout,int):
+ c2pwrite=msvcrt.get_osfhandle(stdout)
+ else:
+ c2pwrite=msvcrt.get_osfhandle(stdout.fileno())
+ c2pwrite=self._make_inheritable(c2pwrite)
+ if stderr is None:
+ errwrite=GetStdHandle(STD_ERROR_HANDLE)
+ if errwrite is not None:
+ pass
+ elif stderr is None or stderr==PIPE:
+ errread,errwrite=CreatePipe(None,0)
+ errread=errread.Detach()
+ errread=msvcrt.open_osfhandle(errread,0)
+ elif stderr==STDOUT:
+ errwrite=c2pwrite
+ elif isinstance(stderr,int):
+ errwrite=msvcrt.get_osfhandle(stderr)
+ else:
+ errwrite=msvcrt.get_osfhandle(stderr.fileno())
+ errwrite=self._make_inheritable(errwrite)
+ return(p2cread,p2cwrite,c2pread,c2pwrite,errread,errwrite)
+ def _make_inheritable(self,handle):
+ return DuplicateHandle(GetCurrentProcess(),handle,GetCurrentProcess(),0,1,DUPLICATE_SAME_ACCESS)
+ def _find_w9xpopen(self):
+ w9xpopen=os.path.join(os.path.dirname(GetModuleFileName(0)),"w9xpopen.exe")
+ if not os.path.exists(w9xpopen):
+ w9xpopen=os.path.join(os.path.dirname(sys.exec_prefix),"w9xpopen.exe")
+ if not os.path.exists(w9xpopen):
+ raise RuntimeError("Cannot locate w9xpopen.exe, which is needed for Popen to work with your shell or platform.")
+ return w9xpopen
+ def _execute_child(self,args,executable,preexec_fn,close_fds,cwd,env,universal_newlines,startupinfo,creationflags,shell,p2cread,p2cwrite,c2pread,c2pwrite,errread,errwrite):
+ if not isinstance(args,types.StringTypes):
+ args=list2cmdline(args)
+ if startupinfo is None:
+ startupinfo=STARTUPINFO()
+ if None not in(p2cread,c2pwrite,errwrite):
+ startupinfo.dwFlags|=STARTF_USESTDHANDLES
+ startupinfo.hStdInput=p2cread
+ startupinfo.hStdOutput=c2pwrite
+ startupinfo.hStdError=errwrite
+ if shell:
+ startupinfo.dwFlags|=STARTF_USESHOWWINDOW
+ startupinfo.wShowWindow=SW_HIDE
+ comspec=os.environ.get("COMSPEC","cmd.exe")
+ args=comspec+" /c "+args
+ if(GetVersion()>=0x80000000L or os.path.basename(comspec).lower()=="command.com"):
+ w9xpopen=self._find_w9xpopen()
+ args='"%s" %s'%(w9xpopen,args)
+ creationflags|=CREATE_NEW_CONSOLE
+ try:
+ hp,ht,pid,tid=CreateProcess(executable,args,None,None,1,creationflags,env,cwd,startupinfo)
+ except pywintypes.error,e:
+ raise WindowsError(*e.args)
+ self._child_created=True
+ self._handle=hp
+ self.pid=pid
+ ht.Close()
+ if p2cread is not None:
+ p2cread.Close()
+ if c2pwrite is not None:
+ c2pwrite.Close()
+ if errwrite is not None:
+ errwrite.Close()
+ def poll(self,_deadstate=None):
+ if self.returncode is None:
+ if WaitForSingleObject(self._handle,0)==WAIT_OBJECT_0:
+ self.returncode=GetExitCodeProcess(self._handle)
+ return self.returncode
+ def wait(self):
+ if self.returncode is None:
+ obj=WaitForSingleObject(self._handle,INFINITE)
+ self.returncode=GetExitCodeProcess(self._handle)
+ return self.returncode
+ def _readerthread(self,fh,buffer):
+ buffer.append(fh.read())
+ def _communicate(self,input):
+ stdout=None
+ stderr=None
+ if self.stdout:
+ stdout=[]
+ stdout_thread=threading.Thread(target=self._readerthread,args=(self.stdout,stdout))
+ stdout_thread.setDaemon(True)
+ stdout_thread.start()
+ if self.stderr:
+ stderr=[]
+ stderr_thread=threading.Thread(target=self._readerthread,args=(self.stderr,stderr))
+ stderr_thread.setDaemon(True)
+ stderr_thread.start()
+ if self.stdin:
+ if input is not None:
+ self.stdin.write(input)
+ self.stdin.close()
+ if self.stdout:
+ stdout_thread.join()
+ if self.stderr:
+ stderr_thread.join()
+ if stdout is not None:
+ stdout=stdout[0]
+ if stderr is not None:
+ stderr=stderr[0]
+ if self.universal_newlines and hasattr(file,'newlines'):
+ if stdout:
+ stdout=self._translate_newlines(stdout)
+ if stderr:
+ stderr=self._translate_newlines(stderr)
+ self.wait()
+ return(stdout,stderr)
+ else:
+ def _get_handles(self,stdin,stdout,stderr):
+ p2cread,p2cwrite=None,None
+ c2pread,c2pwrite=None,None
+ errread,errwrite=None,None
+ if stdin is None:
+ pass
+ elif stdin==PIPE:
+ p2cread,p2cwrite=os.pipe()
+ elif isinstance(stdin,int):
+ p2cread=stdin
+ else:
+ p2cread=stdin.fileno()
+ if stdout is None:
+ pass
+ elif stdout==PIPE:
+ c2pread,c2pwrite=os.pipe()
+ elif isinstance(stdout,int):
+ c2pwrite=stdout
+ else:
+ c2pwrite=stdout.fileno()
+ if stderr is None:
+ pass
+ elif stderr==PIPE:
+ errread,errwrite=os.pipe()
+ elif stderr==STDOUT:
+ errwrite=c2pwrite
+ elif isinstance(stderr,int):
+ errwrite=stderr
+ else:
+ errwrite=stderr.fileno()
+ return(p2cread,p2cwrite,c2pread,c2pwrite,errread,errwrite)
+ def _set_cloexec_flag(self,fd):
+ try:
+ cloexec_flag=fcntl.FD_CLOEXEC
+ except AttributeError:
+ cloexec_flag=1
+ old=fcntl.fcntl(fd,fcntl.F_GETFD)
+ fcntl.fcntl(fd,fcntl.F_SETFD,old|cloexec_flag)
+ def _close_fds(self,but):
+ for i in xrange(3,MAXFD):
+ if i==but:
+ continue
+ try:
+ os.close(i)
+ except:
+ pass
+ def _execute_child(self,args,executable,preexec_fn,close_fds,cwd,env,universal_newlines,startupinfo,creationflags,shell,p2cread,p2cwrite,c2pread,c2pwrite,errread,errwrite):
+ if isinstance(args,types.StringTypes):
+ args=[args]
+ else:
+ args=list(args)
+ if shell:
+ args=["/bin/sh","-c"]+args
+ if executable is None:
+ executable=args[0]
+ errpipe_read,errpipe_write=os.pipe()
+ self._set_cloexec_flag(errpipe_write)
+ gc_was_enabled=gc.isenabled()
+ gc.disable()
+ try:
+ self.pid=os.fork()
+ except:
+ if gc_was_enabled:
+ gc.enable()
+ raise
+ self._child_created=True
+ if self.pid==0:
+ try:
+ if p2cwrite:
+ os.close(p2cwrite)
+ if c2pread:
+ os.close(c2pread)
+ if errread:
+ os.close(errread)
+ os.close(errpipe_read)
+ if p2cread:
+ os.dup2(p2cread,0)
+ if c2pwrite:
+ os.dup2(c2pwrite,1)
+ if errwrite:
+ os.dup2(errwrite,2)
+ if p2cread and p2cread not in(0,):
+ os.close(p2cread)
+ if c2pwrite and c2pwrite not in(p2cread,1):
+ os.close(c2pwrite)
+ if errwrite and errwrite not in(p2cread,c2pwrite,2):
+ os.close(errwrite)
+ if close_fds:
+ self._close_fds(but=errpipe_write)
+ if cwd is not None:
+ os.chdir(cwd)
+ if preexec_fn:
+ apply(preexec_fn)
+ if env is None:
+ os.execvp(executable,args)
+ else:
+ os.execvpe(executable,args,env)
+ except:
+ exc_type,exc_value,tb=sys.exc_info()
+ exc_lines=traceback.format_exception(exc_type,exc_value,tb)
+ exc_value.child_traceback=''.join(exc_lines)
+ os.write(errpipe_write,pickle.dumps(exc_value))
+ os._exit(255)
+ if gc_was_enabled:
+ gc.enable()
+ os.close(errpipe_write)
+ if p2cread and p2cwrite:
+ os.close(p2cread)
+ if c2pwrite and c2pread:
+ os.close(c2pwrite)
+ if errwrite and errread:
+ os.close(errwrite)
+ data=os.read(errpipe_read,1048576)
+ os.close(errpipe_read)
+ if data!="":
+ os.waitpid(self.pid,0)
+ child_exception=pickle.loads(data)
+ raise child_exception
+ def _handle_exitstatus(self,sts):
+ if os.WIFSIGNALED(sts):
+ self.returncode=-os.WTERMSIG(sts)
+ elif os.WIFEXITED(sts):
+ self.returncode=os.WEXITSTATUS(sts)
+ else:
+ raise RuntimeError("Unknown child exit status!")
+ def poll(self,_deadstate=None):
+ if self.returncode is None:
+ try:
+ pid,sts=os.waitpid(self.pid,os.WNOHANG)
+ if pid==self.pid:
+ self._handle_exitstatus(sts)
+ except os.error:
+ if _deadstate is not None:
+ self.returncode=_deadstate
+ return self.returncode
+ def wait(self):
+ if self.returncode is None:
+ pid,sts=os.waitpid(self.pid,0)
+ self._handle_exitstatus(sts)
+ return self.returncode
+ def _communicate(self,input):
+ read_set=[]
+ write_set=[]
+ stdout=None
+ stderr=None
+ if self.stdin:
+ self.stdin.flush()
+ if input:
+ write_set.append(self.stdin)
+ else:
+ self.stdin.close()
+ if self.stdout:
+ read_set.append(self.stdout)
+ stdout=[]
+ if self.stderr:
+ read_set.append(self.stderr)
+ stderr=[]
+ input_offset=0
+ while read_set or write_set:
+ rlist,wlist,xlist=select.select(read_set,write_set,[])
+ if self.stdin in wlist:
+ bytes_written=os.write(self.stdin.fileno(),buffer(input,input_offset,512))
+ input_offset+=bytes_written
+ if input_offset>=len(input):
+ self.stdin.close()
+ write_set.remove(self.stdin)
+ if self.stdout in rlist:
+ data=os.read(self.stdout.fileno(),1024)
+ if data=="":
+ self.stdout.close()
+ read_set.remove(self.stdout)
+ stdout.append(data)
+ if self.stderr in rlist:
+ data=os.read(self.stderr.fileno(),1024)
+ if data=="":
+ self.stderr.close()
+ read_set.remove(self.stderr)
+ stderr.append(data)
+ if stdout is not None:
+ stdout=''.join(stdout)
+ if stderr is not None:
+ stderr=''.join(stderr)
+ if self.universal_newlines and hasattr(file,'newlines'):
+ if stdout:
+ stdout=self._translate_newlines(stdout)
+ if stderr:
+ stderr=self._translate_newlines(stderr)
+ self.wait()
+ return(stdout,stderr)
+
diff -Nru gtkimageview-1.6.4/wafadmin/py3kfixes.py gtkimageview-1.6.4+dfsg/wafadmin/py3kfixes.py
--- gtkimageview-1.6.4/wafadmin/py3kfixes.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/py3kfixes.py 2009-04-04 19:27:22.000000000 -0400
@@ -0,0 +1,61 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+import os
+all_modifs={}
+def modif(filename,fun):
+ f=open(filename,'r')
+ txt=f.read()
+ f.close()
+ txt=fun(txt)
+ f=open(filename,'w')
+ f.write(txt)
+ f.close()
+def subst(filename):
+ def do_subst(fun):
+ global all_modifs
+ try:
+ all_modifs[filename]+=fun
+ except KeyError:
+ all_modifs[filename]=[fun]
+ return fun
+ return do_subst
+def r1(code):
+ code=code.replace("'iluvcuteoverload'","b'iluvcuteoverload'")
+ code=code.replace("ABI=7","ABI=37")
+ return code
+def r2(code):
+ code=code.replace("p.stdin.write('\\n')","p.stdin.write(b'\\n')")
+ code=code.replace("out=str(out)","out=out.decode('utf-8')")
+ return code
+def r3(code):
+ code=code.replace("m.update(str(lst))","m.update(str(lst).encode())")
+ return code
+def r4(code):
+ code=code.replace("up(self.__class__.__name__)","up(self.__class__.__name__.encode())")
+ code=code.replace("up(self.env.variant())","up(self.env.variant().encode())")
+ code=code.replace("up(x.parent.abspath())","up(x.parent.abspath().encode())")
+ code=code.replace("up(x.name)","up(x.name.encode())")
+ return code
+def r5(code):
+ code=code.replace("cPickle.dump(data,file,-1)","cPickle.dump(data,file)")
+ return code
+def fixdir(dir):
+ import subprocess
+ try:
+ proc=subprocess.Popen("2to3 -x imports -x imports2 -x import -w -n wafadmin".split(),stdout=subprocess.PIPE,stderr=subprocess.PIPE)
+ stdout,setderr=proc.communicate()
+ except:
+ import sys,shutil
+ shutil.rmtree(dir)
+ raise
+ global all_modifs
+ for k in all_modifs:
+ for v in all_modifs[k]:
+ modif(os.path.join(dir,'wafadmin',k),v)
+
+subst('Constants.py')(r1)
+subst('Tools/ccroot.py')(r2)
+subst('Utils.py')(r3)
+subst('Task.py')(r4)
+subst('Build.py')(r5)
diff -Nru gtkimageview-1.6.4/wafadmin/Runner.py gtkimageview-1.6.4+dfsg/wafadmin/Runner.py
--- gtkimageview-1.6.4/wafadmin/Runner.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Runner.py 2009-04-04 19:27:22.000000000 -0400
@@ -0,0 +1,150 @@
+#! /usr/bin/env python
+# encoding: utf-8
+import sys
+if sys.hexversion < 0x020400f0: from sets import Set as set
+import sys,random,time,threading,traceback
+try:from Queue import Queue
+except ImportError:from queue import Queue
+import Build,Utils,Logs,Options
+from Logs import debug,error
+from Constants import*
+GAP=15
+run_old=threading.Thread.run
+def run(*args,**kwargs):
+ try:
+ run_old(*args,**kwargs)
+ except(KeyboardInterrupt,SystemExit):
+ raise
+ except:
+ sys.excepthook(*sys.exc_info())
+threading.Thread.run=run
+class TaskConsumer(threading.Thread):
+ def __init__(self,m):
+ threading.Thread.__init__(self)
+ self.setDaemon(1)
+ self.master=m
+ self.start()
+ def run(self):
+ try:
+ self.loop()
+ except:
+ pass
+ def loop(self):
+ m=self.master
+ while 1:
+ tsk=m.ready.get()
+ if m.stop:
+ m.out.put(tsk)
+ continue
+ try:
+ tsk.generator.bld.printout(tsk.display())
+ if tsk.__class__.stat:ret=tsk.__class__.stat(tsk)
+ else:ret=tsk.call_run()
+ except Exception,e:
+ tsk.err_msg=Utils.ex_stack()
+ tsk.hasrun=EXCEPTION
+ m.error_handler(tsk)
+ m.out.put(tsk)
+ continue
+ if ret:
+ tsk.err_code=ret
+ tsk.hasrun=CRASHED
+ else:
+ try:
+ tsk.post_run()
+ except Utils.WafError:
+ pass
+ except Exception:
+ tsk.err_msg=Utils.ex_stack()
+ tsk.hasrun=EXCEPTION
+ else:
+ tsk.hasrun=SUCCESS
+ if tsk.hasrun!=SUCCESS:
+ m.error_handler(tsk)
+ m.out.put(tsk)
+class Parallel(object):
+ def __init__(self,bld,j=2):
+ self.numjobs=j
+ self.manager=bld.task_manager
+ self.total=self.manager.total()
+ self.outstanding=[]
+ self.maxjobs=MAXJOBS
+ self.frozen=[]
+ self.ready=Queue(0)
+ self.out=Queue(0)
+ self.count=0
+ self.processed=1
+ self.consumers=None
+ self.stop=False
+ self.error=False
+ def get_next(self):
+ if not self.outstanding:
+ return None
+ return self.outstanding.pop(0)
+ def postpone(self,tsk):
+ if random.randint(0,1):
+ self.frozen.insert(0,tsk)
+ else:
+ self.frozen.append(tsk)
+ def refill_task_list(self):
+ while self.count>self.numjobs+GAP or self.count>=self.maxjobs:
+ self.get_out()
+ while not self.outstanding:
+ if self.count:
+ self.get_out()
+ if self.frozen:
+ self.outstanding+=self.frozen
+ self.frozen=[]
+ elif not self.count:
+ (self.maxjobs,tmp)=self.manager.get_next_set()
+ if tmp:self.outstanding+=tmp
+ break
+ def get_out(self):
+ ret=self.out.get()
+ self.manager.add_finished(ret)
+ if not self.stop and getattr(ret,'more_tasks',None):
+ self.outstanding+=ret.more_tasks
+ self.total+=len(ret.more_tasks)
+ self.count-=1
+ def error_handler(self,tsk):
+ if not Options.options.keep:
+ self.stop=True
+ self.error=True
+ def start(self):
+ while not self.stop:
+ self.refill_task_list()
+ tsk=self.get_next()
+ if not tsk:
+ if self.count:
+ continue
+ else:
+ break
+ if tsk.hasrun:
+ self.processed+=1
+ self.manager.add_finished(tsk)
+ try:
+ st=tsk.runnable_status()
+ except Exception,e:
+ tsk.err_msg=Utils.ex_stack()
+ tsk.hasrun=EXCEPTION
+ self.processed+=1
+ self.error_handler(tsk)
+ self.manager.add_finished(tsk)
+ continue
+ if st==ASK_LATER:
+ self.postpone(tsk)
+ elif st==SKIP_ME:
+ self.processed+=1
+ tsk.hasrun=SKIPPED
+ self.manager.add_finished(tsk)
+ else:
+ tsk.position=(self.processed,self.total)
+ self.count+=1
+ self.ready.put(tsk)
+ self.processed+=1
+ if not self.consumers:
+ self.consumers=[TaskConsumer(self)for i in xrange(self.numjobs)]
+ while self.error and self.count:
+ self.get_out()
+ assert(self.count==0 or self.stop)
+
diff -Nru gtkimageview-1.6.4/wafadmin/Scripting.py gtkimageview-1.6.4+dfsg/wafadmin/Scripting.py
--- gtkimageview-1.6.4/wafadmin/Scripting.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Scripting.py 2009-04-04 19:27:22.000000000 -0400
@@ -0,0 +1,355 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+import os,sys,shutil,traceback,time,inspect
+import Utils,Configure,Build,Logs,Options,Environment,Task
+from Logs import error,warn,info
+from Constants import*
+g_gz='bz2'
+commands=[]
+def prepare_impl(t,cwd,ver,wafdir):
+ Options.tooldir=[t]
+ Options.launch_dir=cwd
+ if'--version'in sys.argv:
+ opt_obj=Options.Handler()
+ opt_obj.curdir=cwd
+ opt_obj.parse_args()
+ sys.exit(0)
+ msg1='Waf: *** Nothing to do! Please run waf from a directory containing a file named "%s"'%WSCRIPT_FILE
+ build_dir_override=None
+ candidate=None
+ cwd=Options.launch_dir
+ lst=os.listdir(cwd)
+ search_for_candidate=True
+ if WSCRIPT_FILE in lst:
+ candidate=cwd
+ elif'configure'in sys.argv and not WSCRIPT_BUILD_FILE in lst:
+ calldir=os.path.abspath(os.path.dirname(sys.argv[0]))
+ if WSCRIPT_FILE in os.listdir(calldir):
+ candidate=calldir
+ search_for_candidate=False
+ else:
+ error('arg[0] directory does not contain a wscript file')
+ sys.exit(1)
+ build_dir_override=cwd
+ while search_for_candidate:
+ if len(cwd)<=3:
+ break
+ dirlst=os.listdir(cwd)
+ if WSCRIPT_FILE in dirlst:
+ candidate=cwd
+ if'configure'in sys.argv and candidate:
+ break
+ if Options.lockfile in dirlst:
+ break
+ cwd=os.path.dirname(cwd)
+ if not candidate:
+ if'-h'in sys.argv or'--help'in sys.argv:
+ warn('No wscript file found: the help message may be incomplete')
+ opt_obj=Options.Handler()
+ opt_obj.curdir=cwd
+ opt_obj.parse_args()
+ else:
+ error(msg1)
+ sys.exit(0)
+ os.chdir(candidate)
+ Utils.set_main_module(os.path.join(candidate,WSCRIPT_FILE))
+ if build_dir_override:
+ d=getattr(Utils.g_module,BLDDIR,None)
+ if d:
+ msg=' Overriding build directory %s with %s'%(d,build_dir_override)
+ warn(msg)
+ Utils.g_module.blddir=build_dir_override
+ if not'dist'in Utils.g_module.__dict__:
+ Utils.g_module.dist=dist
+ if not'distclean'in Utils.g_module.__dict__:
+ Utils.g_module.distclean=distclean
+ if not'distcheck'in Utils.g_module.__dict__:
+ Utils.g_module.distcheck=distcheck
+ if not'build_context'in Utils.g_module.__dict__:
+ Utils.g_module.build_context=Build.BuildContext
+ if not'clean'in Utils.g_module.__dict__:
+ Utils.g_module.clean=clean
+ if not'clean_context'in Utils.g_module.__dict__:
+ Utils.g_module.clean_context=Build.BuildContext
+ if not'install'in Utils.g_module.__dict__:
+ Utils.g_module.install=install
+ if not'install_context'in Utils.g_module.__dict__:
+ Utils.g_module.install_context=Build.BuildContext
+ if not'uninstall'in Utils.g_module.__dict__:
+ Utils.g_module.uninstall=uninstall
+ if not'uninstall_context'in Utils.g_module.__dict__:
+ Utils.g_module.uninstall_context=Build.BuildContext
+ if not'configure_context'in Utils.g_module.__dict__:
+ Utils.g_module.configure_context=Configure.ConfigurationContext
+ opt_obj=Options.Handler(Utils.g_module)
+ opt_obj.curdir=candidate
+ try:
+ f=Utils.g_module.set_options
+ except AttributeError:
+ pass
+ else:
+ opt_obj.sub_options([''])
+ opt_obj.parse_args()
+ if not'init'in Utils.g_module.__dict__:
+ Utils.g_module.init=Utils.nada
+ if not'shutdown'in Utils.g_module.__dict__:
+ Utils.g_module.shutdown=Utils.nada
+ main()
+def prepare(t,cwd,ver,wafdir):
+ if WAFVERSION!=ver:
+ msg='Version mismatch: waf %s <> wafadmin %s (wafdir %s)'%(ver,WAFVERSION,wafdir)
+ print('\033[91mError: %s\033[0m'%msg)
+ sys.exit(1)
+ try:
+ prepare_impl(t,cwd,ver,wafdir)
+ except Utils.WafError,e:
+ error(e)
+ sys.exit(1)
+ except KeyboardInterrupt:
+ Utils.pprint('RED','Interrupted')
+ sys.exit(68)
+def main():
+ global commands
+ commands=Options.arg_line[:]
+ while commands:
+ x=commands.pop(0)
+ ini=time.time()
+ if x=='configure':
+ fun=configure
+ elif x=='build':
+ fun=build
+ else:
+ fun=getattr(Utils.g_module,x,None)
+ if not fun:
+ raise Utils.WscriptError('No such command %r'%x)
+ ctx=getattr(Utils.g_module,x+'_context',Utils.Context)()
+ if x in['init','shutdown','dist','distclean','distcheck']:
+ try:
+ fun(ctx)
+ except TypeError:
+ fun()
+ else:
+ fun(ctx)
+ ela=''
+ if not Options.options.progress_bar:
+ ela=time.strftime(' (%H:%M:%S)',time.gmtime(time.time()-ini))
+ if x!='init'and x!='shutdown':
+ info('%r finished successfully%s'%(x,ela))
+ if not commands and x!='shutdown':
+ commands.append('shutdown')
+def configure(conf):
+ err='The %s is not given in %s:\n * define a top level attribute named "%s"\n * run waf configure --%s=xxx'
+ src=getattr(Options.options,SRCDIR,None)
+ if not src:src=getattr(Utils.g_module,SRCDIR,None)
+ if not src:raise Utils.WscriptError(err%(SRCDIR,os.path.abspath('.'),SRCDIR,SRCDIR))
+ src=os.path.abspath(src)
+ bld=getattr(Options.options,BLDDIR,None)
+ if not bld:
+ bld=getattr(Utils.g_module,BLDDIR,None)
+ if bld=='.':
+ raise Utils.WafError('Setting blddir="." may cause distclean problems')
+ if not bld:raise Utils.WscriptError(err%(BLDDIR,os.path.abspath('.'),BLDDIR,BLDDIR))
+ bld=os.path.abspath(bld)
+ try:os.makedirs(bld)
+ except OSError:pass
+ conf.srcdir=src
+ conf.blddir=bld
+ conf.post_init()
+ conf.sub_config([''])
+ conf.store()
+ env=Environment.Environment()
+ env[BLDDIR]=bld
+ env[SRCDIR]=src
+ env['argv']=sys.argv
+ env['commands']=Options.commands
+ env['options']=Options.options.__dict__
+ env['hash']=conf.hash
+ env['files']=conf.files
+ env['environ']=dict(conf.environ)
+ env.store(Options.lockfile)
+def clean(bld):
+ '''removes the build files'''
+ try:
+ proj=Environment.Environment(Options.lockfile)
+ except IOError:
+ raise Utils.WafError('Nothing to clean (project not configured)')
+ bld.load_dirs(proj[SRCDIR],proj[BLDDIR])
+ bld.load_envs()
+ bld.add_subdirs([os.path.split(Utils.g_module.root_path)[0]])
+ try:
+ bld.clean()
+ finally:
+ bld.save()
+def check_configured(bld):
+ if not Configure.autoconfig:
+ return
+ def reconf(proj):
+ back=(Options.commands,Options.options,Logs.zones,Logs.verbose)
+ Options.commands=proj['commands']
+ Options.options.__dict__=proj['options']
+ conf=Configure.ConfigurationContext()
+ conf.environ=proj['environ']
+ configure(conf)
+ (Options.commands,Options.options,Logs.zones,Logs.verbose)=back
+ for k in xrange(3):
+ try:
+ proj=Environment.Environment(Options.lockfile)
+ except IOError:
+ conf=Configure.ConfigurationContext()
+ configure(conf)
+ else:
+ try:
+ bld=Build.BuildContext()
+ bld.load_dirs(proj[SRCDIR],proj[BLDDIR])
+ bld.load_envs()
+ except Utils.WafError:
+ reconf(proj)
+ return
+ break
+ else:
+ raise Utils.WafError('Auto-config: project does not configure (bug)')
+ h=0
+ try:
+ for file in proj['files']:
+ if file.endswith('configure'):
+ h=hash((h,readf(file)))
+ else:
+ mod=Utils.load_module(file)
+ h=hash((h,mod.waf_hash_val))
+ except(OSError,IOError):
+ warn('Reconfiguring the project: a file is unavailable')
+ reconf(proj)
+ else:
+ if(h!=proj['hash']):
+ warn('Reconfiguring the project: the configuration has changed')
+ reconf(proj)
+def install(bld):
+ '''installs the build files'''
+ Options.commands['install']=True
+ Options.commands['uninstall']=False
+ check_configured(bld)
+ build_impl(bld)
+ bld.install()
+def uninstall(bld):
+ '''removes the installed files'''
+ Options.commands['install']=False
+ Options.commands['uninstall']=True
+ try:
+ def runnable_status(self):
+ return SKIP_ME
+ setattr(Task.Task,'runnable_status_back',Task.Task.runnable_status)
+ setattr(Task.Task,'runnable_status',runnable_status)
+ build_impl(bld)
+ bld.install()
+ finally:
+ setattr(Task.Task,'runnable_status',Task.Task.runnable_status_back)
+def build(bld):
+ check_configured(bld)
+ return build_impl(bld)
+def build_impl(bld):
+ try:
+ proj=Environment.Environment(Options.lockfile)
+ except IOError:
+ raise Utils.WafError("Project not configured (run 'waf configure' first)")
+ bld.load_dirs(proj[SRCDIR],proj[BLDDIR])
+ bld.load_envs()
+ info("Waf: Entering directory `%s'"%bld.bldnode.abspath())
+ bld.add_subdirs([os.path.split(Utils.g_module.root_path)[0]])
+ pre_build=getattr(Utils.g_module,'pre_build',None)
+ if pre_build:pre_build()
+ ini=time.time()
+ try:
+ bld.compile()
+ finally:
+ info("Waf: Leaving directory `%s'"%bld.bldnode.abspath())
+ if Options.options.progress_bar:print('')
+ bld.install()
+excludes='.bzr .bzrignore .git .gitignore .svn CVS .cvsignore .arch-ids {arch} SCCS BitKeeper .hg Makefile Makefile.in config.log'.split()
+dist_exts='~ .rej .orig .pyc .pyo .bak .tar.bz2 tar.gz .zip .swp'.split()
+def dont_dist(name,src,build_dir):
+ global excludes,dist_exts
+ if(name.startswith(',,')or name.startswith('++')or name.startswith('.waf-1.')or(src=='.'and name==Options.lockfile)or name in excludes or name==build_dir):
+ return True
+ for ext in dist_exts:
+ if name.endswith(ext):
+ return True
+ return False
+def copytree(src,dst,build_dir):
+ names=os.listdir(src)
+ os.makedirs(dst)
+ for name in names:
+ srcname=os.path.join(src,name)
+ dstname=os.path.join(dst,name)
+ if dont_dist(name,src,build_dir):
+ continue
+ if os.path.isdir(srcname):
+ copytree(srcname,dstname,build_dir)
+ else:
+ shutil.copy2(srcname,dstname)
+def distclean(ctx=None):
+ '''removes the build directory'''
+ lst=os.listdir('.')
+ for f in lst:
+ if f==Options.lockfile:
+ try:
+ proj=Environment.Environment(f)
+ shutil.rmtree(proj[BLDDIR])
+ except(OSError,IOError):
+ pass
+ try:
+ os.remove(f)
+ except(OSError,IOError):
+ pass
+ if f.startswith('.waf-'):
+ shutil.rmtree(f,ignore_errors=True)
+def dist(appname='',version=''):
+ '''makes a tarball for redistributing the sources'''
+ import tarfile
+ if not appname:appname=getattr(Utils.g_module,APPNAME,'noname')
+ if not version:version=getattr(Utils.g_module,VERSION,'1.0')
+ tmp_folder=appname+'-'+version
+ arch_name=tmp_folder+'.tar.'+g_gz
+ try:
+ shutil.rmtree(tmp_folder)
+ except(OSError,IOError):
+ pass
+ try:
+ os.remove(arch_name)
+ except(OSError,IOError):
+ pass
+ copytree('.',tmp_folder,getattr(Utils.g_module,BLDDIR,None))
+ dist_hook=getattr(Utils.g_module,'dist_hook',None)
+ if dist_hook:
+ os.chdir(tmp_folder)
+ try:
+ dist_hook()
+ finally:
+ os.chdir('..')
+ tar=tarfile.open(arch_name,'w:'+g_gz)
+ tar.add(tmp_folder)
+ tar.close()
+ info('The archive is ready: %s'%arch_name)
+ if os.path.exists(tmp_folder):shutil.rmtree(tmp_folder)
+ return arch_name
+def distcheck(appname='',version=''):
+ '''checks if the sources compile (tarball from 'dist')'''
+ import tempfile,tarfile
+ if not appname:appname=getattr(Utils.g_module,APPNAME,'noname')
+ if not version:version=getattr(Utils.g_module,VERSION,'1.0')
+ waf=os.path.abspath(sys.argv[0])
+ tarball=dist(appname,version)
+ t=tarfile.open(tarball)
+ for x in t:t.extract(x)
+ t.close()
+ path=appname+'-'+version
+ instdir=tempfile.mkdtemp('.inst','%s-%s'%(appname,version))
+ ret=Utils.pproc.Popen([waf,'configure','install','uninstall','--destdir='+instdir],cwd=path).wait()
+ if ret:
+ raise Utils.WafError('distcheck failed with code %i'%ret)
+ if os.path.exists(instdir):
+ raise Utils.WafError('distcheck succeeded, but files were left in %s'%instdir)
+ shutil.rmtree(path)
+def add_subdir(dir,bld):
+ bld.recurse(dir,'build')
+
diff -Nru gtkimageview-1.6.4/wafadmin/TaskGen.py gtkimageview-1.6.4+dfsg/wafadmin/TaskGen.py
--- gtkimageview-1.6.4/wafadmin/TaskGen.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/TaskGen.py 2009-04-04 19:27:22.000000000 -0400
@@ -0,0 +1,334 @@
+#! /usr/bin/env python
+# encoding: utf-8
+import sys
+if sys.hexversion < 0x020400f0: from sets import Set as set
+import os,traceback,copy
+import Build,Task,Utils,Logs,Options
+from Logs import debug,error,warn
+from Constants import*
+typos={'sources':'source','targets':'target','include':'includes','define':'defines','importpath':'importpaths','install_var':'install_path','install_subdir':'install_path','inst_var':'install_path','inst_dir':'install_path',}
+class register_obj(type):
+ def __init__(cls,name,bases,dict):
+ super(register_obj,cls).__init__(name,bases,dict)
+ name=cls.__name__
+ suffix='_taskgen'
+ if name.endswith(suffix):
+ task_gen.classes[name.replace(suffix,'')]=cls
+class task_gen(object):
+ __metaclass__=register_obj
+ mappings={}
+ mapped={}
+ prec=Utils.DefaultDict(list)
+ traits=Utils.DefaultDict(set)
+ classes={}
+ def __init__(self,*kw,**kwargs):
+ self.prec=Utils.DefaultDict(list)
+ self.source=''
+ self.target=''
+ self.meths=[]
+ self.mappings={}
+ self.features=list(kw)
+ self.tasks=[]
+ self.default_chmod=O644
+ self.default_install_path=None
+ if Options.is_install:
+ self.inst_files=[]
+ self.allnodes=[]
+ self.bld=kwargs.get('bld',Build.bld)
+ self.env=self.bld.env.copy()
+ self.path=self.bld.path
+ self.name=''
+ self.bld.all_task_gen.append(self)
+ self.idx=self.bld.idx[self.path.id]=self.bld.idx.get(self.path.id,0)+1
+ for key,val in kwargs.iteritems():
+ setattr(self,key,val)
+ def __str__(self):
+ return("<task_gen '%s' of type %s defined in %s>"%(self.name or self.target,self.__class__.__name__,str(self.path)))
+ def __setattr__(self,name,attr):
+ real=typos.get(name,name)
+ if real!=name:
+ warn('typo %s -> %s'%(name,real))
+ if Logs.verbose>0:
+ traceback.print_stack()
+ object.__setattr__(self,real,attr)
+ def to_list(self,value):
+ if isinstance(value,str):return value.split()
+ else:return value
+ def apply(self):
+ keys=set(self.meths)
+ self.features=Utils.to_list(self.features)
+ for x in self.features+['*']:
+ try:
+ keys.update(task_gen.traits[x])
+ except KeyError:
+ warn('feature %r does not exist - bind at least one method to it'%x)
+ prec={}
+ prec_tbl=self.prec or task_gen.prec
+ for x in prec_tbl:
+ if x in keys:
+ prec[x]=prec_tbl[x]
+ tmp=[]
+ for a in keys:
+ for x in prec.values():
+ if a in x:break
+ else:
+ tmp.append(a)
+ out=[]
+ while tmp:
+ e=tmp.pop()
+ if e in keys:out.append(e)
+ try:
+ nlst=prec[e]
+ except KeyError:
+ pass
+ else:
+ del prec[e]
+ for x in nlst:
+ for y in prec:
+ if x in prec[y]:
+ break
+ else:
+ tmp.append(x)
+ if prec:raise Utils.WafError("graph has a cycle %s"%str(prec))
+ out.reverse()
+ self.meths=out
+ debug('task_gen: posting %s %d'%(self,id(self)))
+ for x in out:
+ try:
+ v=getattr(self,x)
+ except AttributeError:
+ raise Utils.WafError("tried to retrieve %s which is not a valid method"%x)
+ debug('task_gen: -> %s (%d)'%(x,id(self)))
+ v()
+ def post(self):
+ if not self.name:
+ if isinstance(self.target,list):
+ self.name=' '.join(self.target)
+ else:
+ self.name=self.target
+ if getattr(self,'posted',None):
+ return
+ self.apply()
+ debug('task_gen: posted %s'%self.name)
+ self.posted=True
+ def get_hook(self,ext):
+ try:return self.mappings[ext]
+ except KeyError:
+ try:return task_gen.mappings[ext]
+ except KeyError:return None
+ def create_task(self,name,env=None):
+ task=Task.TaskBase.classes[name](env or self.env,generator=self)
+ self.tasks.append(task)
+ return task
+ def name_to_obj(self,name):
+ return self.bld.name_to_obj(name,self.env)
+ def find_sources_in_dirs(self,dirnames,excludes=[],exts=[]):
+ err_msg="'%s' attribute must be a list"
+ if not isinstance(excludes,list):
+ raise Utils.WscriptError(err_msg%'excludes')
+ if not isinstance(exts,list):
+ raise Utils.WscriptError(err_msg%'exts')
+ lst=[]
+ dirnames=self.to_list(dirnames)
+ ext_lst=exts or self.mappings.keys()+task_gen.mappings.keys()
+ for name in dirnames:
+ anode=self.path.find_dir(name)
+ if not anode or not anode.is_child_of(self.bld.srcnode):
+ raise Utils.WscriptError("Unable to use '%s' - either because it's not a relative path"", or it's not child of '%s'."%(name,self.bld.srcnode))
+ self.bld.rescan(anode)
+ for name in self.bld.cache_dir_contents[anode.id]:
+ (base,ext)=os.path.splitext(name)
+ if ext in ext_lst and not name in lst and not name in excludes:
+ lst.append((anode.relpath_gen(self.path)or'.')+os.path.sep+name)
+ lst.sort()
+ self.source=self.to_list(self.source)
+ if not self.source:self.source=lst
+ else:self.source+=lst
+ def clone(self,env):
+ newobj=task_gen(bld=self.bld)
+ for x in self.__dict__:
+ if x in['env','bld']:
+ continue
+ elif x in["path","features"]:
+ setattr(newobj,x,getattr(self,x))
+ else:
+ setattr(newobj,x,copy.copy(getattr(self,x)))
+ newobj.__class__=self.__class__
+ if isinstance(env,str):
+ newobj.env=self.bld.all_envs[env].copy()
+ else:
+ newobj.env=env.copy()
+ return newobj
+ def get_inst_path(self):
+ return getattr(self,'_install_path',getattr(self,'default_install_path',''))
+ def set_inst_path(self,val):
+ self._install_path=val
+ install_path=property(get_inst_path,set_inst_path)
+ def get_chmod(self):
+ return getattr(self,'_chmod',getattr(self,'default_chmod',O644))
+ def set_chmod(self,val):
+ self._chmod=val
+ chmod=property(get_chmod,set_chmod)
+def declare_extension(var,func):
+ try:
+ for x in var:
+ task_gen.mappings[x]=func
+ except:
+ raise Utils.WscriptError('declare extension takes either a list or a string %s'%str(var))
+ task_gen.mapped[func.__name__]=func
+def declare_order(*k):
+ assert(len(k)>1)
+ n=len(k)-1
+ for i in xrange(n):
+ f1=k[i]
+ f2=k[i+1]
+ if not f1 in task_gen.prec[f2]:
+ task_gen.prec[f2].append(f1)
+def declare_chain(name='',action='',ext_in='',ext_out='',reentrant=1,color='BLUE',install=0,before=[],after=[],decider=None,rule=None):
+ action=action or rule
+ if isinstance(action,str):
+ act=Task.simple_task_type(name,action,color=color)
+ else:
+ act=Task.task_type_from_func(name,action,color=color)
+ act.ext_in=tuple(Utils.to_list(ext_in))
+ act.ext_out=tuple(Utils.to_list(ext_out))
+ act.before=Utils.to_list(before)
+ act.after=Utils.to_list(after)
+ def x_file(self,node):
+ if decider:
+ ext=decider(self,node)
+ elif isinstance(ext_out,str):
+ ext=ext_out
+ if isinstance(ext,str):
+ out_source=node.change_ext(ext)
+ if reentrant:
+ self.allnodes.append(out_source)
+ elif isinstance(ext,list):
+ out_source=[node.change_ext(x)for x in ext]
+ if reentrant:
+ for i in xrange(reentrant):
+ self.allnodes.append(out_source[i])
+ else:
+ raise Utils.WafError("do not know how to process %s"%str(ext))
+ tsk=self.create_task(name)
+ tsk.set_inputs(node)
+ tsk.set_outputs(out_source)
+ if Options.is_install and install:
+ tsk.install=install
+ declare_extension(act.ext_in,x_file)
+def bind_feature(name,methods):
+ lst=Utils.to_list(methods)
+ task_gen.traits[name].update(lst)
+def taskgen(func):
+ setattr(task_gen,func.__name__,func)
+def feature(*k):
+ def deco(func):
+ setattr(task_gen,func.__name__,func)
+ for name in k:
+ task_gen.traits[name].update([func.__name__])
+ return func
+ return deco
+def before(*k):
+ def deco(func):
+ setattr(task_gen,func.__name__,func)
+ for fun_name in k:
+ if not func.__name__ in task_gen.prec[fun_name]:
+ task_gen.prec[fun_name].append(func.__name__)
+ return func
+ return deco
+def after(*k):
+ def deco(func):
+ setattr(task_gen,func.__name__,func)
+ for fun_name in k:
+ if not fun_name in task_gen.prec[func.__name__]:
+ task_gen.prec[func.__name__].append(fun_name)
+ return func
+ return deco
+def extension(var):
+ if isinstance(var,list):
+ pass
+ elif isinstance(var,str):
+ var=[var]
+ else:
+ raise Utils.WafError('declare extension takes either a list or a string %s'%str(var))
+ def deco(func):
+ setattr(task_gen,func.__name__,func)
+ for x in var:
+ task_gen.mappings[x]=func
+ task_gen.mapped[func.__name__]=func
+ return func
+ return deco
+def apply_core(self):
+ find_resource=self.path.find_resource
+ for filename in self.to_list(self.source):
+ x=self.get_hook(filename)
+ if x:
+ x(self,filename)
+ else:
+ node=find_resource(filename)
+ if not node:raise Utils.WafError("source not found: '%s' in '%s'"%(filename,str(self.path)))
+ self.allnodes.append(node)
+ for node in self.allnodes:
+ x=self.get_hook(node.suffix())
+ if not x:
+ raise Utils.WafError("Do not know how to process %s in %s, mappings are %s"%(str(node),str(self.__class__),str(self.__class__.mappings)))
+ x(self,node)
+feature('*')(apply_core)
+def exec_rule(self):
+ if not getattr(self,'rule',None):
+ return
+ try:
+ self.meths.remove('apply_core')
+ except ValueError:
+ pass
+ func=self.rule
+ vars2=[]
+ if isinstance(func,str):
+ (func,vars2)=Task.compile_fun('',self.rule,shell=getattr(self,'shell',True))
+ func.code=self.rule
+ vars=getattr(self,'vars',vars2)
+ if not vars:
+ if isinstance(self.rule,str):
+ vars=self.rule
+ else:
+ vars=Utils.h_fun(self.rule)
+ name=getattr(self,'name',None)or self.target or self.rule
+ cls=Task.task_type_from_func(name,func,vars)
+ tsk=self.create_task(name)
+ if getattr(self,'target',None):
+ cls.quiet=True
+ tsk.outputs=[self.path.find_or_declare(x)for x in self.to_list(self.target)]
+ if getattr(self,'source',None):
+ cls.quiet=True
+ tsk.inputs=[]
+ for x in self.to_list(self.source):
+ y=self.path.find_resource(x)
+ if not y:
+ raise Utils.WafError('input file %r could not be found (%r)'%(x,self.path.abspath()))
+ tsk.inputs.append(y)
+ if getattr(self,'always',None):
+ Task.always_run(cls)
+ if getattr(self,'install_path',None):
+ tsk.install_path=self.install_path
+ if getattr(self,'cwd',None):
+ tsk.cwd=self.cwd
+ if getattr(self,'on_results',None):
+ Task.update_outputs(cls)
+ for x in['after','before']:
+ setattr(cls,x,getattr(self,x,[]))
+feature('*')(exec_rule)
+before('apply_core')(exec_rule)
+def sequence_order(self):
+ if self.meths and self.meths[-1]!='sequence_order':
+ self.meths.append('sequence_order')
+ return
+ if getattr(self,'seq_start',None):
+ return
+ if getattr(self.bld,'prev',None):
+ self.bld.prev.post()
+ for x in self.bld.prev.tasks:
+ for y in self.tasks:
+ y.set_run_after(x)
+ self.bld.prev=self
+feature('seq')(sequence_order)
+
diff -Nru gtkimageview-1.6.4/wafadmin/Task.py gtkimageview-1.6.4+dfsg/wafadmin/Task.py
--- gtkimageview-1.6.4/wafadmin/Task.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Task.py 2009-04-04 19:27:22.000000000 -0400
@@ -0,0 +1,660 @@
+#! /usr/bin/env python
+# encoding: utf-8
+import sys
+if sys.hexversion < 0x020400f0: from sets import Set as set
+import os,shutil,sys,re,random,time
+from Utils import md5
+import Build,Runner,Utils,Node,Logs,Options
+from Logs import debug,warn
+from Constants import*
+algotype=NORMAL
+COMPILE_TEMPLATE_SHELL='''
+def f(task):
+ env = task.env
+ wd = getattr(task, 'cwd', None)
+ p = env.get_flat
+ cmd = \'\'\' %s \'\'\' % s
+ return task.exec_command(cmd, cwd=wd)
+'''
+COMPILE_TEMPLATE_NOSHELL='''
+def f(task):
+ env = task.env
+ wd = getattr(task, 'cwd', None)
+ def to_list(xx):
+ if isinstance(xx, str): return [xx]
+ return xx
+ lst = []
+ %s
+ lst = [x for x in lst if x]
+ return task.exec_command(lst, cwd=wd)
+'''
+file_deps=Utils.nada
+class TaskManager(object):
+ def __init__(self):
+ self.groups=[]
+ self.tasks_done=[]
+ self.current_group=0
+ def get_next_set(self):
+ ret=None
+ while not ret and self.current_group<len(self.groups):
+ ret=self.groups[self.current_group].get_next_set()
+ if ret:return ret
+ else:self.current_group+=1
+ return(None,None)
+ def add_group(self):
+ if self.groups and not self.groups[0].tasks:
+ warn('add_group: an empty group is already present')
+ self.groups.append(TaskGroup())
+ def add_task(self,task):
+ if not self.groups:self.add_group()
+ self.groups[-1].tasks.append(task)
+ def total(self):
+ total=0
+ if not self.groups:return 0
+ for group in self.groups:
+ total+=len(group.tasks)
+ return total
+ def add_finished(self,tsk):
+ self.tasks_done.append(tsk)
+ bld=tsk.generator.bld
+ if Options.is_install:
+ f=None
+ if'install'in tsk.__dict__:
+ f=tsk.__dict__['install']
+ f(tsk)
+ else:
+ tsk.install()
+class TaskGroup(object):
+ def __init__(self):
+ self.tasks=[]
+ self.cstr_groups=Utils.DefaultDict(list)
+ self.cstr_order=Utils.DefaultDict(set)
+ self.temp_tasks=[]
+ self.ready=0
+ def reset(self):
+ for x in self.cstr_groups:
+ self.tasks+=self.cstr_groups[x]
+ self.tasks=self.temp_tasks+self.tasks
+ self.temp_tasks=[]
+ self.cstr_groups=Utils.DefaultDict(list)
+ self.cstr_order=Utils.DefaultDict(set)
+ self.ready=0
+ def prepare(self):
+ self.ready=1
+ file_deps(self.tasks)
+ self.make_cstr_groups()
+ self.extract_constraints()
+ def get_next_set(self):
+ global algotype
+ if algotype==NORMAL:
+ tasks=self.tasks_in_parallel()
+ maxj=MAXJOBS
+ elif algotype==JOBCONTROL:
+ (maxj,tasks)=self.tasks_by_max_jobs()
+ elif algotype==MAXPARALLEL:
+ tasks=self.tasks_with_inner_constraints()
+ maxj=MAXJOBS
+ else:
+ raise Utils.WafError("unknown algorithm type %s"%(algotype))
+ if not tasks:return()
+ return(maxj,tasks)
+ def make_cstr_groups(self):
+ self.cstr_groups=Utils.DefaultDict(list)
+ for x in self.tasks:
+ h=x.hash_constraints()
+ self.cstr_groups[h].append(x)
+ def set_order(self,a,b):
+ self.cstr_order[a].add(b)
+ def compare_exts(self,t1,t2):
+ x="ext_in"
+ y="ext_out"
+ in_=t1.attr(x,())
+ out_=t2.attr(y,())
+ for k in in_:
+ if k in out_:
+ return-1
+ in_=t2.attr(x,())
+ out_=t1.attr(y,())
+ for k in in_:
+ if k in out_:
+ return 1
+ return 0
+ def compare_partial(self,t1,t2):
+ m="after"
+ n="before"
+ name=t2.__class__.__name__
+ if name in Utils.to_list(t1.attr(m,())):return-1
+ elif name in Utils.to_list(t1.attr(n,())):return 1
+ name=t1.__class__.__name__
+ if name in Utils.to_list(t2.attr(m,())):return 1
+ elif name in Utils.to_list(t2.attr(n,())):return-1
+ return 0
+ def extract_constraints(self):
+ keys=self.cstr_groups.keys()
+ max=len(keys)
+ for i in xrange(max):
+ t1=self.cstr_groups[keys[i]][0]
+ for j in xrange(i+1,max):
+ t2=self.cstr_groups[keys[j]][0]
+ val=(self.compare_exts(t1,t2)or self.compare_partial(t1,t2))
+ if val>0:
+ self.set_order(keys[i],keys[j])
+ elif val<0:
+ self.set_order(keys[j],keys[i])
+ def tasks_in_parallel(self):
+ if not self.ready:self.prepare()
+ keys=self.cstr_groups.keys()
+ unconnected=[]
+ remainder=[]
+ for u in keys:
+ for k in self.cstr_order.values():
+ if u in k:
+ remainder.append(u)
+ break
+ else:
+ unconnected.append(u)
+ toreturn=[]
+ for y in unconnected:
+ toreturn.extend(self.cstr_groups[y])
+ for y in unconnected:
+ try:self.cstr_order.__delitem__(y)
+ except KeyError:pass
+ self.cstr_groups.__delitem__(y)
+ if not toreturn and remainder:
+ raise Utils.WafError("circular order constraint detected %r"%remainder)
+ return toreturn
+ def tasks_by_max_jobs(self):
+ if not self.ready:self.prepare()
+ if not self.temp_tasks:self.temp_tasks=self.tasks_in_parallel()
+ if not self.temp_tasks:return(None,None)
+ maxjobs=MAXJOBS
+ ret=[]
+ remaining=[]
+ for t in self.temp_tasks:
+ m=getattr(t,"maxjobs",getattr(self.__class__,"maxjobs",MAXJOBS))
+ if m>maxjobs:
+ remaining.append(t)
+ elif m<maxjobs:
+ remaining+=ret
+ ret=[t]
+ maxjobs=m
+ else:
+ ret.append(t)
+ self.temp_tasks=remaining
+ return(maxjobs,ret)
+ def tasks_with_inner_constraints(self):
+ if not self.ready:self.prepare()
+ if getattr(self,"done",None):return None
+ for p in self.cstr_order:
+ for v in self.cstr_order[p]:
+ for m in self.cstr_groups[p]:
+ for n in self.cstr_groups[v]:
+ n.set_run_after(m)
+ self.cstr_order=Utils.DefaultDict(set)
+ self.cstr_groups=Utils.DefaultDict(list)
+ self.done=1
+ return self.tasks[:]
+class store_task_type(type):
+ def __init__(cls,name,bases,dict):
+ super(store_task_type,cls).__init__(name,bases,dict)
+ name=cls.__name__
+ if name.endswith('_task'):
+ name=name.replace('_task','')
+ TaskBase.classes[name]=cls
+class TaskBase(object):
+ __metaclass__=store_task_type
+ color="GREEN"
+ maxjobs=MAXJOBS
+ classes={}
+ stat=None
+ def __init__(self,*k,**kw):
+ self.hasrun=NOT_RUN
+ try:
+ self.generator=kw['generator']
+ except KeyError:
+ self.generator=self
+ self.bld=Build.bld
+ if kw.get('normal',1):
+ self.generator.bld.task_manager.add_task(self)
+ def __repr__(self):
+ return'\n\t{task: %s %s}'%(self.__class__.__name__,str(getattr(self,"fun","")))
+ def __str__(self):
+ if hasattr(self,'fun'):
+ return'executing: %s\n'%self.fun.__name__
+ return self.__class__.__name__+'\n'
+ def exec_command(self,*k,**kw):
+ return self.generator.bld.exec_command(*k,**kw)
+ def runnable_status(self):
+ return RUN_ME
+ def can_retrieve_cache(self):
+ return False
+ def call_run(self):
+ if self.can_retrieve_cache():
+ return 0
+ return self.run()
+ def run(self):
+ if hasattr(self,'fun'):
+ return self.fun(self)
+ return 0
+ def post_run(self):
+ pass
+ def display(self):
+ col1=Logs.colors(self.color)
+ col2=Logs.colors.NORMAL
+ if Options.options.progress_bar==1:
+ return self.generator.bld.progress_line(self.position[0],self.position[1],col1,col2)
+ if Options.options.progress_bar==2:
+ ini=self.generator.bld.ini
+ ela=time.strftime('%H:%M:%S',time.gmtime(time.time()-ini))
+ try:
+ ins=','.join([n.name for n in self.inputs])
+ except AttributeError:
+ ins=''
+ try:
+ outs=','.join([n.name for n in self.outputs])
+ except AttributeError:
+ outs=''
+ return'|Total %s|Current %s|Inputs %s|Outputs %s|Time %s|\n'%(self.position[1],self.position[0],ins,outs,ela)
+ total=self.position[1]
+ n=len(str(total))
+ fs='[%%%dd/%%%dd] %%s%%s%%s'%(n,n)
+ return fs%(self.position[0],self.position[1],col1,str(self),col2)
+ def attr(self,att,default=None):
+ ret=getattr(self,att,self)
+ if ret is self:return getattr(self.__class__,att,default)
+ return ret
+ def hash_constraints(self):
+ a=self.attr
+ sum=hash((self.__class__.__name__,str(a('before','')),str(a('after','')),str(a('ext_in','')),str(a('ext_out','')),self.__class__.maxjobs))
+ return sum
+ def format_error(self):
+ if getattr(self,"err_msg",None):
+ return self.err_msg
+ elif self.hasrun==CRASHED:
+ try:
+ return" -> task failed (err #%d): %r"%(self.err_code,self)
+ except AttributeError:
+ return" -> task failed: %r"%self
+ elif self.hasrun==MISSING:
+ return" -> missing files: %r"%self
+ else:
+ return''
+ def install(self):
+ bld=self.generator.bld
+ d=self.attr('install')
+ if self.attr('install_path'):
+ lst=[a.relpath_gen(bld.srcnode)for a in self.outputs]
+ perm=self.attr('chmod',O644)
+ if self.attr('src'):
+ lst+=[a.relpath_gen(bld.srcnode)for a in self.inputs]
+ if self.attr('filename'):
+ dir=self.install_path.rstrip(os.sep)+os.sep+self.attr('filename')
+ bld.install_as(dir,lst[0],self.env,perm)
+ else:
+ bld.install_files(self.install_path,lst,self.env,perm)
+class Task(TaskBase):
+ vars=[]
+ def __init__(self,env,**kw):
+ TaskBase.__init__(self,**kw)
+ self.env=env
+ self.inputs=[]
+ self.outputs=[]
+ self.deps_nodes=[]
+ self.run_after=[]
+ def __str__(self):
+ env=self.env
+ src_str=' '.join([a.nice_path(env)for a in self.inputs])
+ tgt_str=' '.join([a.nice_path(env)for a in self.outputs])
+ if self.outputs:sep=' -> '
+ else:sep=''
+ return'%s: %s%s%s\n'%(self.__class__.__name__,src_str,sep,tgt_str)
+ def __repr__(self):
+ return"".join(['\n\t{task: ',self.__class__.__name__," ",",".join([x.name for x in self.inputs])," -> ",",".join([x.name for x in self.outputs]),'}'])
+ def unique_id(self):
+ try:
+ return self.uid
+ except AttributeError:
+ m=md5()
+ up=m.update
+ up(self.__class__.__name__)
+ up(self.env.variant())
+ p=None
+ for x in self.inputs+self.outputs:
+ if p!=x.parent.id:
+ p=x.parent.id
+ up(x.parent.abspath())
+ up(x.name)
+ self.uid=m.digest()
+ return self.uid
+ def set_inputs(self,inp):
+ if isinstance(inp,list):self.inputs+=inp
+ else:self.inputs.append(inp)
+ def set_outputs(self,out):
+ if isinstance(out,list):self.outputs+=out
+ else:self.outputs.append(out)
+ def set_run_after(self,task):
+ assert isinstance(task,TaskBase)
+ self.run_after.append(task)
+ def add_file_dependency(self,filename):
+ node=self.generator.bld.current.find_resource(filename)
+ self.deps_nodes.append(node)
+ def signature(self):
+ try:return self.cache_sig[0]
+ except AttributeError:pass
+ m=md5()
+ exp_sig=self.sig_explicit_deps()
+ m.update(exp_sig)
+ imp_sig=self.scan and self.sig_implicit_deps()or SIG_NIL
+ m.update(imp_sig)
+ var_sig=self.sig_vars()
+ m.update(var_sig)
+ ret=m.digest()
+ self.cache_sig=(ret,exp_sig,imp_sig,var_sig)
+ return ret
+ def runnable_status(self):
+ if self.inputs and(not self.outputs):
+ if not getattr(self.__class__,'quiet',None):
+ warn("invalid task (no inputs OR outputs): override in a Task subclass or set the attribute 'quiet' %r"%self)
+ for t in self.run_after:
+ if not t.hasrun:
+ return ASK_LATER
+ env=self.env
+ bld=self.generator.bld
+ try:
+ new_sig=self.signature()
+ except KeyError:
+ debug("task: something is wrong, computing the task %r signature failed"%self)
+ return RUN_ME
+ key=self.unique_id()
+ try:
+ prev_sig=bld.task_sigs[key][0]
+ except KeyError:
+ debug("task: task %r must run as it was never run before or the task code changed"%self)
+ return RUN_ME
+ try:
+ for node in self.outputs:
+ variant=node.variant(env)
+ if bld.node_sigs[variant][node.id]!=new_sig:
+ return RUN_ME
+ except KeyError:
+ debug("task: task %r must run as the output nodes do not exist"%self)
+ return RUN_ME
+ if Logs.verbose:self.debug_why(bld.task_sigs[key])
+ if new_sig!=prev_sig:
+ return RUN_ME
+ return SKIP_ME
+ def post_run(self):
+ bld=self.generator.bld
+ env=self.env
+ sig=self.signature()
+ cnt=0
+ variant=env.variant()
+ for node in self.outputs:
+ try:
+ os.stat(node.abspath(env))
+ except OSError:
+ self.has_run=MISSING
+ self.err_msg='-> missing file: %r'%node.abspath(env)
+ raise Utils.WafError
+ bld.node_sigs[variant][node.id]=sig
+ if Options.cache_global:
+ ssig=sig.encode('hex')
+ dest=os.path.join(Options.cache_global,'%s_%d_%s'%(ssig,cnt,node.name))
+ try:shutil.copy2(node.abspath(env),dest)
+ except IOError:warn('Could not write the file to the cache')
+ cnt+=1
+ bld.task_sigs[self.unique_id()]=self.cache_sig
+ def can_retrieve_cache(self):
+ if not Options.cache_global:return None
+ if Options.options.nocache:return None
+ if not self.outputs:return None
+ env=self.env
+ sig=self.signature()
+ cnt=0
+ for node in self.outputs:
+ variant=node.variant(env)
+ ssig=sig.encode('hex')
+ orig=os.path.join(Options.cache_global,'%s_%d_%s'%(ssig,cnt,node.name))
+ try:
+ shutil.copy2(orig,node.abspath(env))
+ os.utime(orig,None)
+ except(OSError,IOError):
+ debug('task: failed retrieving file')
+ return None
+ else:
+ cnt+=1
+ for node in self.outputs:
+ self.generator.bld.node_sigs[variant][node.id]=sig
+ self.generator.bld.printout('restoring from cache %r\n'%node.bldpath(env))
+ return 1
+ def debug_why(self,old_sigs):
+ new_sigs=self.cache_sig
+ def v(x):
+ return x.encode('hex')
+ debug("Task %r"%self)
+ msgs=['Task must run','* Source file or manual dependency','* Implicit dependency','* Environment variable']
+ tmp='task: -> %s: %s %s'
+ for x in xrange(len(msgs)):
+ if(new_sigs[x]!=old_sigs[x]):
+ debug(tmp%(msgs[x],v(old_sigs[x]),v(new_sigs[x])))
+ def sig_explicit_deps(self):
+ bld=self.generator.bld
+ m=md5()
+ for x in self.inputs+getattr(self,'dep_nodes',[]):
+ if not x.parent.id in bld.cache_scanned_folders:
+ bld.rescan(x.parent)
+ variant=x.variant(self.env)
+ m.update(bld.node_sigs[variant][x.id])
+ if bld.deps_man:
+ additional_deps=bld.deps_man
+ for x in self.inputs+self.outputs:
+ try:
+ d=additional_deps[x.id]
+ except KeyError:
+ continue
+ if hasattr(d,'__call__'):
+ d=d()
+ for v in d:
+ if isinstance(v,Node.Node):
+ bld.rescan(v.parent)
+ variant=v.variant(self.env)
+ try:
+ v=bld.node_sigs[variant][v.id]
+ except KeyError:
+ v=''
+ m.update(v)
+ return m.digest()
+ def sig_vars(self):
+ m=md5()
+ bld=self.generator.bld
+ env=self.env
+ act_sig=bld.hash_env_vars(env,self.__class__.vars)
+ m.update(act_sig)
+ dep_vars=getattr(self,'dep_vars',None)
+ if dep_vars:
+ m.update(bld.hash_env_vars(env,dep_vars))
+ return m.digest()
+ scan=None
+ def sig_implicit_deps(self):
+ bld=self.generator.bld
+ key=self.unique_id()
+ prev_sigs=bld.task_sigs.get(key,())
+ if prev_sigs:
+ try:
+ if prev_sigs[2]==self.compute_sig_implicit_deps():
+ return prev_sigs[2]
+ except(KeyError,OSError):
+ pass
+ (nodes,names)=self.scan()
+ if Logs.verbose:
+ debug('deps: scanner for %s returned %s %s'%(str(self),str(nodes),str(names)))
+ bld.node_deps[key]=nodes
+ bld.raw_deps[key]=names
+ sig=self.compute_sig_implicit_deps()
+ return sig
+ def compute_sig_implicit_deps(self):
+ m=md5()
+ upd=m.update
+ bld=self.generator.bld
+ tstamp=bld.node_sigs
+ env=self.env
+ for k in bld.node_deps.get(self.unique_id(),[]):
+ if not k.parent.id in bld.cache_scanned_folders:
+ bld.rescan(k.parent)
+ if k.id&3==2:
+ upd(tstamp[0][k.id])
+ else:
+ upd(tstamp[env.variant()][k.id])
+ return m.digest()
+def funex(c):
+ dc={}
+ exec(c,dc)
+ return dc['f']
+reg_act=re.compile(r"(?P<backslash>\\)|(?P<dollar>\$\$)|(?P<subst>\$\{(?P<var>\w+)(?P<code>.*?)\})",re.M)
+def compile_fun_shell(name,line):
+ extr=[]
+ def repl(match):
+ g=match.group
+ if g('dollar'):return"$"
+ elif g('backslash'):return'\\\\'
+ elif g('subst'):extr.append((g('var'),g('code')));return"%s"
+ return None
+ line=reg_act.sub(repl,line)
+ parm=[]
+ dvars=[]
+ app=parm.append
+ for(var,meth)in extr:
+ if var=='SRC':
+ if meth:app('task.inputs%s'%meth)
+ else:app('" ".join([a.srcpath(env) for a in task.inputs])')
+ elif var=='TGT':
+ if meth:app('task.outputs%s'%meth)
+ else:app('" ".join([a.bldpath(env) for a in task.outputs])')
+ else:
+ if not var in dvars:dvars.append(var)
+ app("p('%s')"%var)
+ if parm:parm="%% (%s) "%(',\n\t\t'.join(parm))
+ else:parm=''
+ c=COMPILE_TEMPLATE_SHELL%(line,parm)
+ debug('action: %s'%c)
+ return(funex(c),dvars)
+def compile_fun_noshell(name,line):
+ extr=[]
+ def repl(match):
+ g=match.group
+ if g('dollar'):return"$"
+ elif g('subst'):extr.append((g('var'),g('code')));return"<<|@|>>"
+ return None
+ line2=reg_act.sub(repl,line)
+ params=line2.split('<<|@|>>')
+ buf=[]
+ dvars=[]
+ app=buf.append
+ for x in xrange(len(extr)):
+ params[x]=params[x].strip()
+ if params[x]:
+ app("lst.extend(%r)"%params[x].split())
+ (var,meth)=extr[x]
+ if var=='SRC':
+ if meth:app('lst.append(task.inputs%s)'%meth)
+ else:app("lst.extend([a.srcpath(env) for a in task.inputs])")
+ elif var=='TGT':
+ if meth:app('lst.append(task.outputs%s)'%meth)
+ else:app("lst.extend([a.bldpath(env) for a in task.outputs])")
+ else:
+ app('lst.extend(to_list(env[%r]))'%var)
+ if not var in dvars:dvars.append(var)
+ if extr:
+ if params[-1]:
+ app("lst.extend(%r)"%params[-1].split())
+ fun=COMPILE_TEMPLATE_NOSHELL%"\n\t".join(buf)
+ debug('action: %s'%fun)
+ return(funex(fun),dvars)
+def compile_fun(name,line,shell=None):
+ if line.find('<')>0 or line.find('>')>0 or line.find('&&')>0:
+ shell=True
+ if shell is None:
+ if sys.platform=='win32':
+ shell=False
+ else:
+ shell=True
+ if shell:
+ return compile_fun_shell(name,line)
+ else:
+ return compile_fun_noshell(name,line)
+def simple_task_type(name,line,color='GREEN',vars=[],ext_in=[],ext_out=[],before=[],after=[],shell=None):
+ (fun,dvars)=compile_fun(name,line,shell)
+ fun.code=line
+ return task_type_from_func(name,fun,vars or dvars,color,ext_in,ext_out,before,after)
+def task_type_from_func(name,func,vars=[],color='GREEN',ext_in=[],ext_out=[],before=[],after=[]):
+ params={'run':func,'vars':vars,'color':color,'name':name,'ext_in':Utils.to_list(ext_in),'ext_out':Utils.to_list(ext_out),'before':Utils.to_list(before),'after':Utils.to_list(after),}
+ cls=type(Task)(name,(Task,),params)
+ TaskBase.classes[name]=cls
+ return cls
+def always_run(cls):
+ old=cls.runnable_status
+ def always(self):
+ old(self)
+ return RUN_ME
+ cls.runnable_status=always
+def update_outputs(cls):
+ old_post_run=cls.post_run
+ def post_run(self):
+ old_post_run(self)
+ bld=self.outputs[0].__class__.bld
+ bld.node_sigs[self.env.variant()][self.outputs[0].id]=Utils.h_file(self.outputs[0].abspath(self.env))
+ cls.post_run=post_run
+def extract_outputs(tasks):
+ v={}
+ for x in tasks:
+ try:
+ (ins,outs)=v[x.env.variant()]
+ except KeyError:
+ ins={}
+ outs={}
+ v[x.env.variant()]=(ins,outs)
+ for a in getattr(x,'inputs',[]):
+ try:ins[a.id].append(x)
+ except KeyError:ins[a.id]=[x]
+ for a in getattr(x,'outputs',[]):
+ try:outs[a.id].append(x)
+ except KeyError:outs[a.id]=[x]
+ for(ins,outs)in v.values():
+ links=set(ins.iterkeys()).intersection(outs.iterkeys())
+ for k in links:
+ for a in ins[k]:
+ for b in outs[k]:
+ a.set_run_after(b)
+def extract_deps(tasks):
+ extract_outputs(tasks)
+ out_to_task={}
+ for x in tasks:
+ v=x.env.variant()
+ try:
+ lst=x.outputs
+ except AttributeError:
+ pass
+ else:
+ for node in lst:
+ out_to_task[(v,node.id)]=x
+ dep_to_task={}
+ for x in tasks:
+ try:
+ x.signature()
+ except:
+ pass
+ variant=x.env.variant()
+ key=x.unique_id()
+ for k in x.generator.bld.node_deps.get(x.unique_id(),[]):
+ try:dep_to_task[(v,k.id)].append(x)
+ except KeyError:dep_to_task[(v,k.id)]=[x]
+ deps=set(dep_to_task.keys()).intersection(set(out_to_task.keys()))
+ for idx in deps:
+ for k in dep_to_task[idx]:
+ k.set_run_after(out_to_task[idx])
+ for x in tasks:
+ try:
+ delattr(x,'cache_sig')
+ except AttributeError:
+ pass
+
diff -Nru gtkimageview-1.6.4/wafadmin/Tools/ar.py gtkimageview-1.6.4+dfsg/wafadmin/Tools/ar.py
--- gtkimageview-1.6.4/wafadmin/Tools/ar.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Tools/ar.py 2009-04-04 19:27:21.000000000 -0400
@@ -0,0 +1,31 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+import os,sys
+import Task
+from Configure import conftest
+ar_str='${AR} ${ARFLAGS} ${TGT} ${SRC}'
+cls=Task.simple_task_type('ar_link_static',ar_str,color='YELLOW',ext_in='.o',shell=False)
+cls.maxjobs=1
+old=cls.run
+def wrap(self):
+ try:os.remove(self.outputs[0].abspath(self.env))
+ except OSError:pass
+ return old(self)
+setattr(cls,'run',wrap)
+def detect(conf):
+ comp=conf.find_program('ar',var='AR')
+ if not comp:return
+ ranlib=conf.find_program('ranlib',var='RANLIB')
+ if not ranlib:return
+ v=conf.env
+ v['AR']=comp
+ v['ARFLAGS']='rcs'
+ v['RANLIB']=ranlib
+ v['RANLIBFLAGS']=''
+def find_ar(conf):
+ v=conf.env
+ conf.check_tool('ar')
+ if not v['AR']:conf.fatal('ar is required for static libraries - not found')
+
+conftest(find_ar)
diff -Nru gtkimageview-1.6.4/wafadmin/Tools/bison.py gtkimageview-1.6.4+dfsg/wafadmin/Tools/bison.py
--- gtkimageview-1.6.4/wafadmin/Tools/bison.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Tools/bison.py 2009-04-04 19:27:21.000000000 -0400
@@ -0,0 +1,17 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+import TaskGen
+def decide_ext(self,node):
+ c_ext='.tab.c'
+ if node.name.endswith('.yc'):c_ext='.tab.cc'
+ if'-d'in self.env['BISONFLAGS']:
+ return[c_ext,c_ext.replace('c','h')]
+ else:
+ return c_ext
+TaskGen.declare_chain(name='bison',rule='cd ${SRC[0].bld_dir(env)} && ${BISON} ${BISONFLAGS} ${SRC[0].abspath()} -o ${TGT[0].name}',ext_in='.y .yc .yy',decider=decide_ext,before='cc cxx',)
+def detect(conf):
+ bison=conf.find_program('bison',var='BISON',mandatory=True)
+ v=conf.env
+ v['BISONFLAGS']='-d'
+
diff -Nru gtkimageview-1.6.4/wafadmin/Tools/boost.py gtkimageview-1.6.4+dfsg/wafadmin/Tools/boost.py
--- gtkimageview-1.6.4/wafadmin/Tools/boost.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Tools/boost.py 2009-04-04 19:27:21.000000000 -0400
@@ -0,0 +1,216 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+import os.path,glob,types,re,sys
+import Configure,config_c,Options,Utils,Logs
+from Logs import warn
+from Configure import conf
+boost_code='''
+#include <iostream>
+#include <boost/version.hpp>
+int main() { std::cout << BOOST_VERSION << std::endl; }
+'''
+boost_libpath=['/usr/lib','/usr/local/lib','/opt/local/lib','/sw/lib','/lib']
+boost_cpppath=['/usr/include','/usr/local/include','/opt/local/include','/sw/include']
+STATIC_NOSTATIC='nostatic'
+STATIC_BOTH='both'
+STATIC_ONLYSTATIC='onlystatic'
+is_versiontag=re.compile('^\d+_\d+_?\d*$')
+is_threadingtag=re.compile('^mt$')
+is_abitag=re.compile('^[sgydpn]+$')
+is_toolsettag=re.compile('^(acc|borland|como|cw|dmc|darwin|gcc|hp_cxx|intel|kylix|msvc|qcc|sun|vacpp)\d*$')
+def set_options(opt):
+ opt.add_option('--boost-includes',type='string',default='',dest='boostincludes',help='path to the boost directory where the includes are e.g. /usr/local/include/boost-1_35')
+ opt.add_option('--boost-libs',type='string',default='',dest='boostlibs',help='path to the directory where the boost libs are e.g. /usr/local/lib')
+def string_to_version(s):
+ version=s.split('.')
+ if len(version)<3:return 0
+ return int(version[0])*100000+int(version[1])*100+int(version[2])
+def version_string(version):
+ major=version/100000
+ minor=version/100%1000
+ minor_minor=version%100
+ if minor_minor==0:
+ return"%d_%d"%(major,minor)
+ else:
+ return"%d_%d_%d"%(major,minor,minor_minor)
+def libfiles(lib,pattern,lib_paths):
+ result=[]
+ for lib_path in lib_paths:
+ libname=pattern%('boost_'+lib+'*')
+ result+=glob.glob(lib_path+'/'+libname)
+ return result
+def get_boost_version_number(self,dir):
+ try:
+ return self.run_c_code(compiler='cxx',code=boost_code,includes=dir,execute=1,env=self.env.copy(),type='cprogram',compile_mode='cxx',compile_filename='test.cpp')
+ except Configure.ConfigurationError,e:
+ return-1
+def set_default(kw,var,val):
+ if not var in kw:
+ kw[var]=val
+def tags_score(tags,kw):
+ score=0
+ needed_tags={'threading':kw['tag_threading'],'abi':kw['tag_abi'],'toolset':kw['tag_toolset'],'version':kw['tag_version']}
+ if kw['tag_toolset']is None:
+ v=kw['env']
+ toolset=v['CXX_NAME']
+ if v['CXX_VERSION']:
+ version_no=v['CXX_VERSION'].split('.')
+ toolset+=version_no[0]
+ if len(version_no)>1:
+ toolset+=version_no[1]
+ needed_tags['toolset']=toolset
+ found_tags={}
+ for tag in tags:
+ if is_versiontag.match(tag):found_tags['version']=tag
+ if is_threadingtag.match(tag):found_tags['threading']=tag
+ if is_abitag.match(tag):found_tags['abi']=tag
+ if is_toolsettag.match(tag):found_tags['toolset']=tag
+ for tagname in needed_tags.iterkeys():
+ if needed_tags[tagname]is not None and tagname in found_tags:
+ if re.compile(needed_tags[tagname]).match(found_tags[tagname]):
+ score+=kw['score_'+tagname][0]
+ else:
+ score+=kw['score_'+tagname][1]
+ return score
+def validate_boost(self,kw):
+ ver=kw.get('version','')
+ for x in'min_version max_version version'.split():
+ set_default(kw,x,ver)
+ set_default(kw,'lib','')
+ kw['lib']=Utils.to_list(kw['lib'])
+ set_default(kw,'env',self.env)
+ set_default(kw,'libpath',boost_libpath)
+ set_default(kw,'cpppath',boost_cpppath)
+ for x in'tag_threading tag_version tag_toolset'.split():
+ set_default(kw,x,None)
+ set_default(kw,'tag_abi','^[^d]*$')
+ set_default(kw,'score_threading',(10,-10))
+ set_default(kw,'score_abi',(10,-10))
+ set_default(kw,'score_toolset',(1,-1))
+ set_default(kw,'score_version',(100,-100))
+ set_default(kw,'score_min',0)
+ set_default(kw,'static',STATIC_NOSTATIC)
+ set_default(kw,'found_includes',False)
+ set_default(kw,'min_score',0)
+ set_default(kw,'errmsg','not found')
+ set_default(kw,'okmsg','ok')
+def find_boost_includes(self,kw):
+ boostPath=getattr(Options.options,'boostincludes','')
+ if boostPath:
+ boostPath=[os.path.normpath(os.path.expandvars(os.path.expanduser(boostPath)))]
+ else:
+ boostPath=Utils.to_list(kw['cpppath'])
+ min_version=string_to_version(kw.get('min_version',''))
+ max_version=string_to_version(kw.get('max_version',''))or(sys.maxint-1)
+ version=0
+ for include_path in boostPath:
+ boost_paths=glob.glob(os.path.join(include_path,'boost*'))
+ for path in boost_paths:
+ pathname=os.path.split(path)[-1]
+ ret=-1
+ if pathname=='boost':
+ path=include_path
+ ret=self.get_boost_version_number(path)
+ elif pathname.startswith('boost-'):
+ ret=self.get_boost_version_number(path)
+ ret=int(ret)
+ if ret!=-1 and ret>=min_version and ret<=max_version and ret>version:
+ boost_path=path
+ version=ret
+ if not version:
+ self.fatal('boost headers not found! (required version min: %s max: %s)'%(kw['min_version'],kw['max_version']))
+ return False
+ found_version=version_string(version)
+ versiontag='^'+found_version+'$'
+ if kw['tag_version']is None:
+ kw['tag_version']=versiontag
+ elif kw['tag_version']!=versiontag:
+ warn('boost header version %r and tag_version %r do not match!'%(versiontag,kw['tag_version']))
+ env=self.env
+ env['CPPPATH_BOOST']=boost_path
+ env['BOOST_VERSION']=found_version
+ self.found_includes=1
+ ret='Version %s (%s)'%(found_version,boost_path)
+ return ret
+def find_boost_library(self,lib,kw):
+ def find_library_from_list(lib,files):
+ lib_pattern=re.compile('.*boost_(.*?)\..*')
+ result=(None,None)
+ resultscore=kw['min_score']-1
+ for file in files:
+ m=lib_pattern.search(file,1)
+ if m:
+ libname=m.group(1)
+ libtags=libname.split('-')[1:]
+ currentscore=tags_score(libtags,kw)
+ if currentscore>resultscore:
+ result=(libname,file)
+ resultscore=currentscore
+ return result
+ lib_paths=getattr(Options.options,'boostlibs','')
+ if lib_paths:
+ lib_paths=[os.path.normpath(os.path.expandvars(os.path.expanduser(lib_paths)))]
+ else:
+ lib_paths=Utils.to_list(kw['libpath'])
+ v=kw.get('env',self.env)
+ (libname,file)=(None,None)
+ if kw['static']in[STATIC_NOSTATIC,STATIC_BOTH]:
+ st_env_prefix='LIB'
+ files=libfiles(lib,v['shlib_PATTERN'],lib_paths)
+ (libname,file)=find_library_from_list(lib,files)
+ if libname is None and kw['static']in[STATIC_ONLYSTATIC,STATIC_BOTH]:
+ st_env_prefix='STATICLIB'
+ staticLibPattern=v['staticlib_PATTERN']
+ if self.env['CC_NAME']=='msvc':
+ staticLibPattern='lib'+staticLibPattern
+ files=libfiles(lib,staticLibPattern,lib_paths)
+ (libname,file)=find_library_from_list(lib,files)
+ if libname is not None:
+ v['LIBPATH_BOOST_'+lib.upper()]=os.path.split(file)[0]
+ if self.env['CC_NAME']=='msvc'and os.path.splitext(file)[1]=='.lib':
+ v[st_env_prefix+'_BOOST_'+lib.upper()]='libboost_'+libname
+ else:
+ v[st_env_prefix+'_BOOST_'+lib.upper()]='boost_'+libname
+ return
+ self.fatal('lib boost_'+lib+' not found!')
+def check_boost(self,*k,**kw):
+ self.validate_boost(kw)
+ ret=None
+ try:
+ if not kw.get('found_includes',None):
+ self.check_message_1(kw.get('msg_includes','boost headers'))
+ ret=self.find_boost_includes(kw)
+ except Configure.ConfigurationError,e:
+ if'errmsg'in kw:
+ self.check_message_2(kw['errmsg'],'YELLOW')
+ if'mandatory'in kw:
+ if Logs.verbose>1:
+ raise
+ else:
+ self.fatal('the configuration failed (see %r)'%self.log.name)
+ else:
+ if'okmsg'in kw:
+ self.check_message_2(kw.get('okmsg_includes',ret))
+ for lib in kw['lib']:
+ self.check_message_1('library boost_'+lib)
+ try:
+ self.find_boost_library(lib,kw)
+ except Configure.ConfigurationError,e:
+ if'errmsg'in kw:
+ self.check_message_2(kw['errmsg'],'YELLOW')
+ if'mandatory'in kw:
+ if Logs.verbose>1:
+ raise
+ else:
+ self.fatal('the configuration failed (see %r)'%self.log.name)
+ else:
+ if'okmsg'in kw:
+ self.check_message_2(kw['okmsg'])
+ return ret
+
+conf(get_boost_version_number)
+conf(validate_boost)
+conf(find_boost_includes)
+conf(find_boost_library)
+conf(check_boost)
diff -Nru gtkimageview-1.6.4/wafadmin/Tools/cc.py gtkimageview-1.6.4+dfsg/wafadmin/Tools/cc.py
--- gtkimageview-1.6.4/wafadmin/Tools/cc.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Tools/cc.py 2009-04-04 19:27:21.000000000 -0400
@@ -0,0 +1,70 @@
+#! /usr/bin/env python
+# encoding: utf-8
+import sys
+if sys.hexversion < 0x020400f0: from sets import Set as set
+import os
+import TaskGen,Build,Utils,Task
+from Logs import debug
+import ccroot
+from TaskGen import feature,before,extension,after
+g_cc_flag_vars=['CCDEPS','FRAMEWORK','FRAMEWORKPATH','STATICLIB','LIB','LIBPATH','LINKFLAGS','RPATH','CCFLAGS','CPPPATH','CPPFLAGS','CCDEFINES']
+EXT_CC=['.c']
+TaskGen.bind_feature('cc',['apply_core'])
+g_cc_type_vars=['CCFLAGS','LINKFLAGS']
+class cc_taskgen(ccroot.ccroot_abstract):
+ pass
+def init_cc(self):
+ self.p_flag_vars=set(self.p_flag_vars).union(g_cc_flag_vars)
+ self.p_type_vars=set(self.p_type_vars).union(g_cc_type_vars)
+ if not self.env['CC_NAME']:
+ raise Utils.WafError("At least one compiler (gcc, ..) must be selected")
+def apply_obj_vars_cc(self):
+ env=self.env
+ app=env.append_unique
+ cpppath_st=env['CPPPATH_ST']
+ for i in env['INC_PATHS']:
+ app('_CCINCFLAGS',cpppath_st%i.bldpath(env))
+ app('_CCINCFLAGS',cpppath_st%i.srcpath(env))
+ for i in env['CPPPATH']:
+ app('_CCINCFLAGS',cpppath_st%i)
+def apply_defines_cc(self):
+ self.defines=getattr(self,'defines',[])
+ lst=self.to_list(self.defines)+self.to_list(self.env['CCDEFINES'])
+ milst=[]
+ for defi in lst:
+ if not defi in milst:
+ milst.append(defi)
+ libs=self.to_list(self.uselib)
+ for l in libs:
+ val=self.env['CCDEFINES_'+l]
+ if val:milst+=val
+ self.env['DEFLINES']=["%s %s"%(x[0],Utils.trimquotes('='.join(x[1:])))for x in[y.split('=')for y in milst]]
+ y=self.env['CCDEFINES_ST']
+ self.env['_CCDEFFLAGS']=[y%x for x in milst]
+def c_hook(self,node):
+ task=self.create_task('cc')
+ if getattr(self,'obj_ext',None):
+ obj_ext=self.obj_ext
+ else:
+ obj_ext='_%d.o'%self.idx
+ task.inputs=[node]
+ task.outputs=[node.change_ext(obj_ext)]
+ self.compiled_tasks.append(task)
+ return task
+cc_str='${CC} ${CCFLAGS} ${CPPFLAGS} ${_CCINCFLAGS} ${_CCDEFFLAGS} ${CC_SRC_F}${SRC} ${CC_TGT_F}${TGT}'
+cls=Task.simple_task_type('cc',cc_str,'GREEN',ext_out='.o',ext_in='.c',shell=False)
+cls.scan=ccroot.scan
+cls.vars.append('CCDEPS')
+link_str='${LINK_CC} ${CCLNK_SRC_F}${SRC} ${CCLNK_TGT_F}${TGT} ${LINKFLAGS}'
+cls=Task.simple_task_type('cc_link',link_str,color='YELLOW',ext_in='.o',shell=False)
+cls.maxjobs=1
+cls2=Task.task_type_from_func('vnum_cc_link',ccroot.link_vnum,cls.vars,color='CYAN',ext_in='.o')
+cls2.maxjobs=1
+TaskGen.declare_order('apply_incpaths','apply_defines_cc','apply_core','apply_lib_vars','apply_obj_vars_cc','apply_obj_vars')
+
+feature('cc')(init_cc)
+before('apply_type_vars')(init_cc)
+after('default_cc')(init_cc)
+feature('cc')(apply_obj_vars_cc)
+feature('cc')(apply_defines_cc)
+extension(EXT_CC)(c_hook)
diff -Nru gtkimageview-1.6.4/wafadmin/Tools/ccroot.py gtkimageview-1.6.4+dfsg/wafadmin/Tools/ccroot.py
--- gtkimageview-1.6.4/wafadmin/Tools/ccroot.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Tools/ccroot.py 2009-04-04 19:27:21.000000000 -0400
@@ -0,0 +1,345 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+import os,sys,re
+import TaskGen,Task,Utils,preproc,Logs,Build,Options
+from Logs import error,debug,warn
+from Utils import md5
+from TaskGen import taskgen,after,before,feature
+from Constants import*
+try:
+ from cStringIO import StringIO
+except ImportError:
+ from io import StringIO
+import config_c
+USE_TOP_LEVEL=False
+def get_cc_version(conf,cc,gcc=False,icc=False):
+ cmd=cc+['-dM','-E','-']
+ try:
+ p=Utils.pproc.Popen(cmd,stdin=Utils.pproc.PIPE,stdout=Utils.pproc.PIPE,stderr=Utils.pproc.PIPE)
+ p.stdin.write('\n')
+ out=p.communicate()[0]
+ except:
+ conf.fatal('could not determine the compiler version %r'%cmd)
+ out=str(out)
+ if gcc:
+ if out.find('__INTEL_COMPILER')>=0:
+ conf.fatal('The intel compiler pretends to be gcc')
+ if out.find('__GNUC__')<0:
+ conf.fatal('Could not determine the compiler type')
+ if icc and out.find('__INTEL_COMPILER')<0:
+ conf.fatal('Not icc/icpc')
+ k={}
+ if icc or gcc:
+ out=out.split('\n')
+ import shlex
+ for line in out:
+ lst=shlex.split(line)
+ if len(lst)>2:
+ key=lst[1]
+ val=lst[2]
+ k[key]=val
+ conf.env['CC_VERSION']=(k['__GNUC__'],k['__GNUC_MINOR__'],k['__GNUC_PATCHLEVEL__'])
+ return k
+class DEBUG_LEVELS:
+ ULTRADEBUG="ultradebug"
+ DEBUG="debug"
+ RELEASE="release"
+ OPTIMIZED="optimized"
+ CUSTOM="custom"
+ ALL=[ULTRADEBUG,DEBUG,RELEASE,OPTIMIZED,CUSTOM]
+def scan(self):
+ debug('ccroot: _scan_preprocessor(self, node, env, path_lst)')
+ all_nodes=[]
+ all_names=[]
+ seen=[]
+ for node in self.inputs:
+ gruik=preproc.c_parser(nodepaths=self.env['INC_PATHS'])
+ gruik.start(node,self.env)
+ if Logs.verbose:
+ debug('deps: deps for %s: %s; unresolved %s'%(str(node),str(gruik.nodes),str(gruik.names)))
+ for x in gruik.nodes:
+ if id(x)in seen:continue
+ seen.append(id(x))
+ all_nodes.append(x)
+ for x in gruik.names:
+ if not x in all_names:
+ all_names.append(x)
+ return(all_nodes,all_names)
+class ccroot_abstract(TaskGen.task_gen):
+ def __init__(self,*k,**kw):
+ if len(k)>1:
+ k=list(k)
+ if k[1][0]!='c':
+ k[1]='c'+k[1]
+ TaskGen.task_gen.__init__(self,*k,**kw)
+def default_cc(self):
+ Utils.def_attrs(self,includes='',defines='',rpaths='',uselib='',uselib_local='',add_objects='',p_flag_vars=[],p_type_vars=[],compiled_tasks=[],link_task=None)
+def get_target_name(self):
+ tp='program'
+ for x in self.features:
+ if x in['cshlib','cstaticlib']:
+ tp=x.lstrip('c')
+ pattern=self.env[tp+'_PATTERN']
+ if not pattern:pattern='%s'
+ dir,name=os.path.split(self.target)
+ return os.path.join(dir,pattern%name)
+def apply_verif(self):
+ if not(self.source or getattr(self,'add_objects',None)):
+ raise Utils.WafError('no source files specified for %s'%self)
+ if not self.target:
+ raise Utils.WafError('no target for %s'%self)
+def install_shlib(self):
+ nums=self.vnum.split('.')
+ path=self.install_path
+ if not path:return
+ libname=self.outputs[0].name
+ name3=libname+'.'+self.vnum
+ name2=libname+'.'+nums[0]
+ name1=libname
+ filename=self.outputs[0].abspath(self.env)
+ bld=self.outputs[0].__class__.bld
+ bld.install_as(os.path.join(path,name3),filename,env=self.env)
+ bld.symlink_as(os.path.join(path,name2),name3)
+ bld.symlink_as(os.path.join(path,name1),name3)
+def vars_target_cprogram(self):
+ self.default_install_path=self.env['BINDIR']or'${PREFIX}/bin'
+ self.default_chmod=O755
+def vars_target_cstaticlib(self):
+ self.default_install_path=self.env['LIBDIR']or'${PREFIX}/lib${LIB_EXT}'
+ if sys.platform in['win32','cygwin']:
+ self.default_chmod=O755
+def install_target_cstaticlib(self):
+ if not Options.is_install:return
+ self.link_task.install_path=self.install_path
+def install_target_cshlib(self):
+ if getattr(self,'vnum','')and sys.platform!='win32':
+ tsk=self.link_task
+ tsk.vnum=self.vnum
+ tsk.install=install_shlib
+def apply_incpaths(self):
+ lst=[]
+ for lib in self.to_list(self.uselib):
+ for path in self.env['CPPPATH_'+lib]:
+ if not path in lst:
+ lst.append(path)
+ if preproc.go_absolute:
+ for path in preproc.standard_includes:
+ if not path in lst:
+ lst.append(path)
+ for path in self.to_list(self.includes):
+ if not path in lst:
+ if preproc.go_absolute or not os.path.isabs(path):
+ lst.append(path)
+ else:
+ self.env.prepend_value('CPPPATH',path)
+ for path in lst:
+ node=None
+ if os.path.isabs(path):
+ if preproc.go_absolute:
+ node=self.bld.root.find_dir(path)
+ elif path[0]=='#':
+ node=self.bld.srcnode
+ if len(path)>1:
+ node=node.find_dir(path[1:])
+ else:
+ node=self.path.find_dir(path)
+ if node:
+ self.env.append_value('INC_PATHS',node)
+ if USE_TOP_LEVEL:
+ self.env.append_value('INC_PATHS',self.bld.srcnode)
+def apply_type_vars(self):
+ for x in self.features:
+ if not x in['cprogram','cstaticlib','cshlib']:
+ continue
+ x=x.lstrip('c')
+ st=self.env[x+'_USELIB']
+ if st:self.uselib=self.uselib+' '+st
+ for var in self.p_type_vars:
+ compvar='%s_%s'%(x,var)
+ value=self.env[compvar]
+ if value:self.env.append_value(var,value)
+def apply_link(self):
+ link=getattr(self,'link',None)
+ if not link:
+ if'cstaticlib'in self.features:link='ar_link_static'
+ elif'cxx'in self.features:link='cxx_link'
+ else:link='cc_link'
+ if'cshlib'in self.features and getattr(self,'vnum',None):
+ if sys.platform=='darwin'or sys.platform=='win32':
+ self.vnum=''
+ else:
+ link='vnum_'+link
+ linktask=self.create_task(link)
+ outputs=[t.outputs[0]for t in self.compiled_tasks]
+ linktask.set_inputs(outputs)
+ linktask.set_outputs(self.path.find_or_declare(get_target_name(self)))
+ linktask.chmod=self.chmod
+ self.link_task=linktask
+def apply_lib_vars(self):
+ env=self.env
+ uselib=self.to_list(self.uselib)
+ seen=[]
+ names=self.to_list(self.uselib_local)[:]
+ while names:
+ x=names.pop(0)
+ if x in seen:
+ continue
+ y=self.name_to_obj(x)
+ if not y:
+ raise Utils.WafError("object '%s' was not found in uselib_local (required by '%s')"%(x,self.name))
+ if getattr(y,'uselib_local',None):
+ lst=y.to_list(y.uselib_local)
+ for u in lst:
+ if not u in seen:
+ names.append(u)
+ y.post()
+ seen.append(x)
+ libname=y.target[y.target.rfind(os.sep)+1:]
+ if'cshlib'in y.features or'cprogram'in y.features:
+ env.append_value('LIB',libname)
+ elif'cstaticlib'in y.features:
+ env.append_value('STATICLIB',libname)
+ if y.link_task is not None:
+ self.link_task.set_run_after(y.link_task)
+ dep_nodes=getattr(self.link_task,'dep_nodes',[])
+ self.link_task.dep_nodes=dep_nodes+y.link_task.outputs
+ tmp_path=y.link_task.outputs[0].parent.bldpath(self.env)
+ if not tmp_path in env['LIBPATH']:env.prepend_value('LIBPATH',tmp_path)
+ morelibs=y.to_list(y.uselib)
+ for v in morelibs:
+ if v in uselib:continue
+ uselib=[v]+uselib
+ if getattr(y,'export_incdirs',None):
+ cpppath_st=self.env['CPPPATH_ST']
+ for x in self.to_list(y.export_incdirs):
+ node=y.path.find_dir(x)
+ if not node:
+ raise Utils.WafError('object %s: invalid folder %s in export_incdirs'%(y.target,x))
+ self.env.append_unique('INC_PATHS',node)
+ for x in uselib:
+ for v in self.p_flag_vars:
+ val=self.env[v+'_'+x]
+ if val:self.env.append_value(v,val)
+def apply_objdeps(self):
+ if not getattr(self,'add_objects',None):return
+ seen=[]
+ names=self.to_list(self.add_objects)
+ while names:
+ x=names[0]
+ if x in seen:
+ names=names[1:]
+ continue
+ y=self.name_to_obj(x)
+ if not y:
+ raise Utils.WafError("object '%s' was not found in uselib_local (required by add_objects '%s')"%(x,self.name))
+ if getattr(y,'add_objects',None):
+ added=0
+ lst=y.to_list(y.add_objects)
+ lst.reverse()
+ for u in lst:
+ if u in seen:continue
+ added=1
+ names=[u]+names
+ if added:continue
+ y.post()
+ seen.append(x)
+ for t in y.compiled_tasks:
+ self.link_task.inputs.extend(t.outputs)
+def apply_obj_vars(self):
+ v=self.env
+ lib_st=v['LIB_ST']
+ staticlib_st=v['STATICLIB_ST']
+ libpath_st=v['LIBPATH_ST']
+ staticlibpath_st=v['STATICLIBPATH_ST']
+ rpath_st=v['RPATH_ST']
+ app=v.append_unique
+ if v['FULLSTATIC']:
+ v.append_value('LINKFLAGS',v['FULLSTATIC_MARKER'])
+ for i in v['RPATH']:
+ if i and rpath_st:
+ app('LINKFLAGS',rpath_st%i)
+ for i in v['LIBPATH']:
+ app('LINKFLAGS',libpath_st%i)
+ app('LINKFLAGS',staticlibpath_st%i)
+ if v['STATICLIB']:
+ v.append_value('LINKFLAGS',v['STATICLIB_MARKER'])
+ k=[(staticlib_st%i)for i in v['STATICLIB']]
+ app('LINKFLAGS',k)
+ if not v['FULLSTATIC']:
+ if v['STATICLIB']or v['LIB']:
+ v.append_value('LINKFLAGS',v['SHLIB_MARKER'])
+ app('LINKFLAGS',[lib_st%i for i in v['LIB']])
+def apply_vnum(self):
+ if sys.platform!='darwin'and sys.platform!='win32':
+ try:
+ nums=self.vnum.split('.')
+ except AttributeError:
+ pass
+ else:
+ try:name3=self.soname
+ except AttributeError:name3=self.link_task.outputs[0].name+'.'+nums[0]
+ self.link_task.outputs.append(self.link_task.outputs[0].parent.find_or_declare(name3))
+ self.env.append_value('LINKFLAGS',(self.env['SONAME_ST']%name3).split())
+def process_obj_files(self):
+ if not hasattr(self,'obj_files'):return
+ for x in self.obj_files:
+ node=self.path.find_resource(x)
+ self.link_task.inputs.append(node)
+def add_obj_file(self,file):
+ if not hasattr(self,'obj_files'):self.obj_files=[]
+ if not'process_obj_files'in self.meths:self.meths.append('process_obj_files')
+ self.obj_files.append(file)
+c_attrs={'cxxflag':'CXXFLAGS','cflag':'CCFLAGS','ccflag':'CCFLAGS','linkflag':'LINKFLAGS','ldflag':'LINKFLAGS','lib':'LIB','libpath':'LIBPATH','staticlib':'STATICLIB','staticlibpath':'STATICLIBPATH','rpath':'RPATH','framework':'FRAMEWORK','frameworkpath':'FRAMEWORKPATH'}
+def add_extra_flags(self):
+ for x in self.__dict__.keys():
+ y=x.lower()
+ if y[-1]=='s':
+ y=y[:-1]
+ if c_attrs.get(y,None):
+ self.env.append_unique(c_attrs[y],getattr(self,x))
+def link_vnum(self):
+ clsname=self.__class__.__name__.replace('vnum_','')
+ out=self.outputs
+ self.outputs=out[1:]
+ ret=Task.TaskBase.classes[clsname].__dict__['run'](self)
+ self.outputs=out
+ if ret:
+ return ret
+ try:
+ os.remove(self.outputs[0].abspath(self.env))
+ except OSError:
+ pass
+ try:
+ os.symlink(self.outputs[1].name,self.outputs[0].bldpath(self.env))
+ except:
+ return 1
+
+feature('cc','cxx')(default_cc)
+before('init_cc','init_cxx')(default_cc)
+feature('cprogram','dprogram','cstaticlib','dstaticlib','cshlib','dshlib')(apply_verif)
+feature('cprogram','dprogram')(vars_target_cprogram)
+before('apply_core')(vars_target_cprogram)
+feature('cstaticlib','dstaticlib','cshlib','dshlib')(vars_target_cstaticlib)
+before('apply_core')(vars_target_cstaticlib)
+feature('cprogram','dprogram','cstaticlib','dstaticlib','cshlib','dshlib')(install_target_cstaticlib)
+after('apply_objdeps','apply_link')(install_target_cstaticlib)
+feature('cshlib','dshlib')(install_target_cshlib)
+after('apply_objdeps','apply_link')(install_target_cshlib)
+feature('cc','cxx')(apply_incpaths)
+after('apply_type_vars')(apply_incpaths)
+feature('cc','cxx')(apply_type_vars)
+feature('cprogram','cshlib','cstaticlib')(apply_link)
+after('apply_core')(apply_link)
+feature('cc','cxx')(apply_lib_vars)
+after('apply_link','apply_vnum')(apply_lib_vars)
+feature('cprogram','cstaticlib','cshlib')(apply_objdeps)
+after('apply_obj_vars','apply_vnum','apply_link')(apply_objdeps)
+feature('cprogram','cshlib','cstaticlib')(apply_obj_vars)
+after('apply_lib_vars')(apply_obj_vars)
+feature('cshlib')(apply_vnum)
+after('apply_link')(apply_vnum)
+after('apply_link')(process_obj_files)
+taskgen(add_obj_file)
+feature('cc','cxx')(add_extra_flags)
+before('init_cxx','init_cc')(add_extra_flags)
diff -Nru gtkimageview-1.6.4/wafadmin/Tools/compiler_cc.py gtkimageview-1.6.4+dfsg/wafadmin/Tools/compiler_cc.py
--- gtkimageview-1.6.4/wafadmin/Tools/compiler_cc.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Tools/compiler_cc.py 2009-04-04 19:27:21.000000000 -0400
@@ -0,0 +1,37 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+import os,sys,imp,types,ccroot
+import optparse
+import Utils,Configure,Options
+c_compiler={'win32':['msvc','gcc'],'cygwin':['gcc'],'darwin':['gcc'],'aix5':['gcc'],'linux':['gcc','icc','suncc'],'sunos':['suncc','gcc'],'irix':['gcc'],'hpux':['gcc'],'default':['gcc']}
+def __list_possible_compiler(platform):
+ try:
+ return c_compiler[platform]
+ except KeyError:
+ return c_compiler["default"]
+def detect(conf):
+ try:test_for_compiler=Options.options.check_c_compiler
+ except AttributeError:conf.fatal("Add set_options(opt): opt.tool_options('compiler_cc')")
+ for c_compiler in test_for_compiler.split():
+ try:
+ conf.check_tool(c_compiler)
+ except Configure.ConfigurationError:
+ pass
+ else:
+ if conf.env['CC']:
+ conf.check_message("%s"%c_compiler,'',True)
+ conf.env["COMPILER_CC"]="%s"%c_compiler
+ return
+ conf.check_message("%s"%c_compiler,'',False)
+ break
+ conf.env["COMPILER_CC"]=None
+def set_options(opt):
+ detected_platform=Options.platform
+ possible_compiler_list=__list_possible_compiler(detected_platform)
+ test_for_compiler=str(" ").join(possible_compiler_list)
+ cc_compiler_opts=opt.add_option_group("C Compiler Options")
+ cc_compiler_opts.add_option('--check-c-compiler',default="%s"%test_for_compiler,help='On this platform (%s) the following C-Compiler will be checked by default: "%s"'%(detected_platform,test_for_compiler),dest="check_c_compiler")
+ for c_compiler in test_for_compiler.split():
+ opt.tool_options('%s'%c_compiler,option_group=cc_compiler_opts)
+
diff -Nru gtkimageview-1.6.4/wafadmin/Tools/compiler_cxx.py gtkimageview-1.6.4+dfsg/wafadmin/Tools/compiler_cxx.py
--- gtkimageview-1.6.4/wafadmin/Tools/compiler_cxx.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Tools/compiler_cxx.py 2009-04-04 19:27:21.000000000 -0400
@@ -0,0 +1,37 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+import os,sys,imp,types,ccroot
+import optparse
+import Utils,Configure,Options
+cxx_compiler={'win32':['msvc','g++'],'cygwin':['g++'],'darwin':['g++'],'aix5':['g++'],'linux':['g++','icpc','sunc++'],'sunos':['sunc++','g++'],'irix':['g++'],'hpux':['g++'],'default':['g++']}
+def __list_possible_compiler(platform):
+ try:
+ return(cxx_compiler[platform])
+ except KeyError:
+ return(cxx_compiler["default"])
+def detect(conf):
+ try:test_for_compiler=Options.options.check_cxx_compiler
+ except AttributeError:raise Configure.ConfigurationError("Add set_options(opt): opt.tool_options('compiler_cxx')")
+ for cxx_compiler in test_for_compiler.split():
+ try:
+ conf.check_tool(cxx_compiler)
+ except Configure.ConfigurationError:
+ pass
+ else:
+ if conf.env['CXX']:
+ conf.check_message("%s"%cxx_compiler,'',True)
+ conf.env["COMPILER_CXX"]="%s"%cxx_compiler
+ return
+ conf.check_message("%s"%cxx_compiler,'',False)
+ break
+ conf.env["COMPILER_CXX"]=None
+def set_options(opt):
+ detected_platform=Options.platform
+ possible_compiler_list=__list_possible_compiler(detected_platform)
+ test_for_compiler=str(" ").join(possible_compiler_list)
+ cxx_compiler_opts=opt.add_option_group("C++ Compiler Options")
+ cxx_compiler_opts.add_option('--check-cxx-compiler',default="%s"%test_for_compiler,help='On this platform (%s) the following C++ Compiler will be checked by default: "%s"'%(detected_platform,test_for_compiler),dest="check_cxx_compiler")
+ for cxx_compiler in test_for_compiler.split():
+ opt.tool_options('%s'%cxx_compiler,option_group=cxx_compiler_opts)
+
diff -Nru gtkimageview-1.6.4/wafadmin/Tools/compiler_d.py gtkimageview-1.6.4+dfsg/wafadmin/Tools/compiler_d.py
--- gtkimageview-1.6.4/wafadmin/Tools/compiler_d.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Tools/compiler_d.py 2009-04-04 19:27:21.000000000 -0400
@@ -0,0 +1,23 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+import os,sys,imp,types
+import Utils,Configure,Options
+def detect(conf):
+ if getattr(Options.options,'check_dmd_first',None):
+ test_for_compiler=['dmd','gdc']
+ else:
+ test_for_compiler=['gdc','dmd']
+ for d_compiler in test_for_compiler:
+ conf.check_tool(d_compiler)
+ if conf.env['D_COMPILER']:
+ conf.check_message("%s"%d_compiler,'',True)
+ conf.env["COMPILER_D"]=d_compiler
+ return
+ conf.check_message("%s"%d_compiler,'',False)
+def set_options(opt):
+ d_compiler_opts=opt.add_option_group("D Compiler Options")
+ d_compiler_opts.add_option('--check-dmd-first',action="store_true",help='checks for the gdc compiler before dmd (default is the other way round)',dest='check_dmd_first',default=False)
+ for d_compiler in['gdc','dmd']:
+ opt.tool_options('%s'%d_compiler,option_group=d_compiler_opts)
+
diff -Nru gtkimageview-1.6.4/wafadmin/Tools/config_c.py gtkimageview-1.6.4+dfsg/wafadmin/Tools/config_c.py
--- gtkimageview-1.6.4/wafadmin/Tools/config_c.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Tools/config_c.py 2009-04-04 19:27:21.000000000 -0400
@@ -0,0 +1,461 @@
+#! /usr/bin/env python
+# encoding: utf-8
+import sys
+if sys.hexversion < 0x020400f0: from sets import Set as set
+import os,imp,sys,shlex,shutil
+from Utils import md5
+import Build,Utils,Configure,Task,Options,Logs,TaskGen
+from Constants import*
+from Configure import conf,conftest
+cfg_ver={'atleast-version':'>=','exact-version':'==','max-version':'<=',}
+SNIP1='''
+ int main() {
+ void *p;
+ p=(void*)(%s);
+ return 0;
+}
+'''
+SNIP2='''
+int main() {
+ if ((%(type_name)s *) 0) return 0;
+ if (sizeof (%(type_name)s)) return 0;
+}
+'''
+SNIP3='''
+int main() {
+ return 0;
+}
+'''
+def parse_flags(line,uselib,env):
+ lst=shlex.split(line)
+ while lst:
+ x=lst.pop(0)
+ st=x[:2]
+ ot=x[2:]
+ if st=='-I'or st=='/I':
+ if not ot:ot=lst.pop(0)
+ env.append_unique('CPPPATH_'+uselib,ot)
+ elif st=='-D':
+ if not ot:ot=lst.pop(0)
+ env.append_unique('CXXDEFINES_'+uselib,ot)
+ env.append_unique('CCDEFINES_'+uselib,ot)
+ elif st=='-l':
+ if not ot:ot=lst.pop(0)
+ env.append_unique('LIB_'+uselib,ot)
+ elif st=='-L':
+ if not ot:ot=lst.pop(0)
+ env.append_unique('LIBPATH_'+uselib,ot)
+ elif x=='-pthread'or x.startswith('+'):
+ env.append_unique('CCFLAGS_'+uselib,x)
+ env.append_unique('CXXFLAGS_'+uselib,x)
+ env.append_unique('LINKFLAGS_'+uselib,x)
+ elif x.startswith('-std'):
+ env.append_unique('CCFLAGS_'+uselib,x)
+ env.append_unique('LINKFLAGS_'+uselib,x)
+ elif x.startswith('-Wl'):
+ env.append_unique('LINKFLAGS_'+uselib,x)
+def ret_msg(self,f,kw):
+ if isinstance(f,str):
+ return f
+ return f(kw)
+def validate_cfg(self,kw):
+ if not'path'in kw:
+ kw['path']='pkg-config --errors-to-stdout --print-errors'
+ if'atleast_pkgconfig_version'in kw:
+ if not'msg'in kw:
+ kw['msg']='Checking for pkg-config version >= %s'%kw['atleast_pkgconfig_version']
+ return
+ if'modversion'in kw:
+ return
+ for x in cfg_ver.keys():
+ y=x.replace('-','_')
+ if y in kw:
+ if not'package'in kw:
+ raise ValueError('%s requires a package'%x)
+ if not'msg'in kw:
+ kw['msg']='Checking for %s %s %s'%(kw['package'],cfg_ver[x],kw[y])
+ return
+ if not'msg'in kw:
+ kw['msg']='Checking for %s'%kw['package']
+ if not'okmsg'in kw:
+ kw['okmsg']='ok'
+ if not'errmsg'in kw:
+ kw['errmsg']='not found'
+def cmd_and_log(self,cmd,kw):
+ Logs.debug('runner: %s\n'%cmd)
+ if self.log:self.log.write('%s\n'%cmd)
+ try:
+ p=Utils.pproc.Popen(cmd,stdout=Utils.pproc.PIPE,shell=True)
+ output=p.communicate()[0]
+ except WindowsError:
+ self.fatal('fail')
+ if p.returncode:
+ if not kw.get('errmsg',''):
+ if kw.get('mandatory',False):
+ kw['errmsg']=output.strip()
+ else:
+ kw['errmsg']='fail'
+ self.fatal('fail')
+ return output
+def exec_cfg(self,kw):
+ if'atleast_pkgconfig_version'in kw:
+ cmd='%s --atleast-pkgconfig-version=%s'%(kw['path'],kw['atleast_pkgconfig_version'])
+ self.cmd_and_log(cmd,kw)
+ if not'okmsg'in kw:
+ kw['okmsg']='ok'
+ return
+ for x in cfg_ver:
+ y=x.replace('-','_')
+ if y in kw:
+ self.cmd_and_log('%s --%s=%s %s'%(kw['path'],x,kw[y],kw['package']),kw)
+ if not'okmsg'in kw:
+ kw['okmsg']='ok'
+ self.define(self.have_define(kw.get('uselib_store',kw['package'])),1,0)
+ break
+ if'modversion'in kw:
+ version=self.cmd_and_log('%s --modversion %s'%(kw['path'],kw['modversion']),kw).strip()
+ self.define('%s_VERSION'%Utils.quote_define_name(kw.get('uselib_store',kw['modversion'])),version)
+ return version
+ lst=[kw['path']]
+ for key,val in kw.get('define_variable',{}).iteritems():
+ lst.append('--define-variable=%s=%s'%(key,val))
+ lst.append(kw.get('args',''))
+ lst.append(kw['package'])
+ cmd=' '.join(lst)
+ ret=self.cmd_and_log(cmd,kw)
+ if not'okmsg'in kw:
+ kw['okmsg']='ok'
+ self.define(self.have_define(kw.get('uselib_store',kw['package'])),1,0)
+ parse_flags(ret,kw.get('uselib_store',kw['package'].upper()),kw.get('env',self.env))
+ return ret
+def check_cfg(self,*k,**kw):
+ self.validate_cfg(kw)
+ if'msg'in kw:
+ self.check_message_1(kw['msg'])
+ ret=None
+ try:
+ ret=self.exec_cfg(kw)
+ except Configure.ConfigurationError,e:
+ if'errmsg'in kw:
+ self.check_message_2(kw['errmsg'],'YELLOW')
+ if'mandatory'in kw and kw['mandatory']:
+ if Logs.verbose>1:
+ raise
+ else:
+ self.fatal('the configuration failed (see %r)'%self.log.name)
+ else:
+ kw['success']=ret
+ if'okmsg'in kw:
+ self.check_message_2(self.ret_msg(kw['okmsg'],kw))
+ return ret
+def validate_c(self,kw):
+ if not'env'in kw:
+ kw['env']=self.env.copy()
+ env=kw['env']
+ if not'compiler'in kw:
+ kw['compiler']='cc'
+ if env['CXX_NAME']and Task.TaskBase.classes.get('cxx',None):
+ kw['compiler']='cxx'
+ if not'type'in kw:
+ kw['type']='cprogram'
+ assert not(kw['type']!='cprogram'and kw.get('execute',0)),'can only execute programs'
+ def to_header(dct):
+ if'header_name'in dct:
+ dct=Utils.to_list(dct['header_name'])
+ return''.join(['#include <%s>\n'%x for x in dct])
+ return''
+ if not'compile_mode'in kw:
+ kw['compile_mode']=(kw['compiler']=='cxx')and'cxx'or'cc'
+ if not'compile_filename'in kw:
+ kw['compile_filename']='test.c'+((kw['compile_mode']=='cxx')and'pp'or'')
+ if'framework_name'in kw:
+ try:TaskGen.task_gen.create_task_macapp
+ except AttributeError:self.fatal('frameworks require the osx tool')
+ fwkname=kw['framework_name']
+ if not'uselib_store'in kw:
+ kw['uselib_store']=fwkname.upper()
+ if not kw.get('no_header',False):
+ if not'header_name'in kw:
+ kw['header_name']=[]
+ fwk='%s/%s.h'%(fwkname,fwkname)
+ if kw.get('remove_dot_h',None):
+ fwk=fwk[:-2]
+ kw['header_name']=Utils.to_list(kw['header_name'])+[fwk]
+ kw['msg']='Checking for framework %s'%fwkname
+ kw['framework']=fwkname
+ if'function_name'in kw:
+ fu=kw['function_name']
+ if not'msg'in kw:
+ kw['msg']='Checking for function %s'%fu
+ kw['code']=to_header(kw)+SNIP1%fu
+ if not'uselib_store'in kw:
+ kw['uselib_store']=fu.upper()
+ if not'define_name'in kw:
+ kw['define_name']=self.have_define(fu)
+ elif'type_name'in kw:
+ tu=kw['type_name']
+ if not'msg'in kw:
+ kw['msg']='Checking for type %s'%tu
+ if not'header_name'in kw:
+ kw['header_name']='stdint.h'
+ kw['code']=to_header(kw)+SNIP2%{'type_name':tu}
+ if not'define_name'in kw:
+ kw['define_name']=self.have_define(tu.upper())
+ elif'header_name'in kw:
+ if not'msg'in kw:
+ kw['msg']='Checking for header %s'%kw['header_name']
+ l=Utils.to_list(kw['header_name'])
+ assert len(l)>0,'list of headers in header_name is empty'
+ kw['code']=to_header(kw)+SNIP3
+ if not'uselib_store'in kw:
+ kw['uselib_store']=l[0].upper()
+ if not'define_name'in kw:
+ kw['define_name']=self.have_define(l[0])
+ if'lib'in kw:
+ if not'msg'in kw:
+ kw['msg']='Checking for library %s'%kw['lib']
+ if not'uselib_store'in kw:
+ kw['uselib_store']=kw['lib'].upper()
+ if'staticlib'in kw:
+ if not'msg'in kw:
+ kw['msg']='Checking for static library %s'%kw['staticlib']
+ if not'uselib_store'in kw:
+ kw['uselib_store']=kw['staticlib'].upper()
+ if'fragment'in kw:
+ kw['code']=kw['fragment']
+ if not'msg'in kw:
+ kw['msg']='Checking for custom code'
+ if not'errmsg'in kw:
+ kw['errmsg']='fail'
+ for(flagsname,flagstype)in[('cxxflags','compiler'),('cflags','compiler'),('linkflags','linker')]:
+ if flagsname in kw:
+ if not'msg'in kw:
+ kw['msg']='Checking for %s flags %s'%(flagstype,kw[flagsname])
+ if not'errmsg'in kw:
+ kw['errmsg']='fail'
+ if not'execute'in kw:
+ kw['execute']=False
+ if not'errmsg'in kw:
+ kw['errmsg']='not found'
+ if not'okmsg'in kw:
+ kw['okmsg']='ok'
+ if not'code'in kw:
+ kw['code']=SNIP3
+ if not kw.get('success'):kw['success']=None
+ assert('msg'in kw)
+def post_check(self,*k,**kw):
+ is_success=0
+ if kw['execute']:
+ if kw['success']:
+ is_success=kw['success']
+ else:
+ is_success=(kw['success']==0)
+ def define_or_stuff():
+ nm=kw['define_name']
+ if kw['execute']and kw.get('define_ret',None)and isinstance(is_success,str):
+ self.define(kw['define_name'],is_success)
+ else:
+ self.define_cond(kw['define_name'],is_success)
+ if'define_name'in kw:
+ if'header_name'in kw or'function_name'in kw or'type_name'in kw or'fragment'in kw:
+ define_or_stuff()
+ if is_success and'uselib_store'in kw:
+ import cc,cxx
+ for k in set(cc.g_cc_flag_vars).union(cxx.g_cxx_flag_vars):
+ lk=k.lower()
+ if k=='CPPPATH':lk='includes'
+ if k=='CXXDEFINES':lk='defines'
+ if k=='CCDEFINES':lk='defines'
+ if lk in kw:
+ val=kw[lk]
+ if isinstance(val,str):
+ val=val.rstrip(os.path.sep)
+ self.env.append_unique(k+'_'+kw['uselib_store'],val)
+def check(self,*k,**kw):
+ self.validate_c(kw)
+ self.check_message_1(kw['msg'])
+ ret=None
+ try:
+ ret=self.run_c_code(*k,**kw)
+ except Configure.ConfigurationError,e:
+ self.check_message_2(kw['errmsg'],'YELLOW')
+ if'mandatory'in kw and kw['mandatory']:
+ if Logs.verbose>1:
+ raise
+ else:
+ self.fatal('the configuration failed (see %r)'%self.log.name)
+ else:
+ kw['success']=ret
+ self.check_message_2(self.ret_msg(kw['okmsg'],kw))
+ self.post_check(*k,**kw)
+ if not kw.get('execute',False):
+ return ret==0
+ return ret
+def run_c_code(self,*k,**kw):
+ test_f_name=kw['compile_filename']
+ dir=os.path.join(self.blddir,'.wscript-trybuild')
+ try:
+ shutil.rmtree(dir)
+ except OSError:
+ pass
+ os.makedirs(dir)
+ bdir=os.path.join(dir,'testbuild')
+ if not os.path.exists(bdir):
+ os.makedirs(bdir)
+ env=kw['env']
+ dest=open(os.path.join(dir,test_f_name),'w')
+ dest.write(kw['code'])
+ dest.close()
+ back=os.path.abspath('.')
+ bld=Build.BuildContext()
+ bld.log=self.log
+ bld.all_envs.update(self.all_envs)
+ bld.all_envs['default']=env
+ bld.lst_variants=bld.all_envs.keys()
+ bld.load_dirs(dir,bdir)
+ os.chdir(dir)
+ bld.rescan(bld.srcnode)
+ o=bld.new_task_gen(features=[kw['compile_mode'],kw['type']],source=test_f_name,target='testprog')
+ for k,v in kw.iteritems():
+ setattr(o,k,v)
+ self.log.write("==>\n%s\n<==\n"%kw['code'])
+ try:
+ bld.compile()
+ except Utils.WafError:
+ ret=Utils.ex_stack()
+ else:
+ ret=0
+ os.chdir(back)
+ if ret:
+ self.log.write('command returned %r'%ret)
+ self.fatal(str(ret))
+ if kw['execute']:
+ lastprog=o.link_task.outputs[0].abspath(env)
+ if kw['execute']:
+ args=Utils.to_list(kw.get('exec_args',[]))
+ try:
+ data=Utils.cmd_output([lastprog]+args).strip()
+ except ValueError,e:
+ self.fatal(Utils.ex_stack())
+ ret=data
+ return ret
+def check_cxx(self,*k,**kw):
+ kw['compiler']='cxx'
+ return self.check(*k,**kw)
+def check_cc(self,*k,**kw):
+ kw['compiler']='cc'
+ return self.check(*k,**kw)
+def define(self,define,value,quote=1):
+ assert define and isinstance(define,str)
+ tbl=self.env[DEFINES]or Utils.ordered_dict()
+ if isinstance(value,str):
+ if quote==1:
+ tbl[define]='"%s"'%str(value)
+ else:
+ tbl[define]=value
+ elif isinstance(value,int):
+ tbl[define]=value
+ else:
+ raise TypeError('define %r -> %r must be a string or an int'%(define,value))
+ self.env[DEFINES]=tbl
+ self.env[define]=value
+def undefine(self,define):
+ assert define and isinstance(define,str)
+ tbl=self.env[DEFINES]or Utils.ordered_dict()
+ value=UNDEFINED
+ tbl[define]=value
+ self.env[DEFINES]=tbl
+ self.env[define]=value
+def define_cond(self,name,value):
+ if value:
+ self.define(name,1)
+ else:
+ self.undefine(name)
+def is_defined(self,key):
+ defines=self.env[DEFINES]
+ if not defines:
+ return False
+ try:
+ value=defines[key]
+ except KeyError:
+ return False
+ else:
+ return value!=UNDEFINED
+def get_define(self,define):
+ try:return self.env[DEFINES][define]
+ except KeyError:return None
+def have_define(self,name):
+ return self.__dict__.get('HAVE_PAT','HAVE_%s')%Utils.quote_define_name(name)
+def write_config_header(self,configfile='',env='',guard=''):
+ if not configfile:configfile=WAF_CONFIG_H
+ waf_guard=guard or'_%s_WAF'%Utils.quote_define_name(configfile)
+ if not env:env=self.env
+ full=os.sep.join([self.blddir,env.variant(),configfile])
+ (dir,base)=os.path.split(full)
+ try:os.makedirs(dir)
+ except:pass
+ dest=open(full,'w')
+ dest.write('/* Configuration header created by Waf - do not edit */\n')
+ dest.write('#ifndef %s\n#define %s\n\n'%(waf_guard,waf_guard))
+ dest.write(self.get_config_header())
+ self.env.append_value(CFG_FILES,configfile)
+ dest.write('\n#endif /* %s */\n'%waf_guard)
+ dest.close()
+def get_config_header(self):
+ config_header=[]
+ tbl=self.env[DEFINES]or Utils.ordered_dict()
+ for key in tbl.allkeys:
+ value=tbl[key]
+ if value is None:
+ config_header.append('#define %s'%key)
+ elif value is UNDEFINED:
+ config_header.append('/* #undef %s */'%key)
+ else:
+ config_header.append('#define %s %s'%(key,value))
+ return"\n".join(config_header)
+def find_cpp(conf):
+ v=conf.env
+ cpp=None
+ if v['CPP']:cpp=v['CPP']
+ elif'CPP'in conf.environ:cpp=conf.environ['CPP']
+ if not cpp:cpp=conf.find_program('cpp',var='CPP')
+ if not cpp:cpp=v['CC']
+ if not cpp:cpp=v['CXX']
+ v['CPP']=cpp
+def cc_add_flags(conf):
+ conf.add_os_flags('CFLAGS','CCFLAGS')
+ conf.add_os_flags('CPPFLAGS')
+ conf.add_os_flags('LINKFLAGS')
+def cxx_add_flags(conf):
+ conf.add_os_flags('CXXFLAGS')
+ conf.add_os_flags('CPPFLAGS')
+ conf.add_os_flags('LINKFLAGS')
+def cc_load_tools(conf):
+ conf.check_tool('cc')
+def cxx_load_tools(conf):
+ conf.check_tool('cxx')
+
+conf(ret_msg)
+conf(validate_cfg)
+conf(cmd_and_log)
+conf(exec_cfg)
+conf(check_cfg)
+conf(validate_c)
+conf(post_check)
+conf(check)
+conf(run_c_code)
+conf(check_cxx)
+conf(check_cc)
+conf(define)
+conf(undefine)
+conf(define_cond)
+conf(is_defined)
+conf(get_define)
+conf(have_define)
+conf(write_config_header)
+conf(get_config_header)
+conftest(find_cpp)
+conftest(cc_add_flags)
+conftest(cxx_add_flags)
+conftest(cc_load_tools)
+conftest(cxx_load_tools)
diff -Nru gtkimageview-1.6.4/wafadmin/Tools/cs.py gtkimageview-1.6.4+dfsg/wafadmin/Tools/cs.py
--- gtkimageview-1.6.4/wafadmin/Tools/cs.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Tools/cs.py 2009-04-04 19:27:21.000000000 -0400
@@ -0,0 +1,45 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+import TaskGen,Utils,Task
+from Logs import error
+from TaskGen import before,after,taskgen,feature
+flag_vars=['FLAGS','ASSEMBLIES']
+def init_cs(self):
+ Utils.def_attrs(self,flags='',assemblies='',resources='',uselib='')
+def apply_uselib_cs(self):
+ if not self.uselib:
+ return
+ global flag_vars
+ for var in self.to_list(self.uselib):
+ for v in self.flag_vars:
+ val=self.env[v+'_'+var]
+ if val:self.env.append_value(v,val)
+def apply_cs(self):
+ try:self.meths.remove('apply_core')
+ except ValueError:pass
+ assemblies_flags=[]
+ for i in self.to_list(self.assemblies)+self.env['ASSEMBLIES']:
+ assemblies_flags+='/r:'+i
+ self.env['_ASSEMBLIES']+=assemblies_flags
+ for i in self.to_list(self.resources):
+ self.env['_RESOURCES'].append('/resource:'+i)
+ self.env['_FLAGS']+=self.to_list(self.flags)+self.env['FLAGS']
+ curnode=self.path
+ nodes=[]
+ for i in self.to_list(self.source):
+ nodes.append(curnode.find_resource(i))
+ task=self.create_task('mcs')
+ task.inputs=nodes
+ task.set_outputs(self.path.find_or_declare(self.target))
+Task.simple_task_type('mcs','${MCS} ${SRC} /out:${TGT} ${_FLAGS} ${_ASSEMBLIES} ${_RESOURCES}',color='YELLOW')
+def detect(conf):
+ mcs=conf.find_program('mcs',var='MCS')
+ if not mcs:mcs=conf.find_program('gmcs',var='MCS')
+
+feature('cs')(init_cs)
+feature('cs')(apply_uselib_cs)
+after('init_cs')(apply_uselib_cs)
+feature('cs')(apply_cs)
+after('apply_uselib_cs')(apply_cs)
+before('apply_core')(apply_cs)
diff -Nru gtkimageview-1.6.4/wafadmin/Tools/cxx.py gtkimageview-1.6.4+dfsg/wafadmin/Tools/cxx.py
--- gtkimageview-1.6.4/wafadmin/Tools/cxx.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Tools/cxx.py 2009-04-04 19:27:21.000000000 -0400
@@ -0,0 +1,71 @@
+#! /usr/bin/env python
+# encoding: utf-8
+import sys
+if sys.hexversion < 0x020400f0: from sets import Set as set
+import TaskGen,Task,Utils
+from Logs import debug
+import ccroot
+from TaskGen import feature,before,extension,after
+g_cxx_flag_vars=['CXXDEPS','FRAMEWORK','FRAMEWORKPATH','STATICLIB','LIB','LIBPATH','LINKFLAGS','RPATH','CXXFLAGS','CCFLAGS','CPPPATH','CPPFLAGS','CXXDEFINES']
+EXT_CXX=['.cpp','.cc','.cxx','.C','.c++']
+TaskGen.bind_feature('cxx',['apply_core'])
+g_cxx_type_vars=['CXXFLAGS','LINKFLAGS']
+class cxx_taskgen(ccroot.ccroot_abstract):
+ pass
+def init_cxx(self):
+ if not'cc'in self.features:
+ self.mappings['.c']=TaskGen.task_gen.mappings['.cxx']
+ self.p_flag_vars=set(self.p_flag_vars).union(g_cxx_flag_vars)
+ self.p_type_vars=set(self.p_type_vars).union(g_cxx_type_vars)
+ if not self.env['CXX_NAME']:
+ raise Utils.WafError("At least one compiler (g++, ..) must be selected")
+def apply_obj_vars_cxx(self):
+ env=self.env
+ app=env.append_unique
+ cxxpath_st=env['CPPPATH_ST']
+ for i in env['INC_PATHS']:
+ app('_CXXINCFLAGS',cxxpath_st%i.bldpath(env))
+ app('_CXXINCFLAGS',cxxpath_st%i.srcpath(env))
+ for i in env['CPPPATH']:
+ app('_CXXINCFLAGS',cxxpath_st%i)
+def apply_defines_cxx(self):
+ self.defines=getattr(self,'defines',[])
+ lst=self.to_list(self.defines)+self.to_list(self.env['CXXDEFINES'])
+ milst=[]
+ for defi in lst:
+ if not defi in milst:
+ milst.append(defi)
+ libs=self.to_list(self.uselib)
+ for l in libs:
+ val=self.env['CXXDEFINES_'+l]
+ if val:milst+=self.to_list(val)
+ self.env['DEFLINES']=["%s %s"%(x[0],Utils.trimquotes('='.join(x[1:])))for x in[y.split('=')for y in milst]]
+ y=self.env['CXXDEFINES_ST']
+ self.env['_CXXDEFFLAGS']=[y%x for x in milst]
+def cxx_hook(self,node):
+ task=self.create_task('cxx')
+ if getattr(self,'obj_ext',None):
+ obj_ext=self.obj_ext
+ else:
+ obj_ext='_%d.o'%self.idx
+ task.inputs=[node]
+ task.outputs=[node.change_ext(obj_ext)]
+ self.compiled_tasks.append(task)
+ return task
+cxx_str='${CXX} ${CXXFLAGS} ${CPPFLAGS} ${_CXXINCFLAGS} ${_CXXDEFFLAGS} ${CXX_SRC_F}${SRC} ${CXX_TGT_F}${TGT}'
+cls=Task.simple_task_type('cxx',cxx_str,color='GREEN',ext_out='.o',ext_in='.cxx',shell=False)
+cls.scan=ccroot.scan
+cls.vars.append('CXXDEPS')
+link_str='${LINK_CXX} ${CXXLNK_SRC_F}${SRC} ${CXXLNK_TGT_F}${TGT} ${LINKFLAGS}'
+cls=Task.simple_task_type('cxx_link',link_str,color='YELLOW',ext_in='.o',shell=False)
+cls.maxjobs=1
+cls2=Task.task_type_from_func('vnum_cxx_link',ccroot.link_vnum,cls.vars,color='CYAN',ext_in='.o')
+cls2.maxjobs=1
+TaskGen.declare_order('apply_incpaths','apply_defines_cxx','apply_core','apply_lib_vars','apply_obj_vars_cxx','apply_obj_vars')
+
+feature('cxx')(init_cxx)
+before('apply_type_vars')(init_cxx)
+after('default_cc')(init_cxx)
+feature('cxx')(apply_obj_vars_cxx)
+feature('cxx')(apply_defines_cxx)
+extension(EXT_CXX)(cxx_hook)
diff -Nru gtkimageview-1.6.4/wafadmin/Tools/dbus.py gtkimageview-1.6.4+dfsg/wafadmin/Tools/dbus.py
--- gtkimageview-1.6.4/wafadmin/Tools/dbus.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Tools/dbus.py 2009-04-04 19:27:21.000000000 -0400
@@ -0,0 +1,27 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+import Task,Utils
+from TaskGen import taskgen,before,after,feature
+def add_dbus_file(self,filename,prefix,mode):
+ if not hasattr(self,'dbus_lst'):
+ self.dbus_lst=[]
+ self.meths.append('process_dbus')
+ self.dbus_lst.append([filename,prefix,mode])
+def process_dbus(self):
+ for filename,prefix,mode in getattr(self,'dbus_lst',[]):
+ env=self.env.copy()
+ node=self.path.find_resource(filename)
+ if not node:
+ raise Utils.WafError('file not found '+filename)
+ env['DBUS_BINDING_TOOL_PREFIX']=prefix
+ env['DBUS_BINDING_TOOL_MODE']=mode
+ task=self.create_task('dbus_binding_tool',env)
+ task.set_inputs(node)
+ task.set_outputs(node.change_ext('.h'))
+Task.simple_task_type('dbus_binding_tool','${DBUS_BINDING_TOOL} --prefix=${DBUS_BINDING_TOOL_PREFIX} --mode=${DBUS_BINDING_TOOL_MODE} --output=${TGT} ${SRC}',color='BLUE',before='cc')
+def detect(conf):
+ dbus_binding_tool=conf.find_program('dbus-binding-tool',var='DBUS_BINDING_TOOL')
+
+taskgen(add_dbus_file)
+before('apply_core')(process_dbus)
diff -Nru gtkimageview-1.6.4/wafadmin/Tools/dmd.py gtkimageview-1.6.4+dfsg/wafadmin/Tools/dmd.py
--- gtkimageview-1.6.4/wafadmin/Tools/dmd.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Tools/dmd.py 2009-04-04 19:27:21.000000000 -0400
@@ -0,0 +1,47 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+import sys
+import ar
+def find_dmd(conf):
+ v=conf.env
+ d_compiler=None
+ if v['D_COMPILER']:
+ d_compiler=v['D_COMPILER']
+ if not d_compiler:d_compiler=conf.find_program('dmd',var='D_COMPILER')
+ if not d_compiler:return 0
+ v['D_COMPILER']=d_compiler
+def common_flags(conf):
+ v=conf.env
+ v['DFLAGS']=['-version=Posix']
+ v['D_SRC_F']=''
+ v['D_TGT_F']=['-c','-of']
+ v['DPATH_ST']='-I%s'
+ v['D_LINKER']=v['D_COMPILER']
+ v['DLNK_SRC_F']=''
+ v['DLNK_TGT_F']='-of'
+ v['DLIB_ST']='-L-l%s'
+ v['DLIBPATH_ST']='-L-L%s'
+ v['DFLAGS_OPTIMIZED']=['-O']
+ v['DFLAGS_DEBUG']=['-g','-debug']
+ v['DFLAGS_ULTRADEBUG']=['-g','-debug']
+ v['DLINKFLAGS']=['-quiet']
+ v['D_shlib_DFLAGS']=['-fPIC']
+ v['D_shlib_LINKFLAGS']=['-L-shared']
+ v['DHEADER_ext']='.di'
+ v['D_HDR_F']=['-H','-Hf']
+ if sys.platform=="win32":
+ v['D_program_PATTERN']='%s.exe'
+ v['D_shlib_PATTERN']='lib%s.dll'
+ v['D_staticlib_PATTERN']='lib%s.a'
+ else:
+ v['D_program_PATTERN']='%s'
+ v['D_shlib_PATTERN']='lib%s.so'
+ v['D_staticlib_PATTERN']='lib%s.a'
+def detect(conf):
+ v=conf.env
+ find_dmd(conf)
+ ar.find_ar(conf)
+ conf.check_tool('d')
+ common_flags(conf)
+
diff -Nru gtkimageview-1.6.4/wafadmin/Tools/d.py gtkimageview-1.6.4+dfsg/wafadmin/Tools/d.py
--- gtkimageview-1.6.4/wafadmin/Tools/d.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Tools/d.py 2009-04-04 19:27:21.000000000 -0400
@@ -0,0 +1,337 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+import os,sys,re,optparse
+import ccroot
+import TaskGen,Utils,Task,Configure,Logs,Build
+from Logs import debug,error
+from TaskGen import taskgen,feature,after,before,extension
+EXT_D=['.d','.di','.D']
+D_METHS=['apply_core','apply_vnum','apply_objdeps']
+def filter_comments(filename):
+ f=open(filename,'r')
+ txt=f.read()
+ f.close()
+ buf=[]
+ i=0
+ max=len(txt)
+ while i<max:
+ c=txt[i]
+ if c=='"':
+ i+=1
+ c=''
+ while i<max:
+ p=c
+ c=txt[i]
+ i+=1
+ if i==max:return buf
+ if c=='"':
+ cnt=0
+ while i<cnt and i<max:
+ if txt[i-2-cnt]=='\\':cnt+=1
+ else:break
+ if(cnt%2)==0:break
+ elif c=="'":
+ i+=1
+ if i==max:return buf
+ c=txt[i]
+ if c=='\\':
+ i+=1
+ if i==max:return buf
+ c=txt[i]
+ if c=='x':
+ i+=2
+ elif c=='u':
+ i+=4
+ i+=1
+ if i==max:return buf
+ c=txt[i]
+ if c!='\'':error("uh-oh, invalid character")
+ elif c=='/':
+ if i==max:break
+ c=txt[i+1]
+ if c=='+':
+ i+=1
+ nesting=1
+ prev=0
+ while i<max:
+ c=txt[i]
+ if c=='+':
+ prev=1
+ elif c=='/':
+ if prev:
+ nesting-=1
+ if nesting==0:break
+ else:
+ if i<max:
+ i+=1
+ c=txt[i]
+ if c=='+':
+ nesting+=1
+ else:
+ return buf
+ else:
+ prev=0
+ i+=1
+ elif c=='*':
+ i+=1
+ while i<max:
+ c=txt[i]
+ if c=='*':
+ prev=1
+ elif c=='/':
+ if prev:break
+ else:
+ prev=0
+ i+=1
+ elif c=='/':
+ i+=1
+ c=txt[i]
+ while i<max and c!='\n':
+ i+=1
+ c=txt[i]
+ else:
+ buf.append(c)
+ i+=1
+ return buf
+class d_parser(object):
+ def __init__(self,env,incpaths):
+ self.allnames=[]
+ self.re_module=re.compile("module\s+([^;]+)")
+ self.re_import=re.compile("import\s+([^;]+)")
+ self.re_import_bindings=re.compile("([^:]+):(.*)")
+ self.re_import_alias=re.compile("[^=]+=(.+)")
+ self.env=env
+ self.nodes=[]
+ self.names=[]
+ self.incpaths=incpaths
+ def tryfind(self,filename):
+ found=0
+ for n in self.incpaths:
+ found=n.find_resource(filename.replace('.','/')+'.d')
+ if found:
+ self.nodes.append(found)
+ self.waiting.append(found)
+ break
+ if not found:
+ if not filename in self.names:
+ self.names.append(filename)
+ def get_strings(self,code):
+ self.module=''
+ lst=[]
+ mod_name=self.re_module.search(code)
+ if mod_name:
+ self.module=re.sub('\s+','',mod_name.group(1))
+ import_iterator=self.re_import.finditer(code)
+ if import_iterator:
+ for import_match in import_iterator:
+ import_match_str=re.sub('\s+','',import_match.group(1))
+ bindings_match=self.re_import_bindings.match(import_match_str)
+ if bindings_match:
+ import_match_str=bindings_match.group(1)
+ matches=import_match_str.split(',')
+ for match in matches:
+ alias_match=self.re_import_alias.match(match)
+ if alias_match:
+ match=alias_match.group(1)
+ lst.append(match)
+ return lst
+ def start(self,node):
+ self.waiting=[node]
+ while self.waiting:
+ nd=self.waiting.pop(0)
+ self.iter(nd)
+ def iter(self,node):
+ path=node.abspath(self.env)
+ code="".join(filter_comments(path))
+ names=self.get_strings(code)
+ for x in names:
+ if x in self.allnames:continue
+ self.allnames.append(x)
+ self.tryfind(x)
+def scan(self):
+ env=self.env
+ gruik=d_parser(env,env['INC_PATHS'])
+ gruik.start(self.inputs[0])
+ if Logs.verbose:
+ debug('deps: nodes found for %s: %s %s'%(str(self.inputs[0]),str(gruik.nodes),str(gruik.names)))
+ return(gruik.nodes,gruik.names)
+def get_target_name(self):
+ v=self.env
+ tp='program'
+ for x in self.features:
+ if x in['dshlib','dstaticlib']:
+ tp=x.lstrip('d')
+ return v['D_%s_PATTERN'%tp]%self.target
+d_params={'dflags':'','importpaths':'','libs':'','libpaths':'','generate_headers':False,}
+def init_d(self):
+ for x in d_params:
+ setattr(self,x,getattr(self,x,d_params[x]))
+class d_taskgen(TaskGen.task_gen):
+ def __init__(self,*k,**kw):
+ TaskGen.task_gen.__init__(self,*k,**kw)
+ if len(k)>1:
+ self.features.append('d'+k[1])
+TaskGen.bind_feature('d',D_METHS)
+def init_d(self):
+ Utils.def_attrs(self,dflags='',importpaths='',libs='',libpaths='',uselib='',uselib_local='',generate_headers=False,compiled_tasks=[],add_objects=[],link_task=None)
+def apply_d_libs(self):
+ uselib=self.to_list(self.uselib)
+ seen=[]
+ local_libs=self.to_list(self.uselib_local)
+ libs=[]
+ libpaths=[]
+ env=self.env
+ while local_libs:
+ x=local_libs.pop()
+ if x in seen:
+ continue
+ else:
+ seen.append(x)
+ y=self.name_to_obj(x)
+ if not y:
+ raise Utils.WafError('object not found in uselib_local: obj %s uselib %s'%(self.name,x))
+ if y.uselib_local:
+ added=0
+ lst=y.to_list(y.uselib_local)
+ lst.reverse()
+ for u in lst:
+ if u in seen:continue
+ added=1
+ local_libs=[u]+local_libs
+ if added:continue
+ y.post()
+ seen.append(x)
+ libname=y.target[y.target.rfind(os.sep)+1:]
+ if'dshlib'in y.features or'dstaticlib'in y.features:
+ env.append_unique('DLINKFLAGS',env['DLIBPATH_ST']%y.link_task.outputs[0].parent.bldpath(env))
+ env.append_unique('DLINKFLAGS',env['DLIB_ST']%libname)
+ tmp_path=y.path.bldpath(env)
+ if not tmp_path in libpaths:libpaths=[tmp_path]+libpaths
+ if y.link_task is not None:
+ self.link_task.set_run_after(y.link_task)
+ dep_nodes=getattr(self.link_task,'dep_nodes',[])
+ self.link_task.dep_nodes=dep_nodes+y.link_task.outputs
+ morelibs=y.to_list(y.uselib)
+ for v in morelibs:
+ if v in uselib:continue
+ uselib=[v]+uselib
+ self.uselib=uselib
+def apply_d_link(self):
+ link=getattr(self,'link',None)
+ if not link:
+ if'dstaticlib'in self.features:link='ar_link_static'
+ else:link='d_link'
+ linktask=self.create_task(link)
+ outputs=[t.outputs[0]for t in self.compiled_tasks]
+ linktask.set_inputs(outputs)
+ linktask.set_outputs(self.path.find_or_declare(get_target_name(self)))
+ self.link_task=linktask
+def apply_d_vars(self):
+ env=self.env
+ dpath_st=env['DPATH_ST']
+ lib_st=env['DLIB_ST']
+ libpath_st=env['DLIBPATH_ST']
+ importpaths=self.to_list(self.importpaths)
+ libpaths=[]
+ libs=[]
+ uselib=self.to_list(self.uselib)
+ for i in uselib:
+ if env['DFLAGS_'+i]:
+ env.append_unique('DFLAGS',env['DFLAGS_'+i])
+ for x in self.features:
+ if not x in['dprogram','dstaticlib','dshlib']:
+ continue
+ x.lstrip('d')
+ d_shlib_dflags=env['D_'+x+'_DFLAGS']
+ if d_shlib_dflags:
+ env.append_unique('DFLAGS',d_shlib_dflags)
+ for i in uselib:
+ if env['DPATH_'+i]:
+ for entry in self.to_list(env['DPATH_'+i]):
+ if not entry in importpaths:
+ importpaths.append(entry)
+ for path in importpaths:
+ if os.path.isabs(path):
+ env.append_unique('_DIMPORTFLAGS',dpath_st%path)
+ else:
+ node=self.path.find_dir(path)
+ self.env.append_unique('INC_PATHS',node)
+ env.append_unique('_DIMPORTFLAGS',dpath_st%node.srcpath(env))
+ env.append_unique('_DIMPORTFLAGS',dpath_st%node.bldpath(env))
+ for i in uselib:
+ if env['LIBPATH_'+i]:
+ for entry in self.to_list(env['LIBPATH_'+i]):
+ if not entry in libpaths:
+ libpaths+=[entry]
+ libpaths=self.to_list(self.libpaths)+libpaths
+ for path in libpaths:
+ env.append_unique('DLINKFLAGS',libpath_st%path)
+ for i in uselib:
+ if env['LIB_'+i]:
+ for entry in self.to_list(env['LIB_'+i]):
+ if not entry in libs:
+ libs+=[entry]
+ libs=libs+self.to_list(self.libs)
+ for lib in libs:
+ env.append_unique('DLINKFLAGS',lib_st%lib)
+ for i in uselib:
+ dlinkflags=env['DLINKFLAGS_'+i]
+ if dlinkflags:
+ for linkflag in dlinkflags:
+ env.append_unique('DLINKFLAGS',linkflag)
+def add_shlib_d_flags(self):
+ for linkflag in self.env['D_shlib_LINKFLAGS']:
+ self.env.append_unique('DLINKFLAGS',linkflag)
+def d_hook(self,node):
+ task=self.create_task(self.generate_headers and'd_with_header'or'd')
+ try:obj_ext=self.obj_ext
+ except AttributeError:obj_ext='_%d.o'%self.idx
+ task.inputs=[node]
+ task.outputs=[node.change_ext(obj_ext)]
+ self.compiled_tasks.append(task)
+ if self.generate_headers:
+ header_node=node.change_ext(self.env['DHEADER_ext'])
+ task.outputs+=[header_node]
+d_str='${D_COMPILER} ${DFLAGS} ${_DIMPORTFLAGS} ${D_SRC_F}${SRC} ${D_TGT_F}${TGT}'
+d_with_header_str='${D_COMPILER} ${DFLAGS} ${_DIMPORTFLAGS} \
+${D_HDR_F}${TGT[1].bldpath(env)} \
+${D_SRC_F}${SRC} \
+${D_TGT_F}${TGT[0].bldpath(env)}'
+link_str='${D_LINKER} ${DLNK_SRC_F}${SRC} ${DLNK_TGT_F}${TGT} ${DLINKFLAGS}'
+cls=Task.simple_task_type('d',d_str,'GREEN',before='ar_link_static d_link')
+cls.scan=scan
+Task.simple_task_type('d_with_header',d_with_header_str,'GREEN',before='ar_link_static d_link')
+Task.simple_task_type('d_link',link_str,color='YELLOW')
+def generate_header(self,filename,install_path):
+ if not hasattr(self,'header_lst'):self.header_lst=[]
+ self.meths.append('process_header')
+ self.header_lst.append([filename,install_path])
+def process_header(self):
+ env=self.env
+ for i in getattr(self,'header_lst',[]):
+ node=self.path.find_resource(i[0])
+ if not node:
+ raise Utils.WafError('file not found on d obj '+i[0])
+ task=self.create_task('d_header')
+ task.set_inputs(node)
+ task.set_outputs(node.change_ext('.di'))
+d_header_str='${D_COMPILER} ${D_HEADER} ${SRC}'
+Task.simple_task_type('d_header',d_header_str,color='BLUE')
+
+feature('d')(init_d)
+before('apply_type_vars')(init_d)
+feature('d')(init_d)
+before('apply_d_libs')(init_d)
+feature('d')(apply_d_libs)
+after('apply_d_link')(apply_d_libs)
+before('apply_vnum')(apply_d_libs)
+feature('dprogram','dshlib','dstaticlib')(apply_d_link)
+after('apply_core')(apply_d_link)
+feature('d')(apply_d_vars)
+after('apply_core')(apply_d_vars)
+feature('dshlib')(add_shlib_d_flags)
+after('apply_d_vars')(add_shlib_d_flags)
+extension(EXT_D)(d_hook)
+taskgen(generate_header)
+before('apply_core')(process_header)
diff -Nru gtkimageview-1.6.4/wafadmin/Tools/flex.py gtkimageview-1.6.4+dfsg/wafadmin/Tools/flex.py
--- gtkimageview-1.6.4/wafadmin/Tools/flex.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Tools/flex.py 2009-04-04 19:27:21.000000000 -0400
@@ -0,0 +1,13 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+import TaskGen
+def decide_ext(self,node):
+ if'cxx'in self.features:return'.lex.cc'
+ else:return'.lex.c'
+TaskGen.declare_chain(name='flex',rule='${FLEX} -o${TGT} ${FLEXFLAGS} ${SRC}',ext_in='.l',decider=decide_ext,before='cc cxx',)
+def detect(conf):
+ conf.find_program('flex',var='FLEX',mandatory=True)
+ v=conf.env
+ v['FLEXFLAGS']=''
+
diff -Nru gtkimageview-1.6.4/wafadmin/Tools/gas.py gtkimageview-1.6.4+dfsg/wafadmin/Tools/gas.py
--- gtkimageview-1.6.4/wafadmin/Tools/gas.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Tools/gas.py 2009-04-04 19:27:21.000000000 -0400
@@ -0,0 +1,35 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+import os,sys
+import Task
+from TaskGen import extension,taskgen,after,before
+EXT_ASM=['.s','.S','.asm','.ASM','.spp','.SPP']
+as_str='${AS} ${ASFLAGS} ${_ASINCFLAGS} ${SRC} -o ${TGT}'
+Task.simple_task_type('asm',as_str,'PINK',ext_out='.o')
+def asm_hook(self,node):
+ task=self.create_task('asm')
+ try:obj_ext=self.obj_ext
+ except AttributeError:obj_ext='_%d.o'%self.idx
+ task.inputs=[node]
+ task.outputs=[node.change_ext(obj_ext)]
+ self.compiled_tasks.append(task)
+ self.meths.append('asm_incflags')
+def asm_incflags(self):
+ if self.env['ASINCFLAGS']:self.env['_ASINCFLAGS']=self.env['ASINCFLAGS']
+ if'cxx'in self.features:self.env['_ASINCFLAGS']=self.env['_CXXINCFLAGS']
+ else:self.env['_ASINCFLAGS']=self.env['_CCINCFLAGS']
+def detect(conf):
+ comp=conf.environ.get('AS','')
+ if not comp:comp=conf.find_program('as',var='AS')
+ if not comp:comp=conf.find_program('gas',var='AS')
+ if not comp:comp=conf.env['CC']
+ if not comp:return
+ v=conf.env
+ v['ASFLAGS']=''
+
+extension(EXT_ASM)(asm_hook)
+taskgen(asm_incflags)
+after('apply_obj_vars_cc')(asm_incflags)
+after('apply_obj_vars_cxx')(asm_incflags)
+before('apply_link')(asm_incflags)
diff -Nru gtkimageview-1.6.4/wafadmin/Tools/gcc.py gtkimageview-1.6.4+dfsg/wafadmin/Tools/gcc.py
--- gtkimageview-1.6.4/wafadmin/Tools/gcc.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Tools/gcc.py 2009-04-04 19:27:21.000000000 -0400
@@ -0,0 +1,96 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+import os,sys
+import Configure,Options,Utils,TaskGen
+import ccroot,ar
+from Configure import conftest
+def find_gcc(conf):
+ v=conf.env
+ cc=None
+ if v['CC']:
+ cc=v['CC']
+ elif'CC'in conf.environ:
+ cc=conf.environ['CC']
+ if not cc:cc=conf.find_program('gcc',var='CC')
+ if not cc:cc=conf.find_program('cc',var='CC')
+ if not cc:conf.fatal('gcc was not found')
+ cc=conf.cmd_to_list(cc)
+ ccroot.get_cc_version(conf,cc,gcc=True)
+ v['CC_NAME']='gcc'
+ v['CC']=cc
+def gcc_common_flags(conf):
+ v=conf.env
+ v['CC_SRC_F']=''
+ v['CC_TGT_F']=['-c','-o','']
+ v['CPPPATH_ST']='-I%s'
+ if not v['LINK_CC']:v['LINK_CC']=v['CC']
+ v['CCLNK_SRC_F']=''
+ v['CCLNK_TGT_F']=['-o','']
+ v['LIB_ST']='-l%s'
+ v['LIBPATH_ST']='-L%s'
+ v['STATICLIB_ST']='-l%s'
+ v['STATICLIBPATH_ST']='-L%s'
+ v['RPATH_ST']='-Wl,-rpath,%s'
+ v['CCDEFINES_ST']='-D%s'
+ v['SONAME_ST']='-Wl,-h,%s'
+ v['SHLIB_MARKER']='-Wl,-Bdynamic'
+ v['STATICLIB_MARKER']='-Wl,-Bstatic'
+ v['FULLSTATIC_MARKER']='-static'
+ v['program_PATTERN']='%s'
+ v['shlib_CCFLAGS']=['-fPIC','-DPIC']
+ v['shlib_LINKFLAGS']=['-shared']
+ v['shlib_PATTERN']='lib%s.so'
+ v['staticlib_LINKFLAGS']=['-Wl,-Bstatic']
+ v['staticlib_PATTERN']='lib%s.a'
+ v['LINKFLAGS_MACBUNDLE']=['-bundle','-undefined','dynamic_lookup']
+ v['CCFLAGS_MACBUNDLE']=['-fPIC']
+ v['macbundle_PATTERN']='%s.bundle'
+def gcc_modifier_win32(conf):
+ v=conf.env
+ if sys.platform!='win32':return
+ v['program_PATTERN']='%s.exe'
+ v['shlib_PATTERN']='lib%s.dll'
+ v['shlib_CCFLAGS']=[]
+ v['staticlib_LINKFLAGS']=[]
+def gcc_modifier_cygwin(conf):
+ v=conf.env
+ if sys.platform!='cygwin':return
+ v['program_PATTERN']='%s.exe'
+ v['shlib_PATTERN']='lib%s.dll'
+ v['shlib_CCFLAGS']=[]
+ v['staticlib_LINKFLAGS']=[]
+def gcc_modifier_darwin(conf):
+ v=conf.env
+ if sys.platform!='darwin':return
+ v['shlib_CCFLAGS']=['-fPIC','-compatibility_version','1','-current_version','1']
+ v['shlib_LINKFLAGS']=['-dynamiclib']
+ v['shlib_PATTERN']='lib%s.dylib'
+ v['staticlib_LINKFLAGS']=[]
+ v['SHLIB_MARKER']=''
+ v['STATICLIB_MARKER']=''
+def gcc_modifier_aix5(conf):
+ v=conf.env
+ if sys.platform!='aix5':return
+ v['program_LINKFLAGS']=['-Wl,-brtl']
+ v['shlib_LINKFLAGS']=['-shared','-Wl,-brtl,-bexpfull']
+ v['SHLIB_MARKER']=''
+detect='''
+find_gcc
+find_cpp
+find_ar
+gcc_common_flags
+gcc_modifier_win32
+gcc_modifier_cygwin
+gcc_modifier_darwin
+gcc_modifier_aix5
+cc_load_tools
+cc_add_flags
+'''
+
+conftest(find_gcc)
+conftest(gcc_common_flags)
+conftest(gcc_modifier_win32)
+conftest(gcc_modifier_cygwin)
+conftest(gcc_modifier_darwin)
+conftest(gcc_modifier_aix5)
diff -Nru gtkimageview-1.6.4/wafadmin/Tools/gdc.py gtkimageview-1.6.4+dfsg/wafadmin/Tools/gdc.py
--- gtkimageview-1.6.4/wafadmin/Tools/gdc.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Tools/gdc.py 2009-04-04 19:27:21.000000000 -0400
@@ -0,0 +1,47 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+import sys
+import ar
+def find_gdc(conf):
+ v=conf.env
+ d_compiler=None
+ if v['D_COMPILER']:
+ d_compiler=v['D_COMPILER']
+ if not d_compiler:d_compiler=conf.find_program('gdc',var='D_COMPILER')
+ if not d_compiler:return 0
+ v['D_COMPILER']=d_compiler
+def common_flags(conf):
+ v=conf.env
+ v['DFLAGS']=[]
+ v['D_SRC_F']=''
+ v['D_TGT_F']=['-c','-o','']
+ v['DPATH_ST']='-I%s'
+ v['D_LINKER']=v['D_COMPILER']
+ v['DLNK_SRC_F']=''
+ v['DLNK_TGT_F']=['-o','']
+ v['DLIB_ST']='-l%s'
+ v['DLIBPATH_ST']='-L%s'
+ v['DLINKFLAGS']=[]
+ v['DFLAGS_OPTIMIZED']=['-O3']
+ v['DFLAGS_DEBUG']=['-O0']
+ v['DFLAGS_ULTRADEBUG']=['-O0']
+ v['D_shlib_DFLAGS']=[]
+ v['D_shlib_LINKFLAGS']=['-shared']
+ v['DHEADER_ext']='.di'
+ v['D_HDR_F']='-fintfc -fintfc-file='
+ if sys.platform=="win32":
+ v['D_program_PATTERN']='%s.exe'
+ v['D_shlib_PATTERN']='lib%s.dll'
+ v['D_staticlib_PATTERN']='lib%s.a'
+ else:
+ v['D_program_PATTERN']='%s'
+ v['D_shlib_PATTERN']='lib%s.so'
+ v['D_staticlib_PATTERN']='lib%s.a'
+def detect(conf):
+ v=conf.env
+ find_gdc(conf)
+ ar.find_ar(conf)
+ conf.check_tool('d')
+ common_flags(conf)
+
diff -Nru gtkimageview-1.6.4/wafadmin/Tools/glib2.py gtkimageview-1.6.4+dfsg/wafadmin/Tools/glib2.py
--- gtkimageview-1.6.4/wafadmin/Tools/glib2.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Tools/glib2.py 2009-04-04 19:27:21.000000000 -0400
@@ -0,0 +1,84 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+import Task,Utils
+from TaskGen import taskgen,before,after,feature
+def add_marshal_file(self,filename,prefix):
+ if not hasattr(self,'marshal_list'):
+ self.marshal_list=[]
+ self.meths.append('process_marshal')
+ self.marshal_list.append((filename,prefix))
+def process_marshal(self):
+ for f,prefix in getattr(self,'marshal_list',[]):
+ node=self.path.find_resource(f)
+ if not node:
+ raise Utils.WafError('file not found %r'%f)
+ h_node=node.change_ext('.h')
+ c_node=node.change_ext('.c')
+ task=self.create_task('glib_genmarshal')
+ task.set_inputs(node)
+ task.set_outputs([h_node,c_node])
+ task.env['GLIB_GENMARSHAL_PREFIX']=prefix
+ self.allnodes.append(c_node)
+def genmarshal_func(self):
+ bld=self.inputs[0].__class__.bld
+ get=self.env.get_flat
+ cmd1="%s %s --prefix=%s --header > %s"%(get('GLIB_GENMARSHAL'),self.inputs[0].srcpath(self.env),get('GLIB_GENMARSHAL_PREFIX'),self.outputs[0].abspath(self.env))
+ ret=bld.exec_command(cmd1)
+ if ret:return ret
+ f=open(self.outputs[1].abspath(self.env),'wb')
+ f.write('''#include "%s"\n'''%self.outputs[0].name)
+ f.close()
+ cmd2="%s %s --prefix=%s --body >> %s"%(get('GLIB_GENMARSHAL'),self.inputs[0].srcpath(self.env),get('GLIB_GENMARSHAL_PREFIX'),self.outputs[1].abspath(self.env))
+ ret=Utils.exec_command(cmd2)
+ if ret:return ret
+def add_enums_from_template(self,source='',target='',template='',comments=''):
+ if not hasattr(self,'enums_list'):
+ self.enums_list=[]
+ self.meths.append('process_enums')
+ self.enums_list.append({'source':source,'target':target,'template':template,'file-head':'','file-prod':'','file-tail':'','enum-prod':'','value-head':'','value-prod':'','value-tail':'','comments':comments})
+def add_enums(self,source='',target='',file_head='',file_prod='',file_tail='',enum_prod='',value_head='',value_prod='',value_tail='',comments=''):
+ if not hasattr(self,'enums_list'):
+ self.enums_list=[]
+ self.meths.append('process_enums')
+ self.enums_list.append({'source':source,'template':'','target':target,'file-head':file_head,'file-prod':file_prod,'file-tail':file_tail,'enum-prod':enum_prod,'value-head':value_head,'value-prod':value_prod,'value-tail':value_tail,'comments':comments})
+def process_enums(self):
+ for enum in getattr(self,'enums_list',[]):
+ env=self.env.copy()
+ task=self.create_task('glib_mkenums',env)
+ inputs=[]
+ source_list=self.to_list(enum['source'])
+ if not source_list:
+ raise Utils.WafError('missing source '+str(enum))
+ source_list=[self.path.find_resource(k)for k in source_list]
+ inputs+=source_list
+ env['GLIB_MKENUMS_SOURCE']=[k.srcpath(env)for k in source_list]
+ if not enum['target']:
+ raise Utils.WafError('missing target '+str(enum))
+ tgt_node=self.path.find_or_declare(enum['target'])
+ if tgt_node.name.endswith('.c'):
+ self.allnodes.append(tgt_node)
+ env['GLIB_MKENUMS_TARGET']=tgt_node.abspath(env)
+ options=[]
+ if enum['template']:
+ template_node=self.path.find_resource(enum['template'])
+ options.append('--template %s'%(template_node.abspath(env)))
+ inputs.append(template_node)
+ params={'file-head':'--fhead','file-prod':'--fprod','file-tail':'--ftail','enum-prod':'--eprod','value-head':'--vhead','value-prod':'--vprod','value-tail':'--vtail','comments':'--comments'}
+ for param,option in params.iteritems():
+ if enum[param]:
+ options.append('%s %r'%(option,enum[param]))
+ env['GLIB_MKENUMS_OPTIONS']=' '.join(options)
+ task.set_inputs(inputs)
+ task.set_outputs(tgt_node)
+Task.task_type_from_func('glib_genmarshal',func=genmarshal_func,vars=['GLIB_GENMARSHAL_PREFIX','GLIB_GENMARSHAL'],color='BLUE',before='cc')
+Task.simple_task_type('glib_mkenums','${GLIB_MKENUMS} ${GLIB_MKENUMS_OPTIONS} ${GLIB_MKENUMS_SOURCE} > ${GLIB_MKENUMS_TARGET}',color='PINK',before='cc')
+def detect(conf):
+ glib_genmarshal=conf.find_program('glib-genmarshal',var='GLIB_GENMARSHAL')
+ mk_enums_tool=conf.find_program('glib-mkenums',var='GLIB_MKENUMS')
+
+taskgen(add_marshal_file)
+before('apply_core')(process_marshal)
+taskgen(add_enums_from_template)
+taskgen(add_enums)
+before('apply_core')(process_enums)
diff -Nru gtkimageview-1.6.4/wafadmin/Tools/gnome.py gtkimageview-1.6.4+dfsg/wafadmin/Tools/gnome.py
--- gtkimageview-1.6.4/wafadmin/Tools/gnome.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Tools/gnome.py 2009-04-04 19:27:21.000000000 -0400
@@ -0,0 +1,154 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+import os,re
+import TaskGen,Utils,Runner,Task,Build,Options,Logs
+import cc
+from Logs import error
+from TaskGen import taskgen,before,after,feature
+n1_regexp=re.compile('<refentrytitle>(.*)</refentrytitle>',re.M)
+n2_regexp=re.compile('<manvolnum>(.*)</manvolnum>',re.M)
+def postinstall_schemas(prog_name):
+ if Options.commands['install']:
+ dir=Build.bld.get_install_path('${PREFIX}/etc/gconf/schemas/%s.schemas'%prog_name)
+ if not Options.options.destdir:
+ Utils.pprint('YELLOW','Installing GConf schema')
+ command='gconftool-2 --install-schema-file=%s 1> /dev/null'%dir
+ ret=Utils.exec_command(command)
+ else:
+ Utils.pprint('YELLOW','GConf schema not installed. After install, run this:')
+ Utils.pprint('YELLOW','gconftool-2 --install-schema-file=%s'%dir)
+def postinstall_icons():
+ dir=Build.bld.get_install_path('${DATADIR}/icons/hicolor')
+ if Options.commands['install']:
+ if not Options.options.destdir:
+ Utils.pprint('YELLOW',"Updating Gtk icon cache.")
+ command='gtk-update-icon-cache -q -f -t %s'%dir
+ ret=Utils.exec_command(command)
+ else:
+ Utils.pprint('YELLOW','Icon cache not updated. After install, run this:')
+ Utils.pprint('YELLOW','gtk-update-icon-cache -q -f -t %s'%dir)
+def postinstall_scrollkeeper(prog_name):
+ if Options.commands['install']:
+ if os.path.iswriteable('/var/log/scrollkeeper.log'):
+ dir1=Build.bld.get_install_path('${PREFIX}/var/scrollkeeper')
+ dir2=Build.bld.get_install_path('${DATADIR}/omf/%s'%prog_name)
+ command='scrollkeeper-update -q -p %s -o %s'%(dir1,dir2)
+ ret=Utils.exec_command(command)
+def postinstall(prog_name='myapp',schemas=1,icons=1,scrollkeeper=1):
+ if schemas:postinstall_schemas(prog_name)
+ if icons:postinstall_icons()
+ if scrollkeeper:postinstall_scrollkeeper(prog_name)
+class gnome_doc_taskgen(TaskGen.task_gen):
+ def __init__(self,*k,**kw):
+ TaskGen.task_gen.__init__(self,*k,**kw)
+def init_gnome_doc(self):
+ self.default_install_path='${PREFIX}/share'
+def apply_gnome_doc(self):
+ self.env['APPNAME']=self.doc_module
+ lst=self.to_list(self.doc_linguas)
+ for x in lst:
+ tsk=self.create_task('xml2po')
+ node=self.path.find_resource(x+'/'+x+'.po')
+ src=self.path.find_resource('C/%s.xml'%self.doc_module)
+ out=self.path.find_or_declare('%s/%s.xml'%(x,self.doc_module))
+ tsk.set_inputs([node,src])
+ tsk.set_outputs(out)
+ tsk2=self.create_task('xsltproc2po')
+ out2=self.path.find_or_declare('%s/%s-%s.omf'%(x,self.doc_module,x))
+ tsk2.set_outputs(out2)
+ node=self.path.find_resource(self.doc_module+".omf.in")
+ tsk2.inputs=[node,out]
+ tsk2.run_after.append(tsk)
+ if Options.is_install:
+ path=self.install_path+'gnome/help/%s/%s'%(self.doc_module,x)
+ self.bld.install_files(self.install_path+'omf',out2.abspath(self.env))
+ for y in self.to_list(self.doc_figures):
+ try:
+ os.stat(self.path.abspath()+'/'+x+'/'+y)
+ Common.install_as(path+'/'+y,self.path.abspath()+'/'+x+'/'+y)
+ except:
+ Common.install_as(path+'/'+y,self.path.abspath()+'/C/'+y)
+ Common.install_as(path+'/%s.xml'%self.doc_module,out.abspath(self.env))
+class xml_to_taskgen(TaskGen.task_gen):
+ def __init__(self,*k,**kw):
+ TaskGen.task_gen.__init__(self,*k,**kw)
+def init_xml_to(self):
+ Utils.def_attrs(self,source='xmlfile',xslt='xlsltfile',target='hey',default_install_path='${PREFIX}',task_created=None)
+def apply_xml_to(self):
+ xmlfile=self.path.find_resource(self.source)
+ xsltfile=self.path.find_resource(self.xslt)
+ tsk=self.create_task('xmlto')
+ tsk.set_inputs([xmlfile,xsltfile])
+ tsk.set_outputs(xmlfile.change_ext('html'))
+ tsk.install_path=self.install_path
+def sgml_scan(self):
+ node=self.inputs[0]
+ env=self.env
+ variant=node.variant(env)
+ fi=open(node.abspath(env),'r')
+ content=fi.read()
+ fi.close()
+ name=n1_regexp.findall(content)[0]
+ num=n2_regexp.findall(content)[0]
+ doc_name=name+'.'+num
+ if not self.outputs:
+ self.outputs=[self.generator.path.find_or_declare(doc_name)]
+ return([],[doc_name])
+class gnome_sgml2man_taskgen(TaskGen.task_gen):
+ def __init__(self,*k,**kw):
+ TaskGen.task_gen.__init__(self,*k,**kw)
+def apply_gnome_sgml2man(self):
+ assert(getattr(self,'appname',None))
+ def install_result(task):
+ out=task.outputs[0]
+ name=out.name
+ ext=name[-1]
+ env=task.env
+ self.bld.install_files('${DATADIR}/man/man%s/'%ext,out.abspath(env),env)
+ self.bld.rescan(self.path)
+ for name in self.bld.cache_dir_contents[self.path.id]:
+ base,ext=os.path.splitext(name)
+ if ext!='.sgml':continue
+ task=self.create_task('sgml2man')
+ task.set_inputs(self.path.find_resource(name))
+ task.task_generator=self
+ if Options.is_install:task.install=install_result
+ task.scan()
+cls=Task.simple_task_type('sgml2man','${SGML2MAN} -o ${TGT[0].bld_dir(env)} ${SRC} > /dev/null',color='BLUE')
+cls.scan=sgml_scan
+cls.quiet=1
+Task.simple_task_type('xmlto','${XMLTO} html -m ${SRC[1].abspath(env)} ${SRC[0].abspath(env)}')
+Task.simple_task_type('xml2po','${XML2PO} ${XML2POFLAGS} ${SRC} > ${TGT}',color='BLUE')
+xslt_magic="""${XSLTPROC2PO} -o ${TGT[0].abspath(env)} \
+--stringparam db2omf.basename ${APPNAME} \
+--stringparam db2omf.format docbook \
+--stringparam db2omf.lang C \
+--stringparam db2omf.dtd '-//OASIS//DTD DocBook XML V4.3//EN' \
+--stringparam db2omf.omf_dir ${PREFIX}/share/omf \
+--stringparam db2omf.help_dir ${PREFIX}/share/gnome/help \
+--stringparam db2omf.omf_in ${SRC[0].abspath(env)} \
+--stringparam db2omf.scrollkeeper_cl ${SCROLLKEEPER_DATADIR}/Templates/C/scrollkeeper_cl.xml \
+${DB2OMF} ${SRC[1].abspath(env)}"""
+Task.simple_task_type('xsltproc2po',xslt_magic,color='BLUE')
+def detect(conf):
+ conf.check_tool('gnu_dirs glib2 dbus')
+ sgml2man=conf.find_program('docbook2man',var='SGML2MAN')
+ def getstr(varname):
+ return getattr(Options.options,varname,'')
+ conf.define('GNOMELOCALEDIR',os.path.join(conf.env['DATADIR'],'locale'))
+ xml2po=conf.find_program('xml2po',var='XML2PO')
+ xsltproc2po=conf.find_program('xsltproc',var='XSLTPROC2PO')
+ conf.env['XML2POFLAGS']='-e -p'
+ conf.env['SCROLLKEEPER_DATADIR']=Utils.cmd_output("scrollkeeper-config --pkgdatadir",silent=1).strip()
+ conf.env['DB2OMF']=Utils.cmd_output("/usr/bin/pkg-config --variable db2omf gnome-doc-utils",silent=1).strip()
+def set_options(opt):
+ opt.add_option('--want-rpath',type='int',default=1,dest='want_rpath',help='set rpath to 1 or 0 [Default 1]')
+
+feature('gmome_doc')(init_gnome_doc)
+feature('gnome_doc')(apply_gnome_doc)
+after('init_gnome_doc')(apply_gnome_doc)
+feature('xml_to')(init_xml_to)
+feature('xml_to')(apply_xml_to)
+after('init_xml_to')(apply_xml_to)
+feature('gnome_sgml2man')(apply_gnome_sgml2man)
diff -Nru gtkimageview-1.6.4/wafadmin/Tools/gnu_dirs.py gtkimageview-1.6.4+dfsg/wafadmin/Tools/gnu_dirs.py
--- gtkimageview-1.6.4/wafadmin/Tools/gnu_dirs.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Tools/gnu_dirs.py 2009-04-04 19:27:21.000000000 -0400
@@ -0,0 +1,63 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+import Utils,Options
+_options=[x.split(', ')for x in'''
+bindir, user executables, ${EXEC_PREFIX}/bin
+sbindir, system admin executables, ${EXEC_PREFIX}/sbin
+libexecdir, program executables, ${EXEC_PREFIX}/libexec
+sysconfdir, read-only single-machine data, ${PREFIX}/etc
+sharedstatedir, modifiable architecture-independent data, ${PREFIX}/com
+localstatedir, modifiable single-machine data, ${PREFIX}/var
+libdir, object code libraries, ${EXEC_PREFIX}/lib
+includedir, C header files, ${PREFIX}/include
+oldincludedir, C header files for non-gcc, /usr/include
+datarootdir, read-only arch.-independent data root, ${PREFIX}/share
+datadir, read-only architecture-independent data, ${DATAROOTDIR}
+infodir, info documentation, ${DATAROOTDIR}/info
+localedir, locale-dependent data, ${DATAROOTDIR}/locale
+mandir, man documentation, ${DATAROOTDIR}/man
+docdir, documentation root, ${DATAROOTDIR}/doc/${PACKAGE}
+htmldir, html documentation, ${DOCDIR}
+dvidir, dvi documentation, ${DOCDIR}
+pdfdir, pdf documentation, ${DOCDIR}
+psdir, ps documentation, ${DOCDIR}
+'''.split('\n')if x]
+def detect(conf):
+ def get_param(varname,default):
+ return getattr(Options.options,varname,'')or default
+ env=conf.env
+ env['EXEC_PREFIX']=get_param('EXEC_PREFIX',env['PREFIX'])
+ env['PACKAGE']=Utils.g_module.APPNAME or env['PACKAGE']
+ complete=False
+ iter=0
+ while not complete and iter<len(_options)+1:
+ iter+=1
+ complete=True
+ for name,help,default in _options:
+ name=name.upper()
+ if not env[name]:
+ try:
+ env[name]=Utils.subst_vars(get_param(name,default),env)
+ except TypeError:
+ complete=False
+ if not complete:
+ lst=[name for name,_,_ in _options if not env[name.upper()]]
+ raise Utils.WafError('Variable substitution failure %r'%lst)
+def set_options(opt):
+ inst_dir=opt.add_option_group('Installation directories','By default, "waf install" will put the files in\
+ "/usr/local/bin", "/usr/local/lib" etc. An installation prefix other\
+ than "/usr/local" can be given using "--prefix", for example "--prefix=$HOME"')
+ for k in('--prefix','--destdir'):
+ option=opt.parser.get_option(k)
+ if option:
+ opt.parser.remove_option(k)
+ inst_dir.add_option(option)
+ inst_dir.add_option('--exec-prefix',help='installation prefix [Default: ${PREFIX}]',default='',dest='EXEC_PREFIX')
+ dirs_options=opt.add_option_group('Pre-defined installation directories','')
+ for name,help,default in _options:
+ option_name='--'+name
+ str_default=default
+ str_help='%s [Default: %s]'%(help,str_default)
+ dirs_options.add_option(option_name,help=str_help,default='',dest=name.upper())
+
diff -Nru gtkimageview-1.6.4/wafadmin/Tools/gob2.py gtkimageview-1.6.4+dfsg/wafadmin/Tools/gob2.py
--- gtkimageview-1.6.4/wafadmin/Tools/gob2.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Tools/gob2.py 2009-04-04 19:27:21.000000000 -0400
@@ -0,0 +1,10 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+import TaskGen
+TaskGen.declare_chain(name='gob2',rule='${GOB2} -o ${TGT[0].bld_dir(env)} ${GOB2FLAGS} ${SRC}',ext_in='.gob',ext_out='.c')
+def detect(conf):
+ gob2=conf.find_program('gob2',var='GOB2',mandatory=True)
+ conf.env['GOB2']=gob2
+ conf.env['GOB2FLAGS']=''
+
diff -Nru gtkimageview-1.6.4/wafadmin/Tools/gxx.py gtkimageview-1.6.4+dfsg/wafadmin/Tools/gxx.py
--- gtkimageview-1.6.4/wafadmin/Tools/gxx.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Tools/gxx.py 2009-04-04 19:27:21.000000000 -0400
@@ -0,0 +1,94 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+import os,optparse,sys,re
+import Configure,Options,Utils
+import ccroot,ar
+from Configure import conftest
+def find_gxx(conf):
+ v=conf.env
+ cxx=None
+ if v['CXX']:cxx=v['CXX']
+ elif'CXX'in conf.environ:cxx=conf.environ['CXX']
+ if not cxx:cxx=conf.find_program('g++',var='CXX')
+ if not cxx:cxx=conf.find_program('c++',var='CXX')
+ if not cxx:conf.fatal('g++ was not found')
+ cxx=conf.cmd_to_list(cxx)
+ ccroot.get_cc_version(conf,cxx,gcc=True)
+ v['CXX_NAME']='gcc'
+ v['CXX']=cxx
+def gxx_common_flags(conf):
+ v=conf.env
+ v['CXX_SRC_F']=''
+ v['CXX_TGT_F']=['-c','-o','']
+ v['CPPPATH_ST']='-I%s'
+ if not v['LINK_CXX']:v['LINK_CXX']=v['CXX']
+ v['CXXLNK_SRC_F']=''
+ v['CXXLNK_TGT_F']=['-o','']
+ v['LIB_ST']='-l%s'
+ v['LIBPATH_ST']='-L%s'
+ v['STATICLIB_ST']='-l%s'
+ v['STATICLIBPATH_ST']='-L%s'
+ v['RPATH_ST']='-Wl,-rpath,%s'
+ v['CXXDEFINES_ST']='-D%s'
+ v['SONAME_ST']='-Wl,-h,%s'
+ v['SHLIB_MARKER']='-Wl,-Bdynamic'
+ v['STATICLIB_MARKER']='-Wl,-Bstatic'
+ v['FULLSTATIC_MARKER']='-static'
+ v['program_PATTERN']='%s'
+ v['shlib_CXXFLAGS']=['-fPIC','-DPIC']
+ v['shlib_LINKFLAGS']=['-shared']
+ v['shlib_PATTERN']='lib%s.so'
+ v['staticlib_LINKFLAGS']=['-Wl,-Bstatic']
+ v['staticlib_PATTERN']='lib%s.a'
+ v['LINKFLAGS_MACBUNDLE']=['-bundle','-undefined','dynamic_lookup']
+ v['CCFLAGS_MACBUNDLE']=['-fPIC']
+ v['macbundle_PATTERN']='%s.bundle'
+def gxx_modifier_win32(conf):
+ if sys.platform!='win32':return
+ v=conf.env
+ v['program_PATTERN']='%s.exe'
+ v['shlib_PATTERN']='lib%s.dll'
+ v['shlib_CXXFLAGS']=['']
+ v['staticlib_LINKFLAGS']=['']
+def gxx_modifier_cygwin(conf):
+ if sys.platform!='cygwin':return
+ v=conf.env
+ v['program_PATTERN']='%s.exe'
+ v['shlib_PATTERN']='lib%s.dll'
+ v['shlib_CXXFLAGS']=['']
+ v['staticlib_LINKFLAGS']=['']
+def gxx_modifier_darwin(conf):
+ if sys.platform!='darwin':return
+ v=conf.env
+ v['shlib_CXXFLAGS']=['-fPIC','-compatibility_version','1','-current_version','1']
+ v['shlib_LINKFLAGS']=['-dynamiclib']
+ v['shlib_PATTERN']='lib%s.dylib'
+ v['staticlib_LINKFLAGS']=['']
+ v['SHLIB_MARKER']=''
+ v['STATICLIB_MARKER']=''
+def gxx_modifier_aix5(conf):
+ if sys.platform!='aix5':return
+ v=conf.env
+ v['program_LINKFLAGS']=['-Wl,-brtl']
+ v['shlib_LINKFLAGS']=['-shared','-Wl,-brtl,-bexpfull']
+ v['SHLIB_MARKER']=''
+detect='''
+find_gxx
+find_cpp
+find_ar
+gxx_common_flags
+gxx_modifier_win32
+gxx_modifier_cygwin
+gxx_modifier_darwin
+gxx_modifier_aix5
+cxx_load_tools
+cxx_add_flags
+'''
+
+conftest(find_gxx)
+conftest(gxx_common_flags)
+conftest(gxx_modifier_win32)
+conftest(gxx_modifier_cygwin)
+conftest(gxx_modifier_darwin)
+conftest(gxx_modifier_aix5)
diff -Nru gtkimageview-1.6.4/wafadmin/Tools/icc.py gtkimageview-1.6.4+dfsg/wafadmin/Tools/icc.py
--- gtkimageview-1.6.4/wafadmin/Tools/icc.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Tools/icc.py 2009-04-04 19:27:21.000000000 -0400
@@ -0,0 +1,31 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+import os,sys
+import Configure,Options,Utils
+import ccroot,ar,gcc
+from Configure import conftest
+def find_icc(conf):
+ if sys.platform=='cygwin':
+ conf.fatal('The Intel compiler does not work on Cygwin')
+ v=conf.env
+ cc=None
+ if v['CC']:cc=v['CC']
+ elif'CC'in conf.environ:cc=conf.environ['CC']
+ if not cc:cc=conf.find_program('icc',var='CC')
+ if not cc:cc=conf.find_program('ICL',var='CC')
+ if not cc:conf.fatal('Intel C Compiler (icc) was not found')
+ cc=conf.cmd_to_list(cc)
+ ccroot.get_cc_version(conf,cc,icc=True)
+ v['CC']=cc
+ v['CC_NAME']='icc'
+detect='''
+find_icc
+find_ar
+gcc_common_flags
+gcc_modifier_darwin
+cc_load_tools
+cc_add_flags
+'''
+
+conftest(find_icc)
diff -Nru gtkimageview-1.6.4/wafadmin/Tools/icpc.py gtkimageview-1.6.4+dfsg/wafadmin/Tools/icpc.py
--- gtkimageview-1.6.4/wafadmin/Tools/icpc.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Tools/icpc.py 2009-04-04 19:27:21.000000000 -0400
@@ -0,0 +1,30 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+import os,sys
+import Configure,Options,Utils
+import ccroot,ar,gxx
+from Configure import conftest
+def find_icpc(conf):
+ if sys.platform=='cygwin':
+ conf.fatal('The Intel compiler does not work on Cygwin')
+ v=conf.env
+ cxx=None
+ if v['CXX']:cxx=v['CXX']
+ elif'CXX'in conf.environ:cxx=conf.environ['CXX']
+ if not cxx:cxx=conf.find_program('icpc',var='CXX')
+ if not cxx:conf.fatal('Intel C++ Compiler (icpc) was not found')
+ cxx=conf.cmd_to_list(cxx)
+ ccroot.get_cc_version(conf,cxx,icc=True)
+ v['CXX']=cxx
+ v['CXX_NAME']='icc'
+detect='''
+find_icpc
+find_ar
+gxx_common_flags
+gxx_modifier_darwin
+cxx_load_tools
+cxx_add_flags
+'''
+
+conftest(find_icpc)
diff -Nru gtkimageview-1.6.4/wafadmin/Tools/__init__.py gtkimageview-1.6.4+dfsg/wafadmin/Tools/__init__.py
--- gtkimageview-1.6.4/wafadmin/Tools/__init__.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Tools/__init__.py 2009-04-04 19:27:21.000000000 -0400
@@ -0,0 +1,4 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+
diff -Nru gtkimageview-1.6.4/wafadmin/Tools/intltool.py gtkimageview-1.6.4+dfsg/wafadmin/Tools/intltool.py
--- gtkimageview-1.6.4/wafadmin/Tools/intltool.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Tools/intltool.py 2009-04-04 19:27:21.000000000 -0400
@@ -0,0 +1,87 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+import os,re
+import TaskGen,Task,Utils,Runner,Options,Build
+from TaskGen import feature,before,taskgen
+from Logs import error
+class intltool_in_taskgen(TaskGen.task_gen):
+ def __init__(self,*k,**kw):
+ TaskGen.task_gen.__init__(self,*k,**kw)
+def iapply_intltool_in_f(self):
+ try:self.meths.remove('apply_core')
+ except ValueError:pass
+ for i in self.to_list(self.source):
+ node=self.path.find_resource(i)
+ podir=getattr(self,'podir','po')
+ podirnode=self.path.find_dir(podir)
+ if not podirnode:
+ error("could not find the podir %r"%podir)
+ continue
+ cache=getattr(self,'intlcache','.intlcache')
+ self.env['INTLCACHE']=os.path.join(self.path.bldpath(self.env),podir,cache)
+ self.env['INTLPODIR']=podirnode.srcpath(self.env)
+ self.env['INTLFLAGS']=getattr(self,'flags',None)
+ task=self.create_task('intltool')
+ task.set_inputs(node)
+ task.set_outputs(node.change_ext(''))
+ task.install_path=self.install_path
+class intltool_po_taskgen(TaskGen.task_gen):
+ def __init__(self,*k,**kw):
+ TaskGen.task_gen.__init__(self,*k,**kw)
+def apply_intltool_po(self):
+ try:self.meths.remove('apply_core')
+ except ValueError:pass
+ self.default_install_path='${LOCALEDIR}'
+ appname=getattr(self,'appname','set_your_app_name')
+ podir=getattr(self,'podir','')
+ def install_translation(task):
+ out=task.outputs[0]
+ filename=out.name
+ (langname,ext)=os.path.splitext(filename)
+ inst_file=langname+os.sep+'LC_MESSAGES'+os.sep+appname+'.mo'
+ self.bld.install_as(os.path.join(self.install_path,inst_file),out.abspath(self.env),chmod=self.chmod)
+ linguas=self.path.find_resource(os.path.join(podir,'LINGUAS'))
+ if linguas:
+ file=open(linguas.abspath())
+ langs=[]
+ for line in file.readlines():
+ if not line.startswith('#'):
+ langs+=line.split()
+ file.close()
+ re_linguas=re.compile('[-a-zA-Z_@.]+')
+ for lang in langs:
+ if re_linguas.match(lang):
+ node=self.path.find_resource(os.path.join(podir,re_linguas.match(lang).group()+'.po'))
+ task=self.create_task('po')
+ task.set_inputs(node)
+ task.set_outputs(node.change_ext('.mo'))
+ if Options.is_install:task.install=install_translation
+ else:
+ Utils.pprint('RED',"Error no LINGUAS file found in po directory")
+Task.simple_task_type('po','${POCOM} -o ${TGT} ${SRC}',color='BLUE')
+Task.simple_task_type('intltool','${INTLTOOL} ${INTLFLAGS} -q -u -c ${INTLCACHE} ${INTLPODIR} ${SRC} ${TGT}',color='BLUE',after="cc_link cxx_link")
+def detect(conf):
+ pocom=conf.find_program('msgfmt')
+ if not pocom:
+ conf.fatal('The program msgfmt (gettext) is mandatory!')
+ conf.env['POCOM']=pocom
+ intltool=conf.find_program('intltool-merge')
+ if not intltool:
+ conf.fatal('The program intltool-merge (intltool, gettext-devel) is mandatory!')
+ conf.env['INTLTOOL']=intltool
+ def getstr(varname):
+ return getattr(Options.options,varname,'')
+ prefix=conf.env['PREFIX']
+ datadir=getstr('datadir')
+ if not datadir:datadir=os.path.join(prefix,'share')
+ conf.define('LOCALEDIR',os.path.join(datadir,'locale'))
+ conf.define('DATADIR',datadir)
+ conf.check(header_name='locale.h')
+def set_options(opt):
+ opt.add_option('--want-rpath',type='int',default=1,dest='want_rpath',help='set rpath to 1 or 0 [Default 1]')
+ opt.add_option('--datadir',type='string',default='',dest='datadir',help='read-only application data')
+
+before('apply_core')(iapply_intltool_in_f)
+feature('intltool_in')(iapply_intltool_in_f)
+feature('intltool_po')(apply_intltool_po)
diff -Nru gtkimageview-1.6.4/wafadmin/Tools/java.py gtkimageview-1.6.4+dfsg/wafadmin/Tools/java.py
--- gtkimageview-1.6.4/wafadmin/Tools/java.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Tools/java.py 2009-04-04 19:27:21.000000000 -0400
@@ -0,0 +1,134 @@
+#! /usr/bin/env python
+# encoding: utf-8
+import sys
+if sys.hexversion < 0x020400f0: from sets import Set as set
+import os,re
+from Configure import conf
+import TaskGen,Task,Utils
+from TaskGen import feature,before,taskgen
+class_check_source='''
+public class Test {
+ public static void main(String[] argv) {
+ Class lib;
+ if (argv.length < 1) {
+ System.err.println("Missing argument");
+ System.exit(77);
+ }
+ try {
+ lib = Class.forName(argv[0]);
+ } catch (ClassNotFoundException e) {
+ System.err.println("ClassNotFoundException");
+ System.exit(1);
+ }
+ lib = null;
+ System.exit(0);
+ }
+}
+'''
+def jar_files(self):
+ basedir=getattr(self,'basedir','.')
+ destfile=getattr(self,'destfile','test.jar')
+ jaropts=getattr(self,'jaropts',[])
+ dir=self.path.find_dir(basedir)
+ if not dir:raise
+ jaropts.append('-C')
+ jaropts.append(dir.abspath(self.env))
+ jaropts.append('.')
+ out=self.path.find_or_declare(destfile)
+ tsk=self.create_task('jar_create')
+ tsk.set_outputs(out)
+ tsk.inputs=[x for x in self.path.find_iter(src=0,bld=1)if x.id!=out.id]
+ tsk.env['JAROPTS']=jaropts
+ tsk.env['JARCREATE']='cf'
+def apply_java(self):
+ Utils.def_attrs(self,jarname='',jaropts='',classpath='',source_root='.',source_re='[A-Za-z0-9]+\.java$',jar_mf_attributes={},jar_mf_classpath=[])
+ nodes_lst=[]
+ if not self.classpath:
+ if not self.env['CLASSPATH']:
+ self.env['CLASSPATH']='..'+os.pathsep+'.'
+ else:
+ self.env['CLASSPATH']=self.classpath
+ source_root_node=self.path.find_dir(self.source_root)
+ re_foo=re.compile(self.source_re)
+ def acc(node,name):
+ return re_foo.search(name)>-1
+ def prune(node,name):
+ if name=='.svn':return True
+ return False
+ src_nodes=[x for x in source_root_node.find_iter_impl(dir=False,accept_name=acc,is_prune=prune)]
+ bld_nodes=[x.change_ext('.class')for x in src_nodes]
+ self.env['OUTDIR']=[source_root_node.abspath(self.env)]
+ tsk=self.create_task('javac')
+ tsk.set_inputs(src_nodes)
+ tsk.set_outputs(bld_nodes)
+ if self.jarname:
+ tsk=self.create_task('jar_create')
+ tsk.set_inputs(bld_nodes)
+ tsk.set_outputs(self.path.find_or_declare(self.jarname))
+ if not self.env['JAROPTS']:
+ if self.jaropts:
+ self.env['JAROPTS']=self.jaropts
+ else:
+ dirs='.'
+ self.env['JAROPTS']=['-C',''.join(self.env['OUTDIR']),dirs]
+Task.simple_task_type('jar_create','${JAR} ${JARCREATE} ${TGT} ${JAROPTS}',color='GREEN')
+cls=Task.simple_task_type('javac','${JAVAC} -classpath ${CLASSPATH} -d ${OUTDIR} ${JAVACFLAGS} ${SRC}')
+cls.color='BLUE'
+def post_run_javac(self):
+ par={}
+ for x in self.inputs:
+ par[x.parent.id]=x.parent
+ inner={}
+ for k in par.values():
+ path=k.abspath(self.env)
+ lst=os.listdir(path)
+ for u in lst:
+ if u.find('$')>=0:
+ inner_class_node=k.find_or_declare(u)
+ inner[inner_class_node.id]=inner_class_node
+ to_add=set(inner.keys())-set([x.id for x in self.outputs])
+ for x in to_add:
+ self.outputs.append(inner[x])
+ return Task.Task.post_run(self)
+cls.post_run=post_run_javac
+def detect(conf):
+ java_path=conf.environ['PATH'].split(os.pathsep)
+ v=conf.env
+ if'JAVA_HOME'in conf.environ:
+ java_path=[os.path.join(conf.environ['JAVA_HOME'],'bin')]+java_path
+ conf.env['JAVA_HOME']=[conf.environ['JAVA_HOME']]
+ for x in'javac java jar'.split():
+ conf.find_program(x,var=x.upper(),path_list=java_path)
+ conf.env[x.upper()]=conf.cmd_to_list(conf.env[x.upper()])
+ v['JAVA_EXT']=['.java']
+ if'CLASSPATH'in conf.environ:
+ v['CLASSPATH']=conf.environ['CLASSPATH']
+ if not v['JAR']:conf.fatal('jar is required for making java packages')
+ if not v['JAVAC']:conf.fatal('javac is required for compiling java classes')
+ v['JARCREATE']='cf'
+def check_java_class(self,classname,with_classpath=None):
+ import shutil
+ javatestdir='.waf-javatest'
+ classpath=javatestdir
+ if self.env['CLASSPATH']:
+ classpath+=os.pathsep+self.env['CLASSPATH']
+ if isinstance(with_classpath,str):
+ classpath+=os.pathsep+with_classpath
+ shutil.rmtree(javatestdir,True)
+ os.mkdir(javatestdir)
+ java_file=open(os.path.join(javatestdir,'Test.java'),'w')
+ java_file.write(class_check_source)
+ java_file.close()
+ Utils.exec_command(self.env['JAVAC']+[os.path.join(javatestdir,'Test.java')],shell=False)
+ cmd=self.env['JAVA']+['-cp',classpath,'Test',classname]
+ self.log.write("%s\n"%str(cmd))
+ found=Utils.exec_command(cmd,shell=False,log=self.log)
+ self.check_message('Java class %s'%classname,"",not found)
+ shutil.rmtree(javatestdir,True)
+ return found
+
+feature('jar')(jar_files)
+before('apply_core')(jar_files)
+feature('javac')(apply_java)
+before('apply_core')(apply_java)
+conf(check_java_class)
diff -Nru gtkimageview-1.6.4/wafadmin/Tools/kde4.py gtkimageview-1.6.4+dfsg/wafadmin/Tools/kde4.py
--- gtkimageview-1.6.4/wafadmin/Tools/kde4.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Tools/kde4.py 2009-04-04 19:27:21.000000000 -0400
@@ -0,0 +1,61 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+import os,sys,re
+import Options,TaskGen,Task,Utils
+from TaskGen import taskgen,feature,after
+class msgfmt_taskgen(TaskGen.task_gen):
+ def __init__(self,*k,**kw):
+ TaskGen.task_gen.__init__(self,*k,**kw)
+def init_msgfmt(self):
+ self.default_install_path='${KDE4_LOCALE_INSTALL_DIR}'
+def apply_msgfmt(self):
+ for lang in self.to_list(self.langs):
+ node=self.path.find_resource(lang+'.po')
+ task=self.create_task('msgfmt')
+ task.set_inputs(node)
+ task.set_outputs(node.change_ext('.mo'))
+ if not Options.is_install:continue
+ langname=lang.split('/')
+ langname=langname[-1]
+ task.install_path=self.install_path+os.sep+langname+os.sep+'LC_MESSAGES'
+ task.filename=getattr(self,'appname','set_your_appname')+'.mo'
+ task.chmod=self.chmod
+def detect(conf):
+ kdeconfig=conf.find_program('kde4-config')
+ if not kdeconfig:
+ conf.fatal('we need kde4-config')
+ prefix=Utils.cmd_output('%s --prefix'%kdeconfig,silent=True).strip()
+ file='%s/share/apps/cmake/modules/KDELibsDependencies.cmake'%prefix
+ try:os.stat(file)
+ except OSError:
+ file='%s/share/kde4/apps/cmake/modules/KDELibsDependencies.cmake'%prefix
+ try:os.stat(file)
+ except OSError:conf.fatal('could not open %s'%file)
+ try:
+ f=open(file,'r')
+ txt=f.read()
+ f.close()
+ except(OSError,IOError):
+ conf.fatal('could not read %s'%file)
+ txt=txt.replace('\\\n','\n')
+ fu=re.compile('#(.*)\n')
+ txt=fu.sub('',txt)
+ setregexp=re.compile('([sS][eE][tT]\s*\()\s*([^\s]+)\s+\"([^"]+)\"\)')
+ found=setregexp.findall(txt)
+ for(_,key,val)in found:
+ conf.env[key]=val
+ conf.env['LIB_KDECORE']='kdecore'
+ conf.env['LIB_KDEUI']='kdeui'
+ conf.env['LIB_KIO']='kio'
+ conf.env['LIB_KHTML']='khtml'
+ conf.env['LIB_KPARTS']='kparts'
+ conf.env['LIBPATH_KDECORE']=conf.env['KDE4_LIB_INSTALL_DIR']
+ conf.env['CPPPATH_KDECORE']=conf.env['KDE4_INCLUDE_INSTALL_DIR']
+ conf.env.append_value('CPPPATH_KDECORE',conf.env['KDE4_INCLUDE_INSTALL_DIR']+"/KDE")
+ conf.env['MSGFMT']=conf.find_program('msgfmt')
+Task.simple_task_type('msgfmt','${MSGFMT} ${SRC} -o ${TGT}',color='BLUE')
+
+feature('msgfmt')(init_msgfmt)
+feature('msgfmt')(apply_msgfmt)
+after('init_msgfmt')(apply_msgfmt)
diff -Nru gtkimageview-1.6.4/wafadmin/Tools/libtool.py gtkimageview-1.6.4+dfsg/wafadmin/Tools/libtool.py
--- gtkimageview-1.6.4/wafadmin/Tools/libtool.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Tools/libtool.py 2009-04-04 19:27:21.000000000 -0400
@@ -0,0 +1,242 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+import sys,re,os,optparse
+import TaskGen,Task,Utils,preproc
+from Logs import error,debug,warn
+from TaskGen import taskgen,after,before,feature
+REVISION="0.1.3"
+fakelibtool_vardeps=['CXX','PREFIX']
+def fakelibtool_build(task):
+ env=task.env
+ dest=open(task.outputs[0].abspath(env),'w')
+ sname=task.inputs[0].name
+ fu=dest.write
+ fu("# Generated by ltmain.sh - GNU libtool 1.5.18 - (pwn3d by BKsys II code name WAF)\n")
+ if env['vnum']:
+ nums=env['vnum'].split('.')
+ libname=task.inputs[0].name
+ name3=libname+'.'+env['vnum']
+ name2=libname+'.'+nums[0]
+ name1=libname
+ fu("dlname='%s'\n"%name2)
+ strn=" ".join([name3,name2,name1])
+ fu("library_names='%s'\n"%(strn))
+ else:
+ fu("dlname='%s'\n"%sname)
+ fu("library_names='%s %s %s'\n"%(sname,sname,sname))
+ fu("old_library=''\n")
+ vars=' '.join(env['libtoolvars']+env['LINKFLAGS'])
+ fu("dependency_libs='%s'\n"%vars)
+ fu("current=0\n")
+ fu("age=0\nrevision=0\ninstalled=yes\nshouldnotlink=no\n")
+ fu("dlopen=''\ndlpreopen=''\n")
+ fu("libdir='%s/lib'\n"%env['PREFIX'])
+ dest.close()
+ return 0
+def read_la_file(path):
+ sp=re.compile(r'^([^=]+)=\'(.*)\'$')
+ dc={}
+ file=open(path,"r")
+ for line in file.readlines():
+ try:
+ _,left,right,_=sp.split(line.strip())
+ dc[left]=right
+ except ValueError:
+ pass
+ file.close()
+ return dc
+def apply_link_libtool(self):
+ if self.type!='program':
+ linktask=self.link_task
+ latask=self.create_task('fakelibtool')
+ latask.set_inputs(linktask.outputs)
+ latask.set_outputs(linktask.outputs[0].change_ext('.la'))
+ self.latask=latask
+ if Options.commands['install']or Options.commands['uninstall']:
+ self.bld.install_files('${PREFIX}/lib',linktask.outputs[0].abspath(self.env),self.env)
+def apply_libtool(self):
+ self.env['vnum']=self.vnum
+ paths=[]
+ libs=[]
+ libtool_files=[]
+ libtool_vars=[]
+ for l in self.env['LINKFLAGS']:
+ if l[:2]=='-L':
+ paths.append(l[2:])
+ elif l[:2]=='-l':
+ libs.append(l[2:])
+ for l in libs:
+ for p in paths:
+ dict=read_la_file(p+'/lib'+l+'.la')
+ linkflags2=dict.get('dependency_libs','')
+ for v in linkflags2.split():
+ if v.endswith('.la'):
+ libtool_files.append(v)
+ libtool_vars.append(v)
+ continue
+ self.env.append_unique('LINKFLAGS',v)
+ break
+ self.env['libtoolvars']=libtool_vars
+ while libtool_files:
+ file=libtool_files.pop()
+ dict=read_la_file(file)
+ for v in dict['dependency_libs'].split():
+ if v[-3:]=='.la':
+ libtool_files.append(v)
+ continue
+ self.env.append_unique('LINKFLAGS',v)
+Task.task_type_from_func('fakelibtool',vars=fakelibtool_vardeps,func=fakelibtool_build,color='BLUE',after="cc_link cxx_link ar_link_static")
+class libtool_la_file:
+ def __init__(self,la_filename):
+ self.__la_filename=la_filename
+ self.linkname=str(os.path.split(la_filename)[-1])[:-3]
+ if self.linkname.startswith("lib"):
+ self.linkname=self.linkname[3:]
+ self.dlname=None
+ self.library_names=None
+ self.old_library=None
+ self.dependency_libs=None
+ self.current=None
+ self.age=None
+ self.revision=None
+ self.installed=None
+ self.shouldnotlink=None
+ self.dlopen=None
+ self.dlpreopen=None
+ self.libdir='/usr/lib'
+ if not self.__parse():
+ raise"file %s not found!!"%(la_filename)
+ def __parse(self):
+ if not os.path.isfile(self.__la_filename):return 0
+ la_file=open(self.__la_filename,'r')
+ for line in la_file:
+ ln=line.strip()
+ if not ln:continue
+ if ln[0]=='#':continue
+ (key,value)=str(ln).split('=',1)
+ key=key.strip()
+ value=value.strip()
+ if value=="no":value=False
+ elif value=="yes":value=True
+ else:
+ try:value=int(value)
+ except ValueError:value=value.strip("'")
+ setattr(self,key,value)
+ la_file.close()
+ return 1
+ def get_libs(self):
+ libs=[]
+ if self.dependency_libs:
+ libs=str(self.dependency_libs).strip().split()
+ if libs==None:
+ libs=[]
+ libs.insert(0,"-l%s"%self.linkname.strip())
+ libs.insert(0,"-L%s"%self.libdir.strip())
+ return libs
+ def __str__(self):
+ return'''\
+dlname = "%(dlname)s"
+library_names = "%(library_names)s"
+old_library = "%(old_library)s"
+dependency_libs = "%(dependency_libs)s"
+version = %(current)s.%(age)s.%(revision)s
+installed = "%(installed)s"
+shouldnotlink = "%(shouldnotlink)s"
+dlopen = "%(dlopen)s"
+dlpreopen = "%(dlpreopen)s"
+libdir = "%(libdir)s"'''%self.__dict__
+class libtool_config:
+ def __init__(self,la_filename):
+ self.__libtool_la_file=libtool_la_file(la_filename)
+ tmp=self.__libtool_la_file
+ self.__version=[int(tmp.current),int(tmp.age),int(tmp.revision)]
+ self.__sub_la_files=[]
+ self.__sub_la_files.append(la_filename)
+ self.__libs=None
+ def __cmp__(self,other):
+ if not other:
+ return 1
+ othervers=[int(s)for s in str(other).split(".")]
+ selfvers=self.__version
+ return cmp(selfvers,othervers)
+ def __str__(self):
+ return"\n".join([str(self.__libtool_la_file),' '.join(self.__libtool_la_file.get_libs()),'* New getlibs:',' '.join(self.get_libs())])
+ def __get_la_libs(self,la_filename):
+ return libtool_la_file(la_filename).get_libs()
+ def get_libs(self):
+ libs_list=list(self.__libtool_la_file.get_libs())
+ libs_map={}
+ while len(libs_list)>0:
+ entry=libs_list.pop(0)
+ if entry:
+ if str(entry).endswith(".la"):
+ if entry not in self.__sub_la_files:
+ self.__sub_la_files.append(entry)
+ libs_list.extend(self.__get_la_libs(entry))
+ else:
+ libs_map[entry]=1
+ self.__libs=libs_map.keys()
+ return self.__libs
+ def get_libs_only_L(self):
+ if not self.__libs:self.get_libs()
+ libs=self.__libs
+ libs=[s for s in libs if str(s).startswith('-L')]
+ return libs
+ def get_libs_only_l(self):
+ if not self.__libs:self.get_libs()
+ libs=self.__libs
+ libs=[s for s in libs if str(s).startswith('-l')]
+ return libs
+ def get_libs_only_other(self):
+ if not self.__libs:self.get_libs()
+ libs=self.__libs
+ libs=[s for s in libs if not(str(s).startswith('-L')or str(s).startswith('-l'))]
+ return libs
+def useCmdLine():
+ usage='''Usage: %prog [options] PathToFile.la
+example: %prog --atleast-version=2.0.0 /usr/lib/libIlmImf.la
+nor: %prog --libs /usr/lib/libamarok.la'''
+ parser=optparse.OptionParser(usage)
+ a=parser.add_option
+ a("--version",dest="versionNumber",action="store_true",default=False,help="output version of libtool-config")
+ a("--debug",dest="debug",action="store_true",default=False,help="enable debug")
+ a("--libs",dest="libs",action="store_true",default=False,help="output all linker flags")
+ a("--libs-only-l",dest="libs_only_l",action="store_true",default=False,help="output -l flags")
+ a("--libs-only-L",dest="libs_only_L",action="store_true",default=False,help="output -L flags")
+ a("--libs-only-other",dest="libs_only_other",action="store_true",default=False,help="output other libs (e.g. -pthread)")
+ a("--atleast-version",dest="atleast_version",default=None,help="return 0 if the module is at least version ATLEAST_VERSION")
+ a("--exact-version",dest="exact_version",default=None,help="return 0 if the module is exactly version EXACT_VERSION")
+ a("--max-version",dest="max_version",default=None,help="return 0 if the module is at no newer than version MAX_VERSION")
+ (options,args)=parser.parse_args()
+ if len(args)!=1 and not options.versionNumber:
+ parser.error("incorrect number of arguments")
+ if options.versionNumber:
+ print("libtool-config version %s"%REVISION)
+ return 0
+ ltf=libtool_config(args[0])
+ if options.debug:
+ print(ltf)
+ if options.atleast_version:
+ if ltf>=options.atleast_version:return 0
+ sys.exit(1)
+ if options.exact_version:
+ if ltf==options.exact_version:return 0
+ sys.exit(1)
+ if options.max_version:
+ if ltf<=options.max_version:return 0
+ sys.exit(1)
+ def p(x):
+ print(" ".join(x))
+ if options.libs:p(ltf.get_libs())
+ elif options.libs_only_l:p(ltf.get_libs_only_l())
+ elif options.libs_only_L:p(ltf.get_libs_only_L())
+ elif options.libs_only_other:p(ltf.get_libs_only_other())
+ return 0
+if __name__=='__main__':
+ useCmdLine()
+
+feature("libtool")(apply_link_libtool)
+after('apply_link')(apply_link_libtool)
+feature("libtool")(apply_libtool)
+before('apply_core')(apply_libtool)
diff -Nru gtkimageview-1.6.4/wafadmin/Tools/lua.py gtkimageview-1.6.4+dfsg/wafadmin/Tools/lua.py
--- gtkimageview-1.6.4/wafadmin/Tools/lua.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Tools/lua.py 2009-04-04 19:27:21.000000000 -0400
@@ -0,0 +1,13 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+import TaskGen
+from TaskGen import taskgen,feature
+from Constants import*
+TaskGen.declare_chain(name='luac',rule='${LUAC} -s -o ${TGT} ${SRC}',ext_in='.lua',ext_out='.luac',reentrant=0,install='LUADIR',)
+def init_lua(self):
+ self.default_chmod=O755
+def detect(conf):
+ conf.find_program('luac',var='LUAC',mandatory=True)
+
+feature('lua')(init_lua)
diff -Nru gtkimageview-1.6.4/wafadmin/Tools/misc.py gtkimageview-1.6.4+dfsg/wafadmin/Tools/misc.py
--- gtkimageview-1.6.4/wafadmin/Tools/misc.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Tools/misc.py 2009-04-04 19:27:21.000000000 -0400
@@ -0,0 +1,315 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+import shutil,re,os
+import TaskGen,Node,Task,Utils,Build,pproc,Constants
+from TaskGen import feature,taskgen,after,before
+from Logs import debug
+def copy_func(tsk):
+ env=tsk.env
+ infile=tsk.inputs[0].abspath(env)
+ outfile=tsk.outputs[0].abspath(env)
+ try:
+ shutil.copy2(infile,outfile)
+ except(OSError,IOError):
+ return 1
+ else:
+ if tsk.chmod:os.chmod(outfile,tsk.chmod)
+ return 0
+def action_process_file_func(tsk):
+ if not tsk.fun:raise Utils.WafError('task must have a function attached to it for copy_func to work!')
+ return tsk.fun(tsk)
+class cmd_taskgen(TaskGen.task_gen):
+ def __init__(self,*k,**kw):
+ TaskGen.task_gen.__init__(self,*k,**kw)
+def apply_cmd(self):
+ if not self.fun:raise Utils.WafError('cmdobj needs a function!')
+ tsk=Task.TaskBase()
+ tsk.fun=self.fun
+ tsk.env=self.env
+ self.tasks.append(tsk)
+ tsk.install_path=self.install_path
+class copy_taskgen(TaskGen.task_gen):
+ def __init__(self,*k,**kw):
+ TaskGen.task_gen.__init__(self,*k,**kw)
+def apply_copy(self):
+ Utils.def_attrs(self,fun=copy_func)
+ self.default_install_path=0
+ lst=self.to_list(self.source)
+ self.meths.remove('apply_core')
+ for filename in lst:
+ node=self.path.find_resource(filename)
+ if not node:raise Utils.WafError('cannot find input file %s for processing'%filename)
+ target=self.target
+ if not target or len(lst)>1:target=node.name
+ newnode=self.path.find_or_declare(target)
+ tsk=self.create_task('copy')
+ tsk.set_inputs(node)
+ tsk.set_outputs(newnode)
+ tsk.fun=self.fun
+ tsk.chmod=self.chmod
+ if not tsk.env:
+ tsk.debug()
+ raise Utils.WafError('task without an environment')
+def subst_func(tsk):
+ m4_re=re.compile('@(\w+)@',re.M)
+ env=tsk.env
+ infile=tsk.inputs[0].abspath(env)
+ outfile=tsk.outputs[0].abspath(env)
+ file=open(infile,'r')
+ code=file.read()
+ file.close()
+ code=code.replace('%','%%')
+ s=m4_re.sub(r'%(\1)s',code)
+ di=tsk.dict or{}
+ if not di:
+ names=m4_re.findall(code)
+ for i in names:
+ di[i]=env.get_flat(i)or env.get_flat(i.upper())
+ file=open(outfile,'w')
+ file.write(s%di)
+ file.close()
+ if tsk.chmod:os.chmod(outfile,tsk.chmod)
+class subst_taskgen(TaskGen.task_gen):
+ def __init__(self,*k,**kw):
+ TaskGen.task_gen.__init__(self,*k,**kw)
+def apply_subst(self):
+ Utils.def_attrs(self,fun=subst_func)
+ self.default_install_path=0
+ lst=self.to_list(self.source)
+ self.meths.remove('apply_core')
+ self.dict=getattr(self,'dict',{})
+ for filename in lst:
+ node=self.path.find_resource(filename)
+ if not node:raise Utils.WafError('cannot find input file %s for processing'%filename)
+ if self.target:
+ newnode=self.path.find_or_declare(self.target)
+ else:
+ newnode=node.change_ext('')
+ try:
+ self.dict=self.dict.get_merged_dict()
+ except AttributeError:
+ pass
+ if self.dict and not self.env['DICT_HASH']:
+ self.env=self.env.copy()
+ keys=self.dict.keys()
+ keys.sort()
+ lst=[self.dict[x]for x in keys]
+ self.env['DICT_HASH']=str(Utils.h_list(lst))
+ tsk=self.create_task('copy')
+ tsk.set_inputs(node)
+ tsk.set_outputs(newnode)
+ tsk.fun=self.fun
+ tsk.dict=self.dict
+ tsk.dep_vars=['DICT_HASH']
+ tsk.install_path=self.install_path
+ tsk.chmod=self.chmod
+ if not tsk.env:
+ tsk.debug()
+ raise Utils.WafError('task without an environment')
+class cmd_arg(object):
+ def __init__(self,name,template='%s'):
+ self.name=name
+ self.template=template
+ self.node=None
+class input_file(cmd_arg):
+ def find_node(self,base_path):
+ assert isinstance(base_path,Node.Node)
+ self.node=base_path.find_resource(self.name)
+ if self.node is None:
+ raise Utils.WafError("Input file %s not found in "%(self.name,base_path))
+ def get_path(self,env,absolute):
+ if absolute:
+ return self.template%self.node.abspath(env)
+ else:
+ return self.template%self.node.srcpath(env)
+class output_file(cmd_arg):
+ def find_node(self,base_path):
+ assert isinstance(base_path,Node.Node)
+ self.node=base_path.find_or_declare(self.name)
+ if self.node is None:
+ raise Utils.WafError("Output file %s not found in "%(self.name,base_path))
+ def get_path(self,env,absolute):
+ if absolute:
+ return self.template%self.node.abspath(env)
+ else:
+ return self.template%self.node.bldpath(env)
+class cmd_dir_arg(cmd_arg):
+ def __init__(self,name,template=None):
+ cmd_arg.__init__(self)
+ self.name=name
+ self.node=None
+ if template is None:
+ self.template='%s'
+ else:
+ self.template=template
+ def find_node(self,base_path):
+ assert isinstance(base_path,Node.Node)
+ self.node=base_path.find_dir(self.name)
+ if self.node is None:
+ raise Utils.WafError("Directory %s not found in "%(self.name,base_path))
+class input_dir(cmd_dir_arg):
+ def get_path(self,dummy_env,dummy_absolute):
+ return self.template%self.node.abspath()
+class output_dir(cmd_dir_arg):
+ def get_path(self,env,dummy_absolute):
+ return self.template%self.node.abspath(env)
+class command_output(Task.Task):
+ color="BLUE"
+ def __init__(self,env,command,command_node,command_args,stdin,stdout,cwd,os_env,stderr):
+ Task.Task.__init__(self,env,normal=1)
+ assert isinstance(command,(str,Node.Node))
+ self.command=command
+ self.command_args=command_args
+ self.stdin=stdin
+ self.stdout=stdout
+ self.cwd=cwd
+ self.os_env=os_env
+ self.stderr=stderr
+ if command_node is not None:self.dep_nodes=[command_node]
+ self.dep_vars=[]
+ def run(self):
+ task=self
+ def input_path(node,template):
+ if task.cwd is None:
+ return template%node.bldpath(task.env)
+ else:
+ return template%node.abspath()
+ def output_path(node,template):
+ fun=node.abspath
+ if task.cwd is None:fun=node.bldpath
+ return template%fun(task.env)
+ if isinstance(task.command,Node.Node):
+ argv=[input_path(task.command,'%s')]
+ else:
+ argv=[task.command]
+ for arg in task.command_args:
+ if isinstance(arg,str):
+ argv.append(arg)
+ else:
+ assert isinstance(arg,cmd_arg)
+ argv.append(arg.get_path(task.env,(task.cwd is not None)))
+ if task.stdin:
+ stdin=file(input_path(task.stdin,'%s'))
+ else:
+ stdin=None
+ if task.stdout:
+ stdout=file(output_path(task.stdout,'%s'),"w")
+ else:
+ stdout=None
+ if task.stderr:
+ stderr=file(output_path(task.stderr,'%s'),"w")
+ else:
+ stderr=None
+ if task.cwd is None:
+ cwd=('None (actually %r)'%os.getcwd())
+ else:
+ cwd=repr(task.cwd)
+ debug("command-output: cwd=%s, stdin=%r, stdout=%r, argv=%r"%(cwd,stdin,stdout,argv))
+ if task.os_env is None:
+ os_env=os.environ
+ else:
+ os_env=task.os_env
+ command=pproc.Popen(argv,stdin=stdin,stdout=stdout,stderr=stderr,cwd=task.cwd,env=os_env)
+ return command.wait()
+class cmd_output_taskgen(TaskGen.task_gen):
+ def __init__(self,*k,**kw):
+ TaskGen.task_gen.__init__(self,*k,**kw)
+def init_cmd_output(self):
+ Utils.def_attrs(self,stdin=None,stdout=None,stderr=None,command=None,command_is_external=False,argv=[],dependencies=[],dep_vars=[],hidden_inputs=[],hidden_outputs=[],cwd=None,os_env=None)
+def apply_cmd_output(self):
+ if self.command is None:
+ raise Utils.WafError("command-output missing command")
+ if self.command_is_external:
+ cmd=self.command
+ cmd_node=None
+ else:
+ cmd_node=self.path.find_resource(self.command)
+ assert cmd_node is not None,('''Could not find command '%s' in source tree.
+Hint: if this is an external command,
+use command_is_external=True''')%(self.command,)
+ cmd=cmd_node
+ if self.cwd is None:
+ cwd=None
+ else:
+ assert isinstance(cwd,CmdDirArg)
+ self.cwd.find_node(self.path)
+ args=[]
+ inputs=[]
+ outputs=[]
+ for arg in self.argv:
+ if isinstance(arg,cmd_arg):
+ arg.find_node(self.path)
+ if isinstance(arg,input_file):
+ inputs.append(arg.node)
+ if isinstance(arg,output_file):
+ outputs.append(arg.node)
+ if self.stdout is None:
+ stdout=None
+ else:
+ assert isinstance(self.stdout,basestring)
+ stdout=self.path.find_or_declare(self.stdout)
+ if stdout is None:
+ raise Utils.WafError("File %s not found"%(self.stdout,))
+ outputs.append(stdout)
+ if self.stderr is None:
+ stderr=None
+ else:
+ assert isinstance(self.stderr,basestring)
+ stderr=self.path.find_or_declare(self.stderr)
+ if stderr is None:
+ raise Utils.WafError("File %s not found"%(self.stderr,))
+ outputs.append(stderr)
+ if self.stdin is None:
+ stdin=None
+ else:
+ assert isinstance(self.stdin,basestring)
+ stdin=self.path.find_resource(self.stdin)
+ if stdin is None:
+ raise Utils.WafError("File %s not found"%(self.stdin,))
+ inputs.append(stdin)
+ for hidden_input in self.to_list(self.hidden_inputs):
+ node=self.path.find_resource(hidden_input)
+ if node is None:
+ raise Utils.WafError("File %s not found in dir %s"%(hidden_input,self.path))
+ inputs.append(node)
+ for hidden_output in self.to_list(self.hidden_outputs):
+ node=self.path.find_or_declare(hidden_output)
+ if node is None:
+ raise Utils.WafError("File %s not found in dir %s"%(hidden_output,self.path))
+ outputs.append(node)
+ if not(inputs or getattr(self,'no_inputs',None)):
+ raise Utils.WafError('command-output objects must have at least one input file or give self.no_inputs')
+ if not(outputs or getattr(self,'no_outputs',None)):
+ raise Utils.WafError('command-output objects must have at least one output file or give self.no_outputs')
+ task=command_output(self.env,cmd,cmd_node,self.argv,stdin,stdout,cwd,self.os_env,stderr)
+ Utils.copy_attrs(self,task,'before after ext_in ext_out',only_if_set=True)
+ self.tasks.append(task)
+ task.inputs=inputs
+ task.outputs=outputs
+ task.dep_vars=self.to_list(self.dep_vars)
+ for dep in self.dependencies:
+ assert dep is not self
+ dep.post()
+ for dep_task in dep.tasks:
+ task.set_run_after(dep_task)
+ if not task.inputs:
+ task.runnable_status=type(Task.TaskBase.run)(runnable_status,task,task.__class__)
+ task.post_run=type(Task.TaskBase.run)(post_run,task,task.__class__)
+def post_run(self):
+ for x in self.outputs:
+ h=Utils.h_file(x.abspath(self.env))
+ self.generator.bld.node_sigs[self.env.variant()][x.id]=h
+def runnable_status(self):
+ return Constants.RUN_ME
+Task.task_type_from_func('copy',vars=[],func=action_process_file_func)
+TaskGen.task_gen.classes['command-output']=cmd_output_taskgen
+
+feature('cmd')(apply_cmd)
+feature('copy')(apply_copy)
+before('apply_core')(apply_copy)
+feature('subst')(apply_subst)
+before('apply_core')(apply_subst)
+feature('command-output')(init_cmd_output)
+feature('command-output')(apply_cmd_output)
+after('init_cmd_output')(apply_cmd_output)
diff -Nru gtkimageview-1.6.4/wafadmin/Tools/msvc.py gtkimageview-1.6.4+dfsg/wafadmin/Tools/msvc.py
--- gtkimageview-1.6.4/wafadmin/Tools/msvc.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Tools/msvc.py 2009-04-04 19:27:21.000000000 -0400
@@ -0,0 +1,461 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+import os,sys,re,string,optparse
+import Utils,TaskGen,Runner,Configure,Task,Options
+from Logs import debug,error,warn
+from TaskGen import after,before,feature
+from Configure import conftest,conf
+import ccroot,cc,cxx,ar,winres
+from libtool import read_la_file
+import _winreg
+all_msvc_platforms=[('ia64','ia64'),('x64','amd64'),('x86','x86'),('x86_amd64','amd64'),('x86_ia64','ia64')]
+all_icl_platforms=[('ia64','ia64'),('intel64','amd64'),('em64t','amd64'),('ia32','x86'),('ia32_intel64','amd64'),('ia32_ia64','ia64')]
+def setup_msvc(conf,versions):
+ platforms=Utils.to_list(conf.env['MSVC_TARGETS'])or[i for i,j in all_msvc_platforms+all_icl_platforms]
+ desired_versions=conf.env['MSVC_VERSIONS']or[v for v,_ in versions][::-1]
+ versiondict=dict(versions)
+ for version in desired_versions:
+ try:
+ targets=dict(versiondict[version])
+ for target in platforms:
+ try:
+ arch,(p1,p2,p3)=targets[target]
+ compiler,version=version.split()
+ return compiler,p1,p2,p3
+ except KeyError:continue
+ except KeyError:continue
+ conf.fatal('msvc: Impossible to find a valid architecture for building')
+def get_msvc_version(conf,version,target,vcvars):
+ batfile=os.path.join(conf.blddir,"waf-print-msvc.bat")
+ f=open(batfile,'w')
+ f.write("""@echo off
+set INCLUDE=
+set LIB=
+call %1 %2
+echo PATH=%PATH%
+echo INCLUDE=%INCLUDE%
+echo LIB=%LIB%
+""")
+ f.close()
+ sout=Utils.cmd_output([batfile,vcvars,target])
+ lines=sout.splitlines()
+ if lines[0].find("Setting environment")==-1 and lines[1].find('Intel(R) C++ Compiler')==-1:
+ conf.fatal('msvc: Impossible to find a valid architecture for building')
+ for line in lines[1:]:
+ if line.startswith('PATH='):
+ MSVC_PATH=line[5:].split(';')
+ elif line.startswith('INCLUDE='):
+ MSVC_INCDIR=[i for i in line[8:].split(';')if i]
+ elif line.startswith('LIB='):
+ MSVC_LIBDIR=[i for i in line[4:].split(';')if i]
+ return(MSVC_PATH,MSVC_INCDIR,MSVC_LIBDIR)
+def gather_msvc_versions(conf,versions):
+ version_pattern=re.compile('^..?\...?')
+ for vcver,vcvar in[('VCExpress','exp'),('VisualStudio','')]:
+ try:
+ all_versions=_winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,'SOFTWARE\\Wow6432node\\Microsoft\\'+vcver)
+ except WindowsError:
+ try:
+ all_versions=_winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,'SOFTWARE\\Microsoft\\'+vcver)
+ except WindowsError:
+ continue
+ index=0
+ while 1:
+ try:
+ version=_winreg.EnumKey(all_versions,index)
+ except WindowsError:
+ break
+ index=index+1
+ if not version_pattern.match(version):
+ continue
+ try:
+ msvc_version=_winreg.OpenKey(all_versions,version+"\\Setup\\VS")
+ path,type=_winreg.QueryValueEx(msvc_version,'ProductDir')
+ targets=[]
+ if os.path.isfile(os.path.join(path,'VC','vcvarsall.bat')):
+ for target,realtarget in all_msvc_platforms[::-1]:
+ try:
+ targets.append((target,(realtarget,conf.get_msvc_version(version,target,os.path.join(path,'VC','vcvarsall.bat')))))
+ except:
+ pass
+ elif os.path.isfile(os.path.join(path,'Common7','Tools','vsvars32.bat')):
+ try:
+ targets.append(('x86',('x86',conf.get_msvc_version(version,'x86',os.path.join(path,'Common7','Tools','vsvars32.bat')))))
+ except Configure.ConfigurationError:
+ pass
+ versions.append(('msvc '+version,targets))
+ except WindowsError:
+ continue
+def gather_icl_versions(conf,versions):
+ version_pattern=re.compile('^...?.?\....?.?')
+ try:
+ all_versions=_winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,'SOFTWARE\\Wow6432node\\Intel\\Compilers\\C++')
+ except WindowsError:
+ try:
+ all_versions=_winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,'SOFTWARE\\Intel\\Compilers\\C++')
+ except WindowsError:
+ return
+ index=0
+ while 1:
+ try:
+ version=_winreg.EnumKey(all_versions,index)
+ except WindowsError:
+ break
+ index=index+1
+ if not version_pattern.match(version):
+ continue
+ targets=[]
+ for target,arch in all_icl_platforms:
+ try:
+ icl_version=_winreg.OpenKey(all_versions,version+'\\'+target)
+ path,type=_winreg.QueryValueEx(icl_version,'ProductDir')
+ if os.path.isfile(os.path.join(path,'bin','iclvars.bat')):
+ try:
+ targets.append((target,(arch,conf.get_msvc_version(version,target,os.path.join(path,'bin','iclvars.bat')))))
+ except Configure.ConfigurationError:
+ pass
+ except WindowsError:
+ continue
+ major=version[0:2]
+ versions.append(('intel '+major,targets))
+def get_msvc_versions(conf):
+ if not conf.env['MSVC_INSTALLED_VERSIONS']:
+ conf.env['MSVC_INSTALLED_VERSIONS']=[]
+ conf.gather_msvc_versions(conf.env['MSVC_INSTALLED_VERSIONS'])
+ conf.gather_icl_versions(conf.env['MSVC_INSTALLED_VERSIONS'])
+ return conf.env['MSVC_INSTALLED_VERSIONS']
+def detect_msvc(conf):
+ versions=get_msvc_versions(conf)
+ return setup_msvc(conf,versions)
+def msvc_linker(task):
+ static=task.__class__.name.find('static')>0
+ e=env=task.env
+ subsystem=getattr(task.generator,'subsystem','')
+ if subsystem:
+ subsystem='/subsystem:%s'%subsystem
+ outfile=task.outputs[0].bldpath(e)
+ manifest=outfile+'.manifest'
+ def to_list(xx):
+ if isinstance(xx,str):return[xx]
+ return xx
+ lst=[]
+ if static:
+ lst.extend(to_list(env['STLIBLINK']))
+ else:
+ lst.extend(to_list(env['LINK']))
+ lst.extend(to_list(subsystem))
+ if static:
+ lst.extend(to_list(env['STLINKFLAGS']))
+ else:
+ lst.extend(to_list(env['LINKFLAGS']))
+ lst.extend([a.srcpath(env)for a in task.inputs])
+ lst.extend(to_list('/OUT:%s'%outfile))
+ lst=[x for x in lst if x]
+ lst=[lst]
+ ret=task.exec_command(*lst)
+ if ret:return ret
+ pdbnode=task.outputs[0].change_ext('.pdb')
+ pdbfile=pdbnode.bldpath(e)
+ if os.path.exists(pdbfile):
+ task.outputs.append(pdbnode)
+ if not static and os.path.exists(manifest):
+ debug('msvc: manifesttool')
+ mtool=e['MT']
+ if not mtool:
+ return 0
+ mode=''
+ if'cprogram'in task.generator.features:
+ mode='1'
+ elif'cshlib'in task.generator.features:
+ mode='2'
+ debug('msvc: embedding manifest')
+ lst=[]
+ lst.extend(to_list(e['MT']))
+ lst.extend(to_list(e['MTFLAGS']))
+ lst.extend(to_list("-manifest"))
+ lst.extend(to_list(manifest))
+ lst.extend(to_list("-outputresource:%s;%s"%(outfile,mode)))
+ lst=[lst]
+ ret=task.exec_command(*lst)
+ return ret
+g_msvc_systemlibs="""
+aclui activeds ad1 adptif adsiid advapi32 asycfilt authz bhsupp bits bufferoverflowu cabinet
+cap certadm certidl ciuuid clusapi comctl32 comdlg32 comsupp comsuppd comsuppw comsuppwd comsvcs
+credui crypt32 cryptnet cryptui d3d8thk daouuid dbgeng dbghelp dciman32 ddao35 ddao35d
+ddao35u ddao35ud delayimp dhcpcsvc dhcpsapi dlcapi dnsapi dsprop dsuiext dtchelp
+faultrep fcachdll fci fdi framedyd framedyn gdi32 gdiplus glauxglu32 gpedit gpmuuid
+gtrts32w gtrtst32hlink htmlhelp httpapi icm32 icmui imagehlp imm32 iphlpapi iprop
+kernel32 ksguid ksproxy ksuser libcmt libcmtd libcpmt libcpmtd loadperf lz32 mapi
+mapi32 mgmtapi minidump mmc mobsync mpr mprapi mqoa mqrt msacm32 mscms mscoree
+msdasc msimg32 msrating mstask msvcmrt msvcurt msvcurtd mswsock msxml2 mtx mtxdm
+netapi32 nmapinmsupp npptools ntdsapi ntdsbcli ntmsapi ntquery odbc32 odbcbcp
+odbccp32 oldnames ole32 oleacc oleaut32 oledb oledlgolepro32 opends60 opengl32
+osptk parser pdh penter pgobootrun pgort powrprof psapi ptrustm ptrustmd ptrustu
+ptrustud qosname rasapi32 rasdlg rassapi resutils riched20 rpcndr rpcns4 rpcrt4 rtm
+rtutils runtmchk scarddlg scrnsave scrnsavw secur32 sensapi setupapi sfc shell32
+shfolder shlwapi sisbkup snmpapi sporder srclient sti strsafe svcguid tapi32 thunk32
+traffic unicows url urlmon user32 userenv usp10 uuid uxtheme vcomp vcompd vdmdbg
+version vfw32 wbemuuid webpost wiaguid wininet winmm winscard winspool winstrm
+wintrust wldap32 wmiutils wow32 ws2_32 wsnmp32 wsock32 wst wtsapi32 xaswitch xolehlp
+""".split()
+def find_lt_names_msvc(self,libname,is_static=False):
+ lt_names=['lib%s.la'%libname,'%s.la'%libname,]
+ for path in self.env['LIBPATH']:
+ for la in lt_names:
+ laf=os.path.join(path,la)
+ dll=None
+ if os.path.exists(laf):
+ ltdict=read_la_file(laf)
+ lt_libdir=None
+ if ltdict.get('libdir',''):
+ lt_libdir=ltdict['libdir']
+ if not is_static and ltdict.get('library_names',''):
+ dllnames=ltdict['library_names'].split()
+ dll=dllnames[0].lower()
+ dll=re.sub('\.dll$','',dll)
+ return(lt_libdir,dll,False)
+ elif ltdict.get('old_library',''):
+ olib=ltdict['old_library']
+ if os.path.exists(os.path.join(path,olib)):
+ return(path,olib,True)
+ elif lt_libdir!=''and os.path.exists(os.path.join(lt_libdir,olib)):
+ return(lt_libdir,olib,True)
+ else:
+ return(None,olib,True)
+ else:
+ raise Utils.WafError('invalid libtool object file: %s'%laf)
+ return(None,None,None)
+def libname_msvc(self,libname,is_static=False,mandatory=False):
+ lib=libname.lower()
+ lib=re.sub('\.lib$','',lib)
+ if lib in g_msvc_systemlibs:
+ return lib
+ lib=re.sub('^lib','',lib)
+ if lib=='m':
+ return None
+ (lt_path,lt_libname,lt_static)=self.find_lt_names_msvc(lib,is_static)
+ if lt_path!=None and lt_libname!=None:
+ if lt_static==True:
+ return os.path.join(lt_path,lt_libname)
+ if lt_path!=None:
+ _libpaths=[lt_path]+self.env['LIBPATH']
+ else:
+ _libpaths=self.env['LIBPATH']
+ static_libs=['%ss.lib'%lib,'lib%ss.lib'%lib,'%s.lib'%lib,'lib%s.lib'%lib,]
+ dynamic_libs=['lib%s.dll.lib'%lib,'lib%s.dll.a'%lib,'%s.dll.lib'%lib,'%s.dll.a'%lib,'lib%s_d.lib'%lib,'%s_d.lib'%lib,'%s.lib'%lib,]
+ libnames=static_libs
+ if not is_static:
+ libnames=dynamic_libs+static_libs
+ for path in _libpaths:
+ for libn in libnames:
+ if os.path.exists(os.path.join(path,libn)):
+ debug('msvc: lib found: %s'%os.path.join(path,libn))
+ return re.sub('\.lib$','',libn)
+ if mandatory:
+ self.fatal("The library %r could not be found"%libname)
+ return re.sub('\.lib$','',libname)
+def check_lib_msvc(self,libname,is_static=False,uselib_store=None,mandatory=False):
+ libn=self.libname_msvc(libname,is_static,mandatory)
+ if not uselib_store:
+ uselib_store=libname.upper()
+ if is_static:
+ self.env['LIB_'+uselib_store]=[libn]
+ else:
+ self.env['STATICLIB_'+uselib_store]=[libn]
+def check_libs_msvc(self,libnames,is_static=False,mandatory=False):
+ for libname in Utils.to_list(libnames):
+ self.check_lib_msvc(libname,is_static,mandatory=mandatory)
+def apply_obj_vars_msvc(self):
+ if self.env['CC_NAME']!='msvc':
+ return
+ try:
+ self.meths.remove('apply_obj_vars')
+ except ValueError:
+ pass
+ env=self.env
+ app=env.append_unique
+ cpppath_st=env['CPPPATH_ST']
+ lib_st=env['LIB_ST']
+ staticlib_st=env['STATICLIB_ST']
+ libpath_st=env['LIBPATH_ST']
+ staticlibpath_st=env['STATICLIBPATH_ST']
+ for i in env['LIBPATH']:
+ app('LINKFLAGS',libpath_st%i)
+ if not self.libpaths.count(i):
+ self.libpaths.append(i)
+ for i in env['LIBPATH']:
+ app('LINKFLAGS',staticlibpath_st%i)
+ if not self.libpaths.count(i):
+ self.libpaths.append(i)
+ if not env['FULLSTATIC']:
+ if env['STATICLIB']or env['LIB']:
+ app('LINKFLAGS',env['SHLIB_MARKER'])
+ for i in env['STATICLIB']:
+ app('LINKFLAGS',lib_st%i)
+ for i in env['LIB']:
+ app('LINKFLAGS',lib_st%i)
+def apply_link_msvc(self):
+ if self.env['CC_NAME']!='msvc':
+ return
+ link=getattr(self,'link',None)
+ if not link:
+ if'cstaticlib'in self.features:link='msvc_link_static'
+ elif'cxx'in self.features:link='msvc_cxx_link'
+ else:link='msvc_cc_link'
+ self.vnum=''
+ self.link=link
+def init_msvc(self):
+ try:getattr(self,'libpaths')
+ except AttributeError:self.libpaths=[]
+Task.task_type_from_func('msvc_link_static',vars=['STLIBLINK','STLINKFLAGS'],color='YELLOW',func=msvc_linker,ext_in='.o')
+Task.task_type_from_func('msvc_cc_link',vars=['LINK','LINK_SRC_F','LINKFLAGS','MT','MTFLAGS'],color='YELLOW',func=msvc_linker,ext_in='.o')
+Task.task_type_from_func('msvc_cxx_link',vars=['LINK','LINK_SRC_F','LINKFLAGS','MT','MTFLAGS'],color='YELLOW',func=msvc_linker,ext_in='.o')
+rc_str='${RC} ${RCFLAGS} /fo ${TGT} ${SRC}'
+Task.simple_task_type('rc',rc_str,color='GREEN',before='cc cxx',shell=False)
+detect='''
+find_msvc
+msvc_common_flags
+cc_load_tools
+cxx_load_tools
+cc_add_flags
+cxx_add_flags
+'''
+def find_msvc(conf):
+ if sys.platform!='win32':
+ conf.fatal('MSVC module only works under native Win32 Python! cygwin is not supported yet')
+ v=conf.env
+ compiler,path,includes,libdirs=detect_msvc(conf)
+ v['PATH']=path
+ v['CPPPATH']=includes
+ v['LIBPATH']=libdirs
+ if compiler=='msvc':
+ compiler_name='CL'
+ linker_name='LINK'
+ lib_name='LIB'
+ else:
+ compiler_name='ICL'
+ linker_name='XILINK'
+ lib_name='XILIB'
+ cxx=None
+ if v['CXX']:cxx=v['CXX']
+ elif'CXX'in conf.environ:cxx=conf.environ['CXX']
+ if not cxx:cxx=conf.find_program(compiler_name,var='CXX',path_list=path)
+ if not cxx:conf.fatal('%s was not found (compiler)'%compiler_name)
+ cxx=conf.cmd_to_list(cxx)
+ env=dict(conf.environ)
+ env.update(PATH=';'.join(path))
+ if not Utils.cmd_output([cxx,'/nologo','/?'],silent=True,env=env):
+ conf.fatal('the msvc compiler could not be identified')
+ v['CC']=v['CXX']=cxx
+ v['CC_NAME']=v['CXX_NAME']='msvc'
+ if not v['LINK_CXX']:
+ link=conf.find_program(linker_name,path_list=path)
+ if link:v['LINK_CXX']=link
+ else:conf.fatal('%s was not found (linker)'%linker_name)
+ v['LINK']=link
+ if not v['LINK_CC']:v['LINK_CC']=v['LINK_CXX']
+ if not v['STLIBLINK']:
+ stliblink=conf.find_program(lib_name,path_list=path)
+ if not stliblink:return
+ v['STLIBLINK']=stliblink
+ v['STLINKFLAGS']=['/NOLOGO']
+ manifesttool=conf.find_program('MT',path_list=path)
+ if manifesttool:
+ v['MT']=manifesttool
+ v['MTFLAGS']=['/NOLOGO']
+ conf.check_tool('winres')
+ if not conf.env['WINRC']:
+ warn('Resource compiler not found. Compiling resource file is disabled')
+def exec_command_msvc(self,*k,**kw):
+ if self.env['CC_NAME']=='msvc'and isinstance(k[0],list):
+ lst=[]
+ carry=''
+ for a in k[0]:
+ if(len(a)==3 and(a.startswith('/F')or a.startswith('/Y')))or(a=='/doc'):
+ carry=a
+ else:
+ lst.append(carry+a)
+ carry=''
+ k=[lst]
+ env=dict(os.environ)
+ env.update(PATH=';'.join(self.env['PATH']))
+ kw['env']=env
+ return self.generator.bld.exec_command(*k,**kw)
+for k in'cc cxx msvc_cc_link msvc_cxx_link msvc_link_static winrc'.split():
+ cls=Task.TaskBase.classes.get(k,None)
+ if cls:
+ cls.exec_command=exec_command_msvc
+def msvc_common_flags(conf):
+ v=conf.env
+ v['CPPFLAGS']=['/W3','/nologo','/EHsc']
+ v['CCDEFINES']=['WIN32']
+ v['CXXDEFINES']=['WIN32']
+ v['_CCINCFLAGS']=[]
+ v['_CCDEFFLAGS']=[]
+ v['_CXXINCFLAGS']=[]
+ v['_CXXDEFFLAGS']=[]
+ v['CC_SRC_F']=''
+ v['CC_TGT_F']=['/c','/Fo']
+ v['CXX_SRC_F']=''
+ v['CXX_TGT_F']=['/c','/Fo']
+ v['CPPPATH_ST']='/I%s'
+ v['CPPFLAGS_CONSOLE']=['/SUBSYSTEM:CONSOLE']
+ v['CPPFLAGS_NATIVE']=['/SUBSYSTEM:NATIVE']
+ v['CPPFLAGS_POSIX']=['/SUBSYSTEM:POSIX']
+ v['CPPFLAGS_WINDOWS']=['/SUBSYSTEM:WINDOWS']
+ v['CPPFLAGS_WINDOWSCE']=['/SUBSYSTEM:WINDOWSCE']
+ v['CPPFLAGS_CRT_MULTITHREADED']=['/MT']
+ v['CPPFLAGS_CRT_MULTITHREADED_DLL']=['/MD']
+ v['CPPDEFINES_CRT_MULTITHREADED']=['_MT']
+ v['CPPDEFINES_CRT_MULTITHREADED_DLL']=['_MT','_DLL']
+ v['CPPFLAGS_CRT_MULTITHREADED_DBG']=['/MTd']
+ v['CPPFLAGS_CRT_MULTITHREADED_DLL_DBG']=['/MDd']
+ v['CPPDEFINES_CRT_MULTITHREADED_DBG']=['_DEBUG','_MT']
+ v['CPPDEFINES_CRT_MULTITHREADED_DLL_DBG']=['_DEBUG','_MT','_DLL']
+ v['CCFLAGS']=['/TC']
+ v['CCFLAGS_OPTIMIZED']=['/O2','/DNDEBUG']
+ v['CCFLAGS_RELEASE']=['/O2','/DNDEBUG']
+ v['CCFLAGS_DEBUG']=['/Od','/RTC1','/D_DEBUG','/ZI']
+ v['CCFLAGS_ULTRADEBUG']=['/Od','/RTC1','/D_DEBUG','/ZI']
+ v['CXXFLAGS']=['/TP']
+ v['CXXFLAGS_OPTIMIZED']=['/O2','/DNDEBUG']
+ v['CXXFLAGS_RELEASE']=['/O2','/DNDEBUG']
+ v['CXXFLAGS_DEBUG']=['/Od','/RTC1','/D_DEBUG','/ZI']
+ v['CXXFLAGS_ULTRADEBUG']=['/Od','/RTC1','/D_DEBUG','/ZI']
+ v['LIB']=[]
+ v['LINK_TGT_F']='/OUT:'
+ v['LINK_SRC_F']=''
+ v['LIB_ST']='%s.lib'
+ v['LIBPATH_ST']='/LIBPATH:%s'
+ v['STATICLIB_ST']='%s.lib'
+ v['STATICLIBPATH_ST']='/LIBPATH:%s'
+ v['CCDEFINES_ST']='/D%s'
+ v['CXXDEFINES_ST']='/D%s'
+ v['LINKFLAGS']=['/NOLOGO','/MANIFEST']
+ v['shlib_CCFLAGS']=['']
+ v['shlib_CXXFLAGS']=['']
+ v['shlib_LINKFLAGS']=['/DLL']
+ v['shlib_PATTERN']='%s.dll'
+ v['staticlib_LINKFLAGS']=['']
+ v['staticlib_PATTERN']='%s.lib'
+ v['program_PATTERN']='%s.exe'
+
+conf(get_msvc_version)
+conf(gather_msvc_versions)
+conf(gather_icl_versions)
+conf(get_msvc_versions)
+conf(find_lt_names_msvc)
+conf(libname_msvc)
+conf(check_lib_msvc)
+conf(check_libs_msvc)
+feature('cprogram','cshlib','cstaticlib')(apply_obj_vars_msvc)
+after('apply_lib_vars')(apply_obj_vars_msvc)
+before('apply_obj_vars')(apply_obj_vars_msvc)
+feature('cprogram','cshlib','cstaticlib')(apply_link_msvc)
+before('apply_link')(apply_link_msvc)
+feature('cc','cxx')(init_msvc)
+after('init_cc','init_cxx')(init_msvc)
+before('apply_type_vars','apply_core')(init_msvc)
+conftest(find_msvc)
+conftest(msvc_common_flags)
diff -Nru gtkimageview-1.6.4/wafadmin/Tools/nasm.py gtkimageview-1.6.4+dfsg/wafadmin/Tools/nasm.py
--- gtkimageview-1.6.4/wafadmin/Tools/nasm.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Tools/nasm.py 2009-04-04 19:27:21.000000000 -0400
@@ -0,0 +1,35 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+import os
+import TaskGen,Task
+from TaskGen import taskgen,before,extension
+nasm_str='${NASM} ${NASM_FLAGS} ${NASM_INCLUDES} ${SRC} -o ${TGT}'
+EXT_NASM=['.s','.S','.asm','.ASM','.spp','.SPP']
+def apply_nasm_vars(self):
+ if hasattr(self,'nasm_flags'):
+ for flag in self.to_list(self.nasm_flags):
+ self.env.append_value('NASM_FLAGS',flag)
+ if hasattr(self,'includes'):
+ for inc in self.to_list(self.includes):
+ node=self.path.find_dir(inc)
+ if not node:
+ raise ValueError("cannot find the dir"+inc)
+ self.env.append_value('NASM_INCLUDES','-I %s'%node.srcpath(self.env))
+ self.env.append_value('NASM_INCLUDES','-I %s'%node.bldpath(self.env))
+def nasm_file(self,node):
+ try:obj_ext=self.obj_ext
+ except AttributeError:obj_ext='_%d.o'%self.idx
+ task=self.create_task('nasm')
+ task.inputs=[node]
+ task.outputs=[node.change_ext(obj_ext)]
+ self.compiled_tasks.append(task)
+ self.meths.append('apply_nasm_vars')
+Task.simple_task_type('nasm',nasm_str,color='BLUE',ext_out='.o')
+def detect(conf):
+ nasm=conf.find_program('nasm',var='NASM')
+ if not nasm:nasm=conf.find_program('yasm',var='NASM')
+ if not nasm:conf.fatal('could not find nasm (or yasm), install it or set PATH env var')
+
+before('apply_link')(apply_nasm_vars)
+extension(EXT_NASM)(nasm_file)
diff -Nru gtkimageview-1.6.4/wafadmin/Tools/ocaml.py gtkimageview-1.6.4+dfsg/wafadmin/Tools/ocaml.py
--- gtkimageview-1.6.4/wafadmin/Tools/ocaml.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Tools/ocaml.py 2009-04-04 19:27:21.000000000 -0400
@@ -0,0 +1,239 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+import os,re
+import TaskGen,Utils,Task,Build
+from Logs import error
+from TaskGen import taskgen,feature,before,after,extension
+EXT_MLL=['.mll']
+EXT_MLY=['.mly']
+EXT_MLI=['.mli']
+EXT_MLC=['.c']
+EXT_ML=['.ml']
+open_re=re.compile('^\s*open\s+([a-zA-Z]+)(;;){0,1}$',re.M)
+foo=re.compile(r"""(\(\*)|(\*\))|("(\\.|[^"\\])*"|'(\\.|[^'\\])*'|.[^()*"'\\]*)""",re.M)
+def filter_comments(txt):
+ meh=[0]
+ def repl(m):
+ if m.group(1):meh[0]+=1
+ elif m.group(2):meh[0]-=1
+ elif not meh[0]:return m.group(0)
+ return''
+ return foo.sub(repl,txt)
+def scan(self):
+ node=self.inputs[0]
+ code=filter_comments(node.read(self.env))
+ global open_re
+ names=[]
+ import_iterator=open_re.finditer(code)
+ if import_iterator:
+ for import_match in import_iterator:
+ names.append(import_match.group(1))
+ found_lst=[]
+ raw_lst=[]
+ for name in names:
+ nd=None
+ for x in self.incpaths:
+ nd=x.find_resource(name.lower()+'.ml')
+ if not nd:nd=x.find_resource(name+'.ml')
+ if nd:
+ found_lst.append(nd)
+ break
+ else:
+ raw_lst.append(name)
+ return(found_lst,raw_lst)
+native_lst=['native','all','c_object']
+bytecode_lst=['bytecode','all']
+class ocaml_taskgen(TaskGen.task_gen):
+ def __init__(self,*k,**kw):
+ TaskGen.task_gen.__init__(self,*k,**kw)
+TaskGen.bind_feature('ocaml','apply_core')
+def init_ml(self):
+ Utils.def_attrs(self,type='all',incpaths_lst=[],bld_incpaths_lst=[],mlltasks=[],mlytasks=[],mlitasks=[],native_tasks=[],bytecode_tasks=[],linktasks=[],bytecode_env=None,native_env=None,compiled_tasks=[],includes='',uselib='',are_deps_set=0)
+def init_envs_ml(self):
+ self.islibrary=getattr(self,'islibrary',False)
+ global native_lst,bytecode_lst
+ self.native_env=None
+ if self.type in native_lst:
+ self.native_env=self.env.copy()
+ if self.islibrary:self.native_env['OCALINKFLAGS']='-a'
+ self.bytecode_env=None
+ if self.type in bytecode_lst:
+ self.bytecode_env=self.env.copy()
+ if self.islibrary:self.bytecode_env['OCALINKFLAGS']='-a'
+ if self.type=='c_object':
+ self.native_env.append_unique('OCALINKFLAGS_OPT','-output-obj')
+def apply_incpaths_ml(self):
+ inc_lst=self.includes.split()
+ lst=self.incpaths_lst
+ for dir in inc_lst:
+ node=self.path.find_dir(dir)
+ if not node:
+ error("node not found: "+str(dir))
+ continue
+ self.bld.rescan(node)
+ if not node in lst:lst.append(node)
+ self.bld_incpaths_lst.append(node)
+def apply_vars_ml(self):
+ for i in self.incpaths_lst:
+ if self.bytecode_env:
+ app=self.bytecode_env.append_value
+ app('OCAMLPATH','-I')
+ app('OCAMLPATH',i.srcpath(self.env))
+ app('OCAMLPATH','-I')
+ app('OCAMLPATH',i.bldpath(self.env))
+ if self.native_env:
+ app=self.native_env.append_value
+ app('OCAMLPATH','-I')
+ app('OCAMLPATH',i.bldpath(self.env))
+ app('OCAMLPATH','-I')
+ app('OCAMLPATH',i.srcpath(self.env))
+ varnames=['INCLUDES','OCAMLFLAGS','OCALINKFLAGS','OCALINKFLAGS_OPT']
+ for name in self.uselib.split():
+ for vname in varnames:
+ cnt=self.env[vname+'_'+name]
+ if cnt:
+ if self.bytecode_env:self.bytecode_env.append_value(vname,cnt)
+ if self.native_env:self.native_env.append_value(vname,cnt)
+def apply_link_ml(self):
+ if self.bytecode_env:
+ ext=self.islibrary and'.cma'or'.run'
+ linktask=self.create_task('ocalink')
+ linktask.bytecode=1
+ linktask.set_outputs(self.path.find_or_declare(self.target+ext))
+ linktask.obj=self
+ linktask.env=self.bytecode_env
+ self.linktasks.append(linktask)
+ if self.native_env:
+ if self.type=='c_object':ext='.o'
+ elif self.islibrary:ext='.cmxa'
+ else:ext=''
+ linktask=self.create_task('ocalinkx')
+ linktask.set_outputs(self.path.find_or_declare(self.target+ext))
+ linktask.obj=self
+ linktask.env=self.native_env
+ self.linktasks.append(linktask)
+ self.compiled_tasks.append(linktask)
+def mll_hook(self,node):
+ mll_task=self.create_task('ocamllex',self.native_env)
+ mll_task.set_inputs(node)
+ mll_task.set_outputs(node.change_ext('.ml'))
+ self.mlltasks.append(mll_task)
+ self.allnodes.append(mll_task.outputs[0])
+def mly_hook(self,node):
+ mly_task=self.create_task('ocamlyacc',self.native_env)
+ mly_task.set_inputs(node)
+ mly_task.set_outputs([node.change_ext('.ml'),node.change_ext('.mli')])
+ self.mlytasks.append(mly_task)
+ self.allnodes.append(mly_task.outputs[0])
+ task=self.create_task('ocamlcmi',self.native_env)
+ task.set_inputs(mly_task.outputs[1])
+ task.set_outputs(mly_task.outputs[1].change_ext('.cmi'))
+def mli_hook(self,node):
+ task=self.create_task('ocamlcmi',self.native_env)
+ task.set_inputs(node)
+ task.set_outputs(node.change_ext('.cmi'))
+ self.mlitasks.append(task)
+def mlc_hook(self,node):
+ task=self.create_task('ocamlcc',self.native_env)
+ task.set_inputs(node)
+ task.set_outputs(node.change_ext('.o'))
+ self.compiled_tasks.append(task)
+def ml_hook(self,node):
+ if self.native_env:
+ task=self.create_task('ocamlx',self.native_env)
+ task.set_inputs(node)
+ task.set_outputs(node.change_ext('.cmx'))
+ task.obj=self
+ task.incpaths=self.bld_incpaths_lst
+ self.native_tasks.append(task)
+ if self.bytecode_env:
+ task=self.create_task('ocaml',self.bytecode_env)
+ task.set_inputs(node)
+ task.obj=self
+ task.bytecode=1
+ task.incpaths=self.bld_incpaths_lst
+ task.set_outputs(node.change_ext('.cmo'))
+ self.bytecode_tasks.append(task)
+def compile_may_start(self):
+ if not getattr(self,'flag_deps',''):
+ self.flag_deps=1
+ if getattr(self,'bytecode',''):alltasks=self.obj.bytecode_tasks
+ else:alltasks=self.obj.native_tasks
+ self.signature()
+ tree=self.generator.bld
+ env=self.env
+ for node in self.inputs:
+ lst=tree.node_deps[self.unique_id()]
+ for depnode in lst:
+ for t in alltasks:
+ if t==self:continue
+ if depnode in t.inputs:
+ self.set_run_after(t)
+ delattr(self,'cache_sig')
+ self.signature()
+ return Task.Task.runnable_status(self)
+b=Task.simple_task_type
+cls=b('ocamlx','${OCAMLOPT} ${OCAMLPATH} ${OCAMLFLAGS} ${INCLUDES} -c -o ${TGT} ${SRC}',color='GREEN',shell=False)
+cls.runnable_status=compile_may_start
+cls.scan=scan
+b=Task.simple_task_type
+cls=b('ocaml','${OCAMLC} ${OCAMLPATH} ${OCAMLFLAGS} ${INCLUDES} -c -o ${TGT} ${SRC}',color='GREEN',shell=False)
+cls.runnable_status=compile_may_start
+cls.scan=scan
+b('ocamlcmi','${OCAMLC} ${OCAMLPATH} ${INCLUDES} -o ${TGT} -c ${SRC}',color='BLUE',before="ocaml ocamlcc ocamlx")
+b('ocamlcc','cd ${TGT[0].bld_dir(env)} && ${OCAMLOPT} ${OCAMLFLAGS} ${OCAMLPATH} ${INCLUDES} -c ${SRC[0].abspath(env)}',color='GREEN')
+b('ocamllex','${OCAMLLEX} ${SRC} -o ${TGT}',color='BLUE',before="ocamlcmi ocaml ocamlcc")
+b('ocamlyacc','${OCAMLYACC} -b ${TGT[0].bld_base(env)} ${SRC}',color='BLUE',before="ocamlcmi ocaml ocamlcc")
+def link_may_start(self):
+ if not getattr(self,'order',''):
+ if getattr(self,'bytecode',0):alltasks=self.obj.bytecode_tasks
+ else:alltasks=self.obj.native_tasks
+ seen=[]
+ pendant=[]+alltasks
+ while pendant:
+ task=pendant.pop(0)
+ if task in seen:continue
+ for x in task.run_after:
+ if not x in seen:
+ pendant.append(task)
+ break
+ else:
+ seen.append(task)
+ self.inputs=[x.outputs[0]for x in seen]
+ self.order=1
+ return Task.Task.runnable_status(self)
+act=b('ocalink','${OCAMLC} -o ${TGT} ${INCLUDES} ${OCALINKFLAGS} ${SRC}',color='YELLOW',after="ocaml ocamlcc")
+act.runnable_status=link_may_start
+act=b('ocalinkx','${OCAMLOPT} -o ${TGT} ${INCLUDES} ${OCALINKFLAGS_OPT} ${SRC}',color='YELLOW',after="ocamlx ocamlcc")
+act.runnable_status=link_may_start
+def detect(conf):
+ opt=conf.find_program('ocamlopt',var='OCAMLOPT')
+ occ=conf.find_program('ocamlc',var='OCAMLC')
+ if(not opt)or(not occ):
+ conf.fatal('The objective caml compiler was not found:\ninstall it or make it available in your PATH')
+ conf.env['OCAMLC']=occ
+ conf.env['OCAMLOPT']=opt
+ conf.env['OCAMLLEX']=conf.find_program('ocamllex',var='OCAMLLEX')
+ conf.env['OCAMLYACC']=conf.find_program('ocamlyacc',var='OCAMLYACC')
+ conf.env['OCAMLFLAGS']=''
+ conf.env['OCAMLLIB']=Utils.cmd_output(conf.env['OCAMLC']+' -where').strip()+os.sep
+ conf.env['LIBPATH_OCAML']=Utils.cmd_output(conf.env['OCAMLC']+' -where').strip()+os.sep
+ conf.env['CPPPATH_OCAML']=Utils.cmd_output(conf.env['OCAMLC']+' -where').strip()+os.sep
+ conf.env['LIB_OCAML']='camlrun'
+
+feature('ocaml')(init_ml)
+feature('ocaml')(init_envs_ml)
+after('init_ml')(init_envs_ml)
+feature('ocaml')(apply_incpaths_ml)
+before('apply_vars_ml')(apply_incpaths_ml)
+after('init_envs_ml')(apply_incpaths_ml)
+feature('ocaml')(apply_vars_ml)
+before('apply_core')(apply_vars_ml)
+feature('ocaml')(apply_link_ml)
+after('apply_core')(apply_link_ml)
+extension(EXT_MLL)(mll_hook)
+extension(EXT_MLY)(mly_hook)
+extension(EXT_MLI)(mli_hook)
+extension(EXT_MLC)(mlc_hook)
+extension(EXT_ML)(ml_hook)
diff -Nru gtkimageview-1.6.4/wafadmin/Tools/osx.py gtkimageview-1.6.4+dfsg/wafadmin/Tools/osx.py
--- gtkimageview-1.6.4/wafadmin/Tools/osx.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Tools/osx.py 2009-04-04 19:27:21.000000000 -0400
@@ -0,0 +1,118 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+import os,shutil,sys,platform
+import TaskGen,Task,Build,Options
+from TaskGen import taskgen,feature,after,before
+from Logs import error,debug
+def set_macosx_deployment_target(self):
+ if self.env['MACOSX_DEPLOYMENT_TARGET']:
+ os.environ['MACOSX_DEPLOYMENT_TARGET']=self.env['MACOSX_DEPLOYMENT_TARGET']
+ elif'MACOSX_DEPLOYMENT_TARGET'not in os.environ:
+ if sys.platform=='darwin':
+ os.environ['MACOSX_DEPLOYMENT_TARGET']='.'.join(platform.mac_ver()[0].split('.')[:2])
+def apply_framework(self):
+ for x in self.to_list(self.env['FRAMEWORKPATH']):
+ frameworkpath_st='-F%s'
+ self.env.append_unique('CXXFLAGS',frameworkpath_st%x)
+ self.env.append_unique('CCFLAGS',frameworkpath_st%x)
+ self.env.append_unique('LINKFLAGS',frameworkpath_st%x)
+ for x in self.to_list(self.env['FRAMEWORK']):
+ self.env.append_value('LINKFLAGS',['-framework',x])
+def create_task_macapp(self):
+ if'cprogram'in self.features and self.link_task:
+ apptask=self.create_task('macapp',self.env)
+ apptask.set_inputs(self.link_task.outputs)
+ apptask.set_outputs(self.link_task.outputs[0].change_ext('.app'))
+ self.apptask=apptask
+def apply_link_osx(self):
+ if self.env['MACAPP']or getattr(self,'mac_app',False):
+ self.create_task_macapp()
+ name=self.link_task.outputs[0].name
+ if getattr(self,'vnum',None):
+ name=name.replace('.dylib','.%s.dylib'%self.vnum)
+ path=os.path.join(self.env['PREFIX'],'lib',name)
+ self.env.append_value('LINKFLAGS','-install_name')
+ self.env.append_value('LINKFLAGS',path)
+def apply_bundle(self):
+ if not('cshlib'in self.features or'shlib'in self.features):return
+ if self.env['MACBUNDLE']or getattr(self,'mac_bundle',False):
+ self.env['shlib_PATTERN']=self.env['macbundle_PATTERN']
+ uselib=self.uselib=self.to_list(self.uselib)
+ if not'MACBUNDLE'in uselib:uselib.append('MACBUNDLE')
+def apply_bundle_remove_dynamiclib(self):
+ if self.env['MACBUNDLE']or getattr(self,'mac_bundle',False):
+ if not getattr(self,'vnum',None):
+ self.env['LINKFLAGS'].remove('-dynamiclib')
+app_dirs=['Contents',os.path.join('Contents','MacOS'),os.path.join('Contents','Resources')]
+app_info='''
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
+<plist version="0.9">
+<dict>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleGetInfoString</key>
+ <string>Created by Waf</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>NOTE</key>
+ <string>THIS IS A GENERATED FILE, DO NOT MODIFY</string>
+ <key>CFBundleExecutable</key>
+ <string>%s</string>
+</dict>
+</plist>
+'''
+def app_build(task):
+ global app_dirs
+ env=task.env
+ i=0
+ for p in task.outputs:
+ srcfile=p.srcpath(env)
+ debug('osx: creating directories')
+ try:
+ os.mkdir(srcfile)
+ [os.makedirs(os.path.join(srcfile,d))for d in app_dirs]
+ except(OSError,IOError):
+ pass
+ srcprg=task.inputs[i].srcpath(env)
+ dst=os.path.join(srcfile,'Contents','MacOS')
+ debug('osx: copy %s to %s'%(srcprg,dst))
+ shutil.copy(srcprg,dst)
+ debug('osx: generate Info.plist')
+ f=file(os.path.join(srcfile,"Contents","Info.plist"),"w")
+ f.write(app_info%os.path.basename(srcprg))
+ f.close()
+ i+=1
+ return 0
+def install_shlib(task):
+ nums=task.vnum.split('.')
+ path=self.install_path
+ libname=task.outputs[0].name
+ name3=libname.replace('.dylib','.%s.dylib'%task.vnum)
+ name2=libname.replace('.dylib','.%s.dylib'%nums[0])
+ name1=libname
+ filename=task.outputs[0].abspath(task.env)
+ bld=task.outputs[0].__class__.bld
+ bld.install_as(path+name3,filename,env=task.env)
+ bld.symlink_as(path+name2,name3)
+ bld.symlink_as(path+name1,name3)
+def install_target_osx_cshlib(self):
+ if not Options.is_install:return
+ if getattr(self,'vnum','')and sys.platform!='win32':
+ self.link_task.install=install_shlib
+Task.task_type_from_func('macapp',vars=[],func=app_build,after="cxx_link cc_link ar_link_static")
+
+feature('cc','cxx')(set_macosx_deployment_target)
+before('apply_lib_vars')(set_macosx_deployment_target)
+feature('cc','cxx')(apply_framework)
+after('apply_lib_vars')(apply_framework)
+taskgen(create_task_macapp)
+after('apply_link')(apply_link_osx)
+feature('cc','cxx')(apply_link_osx)
+before('apply_link','apply_lib_vars')(apply_bundle)
+feature('cc','cxx')(apply_bundle)
+after('apply_link')(apply_bundle_remove_dynamiclib)
+feature('cshlib')(apply_bundle_remove_dynamiclib)
+feature('osx')(install_target_osx_cshlib)
+after('install_target_cshlib')(install_target_osx_cshlib)
diff -Nru gtkimageview-1.6.4/wafadmin/Tools/perl.py gtkimageview-1.6.4+dfsg/wafadmin/Tools/perl.py
--- gtkimageview-1.6.4/wafadmin/Tools/perl.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Tools/perl.py 2009-04-04 19:27:21.000000000 -0400
@@ -0,0 +1,76 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+import os
+import Task,Options,Utils
+from Configure import conf
+from TaskGen import extension,taskgen,feature,before
+xsubpp_str='${PERL} ${XSUBPP} -noprototypes -typemap ${EXTUTILS_TYPEMAP} ${SRC} > ${TGT}'
+EXT_XS=['.xs']
+def init_perlext(self):
+ self.uselib=self.to_list(getattr(self,'uselib',''))
+ if not'PERL'in self.uselib:self.uselib.append('PERL')
+ if not'PERLEXT'in self.uselib:self.uselib.append('PERLEXT')
+ self.env['shlib_PATTERN']=self.env['perlext_PATTERN']
+def xsubpp_file(self,node):
+ gentask=self.create_task('xsubpp')
+ gentask.set_inputs(node)
+ outnode=node.change_ext('.c')
+ gentask.set_outputs(outnode)
+ self.allnodes.append(outnode)
+Task.simple_task_type('xsubpp',xsubpp_str,color='BLUE',before="cc cxx")
+def check_perl_version(conf,minver=None):
+ res=True
+ if not getattr(Options.options,'perlbinary',None):
+ perl=conf.find_program("perl",var="PERL")
+ if not perl:
+ return False
+ else:
+ perl=Options.options.perlbinary
+ conf.env['PERL']=perl
+ version=Utils.cmd_output(perl+" -e'printf \"%vd\", $^V'")
+ if not version:
+ res=False
+ version="Unknown"
+ elif not minver is None:
+ ver=tuple(map(int,version.split(".")))
+ if ver<minver:
+ res=False
+ if minver is None:
+ cver=""
+ else:
+ cver=".".join(map(str,minver))
+ conf.check_message("perl",cver,res,version)
+ return res
+def check_perl_module(conf,module):
+ cmd=[conf.env['PERL'],'-e','use %s'%module]
+ r=Utils.pproc.call(cmd,stdout=Utils.pproc.PIPE,stderr=Utils.pproc.PIPE)==0
+ conf.check_message("perl module %s"%module,"",r)
+ return r
+def check_perl_ext_devel(conf):
+ if not conf.env['PERL']:
+ return False
+ perl=conf.env['PERL']
+ def read_out(cmd):
+ return Utils.to_list(Utils.cmd_output(perl+cmd))
+ conf.env["LINKFLAGS_PERLEXT"]=read_out(" -MConfig -e'print $Config{lddlflags}'")
+ conf.env["CPPPATH_PERLEXT"]=read_out(" -MConfig -e'print \"$Config{archlib}/CORE\"'")
+ conf.env["CCFLAGS_PERLEXT"]=read_out(" -MConfig -e'print \"$Config{ccflags} $Config{cccdlflags}\"'")
+ conf.env["XSUBPP"]=read_out(" -MConfig -e'print \"$Config{privlib}/ExtUtils/xsubpp$Config{exe_ext}\"'")
+ conf.env["EXTUTILS_TYPEMAP"]=read_out(" -MConfig -e'print \"$Config{privlib}/ExtUtils/typemap\"'")
+ if not getattr(Options.options,'perlarchdir',None):
+ conf.env["ARCHDIR_PERL"]=Utils.cmd_output(perl+" -MConfig -e'print $Config{sitearch}'")
+ else:
+ conf.env["ARCHDIR_PERL"]=getattr(Options.options,'perlarchdir')
+ conf.env['perlext_PATTERN']='%s.'+Utils.cmd_output(perl+" -MConfig -e'print $Config{dlext}'")
+ return True
+def set_options(opt):
+ opt.add_option("--with-perl-binary",type="string",dest="perlbinary",help='Specify alternate perl binary',default=None)
+ opt.add_option("--with-perl-archdir",type="string",dest="perlarchdir",help='Specify directory where to install arch specific files',default=None)
+
+before('apply_incpaths')(init_perlext)
+feature('perlext')(init_perlext)
+extension(EXT_XS)(xsubpp_file)
+conf(check_perl_version)
+conf(check_perl_module)
+conf(check_perl_ext_devel)
diff -Nru gtkimageview-1.6.4/wafadmin/Tools/preproc.py gtkimageview-1.6.4+dfsg/wafadmin/Tools/preproc.py
--- gtkimageview-1.6.4/wafadmin/Tools/preproc.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Tools/preproc.py 2009-04-04 19:27:21.000000000 -0400
@@ -0,0 +1,560 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+import re,sys,os,string
+import Logs,Build,Utils
+from Logs import debug,error
+import traceback
+class PreprocError(Utils.WafError):
+ pass
+POPFILE='-'
+go_absolute=0
+standard_includes=['/usr/include']
+if sys.platform=="win32":
+ standard_includes=[]
+use_trigraphs=0
+'apply the trigraph rules first'
+strict_quotes=0
+g_optrans={'not':'!','and':'&&','bitand':'&','and_eq':'&=','or':'||','bitor':'|','or_eq':'|=','xor':'^','xor_eq':'^=','compl':'~',}
+re_lines=re.compile('^[ \t]*(#|%:)[ \t]*(ifdef|ifndef|if|else|elif|endif|include|import|define|undef|pragma)[ \t]*(.*)\r*$',re.IGNORECASE|re.MULTILINE)
+re_mac=re.compile("^[a-zA-Z_]\w*")
+re_fun=re.compile('^[a-zA-Z_][a-zA-Z0-9_]*[(]')
+re_pragma_once=re.compile('^\s*once\s*',re.IGNORECASE)
+re_nl=re.compile('\\\\\r*\n',re.MULTILINE)
+re_cpp=re.compile(r"""(/\*[^*]*\*+([^/*][^*]*\*+)*/)|//[^\n]*|("(\\.|[^"\\])*"|'(\\.|[^'\\])*'|.[^/"'\\]*)""",re.MULTILINE)
+trig_def=[('??'+a,b)for a,b in zip("=-/!'()<>",r'#~\|^[]{}')]
+chr_esc={'0':0,'a':7,'b':8,'t':9,'n':10,'f':11,'v':12,'r':13,'\\':92,"'":39}
+NUM='i'
+OP='O'
+IDENT='T'
+STR='s'
+CHAR='c'
+tok_types=[NUM,STR,IDENT,OP]
+exp_types=[r"""0[xX](?P<hex>[a-fA-F0-9]+)(?P<qual1>[uUlL]*)|L*?'(?P<char>(\\.|[^\\'])+)'|(?P<n1>\d+)[Ee](?P<exp0>[+-]*?\d+)(?P<float0>[fFlL]*)|(?P<n2>\d*\.\d+)([Ee](?P<exp1>[+-]*?\d+))?(?P<float1>[fFlL]*)|(?P<n4>\d+\.\d*)([Ee](?P<exp2>[+-]*?\d+))?(?P<float2>[fFlL]*)|(?P<oct>0*)(?P<n0>\d+)(?P<qual2>[uUlL]*)""",r'L?"([^"\\]|\\.)*"',r'[a-zA-Z_]\w*',r'%:%:|<<=|>>=|\.\.\.|<<|<%|<:|<=|>>|>=|\+\+|\+=|--|->|-=|\*=|/=|%:|%=|%>|==|&&|&=|\|\||\|=|\^=|:>|!=|##|[\(\)\{\}\[\]<>\?\|\^\*\+&=:!#;,%/\-\?\~\.]',]
+re_clexer=re.compile('|'.join(["(?P<%s>%s)"%(name,part)for name,part in zip(tok_types,exp_types)]),re.M)
+accepted='a'
+ignored='i'
+undefined='u'
+skipped='s'
+def repl(m):
+ s=m.group(1)
+ if s is not None:return' '
+ s=m.group(3)
+ if s is None:return''
+ return s
+def filter_comments(filename):
+ f=open(filename,"r")
+ code=f.read()
+ f.close()
+ if use_trigraphs:
+ for(a,b)in trig_def:code=code.split(a).join(b)
+ code=re_nl.sub('',code)
+ code=re_cpp.sub(repl,code)
+ return[(m.group(2),m.group(3))for m in re.finditer(re_lines,code)]
+prec={}
+ops=['* / %','+ -','<< >>','< <= >= >','== !=','& | ^','&& ||',',']
+for x in range(len(ops)):
+ syms=ops[x]
+ for u in syms.split():
+ prec[u]=x
+def reduce_nums(val_1,val_2,val_op):
+ try:a=0+val_1
+ except TypeError:a=int(val_1)
+ try:b=0+val_2
+ except TypeError:b=int(val_2)
+ d=val_op
+ if d=='%':c=a%b
+ elif d=='+':c=a+b
+ elif d=='-':c=a-b
+ elif d=='*':c=a*b
+ elif d=='/':c=a/b
+ elif d=='^':c=a^b
+ elif d=='|':c=a|b
+ elif d=='||':c=int(a or b)
+ elif d=='&':c=a&b
+ elif d=='&&':c=int(a and b)
+ elif d=='==':c=int(a==b)
+ elif d=='!=':c=int(a!=b)
+ elif d=='<=':c=int(a<=b)
+ elif d=='<':c=int(a<b)
+ elif d=='>':c=int(a>b)
+ elif d=='>=':c=int(a>=b)
+ elif d=='^':c=int(a^b)
+ elif d=='<<':c=a<<b
+ elif d=='>>':c=a>>b
+ else:c=0
+ return c
+def get_num(lst):
+ if not lst:raise PreprocError("empty list for get_num")
+ (p,v)=lst[0]
+ if p==OP:
+ if v=='(':
+ count_par=1
+ i=1
+ while i<len(lst):
+ (p,v)=lst[i]
+ if p==OP:
+ if v==')':
+ count_par-=1
+ if count_par==0:
+ break
+ elif v=='(':
+ count_par+=1
+ i+=1
+ else:
+ raise PreprocError("rparen expected %r"%lst)
+ (num,_)=get_term(lst[1:i])
+ return(num,lst[i+1:])
+ elif v=='+':
+ return get_num(lst[1:])
+ elif v=='-':
+ num,lst=get_num(lst[1:])
+ return(reduce_nums('-1',num,'*'),lst)
+ elif v=='!':
+ num,lst=get_num(lst[1:])
+ return(int(not int(num)),lst)
+ elif v=='~':
+ return(~int(num),lst)
+ else:
+ raise PreprocError("invalid op token %r for get_num"%lst)
+ elif p==NUM:
+ return v,lst[1:]
+ else:
+ raise PreprocError("invalid token %r for get_num"%lst)
+def get_term(lst):
+ if not lst:raise PreprocError("empty list for get_term")
+ num,lst=get_num(lst)
+ if not lst:
+ return(num,[])
+ (p,v)=lst[0]
+ if p==OP:
+ if v=='&&'and not num:
+ return(num,[])
+ elif v=='||'and num:
+ return(num,[])
+ elif v==',':
+ return get_term(lst[1:])
+ elif v=='?':
+ count_par=0
+ i=1
+ while i<len(lst):
+ (p,v)=lst[i]
+ if p==OP:
+ if v==')':
+ count_par-=1
+ elif v=='(':
+ count_par+=1
+ elif v==':':
+ if count_par==0:
+ break
+ i+=1
+ else:
+ raise PreprocError("rparen expected %r"%lst)
+ if int(num):
+ return get_term(lst[1:i])
+ else:
+ return get_term(lst[i+1:])
+ else:
+ num2,lst=get_num(lst[1:])
+ if not lst:
+ num2=reduce_nums(num,num2,v)
+ return get_term([(NUM,num2)]+lst)
+ p2,v2=lst[0]
+ if p2!=OP:
+ raise PreprocError("op expected %r"%lst)
+ if prec[v2]>=prec[v]:
+ num2=reduce_nums(num,num2,v)
+ return get_term([(NUM,num2)]+lst)
+ else:
+ num3,lst=get_num(lst[1:])
+ num3=reduce_nums(num2,num3,v2)
+ return get_term([(NUM,num),(p,v),(NUM,num3)]+lst)
+ raise PreprocError("cannot reduce %r"%lst)
+def reduce_eval(lst):
+ num,lst=get_term(lst)
+ return(NUM,num)
+def stringize(lst):
+ lst=[str(v2)for(p2,v2)in lst]
+ return"".join(lst)
+def paste_tokens(t1,t2):
+ p1=None
+ if t1[0]==OP and t2[0]==OP:
+ p1=OP
+ elif t1[0]==IDENT and(t2[0]==IDENT or t2[0]==NUM):
+ p1=IDENT
+ elif t1[0]==NUM and t2[0]==NUM:
+ p1=NUM
+ if not p1:
+ raise PreprocError('tokens do not make a valid paste %r and %r'%(t1,t2))
+ return(p1,t1[1]+t2[1])
+def reduce_tokens(lst,defs,ban=[]):
+ i=0
+ while i<len(lst):
+ (p,v)=lst[i]
+ if p==IDENT and v=="defined":
+ del lst[i]
+ if i<len(lst):
+ (p2,v2)=lst[i]
+ if p2==IDENT:
+ if v2 in defs:
+ lst[i]=(NUM,1)
+ else:
+ lst[i]=(NUM,0)
+ elif p2==OP and v2=='(':
+ del lst[i]
+ (p2,v2)=lst[i]
+ del lst[i]
+ if v2 in defs:
+ lst[i]=(NUM,1)
+ else:
+ lst[i]=(NUM,0)
+ else:
+ raise PreprocError("invalid define expression %r"%lst)
+ elif p==IDENT and v in defs:
+ if isinstance(defs[v],str):
+ a,b=extract_macro(defs[v])
+ defs[v]=b
+ macro_def=defs[v]
+ to_add=macro_def[1]
+ if isinstance(macro_def[0],list):
+ del lst[i]
+ for x in xrange(len(to_add)):
+ lst.insert(i,to_add[x])
+ i+=1
+ else:
+ args=[]
+ del lst[i]
+ if i>=len(lst):
+ raise PreprocError("expected '(' after %r (got nothing)"%v)
+ (p2,v2)=lst[i]
+ if p2!=OP or v2!='(':
+ raise PreprocError("expected '(' after %r"%v)
+ del lst[i]
+ one_param=[]
+ count_paren=0
+ while i<len(lst):
+ p2,v2=lst[i]
+ del lst[i]
+ if p2==OP and count_paren==0:
+ if v2=='(':
+ one_param.append((p2,v2))
+ count_paren+=1
+ elif v2==')':
+ if one_param:args.append(one_param)
+ break
+ elif v2==',':
+ if not one_param:raise PreprocError("empty param in funcall %s"%p)
+ args.append(one_param)
+ one_param=[]
+ else:
+ one_param.append((p2,v2))
+ else:
+ one_param.append((p2,v2))
+ if v2=='(':count_paren+=1
+ elif v2==')':count_paren-=1
+ else:
+ raise PreprocError('malformed macro')
+ accu=[]
+ arg_table=macro_def[0]
+ j=0
+ while j<len(to_add):
+ (p2,v2)=to_add[j]
+ if p2==OP and v2=='#':
+ if j+1<len(to_add)and to_add[j+1][0]==IDENT and to_add[j+1][1]in arg_table:
+ toks=args[arg_table[to_add[j+1][1]]]
+ accu.append((STR,stringize(toks)))
+ j+=1
+ else:
+ accu.append((p2,v2))
+ elif p2==OP and v2=='##':
+ if accu and j+1<len(to_add):
+ t1=accu[-1]
+ if to_add[j+1][0]==IDENT and to_add[j+1][1]in arg_table:
+ toks=args[arg_table[to_add[j+1][1]]]
+ if toks:
+ accu[-1]=paste_tokens(t1,toks[0])
+ accu.extend(toks[1:])
+ else:
+ accu.append((p2,v2))
+ accu.extend(toks)
+ elif to_add[j+1][0]==IDENT and to_add[j+1][1]=='__VA_ARGS__':
+ va_toks=[]
+ st=len(macro_def[0])
+ pt=len(args)
+ for x in args[pt-st+1:]:
+ va_toks.extend(x)
+ va_toks.append((OP,','))
+ if va_toks:va_toks.pop()
+ if len(accu)>1:
+ (p3,v3)=accu[-1]
+ (p4,v4)=accu[-2]
+ if v3=='##':
+ accu.pop()
+ if v4==','and pt<st:
+ accu.pop()
+ accu+=va_toks
+ else:
+ accu[-1]=paste_tokens(t1,to_add[j+1])
+ j+=1
+ else:
+ accu.append((p2,v2))
+ elif p2==IDENT and v2 in arg_table:
+ toks=args[arg_table[v2]]
+ reduce_tokens(toks,defs,ban+[v])
+ accu.extend(toks)
+ else:
+ accu.append((p2,v2))
+ j+=1
+ reduce_tokens(accu,defs,ban+[v])
+ for x in xrange(len(accu)-1,-1,-1):
+ lst.insert(i,accu[x])
+ i+=1
+def eval_macro(lst,adefs):
+ reduce_tokens(lst,adefs,[])
+ if not lst:raise PreprocError("missing tokens to evaluate")
+ (p,v)=reduce_eval(lst)
+ return int(v)!=0
+def extract_macro(txt):
+ t=tokenize(txt)
+ if re_fun.search(txt):
+ p,name=t[0]
+ p,v=t[1]
+ if p!=OP:raise PreprocError("expected open parenthesis")
+ i=1
+ pindex=0
+ params={}
+ prev='('
+ while 1:
+ i+=1
+ p,v=t[i]
+ if prev=='(':
+ if p==IDENT:
+ params[v]=pindex
+ pindex+=1
+ prev=p
+ elif p==OP and v==')':
+ break
+ else:
+ raise PreprocError("unexpected token (3)")
+ elif prev==IDENT:
+ if p==OP and v==',':
+ prev=v
+ elif p==OP and v==')':
+ break
+ else:
+ raise PreprocError("comma or ... expected")
+ elif prev==',':
+ if p==IDENT:
+ params[v]=pindex
+ pindex+=1
+ prev=p
+ elif p==OP and v=='...':
+ raise PreprocError("not implemented (1)")
+ else:
+ raise PreprocError("comma or ... expected (2)")
+ elif prev=='...':
+ raise PreprocError("not implemented (2)")
+ else:
+ raise PreprocError("unexpected else")
+ return(name,[params,t[i+1:]])
+ else:
+ (p,v)=t[0]
+ return(v,[[],t[1:]])
+re_include=re.compile('^\s*(<(?P<a>.*)>|"(?P<b>.*)")')
+def extract_include(txt,defs):
+ m=re_include.search(txt)
+ if m:
+ if m.group('a'):return'<',m.group('a')
+ if m.group('b'):return'"',m.group('b')
+ toks=tokenize(txt)
+ reduce_tokens(toks,defs,['waf_include'])
+ if not toks:
+ raise PreprocError("could not parse include %s"%txt)
+ if len(toks)==1:
+ if toks[0][0]==STR:
+ return'"',toks[0][1]
+ else:
+ if toks[0][1]=='<'and toks[-1][1]=='>':
+ return stringize(toks).lstrip('<').rstrip('>')
+ raise PreprocError("could not parse include %s."%txt)
+def parse_char(txt):
+ if not txt:raise PreprocError("attempted to parse a null char")
+ if txt[0]!='\\':
+ return ord(txt)
+ c=txt[1]
+ if c=='x':
+ if len(txt)==4 and txt[3]in string.hexdigits:return int(txt[2:],16)
+ return int(txt[2:],16)
+ elif c.isdigit():
+ if c=='0'and len(txt)==2:return 0
+ for i in 3,2,1:
+ if len(txt)>i and txt[1:1+i].isdigit():
+ return(1+i,int(txt[1:1+i],8))
+ else:
+ try:return chr_esc[c]
+ except KeyError:raise PreprocError("could not parse char literal '%s'"%txt)
+def tokenize(s):
+ ret=[]
+ for match in re_clexer.finditer(s):
+ m=match.group
+ for name in tok_types:
+ v=m(name)
+ if v:
+ if name==IDENT:
+ try:v=g_optrans[v];name=OP
+ except KeyError:
+ if v.lower()=="true":
+ v=1
+ name=NUM
+ elif v.lower()=="false":
+ v=0
+ name=NUM
+ elif name==NUM:
+ if m('oct'):v=int(v,8)
+ elif m('hex'):v=int(m('hex'),16)
+ elif m('n0'):v=m('n0')
+ else:
+ v=m('char')
+ if v:v=parse_char(v)
+ else:v=m('n2')or m('n4')
+ elif name==OP:
+ if v=='%:':v='#'
+ elif v=='%:%:':v='##'
+ ret.append((name,v.strip('"')))
+ break
+ return ret
+class c_parser(object):
+ def __init__(self,nodepaths=None,defines=None):
+ self.lines=[]
+ if defines is None:
+ self.defs={}
+ else:
+ self.defs=dict(defines)
+ self.state=[]
+ self.env=None
+ self.count_files=0
+ self.currentnode_stack=[]
+ self.nodepaths=nodepaths or[]
+ self.nodes=[]
+ self.names=[]
+ self.curfile=''
+ self.ban_includes=[]
+ def tryfind(self,filename):
+ self.curfile=filename
+ found=self.currentnode_stack[-1].find_resource(filename)
+ for n in self.nodepaths:
+ if found:
+ break
+ found=n.find_resource(filename)
+ if not found:
+ if not filename in self.names:
+ self.names.append(filename)
+ else:
+ self.nodes.append(found)
+ if filename[-4:]!='.moc':
+ self.addlines(found)
+ return found
+ def addlines(self,node):
+ self.currentnode_stack.append(node.parent)
+ filepath=node.abspath(self.env)
+ self.count_files+=1
+ if self.count_files>30000:raise PreprocError("recursion limit exceeded")
+ pc=self.parse_cache
+ debug('preproc: reading file %r'%filepath)
+ try:
+ lns=pc[filepath]
+ except KeyError:
+ pass
+ else:
+ self.lines=lns+self.lines
+ return
+ try:
+ lines=filter_comments(filepath)
+ lines.append((POPFILE,''))
+ pc[filepath]=lines
+ self.lines=lines+self.lines
+ except IOError:
+ raise PreprocError("could not read the file %s"%filepath)
+ except Exception:
+ if Logs.verbose>0:
+ error("parsing %s failed"%filepath)
+ traceback.print_exc()
+ def start(self,node,env):
+ debug('preproc: scanning %s (in %s)'%(node.name,node.parent.name))
+ self.env=env
+ variant=node.variant(env)
+ bld=node.__class__.bld
+ try:
+ self.parse_cache=bld.parse_cache
+ except AttributeError:
+ bld.parse_cache={}
+ self.parse_cache=bld.parse_cache
+ self.addlines(node)
+ if env['DEFLINES']:
+ self.lines=[('define',x)for x in env['DEFLINES']]+self.lines
+ while self.lines:
+ (kind,line)=self.lines.pop(0)
+ if kind==POPFILE:
+ self.currentnode_stack.pop()
+ continue
+ try:
+ self.process_line(kind,line)
+ except Exception,e:
+ if Logs.verbose:
+ error("line parsing failed (%s): %s"%(str(e),line))
+ traceback.print_exc()
+ def process_line(self,token,line):
+ ve=Logs.verbose
+ if ve:debug('preproc: line is %s - %s state is %s'%(token,line,self.state))
+ state=self.state
+ if token in['ifdef','ifndef','if']:
+ state.append(undefined)
+ elif token=='endif':
+ state.pop()
+ if not token in['else','elif','endif']:
+ if skipped in self.state or ignored in self.state:
+ return
+ if token=='if':
+ ret=eval_macro(tokenize(line),self.defs)
+ if ret:state[-1]=accepted
+ else:state[-1]=ignored
+ elif token=='ifdef':
+ m=re_mac.search(line)
+ if m and m.group(0)in self.defs:state[-1]=accepted
+ else:state[-1]=ignored
+ elif token=='ifndef':
+ m=re_mac.search(line)
+ if m and m.group(0)in self.defs:state[-1]=ignored
+ else:state[-1]=accepted
+ elif token=='include'or token=='import':
+ (kind,inc)=extract_include(line,self.defs)
+ if inc in self.ban_includes:return
+ if token=='import':self.ban_includes.append(inc)
+ if ve:debug('preproc: include found %s (%s) '%(inc,kind))
+ if kind=='"'or not strict_quotes:
+ self.tryfind(inc)
+ elif token=='elif':
+ if state[-1]==accepted:
+ state[-1]=skipped
+ elif state[-1]==ignored:
+ if eval_macro(tokenize(line),self.defs):
+ state[-1]=accepted
+ elif token=='else':
+ if state[-1]==accepted:state[-1]=skipped
+ elif state[-1]==ignored:state[-1]=accepted
+ elif token=='define':
+ m=re_mac.search(line)
+ if m:
+ name=m.group(0)
+ if ve:debug('preproc: define %s %s'%(name,line))
+ self.defs[name]=line
+ else:
+ raise PreprocError("invalid define line %s"%line)
+ elif token=='undef':
+ m=re_mac.search(line)
+ if m and m.group(0)in self.defs:
+ self.defs.__delitem__(m.group(0))
+ elif token=='pragma':
+ if re_pragma_once.search(line.lower()):
+ self.ban_includes.append(self.curfile)
+
diff -Nru gtkimageview-1.6.4/wafadmin/Tools/python.py gtkimageview-1.6.4+dfsg/wafadmin/Tools/python.py
--- gtkimageview-1.6.4/wafadmin/Tools/python.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Tools/python.py 2009-04-04 19:27:21.000000000 -0400
@@ -0,0 +1,290 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+import os,sys
+import TaskGen,Utils,Utils,Runner,Options,Build
+from Logs import debug,warn,info
+from TaskGen import extension,taskgen,before,after,feature
+from Configure import conf
+EXT_PY=['.py']
+FRAG_2='''
+#ifdef __cplusplus
+extern "C" {
+#endif
+ void Py_Initialize(void);
+ void Py_Finalize(void);
+#ifdef __cplusplus
+}
+#endif
+int main(int argc, char *argv[])
+{
+ argc++; /* avoid unused variable warning */
+ argv++; /* avoid unused variable warning */
+ Py_Initialize();
+ Py_Finalize();
+ return 0;
+}
+'''
+def init_pyext(self):
+ self.default_install_path='${PYTHONDIR}'
+ self.uselib=self.to_list(getattr(self,'uselib',''))
+ if not'PYEXT'in self.uselib:
+ self.uselib.append('PYEXT')
+ self.env['MACBUNDLE']=True
+def pyext_shlib_ext(self):
+ self.env['shlib_PATTERN']=self.env['pyext_PATTERN']
+def init_pyembed(self):
+ self.uselib=self.to_list(getattr(self,'uselib',''))
+ if not'PYEMBED'in self.uselib:
+ self.uselib.append('PYEMBED')
+TaskGen.bind_feature('py',['apply_core'])
+def process_py(self,node):
+ if Options.is_install and self.install_path:
+ if not hasattr(self,'_py_installed_files'):
+ self._py_installed_files=[]
+ installed_files=self.bld.install_files(self.install_path,node.abspath(self.env),self.env,self.chmod)
+ self._py_installed_files.extend(installed_files)
+def byte_compile_py(self):
+ if Options.is_install and self.install_path:
+ installed_files=self._py_installed_files
+ if not installed_files:
+ return
+ if Options.commands['uninstall']:
+ info("* removing byte compiled python files")
+ for fname in installed_files:
+ try:
+ os.remove(fname+'c')
+ except OSError:
+ pass
+ try:
+ os.remove(fname+'o')
+ except OSError:
+ pass
+ if Options.commands['install']:
+ if self.env['PYC']or self.env['PYO']:
+ info("* byte compiling python files")
+ if self.env['PYC']:
+ program=("""
+import sys, py_compile
+for pyfile in sys.argv[1:]:
+ py_compile.compile(pyfile, pyfile + 'c')
+""")
+ argv=[self.env['PYTHON'],"-c",program]
+ argv.extend(installed_files)
+ retval=Utils.pproc.Popen(argv).wait()
+ if retval:
+ raise Utils.WafError("bytecode compilation failed")
+ if self.env['PYO']:
+ program=("""
+import sys, py_compile
+for pyfile in sys.argv[1:]:
+ py_compile.compile(pyfile, pyfile + 'o')
+""")
+ argv=[self.env['PYTHON'],self.env['PYFLAGS_OPT'],"-c",program]
+ argv.extend(installed_files)
+ retval=Utils.pproc.Popen(argv).wait()
+ if retval:
+ raise Utils.WafError("bytecode compilation failed")
+class py_taskgen(TaskGen.task_gen):
+ def __init__(self,*k,**kw):
+ TaskGen.task_gen.__init__(self,*k,**kw)
+def init_py(self):
+ self.default_install_path='${PYTHONDIR}'
+def _get_python_variables(python_exe,variables,imports=['import sys']):
+ program=list(imports)
+ program.append('')
+ for v in variables:
+ program.append("print(repr(%s))"%v)
+ os_env=dict(os.environ)
+ try:
+ del os_env['MACOSX_DEPLOYMENT_TARGET']
+ except KeyError:
+ pass
+ proc=Utils.pproc.Popen([python_exe,"-c",'\n'.join(program)],stdout=Utils.pproc.PIPE,env=os_env)
+ output=proc.communicate()[0].split("\n")
+ if proc.returncode:
+ if Options.options.verbose:
+ warn("Python program to extract python configuration variables failed:\n%s"%'\n'.join(["line %03i: %s"%(lineno+1,line)for lineno,line in enumerate(program)]))
+ raise RuntimeError
+ return_values=[]
+ for s in output:
+ s=s.strip()
+ if not s:
+ continue
+ if s=='None':
+ return_values.append(None)
+ elif s[0]=="'"and s[-1]=="'":
+ return_values.append(s[1:-1])
+ elif s[0].isdigit():
+ return_values.append(int(s))
+ else:break
+ return return_values
+def check_python_headers(conf):
+ if not conf.env['CC_NAME']and not conf.env['CXX_NAME']:
+ conf.fatal('load a compiler first (gcc, g++, ..)')
+ env=conf.env
+ python=env['PYTHON']
+ assert python,("python is %r !"%(python,))
+ if Options.platform=='darwin':
+ conf.check_tool('osx')
+ try:
+ v='prefix SO SYSLIBS LDFLAGS SHLIBS LIBDIR LIBPL INCLUDEPY Py_ENABLE_SHARED MACOSX_DEPLOYMENT_TARGET'.split()
+ (python_prefix,python_SO,python_SYSLIBS,python_LDFLAGS,python_SHLIBS,python_LIBDIR,python_LIBPL,INCLUDEPY,Py_ENABLE_SHARED,python_MACOSX_DEPLOYMENT_TARGET)=_get_python_variables(python,["get_config_var('%s')"%x for x in v],['from distutils.sysconfig import get_config_var'])
+ except RuntimeError:
+ conf.fatal("Python development headers not found (-v for details).")
+ conf.log.write("""Configuration returned from %r:
+python_prefix = %r
+python_SO = %r
+python_SYSLIBS = %r
+python_LDFLAGS = %r
+python_SHLIBS = %r
+python_LIBDIR = %r
+python_LIBPL = %r
+INCLUDEPY = %r
+Py_ENABLE_SHARED = %r
+MACOSX_DEPLOYMENT_TARGET = %r
+"""%(python,python_prefix,python_SO,python_SYSLIBS,python_LDFLAGS,python_SHLIBS,python_LIBDIR,python_LIBPL,INCLUDEPY,Py_ENABLE_SHARED,python_MACOSX_DEPLOYMENT_TARGET))
+ if python_MACOSX_DEPLOYMENT_TARGET:
+ conf.env['MACOSX_DEPLOYMENT_TARGET']=python_MACOSX_DEPLOYMENT_TARGET
+ conf.environ['MACOSX_DEPLOYMENT_TARGET']=python_MACOSX_DEPLOYMENT_TARGET
+ env['pyext_PATTERN']='%s'+python_SO
+ if python_SYSLIBS is not None:
+ for lib in python_SYSLIBS.split():
+ if lib.startswith('-l'):
+ lib=lib[2:]
+ env.append_value('LIB_PYEMBED',lib)
+ if python_SHLIBS is not None:
+ for lib in python_SHLIBS.split():
+ if lib.startswith('-l'):
+ lib=lib[2:]
+ env.append_value('LIB_PYEMBED',lib)
+ if Options.platform!='darwin'and python_LDFLAGS:
+ env.append_value('LINKFLAGS_PYEMBED',python_LDFLAGS.split())
+ result=False
+ name='python'+env['PYTHON_VERSION']
+ if python_LIBDIR is not None:
+ path=[python_LIBDIR]
+ conf.log.write("\n\n# Trying LIBDIR: %r\n"%path)
+ result=conf.check(lib=name,uselib='PYEMBED',libpath=path)
+ if not result and python_LIBPL is not None:
+ conf.log.write("\n\n# try again with -L$python_LIBPL (some systems don't install the python library in $prefix/lib)\n")
+ path=[python_LIBPL]
+ result=conf.check(lib=name,uselib='PYEMBED',libpath=path)
+ if not result:
+ conf.log.write("\n\n# try again with -L$prefix/libs, and pythonXY name rather than pythonX.Y (win32)\n")
+ path=[os.path.join(python_prefix,"libs")]
+ name='python'+env['PYTHON_VERSION'].replace('.','')
+ result=conf.check(lib=name,uselib='PYEMBED',libpath=path)
+ if result:
+ env['LIBPATH_PYEMBED']=path
+ env.append_value('LIB_PYEMBED',name)
+ else:
+ conf.log.write("\n\n### LIB NOT FOUND\n")
+ if(sys.platform=='win32'or sys.platform.startswith('os2')or sys.platform=='darwin'or Py_ENABLE_SHARED):
+ env['LIBPATH_PYEXT']=env['LIBPATH_PYEMBED']
+ env['LIB_PYEXT']=env['LIB_PYEMBED']
+ python_config=conf.find_program('python%s-config'%('.'.join(env['PYTHON_VERSION'].split('.')[:2])),var='PYTHON_CONFIG')
+ if not python_config:
+ python_config=conf.find_program('python-config-%s'%('.'.join(env['PYTHON_VERSION'].split('.')[:2])),var='PYTHON_CONFIG')
+ includes=[]
+ if python_config:
+ for incstr in Utils.cmd_output("%s %s --includes"%(python,python_config)).strip().split():
+ if(incstr.startswith('-I')or incstr.startswith('/I')):
+ incstr=incstr[2:]
+ if incstr not in includes:
+ includes.append(incstr)
+ conf.log.write("Include path for Python extensions ""(found via python-config --includes): %r\n"%(includes,))
+ env['CPPPATH_PYEXT']=includes
+ env['CPPPATH_PYEMBED']=includes
+ else:
+ conf.log.write("Include path for Python extensions ""(found via distutils module): %r\n"%(INCLUDEPY,))
+ env['CPPPATH_PYEXT']=[INCLUDEPY]
+ env['CPPPATH_PYEMBED']=[INCLUDEPY]
+ if env['CC_NAME']=='gcc':
+ env.append_value('CCFLAGS_PYEMBED','-fno-strict-aliasing')
+ env.append_value('CCFLAGS_PYEXT','-fno-strict-aliasing')
+ if env['CXX_NAME']=='gcc':
+ env.append_value('CXXFLAGS_PYEMBED','-fno-strict-aliasing')
+ env.append_value('CXXFLAGS_PYEXT','-fno-strict-aliasing')
+ test_env=env.copy()
+ a=test_env.append_value
+ a('CPPPATH',env['CPPPATH_PYEMBED'])
+ a('LIBPATH',env['LIBPATH_PYEMBED'])
+ a('LIB',env['LIB_PYEMBED'])
+ a('LINKFLAGS',env['LINKFLAGS_PYEMBED'])
+ a('CXXFLAGS',env['CXXFLAGS_PYEMBED'])
+ a('CCFLAGS',env['CCFLAGS_PYEMBED'])
+ conf.check(header_name='Python.h',define_name='HAVE_PYTHON_H',env=test_env,fragment=FRAG_2,errmsg='Could not find the python development headers',mandatory=1)
+def check_python_version(conf,minver=None):
+ assert minver is None or isinstance(minver,tuple)
+ python=conf.env['PYTHON']
+ assert python,("python is %r !"%(python,))
+ cmd=[python,"-c","import sys\nfor x in sys.version_info: print(str(x))"]
+ debug('python: Running python command %r'%cmd)
+ proc=Utils.pproc.Popen(cmd,stdout=Utils.pproc.PIPE)
+ lines=proc.communicate()[0].split()
+ assert len(lines)==5,"found %i lines, expected 5: %r"%(len(lines),lines)
+ pyver_tuple=(int(lines[0]),int(lines[1]),int(lines[2]),lines[3],int(lines[4]))
+ result=(minver is None)or(pyver_tuple>=minver)
+ if result:
+ pyver='.'.join([str(x)for x in pyver_tuple[:2]])
+ conf.env['PYTHON_VERSION']=pyver
+ if'PYTHONDIR'in conf.environ:
+ pydir=conf.environ['PYTHONDIR']
+ else:
+ if sys.platform=='win32':
+ (python_LIBDEST,)=_get_python_variables(python,["get_config_var('LIBDEST')"],['from distutils.sysconfig import get_config_var'])
+ else:
+ python_LIBDEST=None
+ if python_LIBDEST is None:
+ if conf.env['LIBDIR']:
+ python_LIBDEST=os.path.join(conf.env['LIBDIR'],"python"+pyver)
+ else:
+ python_LIBDEST=os.path.join(conf.env['PREFIX'],"lib","python"+pyver)
+ pydir=os.path.join(python_LIBDEST,"site-packages")
+ if hasattr(conf,'define'):
+ conf.define('PYTHONDIR',pydir)
+ conf.env['PYTHONDIR']=pydir
+ pyver_full='.'.join(map(str,pyver_tuple[:3]))
+ if minver is None:
+ conf.check_message_custom('Python version','',pyver_full)
+ else:
+ minver_str='.'.join(map(str,minver))
+ conf.check_message('Python version',">= %s"%(minver_str,),result,option=pyver_full)
+ if not result:
+ conf.fatal("Python too old.")
+def check_python_module(conf,module_name):
+ result=not Utils.pproc.Popen([conf.env['PYTHON'],"-c","import %s"%module_name],stderr=Utils.pproc.PIPE,stdout=Utils.pproc.PIPE).wait()
+ conf.check_message('Python module',module_name,result)
+ if not result:
+ conf.fatal("Python module not found.")
+def detect(conf):
+ python=conf.find_program('python',var='PYTHON')
+ if not python:return
+ v=conf.env
+ v['PYCMD']='"import sys, py_compile;py_compile.compile(sys.argv[1], sys.argv[2])"'
+ v['PYFLAGS']=''
+ v['PYFLAGS_OPT']='-O'
+ v['PYC']=getattr(Options.options,'pyc',1)
+ v['PYO']=getattr(Options.options,'pyo',1)
+def set_options(opt):
+ opt.add_option('--nopyc',action='store_false',default=1,help='Do not install bytecode compiled .pyc files (configuration) [Default:install]',dest='pyc')
+ opt.add_option('--nopyo',action='store_false',default=1,help='Do not install optimised compiled .pyo files (configuration) [Default:install]',dest='pyo')
+
+before('apply_incpaths')(init_pyext)
+feature('pyext')(init_pyext)
+before('apply_bundle')(init_pyext)
+before('apply_link','apply_lib_vars')(pyext_shlib_ext)
+after('apply_bundle')(pyext_shlib_ext)
+feature('pyext')(pyext_shlib_ext)
+before('apply_incpaths')(init_pyembed)
+feature('pyembed')(init_pyembed)
+extension(EXT_PY)(process_py)
+feature('py')(byte_compile_py)
+after('install')(byte_compile_py)
+before('apply_core')(init_py)
+after('vars_target_cprogram','vars_target_cstaticlib')(init_py)
+feature('py')(init_py)
+conf(check_python_headers)
+conf(check_python_version)
+conf(check_python_module)
diff -Nru gtkimageview-1.6.4/wafadmin/Tools/qt4.py gtkimageview-1.6.4+dfsg/wafadmin/Tools/qt4.py
--- gtkimageview-1.6.4/wafadmin/Tools/qt4.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Tools/qt4.py 2009-04-04 19:27:21.000000000 -0400
@@ -0,0 +1,356 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+try:
+ from xml.sax import make_parser
+ from xml.sax.handler import ContentHandler
+except ImportError:
+ has_xml=False
+ ContentHandler=object
+else:
+ has_xml=True
+import os,sys
+import ccroot,cxx
+import TaskGen,Task,Utils,Runner,Options,Node
+from TaskGen import taskgen,feature,after,extension
+from Logs import error
+from Constants import*
+MOC_H=['.h','.hpp','.hxx','.hh']
+EXT_RCC=['.qrc']
+EXT_UI=['.ui']
+EXT_QT4=['.cpp','.cc','.cxx','.C']
+class MTask_task(Task.Task):
+ scan=ccroot.scan
+ before=['cxx_link','ar_link_static']
+ def __init__(self,*k,**kw):
+ Task.Task.__init__(self,*k,**kw)
+ self.moc_done=0
+ def runnable_status(self):
+ if self.moc_done:
+ for t in self.run_after:
+ if not t.hasrun:
+ return ASK_LATER
+ self.signature()
+ return Task.Task.runnable_status(self)
+ else:
+ self.add_moc_tasks()
+ return ASK_LATER
+ def add_moc_tasks(self):
+ node=self.inputs[0]
+ tree=node.__class__.bld
+ try:
+ self.signature()
+ except KeyError:
+ pass
+ else:
+ delattr(self,'cache_sig')
+ moctasks=[]
+ mocfiles=[]
+ variant=node.variant(self.env)
+ try:
+ tmp_lst=tree.raw_deps[self.unique_id()]
+ tree.raw_deps[self.unique_id()]=[]
+ except KeyError:
+ tmp_lst=[]
+ for d in tmp_lst:
+ if not d.endswith('.moc'):continue
+ if d in mocfiles:
+ error("paranoia owns")
+ continue
+ mocfiles.append(d)
+ ext=''
+ try:ext=Options.options.qt_header_ext
+ except AttributeError:pass
+ if not ext:
+ base2=d[:-4]
+ path=node.parent.srcpath(self.env)
+ for i in MOC_H:
+ try:
+ os.stat(os.path.join(path,base2+i))
+ except OSError:
+ pass
+ else:
+ ext=i
+ break
+ if not ext:raise Utils.WafError("no header found for %s which is a moc file"%str(d))
+ h_node=node.parent.find_resource(base2+i)
+ m_node=h_node.change_ext('.moc')
+ tree.node_deps[(self.inputs[0].parent.id,self.env.variant(),m_node.name)]=h_node
+ task=Task.TaskBase.classes['moc'](self.env,normal=0)
+ task.set_inputs(h_node)
+ task.set_outputs(m_node)
+ generator=tree.generator
+ generator.outstanding.insert(0,task)
+ generator.total+=1
+ moctasks.append(task)
+ tmp_lst=tree.raw_deps[self.unique_id()]=mocfiles
+ lst=tree.node_deps.get(self.unique_id(),())
+ for d in lst:
+ name=d.name
+ if name.endswith('.moc'):
+ task=Task.TaskBase.classes['moc'](self.env,normal=0)
+ task.set_inputs(tree.node_deps[(self.inputs[0].parent.id,self.env.variant(),name)])
+ task.set_outputs(d)
+ generator=tree.generator
+ generator.outstanding.insert(0,task)
+ generator.total+=1
+ moctasks.append(task)
+ self.run_after=moctasks
+ self.moc_done=1
+ run=Task.TaskBase.classes['cxx'].__dict__['run']
+def translation_update(task):
+ outs=[a.abspath(task.env)for a in task.outputs]
+ outs=" ".join(outs)
+ lupdate=task.env['QT_LUPDATE']
+ for x in task.inputs:
+ file=x.abspath(task.env)
+ cmd="%s %s -ts %s"%(lupdate,file,outs)
+ Utils.pprint('BLUE',cmd)
+ task.generator.bld.exec_command(cmd)
+class XMLHandler(ContentHandler):
+ def __init__(self):
+ self.buf=[]
+ self.files=[]
+ def startElement(self,name,attrs):
+ if name=='file':
+ self.buf=[]
+ def endElement(self,name):
+ if name=='file':
+ self.files.append(''.join(self.buf))
+ def characters(self,cars):
+ self.buf.append(cars)
+def scan(self):
+ node=self.inputs[0]
+ parser=make_parser()
+ curHandler=XMLHandler()
+ parser.setContentHandler(curHandler)
+ fi=open(self.inputs[0].abspath(self.env))
+ parser.parse(fi)
+ fi.close()
+ nodes=[]
+ names=[]
+ root=self.inputs[0].parent
+ for x in curHandler.files:
+ x=x.encode('utf8')
+ nd=root.find_resource(x)
+ if nd:nodes.append(nd)
+ else:names.append(x)
+ return(nodes,names)
+def create_rcc_task(self,node):
+ rcnode=node.change_ext('_rc.cpp')
+ rcctask=self.create_task('rcc')
+ rcctask.inputs=[node]
+ rcctask.outputs=[rcnode]
+ cpptask=self.create_task('cxx')
+ cpptask.inputs=[rcnode]
+ cpptask.outputs=[rcnode.change_ext('.o')]
+ self.compiled_tasks.append(cpptask)
+ return cpptask
+def create_uic_task(self,node):
+ uictask=self.create_task('ui4')
+ uictask.inputs=[node]
+ uictask.outputs=[self.path.find_or_declare(self.env['ui_PATTERN']%node.name[:-3])]
+class qt4_taskgen(cxx.cxx_taskgen):
+ def __init__(self,*k,**kw):
+ cxx.cxx_taskgen.__init__(self,*k,**kw)
+ self.features.append('qt4')
+def add_lang(self,node):
+ self.lang=self.to_list(getattr(self,'lang',[]))+[node]
+def apply_qt4(self):
+ if getattr(self,'lang',None):
+ update=getattr(self,'update',None)
+ lst=[]
+ trans=[]
+ for l in self.to_list(self.lang):
+ if not isinstance(l,Node.Node):
+ l=self.path.find_resource(l+'.ts')
+ t=self.create_task('ts2qm')
+ t.set_inputs(l)
+ t.set_outputs(l.change_ext('.qm'))
+ lst.append(t.outputs[0])
+ if update:
+ trans.append(t.inputs[0])
+ if update and Options.options.trans_qt4:
+ u=Task.TaskCmd(translation_update,self.env,2)
+ u.inputs=[a.inputs[0]for a in self.compiled_tasks]
+ u.outputs=trans
+ if getattr(self,'langname',None):
+ t=Task.TaskBase.classes['qm2rcc'](self.env)
+ t.set_inputs(lst)
+ t.set_outputs(self.path.find_or_declare(self.langname+'.qrc'))
+ t.path=self.path
+ k=create_rcc_task(self,t.outputs[0])
+ self.link_task.inputs.append(k.outputs[0])
+ lst=[]
+ for flag in self.to_list(self.env['CXXFLAGS']):
+ if len(flag)<2:continue
+ if flag[0:2]=='-D'or flag[0:2]=='-I':
+ lst.append(flag)
+ self.env['MOC_FLAGS']=lst
+def cxx_hook(self,node):
+ task=self.create_task('MTask')
+ self.compiled_tasks.append(task)
+ try:obj_ext=self.obj_ext
+ except AttributeError:obj_ext='_%d.o'%self.idx
+ task.inputs=[node]
+ task.outputs=[node.change_ext(obj_ext)]
+def process_qm2rcc(task):
+ outfile=task.outputs[0].abspath(task.env)
+ f=open(outfile,'w')
+ f.write('<!DOCTYPE RCC><RCC version="1.0">\n<qresource>\n')
+ for k in task.inputs:
+ f.write(' <file>')
+ f.write(k.path_to_parent(task.path))
+ f.write('</file>\n')
+ f.write('</qresource>\n</RCC>')
+ f.close()
+b=Task.simple_task_type
+b('moc','${QT_MOC} ${MOC_FLAGS} ${SRC} ${MOC_ST} ${TGT}',color='BLUE',vars=['QT_MOC','MOC_FLAGS'])
+cls=b('rcc','${QT_RCC} -name ${SRC[0].name} ${SRC[0].abspath(env)} ${RCC_ST} -o ${TGT}',color='BLUE',before='cxx moc MTask_task',after="qm2rcc")
+cls.scan=scan
+b('ui4','${QT_UIC} ${SRC} -o ${TGT}',color='BLUE',before='cxx moc MTask_task')
+b('ts2qm','${QT_LRELEASE} ${QT_LRELEASE_FLAGS} ${SRC} -qm ${TGT}',color='BLUE',before='qm2rcc')
+Task.task_type_from_func('qm2rcc',vars=[],func=process_qm2rcc,color='BLUE',before='rcc',after='ts2qm')
+def detect_qt4(conf):
+ env=conf.env
+ opt=Options.options
+ qtlibs=getattr(opt,'qtlibs','')
+ qtincludes=getattr(opt,'qtincludes','')
+ qtbin=getattr(opt,'qtbin','')
+ useframework=getattr(opt,'use_qt4_osxframework',True)
+ qtdir=getattr(opt,'qtdir','')
+ if not qtdir:qtdir=conf.environ.get('QT4_ROOT','')
+ if not qtdir:
+ try:
+ lst=os.listdir('/usr/local/Trolltech/')
+ lst.sort()
+ lst.reverse()
+ qtdir='/usr/local/Trolltech/%s/'%lst[0]
+ except OSError:
+ pass
+ if not qtdir:
+ try:
+ path=conf.environ['PATH'].split(':')
+ for qmk in['qmake-qt4','qmake4','qmake']:
+ qmake=conf.find_program(qmk,path)
+ if qmake:
+ version=Utils.cmd_output([qmake,'-query','QT_VERSION']).strip().split('.')
+ if version[0]=="4":
+ qtincludes=Utils.cmd_output([qmake,'-query','QT_INSTALL_HEADERS']).strip()
+ qtdir=Utils.cmd_output([qmake,'-query','QT_INSTALL_PREFIX']).strip()+"/"
+ qtbin=Utils.cmd_output([qmake,'-query','QT_INSTALL_BINS']).strip()+"/"
+ break
+ except(OSError,ValueError):
+ pass
+ if not qtlibs:qtlibs=os.path.join(qtdir,'lib')
+ vars="QtCore QtGui QtUiTools QtNetwork QtOpenGL QtSql QtSvg QtTest QtXml QtWebKit Qt3Support".split()
+ framework_ok=False
+ if sys.platform=="darwin"and useframework:
+ for i in vars:
+ e=conf.create_framework_configurator()
+ e.path=[qtlibs,'/Library/Frameworks']
+ e.name=i
+ e.remove_dot_h=True
+ e.run()
+ if not i=='QtCore':
+ for r in env['CCFLAGS_'+i.upper()]:
+ if r.startswith('-F'):
+ env['CCFLAGS_'+i.upper()].remove(r)
+ break
+ if conf.is_defined('HAVE_QTOPENGL'):
+ env.append_unique('FRAMEWORK_QTOPENGL','OpenGL')
+ if conf.is_defined('HAVE_QTGUI'):
+ env.append_unique('FRAMEWORK_QTGUI',['AppKit','ApplicationServices'])
+ framework_ok=True
+ if not conf.is_defined("HAVE_QTGUI"):
+ if not qtincludes:qtincludes=os.path.join(qtdir,'include')
+ env['QTINCLUDEPATH']=qtincludes
+ lst=[qtincludes,'/usr/share/qt4/include/','/opt/qt4/include']
+ conf.check(header_name='QtGui/QFont',define_name='HAVE_QTGUI',mandatory=1,includes=lst)
+ if not qtbin:qtbin=os.path.join(qtdir,'bin')
+ binpath=[qtbin,'/usr/share/qt4/bin/']+conf.environ['PATH'].split(':')
+ def find_bin(lst,var):
+ for f in lst:
+ ret=conf.find_program(f,path_list=binpath)
+ if ret:
+ env[var]=ret
+ break
+ find_bin(['uic-qt3','uic3'],'QT_UIC3')
+ find_bin(['uic-qt4','uic'],'QT_UIC')
+ if not env['QT_UIC']:
+ conf.fatal('connot find uic compiler')
+ try:
+ version=Utils.cmd_output(env['QT_UIC']+" -version 2>&1").strip()
+ except ValueError:
+ conf.fatal('your uic compiler is for qt3, add uic for qt4 to your path')
+ version=version.replace('Qt User Interface Compiler ','')
+ version=version.replace('User Interface Compiler for Qt','')
+ if version.find(" 3.")!=-1:
+ conf.check_message('uic version','(too old)',0,option='(%s)'%version)
+ sys.exit(1)
+ conf.check_message('uic version','',1,option='(%s)'%version)
+ find_bin(['moc-qt4','moc'],'QT_MOC')
+ find_bin(['rcc'],'QT_RCC')
+ find_bin(['lrelease-qt4','lrelease'],'QT_LRELEASE')
+ find_bin(['lupdate-qt4','lupdate'],'QT_LUPDATE')
+ env['UIC3_ST']='%s -o %s'
+ env['UIC_ST']='%s -o %s'
+ env['MOC_ST']='-o'
+ env['ui_PATTERN']='ui_%s.h'
+ env['QT_LRELEASE_FLAGS']=['-silent']
+ if not framework_ok:
+ vars_debug=[a+'_debug'for a in vars]
+ pkgconfig=env['pkg-config']or'PKG_CONFIG_PATH=%s:%s/pkgconfig:/usr/lib/qt4/lib/pkgconfig:/opt/qt4/lib/pkgconfig:/usr/lib/qt4/lib:/opt/qt4/lib pkg-config --silence-errors'%(qtlibs,qtlibs)
+ for i in vars_debug+vars:
+ try:
+ conf.check_cfg(package=i,args='--cflags --libs',path=pkgconfig)
+ except ValueError:
+ pass
+ def process_lib(vars_,coreval):
+ for d in vars_:
+ var=d.upper()
+ if var=='QTCORE':continue
+ value=env['LIBPATH_'+var]
+ if value:
+ core=env[coreval]
+ accu=[]
+ for lib in value:
+ if lib in core:continue
+ accu.append(lib)
+ env['LIBPATH_'+var]=accu
+ process_lib(vars,'LIBPATH_QTCORE')
+ process_lib(vars_debug,'LIBPATH_QTCORE_DEBUG')
+ if Options.options.want_rpath:
+ def process_rpath(vars_,coreval):
+ for d in vars_:
+ var=d.upper()
+ value=env['LIBPATH_'+var]
+ if value:
+ core=env[coreval]
+ accu=[]
+ for lib in value:
+ if var!='QTCORE':
+ if lib in core:
+ continue
+ accu.append('-Wl,--rpath='+lib)
+ env['RPATH_'+var]=accu
+ process_rpath(vars,'LIBPATH_QTCORE')
+ process_rpath(vars_debug,'LIBPATH_QTCORE_DEBUG')
+ env['QTLOCALE']=str(env['PREFIX'])+'/share/locale'
+def detect(conf):
+ detect_qt4(conf)
+def set_options(opt):
+ opt.add_option('--want-rpath',type='int',default=1,dest='want_rpath',help='set rpath to 1 or 0 [Default 1]')
+ opt.add_option('--header-ext',type='string',default='',help='header extension for moc files',dest='qt_header_ext')
+ for i in"qtdir qtincludes qtlibs qtbin".split():
+ opt.add_option('--'+i,type='string',default='',dest=i)
+ if sys.platform=="darwin":
+ opt.add_option('--no-qt4-framework',action="store_false",help='do not use the framework version of Qt4 in OS X',dest='use_qt4_osxframework',default=True)
+ opt.add_option('--translate',action="store_true",help="collect translation strings",dest="trans_qt4",default=False)
+
+extension(EXT_RCC)(create_rcc_task)
+extension(EXT_UI)(create_uic_task)
+extension('.ts')(add_lang)
+feature('qt4')(apply_qt4)
+after('apply_link')(apply_qt4)
+extension(EXT_QT4)(cxx_hook)
diff -Nru gtkimageview-1.6.4/wafadmin/Tools/suncc.py gtkimageview-1.6.4+dfsg/wafadmin/Tools/suncc.py
--- gtkimageview-1.6.4/wafadmin/Tools/suncc.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Tools/suncc.py 2009-04-04 19:27:21.000000000 -0400
@@ -0,0 +1,54 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+import os,optparse
+import Utils,Options,Configure
+import ccroot,ar
+from Configure import conftest
+def find_scc(conf):
+ v=conf.env
+ cc=None
+ if v['CC']:cc=v['CC']
+ elif'CC'in conf.environ:cc=conf.environ['CC']
+ if not cc:cc=conf.find_program('cc',var='CC')
+ if not cc:conf.fatal('suncc was not found')
+ try:
+ if not Utils.cmd_output('%s -flags'%cc):
+ conf.fatal('suncc %r was not found'%cc)
+ except ValueError:
+ conf.fatal('suncc -flags could not be executed')
+ v['CC']=cc
+ v['CC_NAME']='sun'
+def scc_common_flags(conf):
+ v=conf.env
+ v['CC_SRC_F']=''
+ v['CC_TGT_F']=['-c','-o','']
+ v['CPPPATH_ST']='-I%s'
+ if not v['LINK_CC']:v['LINK_CC']=v['CC']
+ v['CCLNK_SRC_F']=''
+ v['CCLNK_TGT_F']=['-o','']
+ v['LIB_ST']='-l%s'
+ v['LIBPATH_ST']='-L%s'
+ v['STATICLIB_ST']='-l%s'
+ v['STATICLIBPATH_ST']='-L%s'
+ v['CCDEFINES_ST']='-D%s'
+ v['SONAME_ST']='-Wl,-h -Wl,%s'
+ v['SHLIB_MARKER']='-Bdynamic'
+ v['STATICLIB_MARKER']='-Bstatic'
+ v['program_PATTERN']='%s'
+ v['shlib_CCFLAGS']=['-Kpic','-DPIC']
+ v['shlib_LINKFLAGS']=['-G']
+ v['shlib_PATTERN']='lib%s.so'
+ v['staticlib_LINKFLAGS']=['-Bstatic']
+ v['staticlib_PATTERN']='lib%s.a'
+detect='''
+find_scc
+find_cpp
+find_ar
+scc_common_flags
+cc_load_tools
+cc_add_flags
+'''
+
+conftest(find_scc)
+conftest(scc_common_flags)
diff -Nru gtkimageview-1.6.4/wafadmin/Tools/suncxx.py gtkimageview-1.6.4+dfsg/wafadmin/Tools/suncxx.py
--- gtkimageview-1.6.4/wafadmin/Tools/suncxx.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Tools/suncxx.py 2009-04-04 19:27:21.000000000 -0400
@@ -0,0 +1,50 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+import os,optparse
+import Utils,Options,Configure
+import ccroot,ar
+from Configure import conftest
+def find_sxx(conf):
+ v=conf.env
+ cc=None
+ if v['CXX']:cc=v['CXX']
+ elif'CXX'in conf.environ:cc=conf.environ['CXX']
+ if not cc:cc=conf.find_program('c++',var='CXX')
+ if not cc:cc=conf.find_program('CC',var='CXX')
+ if not cc:conf.fatal('sunc++ was not found')
+ v['CXX']=cc
+ v['CXX_NAME']='sun'
+def sxx_common_flags(conf):
+ v=conf.env
+ v['CXX_SRC_F']=''
+ v['CXX_TGT_F']=['-c','-o','']
+ v['CPPPATH_ST']='-I%s'
+ if not v['LINK_CXX']:v['LINK_CXX']=v['CXX']
+ v['CXXLNK_SRC_F']=''
+ v['CXXLNK_TGT_F']=['-o','']
+ v['LIB_ST']='-l%s'
+ v['LIBPATH_ST']='-L%s'
+ v['STATICLIB_ST']='-l%s'
+ v['STATICLIBPATH_ST']='-L%s'
+ v['CXXDEFINES_ST']='-D%s'
+ v['SONAME_ST']='-Wl,-h -Wl,%s'
+ v['SHLIB_MARKER']='-Bdynamic'
+ v['STATICLIB_MARKER']='-Bstatic'
+ v['program_PATTERN']='%s'
+ v['shlib_CXXFLAGS']=['-Kpic','-DPIC']
+ v['shlib_LINKFLAGS']=['-G']
+ v['shlib_PATTERN']='lib%s.so'
+ v['staticlib_LINKFLAGS']=['-Bstatic']
+ v['staticlib_PATTERN']='lib%s.a'
+detect='''
+find_sxx
+find_cpp
+find_ar
+sxx_common_flags
+cxx_load_tools
+cxx_add_flags
+'''
+
+conftest(find_sxx)
+conftest(sxx_common_flags)
diff -Nru gtkimageview-1.6.4/wafadmin/Tools/tex.py gtkimageview-1.6.4+dfsg/wafadmin/Tools/tex.py
--- gtkimageview-1.6.4/wafadmin/Tools/tex.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Tools/tex.py 2009-04-04 19:27:21.000000000 -0400
@@ -0,0 +1,186 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+import os,re
+import Utils,TaskGen,Task,Runner,Build
+from TaskGen import feature,before
+from Logs import error,warn,debug
+re_tex=re.compile(r'\\(?P<type>include|input|import|bringin){(?P<file>[^{}]*)}',re.M)
+def scan(self):
+ node=self.inputs[0]
+ env=self.env
+ nodes=[]
+ names=[]
+ if not node:return(nodes,names)
+ fi=open(node.abspath(env),'r')
+ code=fi.read()
+ fi.close()
+ curdirnode=self.curdirnode
+ abs=curdirnode.abspath()
+ for match in re_tex.finditer(code):
+ path=match.group('file')
+ if path:
+ for k in['','.tex','.ltx']:
+ debug('tex: trying %s%s'%(path,k))
+ try:
+ os.stat(abs+os.sep+path+k)
+ except OSError:
+ continue
+ found=path+k
+ node=curdirnode.find_resource(found)
+ if node:
+ nodes.append(node)
+ else:
+ debug('tex: could not find %s'%path)
+ names.append(path)
+ debug("tex: found the following : %s and names %s"%(nodes,names))
+ return(nodes,names)
+g_bibtex_re=re.compile('bibdata',re.M)
+def tex_build(task,command='LATEX'):
+ env=task.env
+ bld=task.generator.bld
+ com='%s %s'%(env[command],env.get_flat(command+'FLAGS'))
+ if not env['PROMPT_LATEX']:com="%s %s"%(com,'-interaction=batchmode')
+ node=task.inputs[0]
+ reldir=node.bld_dir(env)
+ srcfile=node.srcpath(env)
+ lst=[]
+ for c in Utils.split_path(reldir):
+ if c:lst.append('..')
+ sr=os.path.join(*(lst+[srcfile]))
+ sr2=os.path.join(*(lst+[node.parent.srcpath(env)]))
+ aux_node=node.change_ext('.aux')
+ idx_node=node.change_ext('.idx')
+ hash=''
+ old_hash=''
+ nm=aux_node.name
+ docuname=nm[:len(nm)-4]
+ latex_compile_cmd='cd %s && TEXINPUTS=%s:$TEXINPUTS %s %s'%(reldir,sr2,com,sr)
+ warn('first pass on %s'%command)
+ ret=bld.exec_command(latex_compile_cmd)
+ if ret:return ret
+ try:
+ file=open(aux_node.abspath(env),'r')
+ ct=file.read()
+ file.close()
+ except(OSError,IOError):
+ error('error bibtex scan')
+ else:
+ fo=g_bibtex_re.findall(ct)
+ if fo:
+ bibtex_compile_cmd='cd %s && BIBINPUTS=%s:$BIBINPUTS %s %s'%(reldir,sr2,env['BIBTEX'],docuname)
+ warn('calling bibtex')
+ ret=bld.exec_command(bibtex_compile_cmd)
+ if ret:
+ error('error when calling bibtex %s'%bibtex_compile_cmd)
+ return ret
+ try:
+ idx_path=idx_node.abspath(env)
+ os.stat(idx_path)
+ except OSError:
+ error('error file.idx scan')
+ else:
+ makeindex_compile_cmd='cd %s && %s %s'%(reldir,env['MAKEINDEX'],idx_path)
+ warn('calling makeindex')
+ ret=bld.exec_command(makeindex_compile_cmd)
+ if ret:
+ error('error when calling makeindex %s'%makeindex_compile_cmd)
+ return ret
+ i=0
+ while i<10:
+ i+=1
+ old_hash=hash
+ try:
+ hash=Utils.h_file(aux_node.abspath(env))
+ except KeyError:
+ error('could not read aux.h -> %s'%aux_node.abspath(env))
+ pass
+ if hash and hash==old_hash:break
+ warn('calling %s'%command)
+ ret=bld.exec_command(latex_compile_cmd)
+ if ret:
+ error('error when calling %s %s'%(command,latex_compile_cmd))
+ return ret
+ return 0
+latex_vardeps=['LATEX','LATEXFLAGS']
+def latex_build(task):
+ return tex_build(task,'LATEX')
+pdflatex_vardeps=['PDFLATEX','PDFLATEXFLAGS']
+def pdflatex_build(task):
+ return tex_build(task,'PDFLATEX')
+class tex_taskgen(TaskGen.task_gen):
+ def __init__(self,*k,**kw):
+ TaskGen.task_gen.__init__(self,*k,**kw)
+def apply_tex(self):
+ if not self.type in['latex','pdflatex']:
+ raise Utils.WafError('type %s not supported for texobj'%type)
+ tree=self.bld
+ outs=Utils.to_list(getattr(self,'outs',[]))
+ self.env['PROMPT_LATEX']=getattr(self,'prompt',1)
+ deps_lst=[]
+ if getattr(self,'deps',None):
+ deps=self.to_list(self.deps)
+ for filename in deps:
+ n=self.path.find_resource(filename)
+ if not n in deps_lst:deps_lst.append(n)
+ self.source=self.to_list(self.source)
+ for filename in self.source:
+ base,ext=os.path.splitext(filename)
+ node=self.path.find_resource(filename)
+ if not node:raise Utils.WafError('cannot find %s'%filename)
+ if self.type=='latex':
+ task=self.create_task('latex')
+ task.set_inputs(node)
+ task.set_outputs(node.change_ext('.dvi'))
+ elif self.type=='pdflatex':
+ task=self.create_task('pdflatex')
+ task.set_inputs(node)
+ task.set_outputs(node.change_ext('.pdf'))
+ else:
+ raise Utils.WafError('no type or invalid type given in tex object (should be latex or pdflatex)')
+ task.env=self.env
+ task.curdirnode=self.path
+ if deps_lst:
+ variant=node.variant(self.env)
+ try:
+ lst=tree.node_deps[task.unique_id()]
+ for n in deps_lst:
+ if not n in lst:
+ lst.append(n)
+ except KeyError:
+ tree.node_deps[task.unique_id()]=deps_lst
+ if self.type=='latex':
+ if'ps'in outs:
+ pstask=self.create_task('dvips')
+ pstask.set_inputs(task.outputs)
+ pstask.set_outputs(node.change_ext('.ps'))
+ if'pdf'in outs:
+ pdftask=self.create_task('dvipdf')
+ pdftask.set_inputs(task.outputs)
+ pdftask.set_outputs(node.change_ext('.pdf'))
+ elif self.type=='pdflatex':
+ if'ps'in outs:
+ pstask=self.create_task('pdf2ps')
+ pstask.set_inputs(task.outputs)
+ pstask.set_outputs(node.change_ext('.ps'))
+ self.source=[]
+def detect(conf):
+ v=conf.env
+ for p in'tex latex pdflatex bibtex dvips dvipdf ps2pdf makeindex pdf2ps'.split():
+ conf.find_program(p,var=p.upper())
+ v[p.upper()+'FLAGS']=''
+ v['DVIPSFLAGS']='-Ppdf'
+b=Task.simple_task_type
+b('tex','${TEX} ${TEXFLAGS} ${SRC}',color='BLUE')
+b('bibtex','${BIBTEX} ${BIBTEXFLAGS} ${SRC}',color='BLUE')
+b('dvips','${DVIPS} ${DVIPSFLAGS} ${SRC} -o ${TGT}',color='BLUE',after="latex pdflatex tex bibtex")
+b('dvipdf','${DVIPDF} ${DVIPDFFLAGS} ${SRC} ${TGT}',color='BLUE',after="latex pdflatex tex bibtex")
+b('pdf2ps','${PDF2PS} ${PDF2PSFLAGS} ${SRC} ${TGT}',color='BLUE',after="dvipdf pdflatex")
+b=Task.task_type_from_func
+cls=b('latex',latex_build,vars=latex_vardeps)
+cls.scan=scan
+cls=b('pdflatex',pdflatex_build,vars=pdflatex_vardeps)
+cls.scan=scan
+
+feature('tex')(apply_tex)
+before('apply_core')(apply_tex)
diff -Nru gtkimageview-1.6.4/wafadmin/Tools/UnitTest.py gtkimageview-1.6.4+dfsg/wafadmin/Tools/UnitTest.py
--- gtkimageview-1.6.4/wafadmin/Tools/UnitTest.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Tools/UnitTest.py 2009-04-04 19:27:21.000000000 -0400
@@ -0,0 +1,129 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+import os,sys
+import Build,TaskGen,Utils,Options,Logs
+class unit_test(object):
+ def __init__(self):
+ self.returncode_ok=0
+ self.num_tests_ok=0
+ self.num_tests_failed=0
+ self.num_tests_err=0
+ self.total_num_tests=0
+ self.max_label_length=0
+ self.unit_tests=Utils.ordered_dict()
+ self.unit_test_results={}
+ self.unit_test_erroneous={}
+ self.change_to_testfile_dir=False
+ self.want_to_see_test_output=False
+ self.want_to_see_test_error=False
+ self.run_if_waf_does='check'
+ def run(self):
+ self.num_tests_ok=0
+ self.num_tests_failed=0
+ self.num_tests_err=0
+ self.total_num_tests=0
+ self.max_label_length=0
+ self.unit_tests=Utils.ordered_dict()
+ self.unit_test_results={}
+ self.unit_test_erroneous={}
+ ld_library_path=[]
+ if not Options.commands[self.run_if_waf_does]:return
+ for obj in Build.bld.all_task_gen:
+ try:
+ link_task=obj.link_task
+ except AttributeError:
+ pass
+ else:
+ lib_path=link_task.outputs[0].parent.abspath(obj.env)
+ if lib_path not in ld_library_path:
+ ld_library_path.append(lib_path)
+ unit_test=getattr(obj,'unit_test','')
+ if unit_test and'cprogram'in obj.features:
+ try:
+ output=obj.path
+ filename=os.path.join(output.abspath(obj.env),obj.target)
+ srcdir=output.abspath()
+ label=os.path.join(output.bldpath(obj.env),obj.target)
+ self.max_label_length=max(self.max_label_length,len(label))
+ self.unit_tests[label]=(filename,srcdir)
+ except KeyError:
+ pass
+ self.total_num_tests=len(self.unit_tests)
+ Utils.pprint('GREEN','Running the unit tests')
+ count=0
+ result=1
+ for label in self.unit_tests.allkeys:
+ file_and_src=self.unit_tests[label]
+ filename=file_and_src[0]
+ srcdir=file_and_src[1]
+ count+=1
+ line=Build.bld.progress_line(count,self.total_num_tests,Logs.colors.GREEN,Logs.colors.NORMAL)
+ if Options.options.progress_bar and line:
+ sys.stderr.write(line)
+ sys.stderr.flush()
+ try:
+ kwargs={}
+ kwargs['env']=os.environ.copy()
+ if self.change_to_testfile_dir:
+ kwargs['cwd']=srcdir
+ if not self.want_to_see_test_output:
+ kwargs['stdout']=Utils.pproc.PIPE
+ if not self.want_to_see_test_error:
+ kwargs['stderr']=Utils.pproc.PIPE
+ if ld_library_path:
+ if sys.platform=='win32':
+ kwargs['env']['PATH']=';'.join(ld_library_path+[os.environ.get('PATH','')])
+ else:
+ kwargs['env']['LD_LIBRARY_PATH']=':'.join(ld_library_path+[os.environ.get('LD_LIBRARY_PATH','')])
+ pp=Utils.pproc.Popen(filename,**kwargs)
+ pp.wait()
+ result=int(pp.returncode==self.returncode_ok)
+ if result:
+ self.num_tests_ok+=1
+ else:
+ self.num_tests_failed+=1
+ self.unit_test_results[label]=result
+ self.unit_test_erroneous[label]=0
+ except OSError:
+ self.unit_test_erroneous[label]=1
+ self.num_tests_err+=1
+ except KeyboardInterrupt:
+ pass
+ if Options.options.progress_bar:sys.stdout.write(Logs.colors.cursor_on)
+ def print_results(self):
+ if not Options.commands[self.run_if_waf_does]:return
+ p=Utils.pprint
+ if self.total_num_tests==0:
+ p('YELLOW','No unit tests present')
+ return
+ p('GREEN','Running unit tests')
+ p('NORMAL','')
+ for label in self.unit_tests.allkeys:
+ filename=self.unit_tests[label]
+ err=0
+ result=0
+ try:err=self.unit_test_erroneous[label]
+ except KeyError:pass
+ try:result=self.unit_test_results[label]
+ except KeyError:pass
+ n=self.max_label_length-len(label)
+ if err:n+=4
+ elif result:n+=7
+ else:n+=3
+ line='%s %s'%(label,'.'*n)
+ if err:p('RED','%sERROR'%line)
+ elif result:p('GREEN','%sOK'%line)
+ else:p('YELLOW','%sFAILED'%line)
+ percentage_ok=float(self.num_tests_ok)/float(self.total_num_tests)*100.0
+ percentage_failed=float(self.num_tests_failed)/float(self.total_num_tests)*100.0
+ percentage_erroneous=float(self.num_tests_err)/float(self.total_num_tests)*100.0
+ p('NORMAL','''
+Successful tests: %i (%.1f%%)
+Failed tests: %i (%.1f%%)
+Erroneous tests: %i (%.1f%%)
+
+Total number of tests: %i
+'''%(self.num_tests_ok,percentage_ok,self.num_tests_failed,percentage_failed,self.num_tests_err,percentage_erroneous,self.total_num_tests))
+ p('GREEN','Unit tests finished')
+
diff -Nru gtkimageview-1.6.4/wafadmin/Tools/vala.py gtkimageview-1.6.4+dfsg/wafadmin/Tools/vala.py
--- gtkimageview-1.6.4/wafadmin/Tools/vala.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Tools/vala.py 2009-04-04 19:27:21.000000000 -0400
@@ -0,0 +1,179 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+import os.path,shutil
+import Task,Runner,Utils,Logs,Build,Node
+from TaskGen import extension
+EXT_VALA=['.vala','.gs']
+class valac_task(Task.Task):
+ vars=("VALAC","VALAC_VERSION","VALAFLAGS")
+ before=("cc","cxx")
+ def run(self):
+ env=self.env
+ inputs=[a.srcpath(env)for a in self.inputs]
+ valac=env['VALAC']
+ vala_flags=env.get_flat('VALAFLAGS')
+ top_src=self.generator.bld.srcnode.abspath()
+ top_bld=self.generator.bld.srcnode.abspath(env)
+ if env['VALAC_VERSION']>(0,1,6):
+ cmd=[valac,'-C','--quiet',vala_flags]
+ else:
+ cmd=[valac,'-C',vala_flags]
+ if self.threading:
+ cmd.append('--thread')
+ if self.target_glib:
+ cmd.append('--target-glib=%s'%self.target_glib)
+ features=self.generator.features
+ if'cshlib'in features or'cstaticlib'in features:
+ output_dir=self.outputs[0].bld_dir(env)
+ cmd.append('--library '+self.target)
+ if env['VALAC_VERSION']>=(0,7,0):
+ cmd.append('--header '+os.path.join(output_dir,self.target+'.h'))
+ self.outputs.append(self.generator.path.find_or_declare(self.target+'.h'))
+ cmd.append('--basedir '+top_src)
+ cmd.append('-d '+top_bld)
+ else:
+ output_dir=self.outputs[0].bld_dir(env)
+ cmd.append('-d %s'%output_dir)
+ for vapi_dir in self.vapi_dirs:
+ cmd.append('--vapidir=%s'%vapi_dir)
+ for package in self.packages:
+ cmd.append('--pkg %s'%package)
+ for package in self.packages_private:
+ cmd.append('--pkg %s'%package)
+ cmd.append(" ".join(inputs))
+ result=self.generator.bld.exec_command(" ".join(cmd))
+ if'cshlib'in features or'cstaticlib'in features:
+ if self.packages:
+ filename=os.path.join(self.generator.path.abspath(env),"%s.deps"%self.target)
+ deps=open(filename,'w')
+ for package in self.packages:
+ deps.write(package+'\n')
+ deps.close()
+ self._fix_output("../%s.vapi"%self.target)
+ self._fix_output("%s.vapi"%self.target)
+ self._fix_output("%s.gidl"%self.target)
+ self._fix_output("%s.gir"%self.target)
+ return result
+ def install(self):
+ bld=self.generator.bld
+ features=self.generator.features
+ if self.attr("install_path")and("cshlib"in features or"cstaticlib"in features):
+ headers_list=[o for o in self.outputs if o.suffix()==".h"]
+ vapi_list=[o for o in self.outputs if(o.suffix()in(".vapi",".deps"))]
+ for header in headers_list:
+ top_src=self.generator.bld.srcnode
+ package=self.env['PACKAGE']
+ try:
+ api_version=Utils.g_module.API_VERSION
+ except AttributeError:
+ version=Utils.g_module.VERSION.split(".")
+ if version[0]=="0":
+ api_version="0."+version[1]
+ else:
+ api_version=version[0]+".0"
+ install_path="${INCLUDEDIR}/%s-%s/%s"%(package,api_version,header.relpath_gen(top_src))
+ bld.install_as(install_path,header.abspath(self.env),self.env)
+ for vapi in vapi_list:
+ bld.install_files("${DATAROOTDIR}/vala/vapi",vapi.abspath(self.env),self.env)
+ def _fix_output(self,output):
+ top_bld=self.generator.bld.srcnode.abspath(self.env)
+ try:
+ src=os.path.join(top_bld,output)
+ dst=self.generator.path.abspath(self.env)
+ shutil.move(src,dst)
+ except:
+ pass
+def vala_file(self,node):
+ valatask=getattr(self,"valatask",None)
+ if not valatask:
+ valatask=self.create_task('valac')
+ self.valatask=valatask
+ valatask.packages=[]
+ valatask.packages_private=Utils.to_list(getattr(self,'packages_private',[]))
+ valatask.vapi_dirs=[]
+ valatask.target=self.target
+ valatask.threading=False
+ valatask.install_path=self.install_path
+ valatask.target_glib=None
+ packages=Utils.to_list(getattr(self,'packages',[]))
+ vapi_dirs=Utils.to_list(getattr(self,'vapi_dirs',[]))
+ if hasattr(self,'uselib_local'):
+ local_packages=Utils.to_list(self.uselib_local)
+ seen=[]
+ while len(local_packages)>0:
+ package=local_packages.pop()
+ if package in seen:
+ continue
+ seen.append(package)
+ package_obj=self.name_to_obj(package)
+ if not package_obj:
+ raise Utils.WafError("object '%s' was not found in uselib_local (required by '%s')"%(package,self.name))
+ package_name=package_obj.target
+ package_node=package_obj.path
+ package_dir=package_node.relpath_gen(self.path)
+ for task in package_obj.tasks:
+ for output in task.outputs:
+ if output.name==package_name+".vapi":
+ valatask.set_run_after(task)
+ if package_name not in packages:
+ packages.append(package_name)
+ if package_dir not in vapi_dirs:
+ vapi_dirs.append(package_dir)
+ if hasattr(package_obj,'uselib_local'):
+ lst=self.to_list(package_obj.uselib_local)
+ lst.reverse()
+ local_packages=[pkg for pkg in lst if pkg not in seen]+local_packages
+ valatask.packages=packages
+ for vapi_dir in vapi_dirs:
+ try:
+ valatask.vapi_dirs.append(self.path.find_dir(vapi_dir).abspath())
+ valatask.vapi_dirs.append(self.path.find_dir(vapi_dir).abspath(self.env))
+ except AttributeError:
+ Logs.warn("Unable to locate Vala API directory: '%s'"%vapi_dir)
+ if hasattr(self,'threading'):
+ valatask.threading=self.threading
+ self.uselib=self.to_list(self.uselib)
+ if not'GTHREAD'in self.uselib:
+ self.uselib.append('GTHREAD')
+ if hasattr(self,'target_glib'):
+ valatask.target_glib=self.target_glib
+ env=valatask.env
+ output_nodes=[]
+ c_node=node.change_ext('.c')
+ output_nodes.append(c_node)
+ self.allnodes.append(c_node)
+ if env['VALAC_VERSION']<(0,7,0):
+ output_nodes.append(node.change_ext('.h'))
+ if not'cprogram'in self.features:
+ output_nodes.append(self.path.find_or_declare('%s.vapi'%self.target))
+ if env['VALAC_VERSION']>(0,3,5):
+ output_nodes.append(self.path.find_or_declare('%s.gir'%self.target))
+ elif env['VALAC_VERSION']>(0,1,7):
+ output_nodes.append(self.path.find_or_declare('%s.gidl'%self.target))
+ if valatask.packages:
+ output_nodes.append(self.path.find_or_declare('%s.deps'%self.target))
+ valatask.inputs.append(node)
+ valatask.outputs.extend(output_nodes)
+def detect(conf):
+ min_version=(0,1,6)
+ min_version_str="%d.%d.%d"%min_version
+ valac=conf.find_program('valac',var='VALAC',mandatory=True)
+ if not conf.env["HAVE_GTHREAD"]:
+ conf.check_cfg(package='gthread-2.0',uselib_store='GTHREAD',args='--cflags --libs')
+ try:
+ output=Utils.cmd_output(valac+" --version",silent=True)
+ version=output.split(' ',1)[-1].strip().split(".")
+ version=[int(x)for x in version]
+ valac_version=tuple(version)
+ except Exception:
+ valac_version=(0,0,0)
+ conf.check_message('program version','valac >= '+min_version_str,valac_version>=min_version,"%d.%d.%d"%valac_version)
+ conf.check_tool('gnu_dirs')
+ if valac_version<min_version:
+ conf.fatal("valac version too old to be used with this tool")
+ return
+ conf.env['VALAC_VERSION']=valac_version
+ conf.env['VALAFLAGS']=''
+
+extension(EXT_VALA)(vala_file)
diff -Nru gtkimageview-1.6.4/wafadmin/Tools/winres.py gtkimageview-1.6.4+dfsg/wafadmin/Tools/winres.py
--- gtkimageview-1.6.4/wafadmin/Tools/winres.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Tools/winres.py 2009-04-04 19:27:21.000000000 -0400
@@ -0,0 +1,34 @@
+#! /usr/bin/env python
+# encoding: utf-8
+
+import os,sys,re
+import TaskGen,Task
+from Utils import quote_whitespace
+from TaskGen import extension
+EXT_WINRC=['.rc']
+winrc_str='${WINRC} ${_CPPDEFFLAGS} ${_CCDEFFLAGS} ${WINRCFLAGS} ${_CPPINCFLAGS} ${_CCINCFLAGS} ${WINRC_TGT_F} ${TGT} ${WINRC_SRC_F} ${SRC}'
+def rc_file(self,node):
+ obj_ext='.rc.o'
+ if self.env['WINRC_TGT_F']=='/fo':obj_ext='.res'
+ rctask=self.create_task('winrc')
+ rctask.set_inputs(node)
+ rctask.set_outputs(node.change_ext(obj_ext))
+ self.compiled_tasks.append(rctask)
+Task.simple_task_type('winrc',winrc_str,color='BLUE',before='cc cxx')
+def detect(conf):
+ v=conf.env
+ winrc=v['WINRC']
+ v['WINRC_TGT_F']='-o'
+ v['WINRC_SRC_F']='-i'
+ if not winrc:
+ if v['CC_NAME']in['gcc','cc','g++','c++']:
+ winrc=conf.find_program('windres',var='WINRC',path_list=v['PATH'])
+ elif v['CC_NAME']=='msvc':
+ winrc=conf.find_program('RC',var='WINRC',path_list=v['PATH'])
+ v['WINRC_TGT_F']='/fo'
+ v['WINRC_SRC_F']=''
+ if not winrc:
+ conf.fatal('winrc was not found!')
+ v['WINRCFLAGS']=''
+
+extension(EXT_WINRC)(rc_file)
diff -Nru gtkimageview-1.6.4/wafadmin/Utils.py gtkimageview-1.6.4+dfsg/wafadmin/Utils.py
--- gtkimageview-1.6.4/wafadmin/Utils.py 1969-12-31 19:00:00.000000000 -0500
+++ gtkimageview-1.6.4+dfsg/wafadmin/Utils.py 2009-04-04 19:27:22.000000000 -0400
@@ -0,0 +1,397 @@
+#! /usr/bin/env python
+# encoding: utf-8
+import sys
+if sys.hexversion < 0x020400f0: from sets import Set as set
+import os,sys,imp,string,errno,traceback,inspect,re
+try:from UserDict import UserDict
+except ImportError:from collections import UserDict
+if sys.hexversion>=0x2060000:
+ import subprocess as pproc
+else:
+ import pproc
+import Logs
+from Constants import*
+is_win32=sys.platform=='win32'
+try:
+ from collections import defaultdict as DefaultDict
+except ImportError:
+ class DefaultDict(dict):
+ def __init__(self,default_factory):
+ super(DefaultDict,self).__init__()
+ self.default_factory=default_factory
+ def __getitem__(self,key):
+ try:
+ return super(DefaultDict,self).__getitem__(key)
+ except KeyError:
+ value=self.default_factory()
+ self[key]=value
+ return value
+class WafError(Exception):
+ def __init__(self,*args):
+ self.args=args
+ self.stack=traceback.extract_stack()
+ Exception.__init__(self,*args)
+ def __str__(self):
+ return str(len(self.args)==1 and self.args[0]or self.args)
+class WscriptError(WafError):
+ def __init__(self,message,wscript_file=None):
+ if wscript_file:
+ self.wscript_file=wscript_file
+ self.wscript_line=None
+ else:
+ (self.wscript_file,self.wscript_line)=self.locate_error()
+ msg_file_line=''
+ if self.wscript_file:
+ msg_file_line="%s:"%self.wscript_file
+ if self.wscript_line:
+ msg_file_line+="%s:"%self.wscript_line
+ err_message="%s error: %s"%(msg_file_line,message)
+ WafError.__init__(self,err_message)
+ def locate_error(self):
+ stack=traceback.extract_stack()
+ stack.reverse()
+ for frame in stack:
+ file_name=os.path.basename(frame[0])
+ is_wscript=(file_name==WSCRIPT_FILE or file_name==WSCRIPT_BUILD_FILE)
+ if is_wscript:
+ return(frame[0],frame[1])
+ return(None,None)
+indicator=is_win32 and'\x1b[A\x1b[K%s%s%s\r'or'\x1b[K%s%s%s\r'
+try:
+ from fnv import new as md5
+ import Constants
+ Constants.SIG_NIL='signofnv'
+ def h_file(filename):
+ m=md5()
+ try:
+ m.hfile(filename)
+ x=m.digest()
+ if x is None:raise OSError("not a file")
+ return x
+ except SystemError:
+ raise OSError("not a file"+filename)
+except ImportError:
+ try:
+ from hashlib import md5
+ except ImportError:
+ from md5 import md5
+ def h_file(filename):
+ f=open(filename,'rb')
+ m=md5()
+ readBytes=100000
+ while(filename):
+ filename=f.read(100000)
+ m.update(filename)
+ f.close()
+ return m.digest()
+class ordered_dict(UserDict):
+ def __init__(self,dict=None):
+ self.allkeys=[]
+ UserDict.__init__(self,dict)
+ def __delitem__(self,key):
+ self.allkeys.remove(key)
+ UserDict.__delitem__(self,key)
+ def __setitem__(self,key,item):
+ if key not in self.allkeys:self.allkeys.append(key)
+ UserDict.__setitem__(self,key,item)
+def exec_command(s,**kw):
+ if'log'in kw:
+ kw['stdout']=kw['stderr']=kw['log']
+ del(kw['log'])
+ kw['shell']=isinstance(s,str)
+ try:
+ proc=pproc.Popen(s,**kw)
+ return proc.wait()
+ except WindowsError:
+ return-1
+if is_win32:
+ old_log=exec_command
+ def exec_command(s,**kw):
+ if len(s)<2000:return old_log(s,**kw)
+ if'log'in kw:
+ kw['stdout']=kw['stderr']=kw['log']
+ del(kw['log'])
+ kw['shell']=isinstance(s,str)
+ startupinfo=pproc.STARTUPINFO()
+ startupinfo.dwFlags|=pproc.STARTF_USESHOWWINDOW
+ kw['startupinfo']=startupinfo
+ proc=pproc.Popen(s,**kw)
+ return proc.wait()
+listdir=os.listdir
+if is_win32:
+ def listdir_win32(s):
+ if re.match('^[A-Z]:$',s):
+ s+=os.sep
+ if not os.path.isdir(s):
+ e=OSError()
+ e.errno=errno.ENOENT
+ raise e
+ return os.listdir(s)
+ listdir=listdir_win32
+def waf_version(mini=0x010000,maxi=0x100000):
+ ver=HEXVERSION
+ try:min_val=mini+0
+ except TypeError:min_val=int(mini.replace('.','0'),16)
+ if min_val>ver:
+ Logs.error("waf version should be at least %s (%s found)"%(mini,ver))
+ sys.exit(0)
+ try:max_val=maxi+0
+ except TypeError:max_val=int(maxi.replace('.','0'),16)
+ if max_val<ver:
+ Logs.error("waf version should be at most %s (%s found)"%(maxi,ver))
+ sys.exit(0)
+def python_24_guard():
+ if sys.hexversion<0x20400f0:
+ raise ImportError("Waf requires Python >= 2.3 but the raw source requires Python 2.4")
+def ex_stack():
+ exc_type,exc_value,tb=sys.exc_info()
+ exc_lines=traceback.format_exception(exc_type,exc_value,tb)
+ return''.join(exc_lines)
+def to_list(sth):
+ if isinstance(sth,str):
+ return sth.split()
+ else:
+ return sth
+g_loaded_modules={}
+g_module=None
+def load_module(file_path,name=WSCRIPT_FILE):
+ try:
+ return g_loaded_modules[file_path]
+ except KeyError:
+ pass
+ module=imp.new_module(name)
+ try:
+ code=readf(file_path)
+ except(IOError,OSError):
+ raise WscriptError('The file %s could not be opened!'%file_path)
+ module.waf_hash_val=code
+ module_dir=os.path.dirname(file_path)
+ sys.path.insert(0,module_dir)
+ exec(code,module.__dict__)
+ sys.path.remove(module_dir)
+ g_loaded_modules[file_path]=module
+ return module
+def set_main_module(file_path):
+ global g_module
+ g_module=load_module(file_path,'wscript_main')
+ g_module.root_path=file_path
+def to_hashtable(s):
+ tbl={}
+ lst=s.split('\n')
+ for line in lst:
+ if not line:continue
+ mems=line.split('=')
+ tbl[mems[0]]=mems[1]
+ return tbl
+def get_term_cols():
+ return 80
+try:
+ import struct,fcntl,termios
+except ImportError:
+ pass
+else:
+ if sys.stderr.isatty()and os.environ['TERM']!='dumb':
+ def myfun():
+ dummy_lines,cols=struct.unpack("HHHH",fcntl.ioctl(sys.stderr.fileno(),termios.TIOCGWINSZ,struct.pack("HHHH",0,0,0,0)))[:2]
+ return cols
+ try:
+ myfun()
+ except IOError:
+ pass
+ else:
+ get_term_cols=myfun
+rot_idx=0
+rot_chr=['\\','|','/','-']
+def split_path(path):
+ if not path:return['']
+ return path.split('/')
+if is_win32:
+ def split_path(path):
+ h,t=os.path.splitunc(path)
+ if not h:return __split_dirs(t)
+ return[h]+__split_dirs(t)[1:]
+ def __split_dirs(path):
+ h,t=os.path.split(path)
+ if not h:return[t]
+ if h==path:return[h.replace('\\','')]
+ if not t:return __split_dirs(h)
+ else:return __split_dirs(h)+[t]
+def copy_attrs(orig,dest,names,only_if_set=False):
+ for a in to_list(names):
+ u=getattr(orig,a,())
+ if u or not only_if_set:
+ setattr(dest,a,u)
+def def_attrs(cls,**kw):
+ '''
+ set attributes for class.
+ @param cls [any class]: the class to update the given attributes in.
+ @param kw [dictionary]: dictionary of attributes names and values.
+
+ if the given class hasn't one (or more) of these attributes, add the attribute with its value to the class.
+ '''
+ for k,v in kw.iteritems():
+ if not hasattr(cls,k):
+ setattr(cls,k,v)
+quote_define_name_table=None
+def quote_define_name(path):
+ global quote_define_name_table
+ if not quote_define_name_table:
+ invalid_chars=set([chr(x)for x in xrange(256)])-set(string.digits+string.uppercase)
+ quote_define_name_table=string.maketrans(''.join(invalid_chars),'_'*len(invalid_chars))
+ return string.translate(string.upper(path),quote_define_name_table)
+def quote_whitespace(path):
+ return(path.strip().find(' ')>0 and'"%s"'%path or path).replace('""','"')
+def trimquotes(s):
+ if not s:return''
+ s=s.rstrip()
+ if s[0]=="'"and s[-1]=="'":return s[1:-1]
+ return s
+def h_list(lst):
+ m=md5()
+ m.update(str(lst))
+ return m.digest()
+def h_fun(fun):
+ try:
+ return fun.code
+ except AttributeError:
+ try:
+ h=inspect.getsource(fun)
+ except IOError:
+ h="nocode"
+ try:
+ fun.code=h
+ except AttributeError:
+ pass
+ return h
+def pprint(col,str,label='',sep=os.linesep):
+ sys.stderr.write("%s%s%s %s%s"%(Logs.colors(col),str,Logs.colors.NORMAL,label,sep))
+def check_dir(dir):
+ try:
+ os.stat(dir)
+ except OSError:
+ try:
+ os.makedirs(dir)
+ except OSError,e:
+ raise WafError("Cannot create folder '%s' (original error: %s)"%(dir,e))
+def cmd_output(cmd,**kw):
+ silent=kw.get('silent',False)
+ if silent:
+ del(kw['silent'])
+ if'e'in kw:
+ tmp=kw['e']
+ del(kw['e'])
+ kw['env']=tmp
+ kw['shell']=isinstance(cmd,str)
+ kw['stdout']=pproc.PIPE
+ if silent:
+ kw['stderr']=pproc.PIPE
+ try:
+ p=pproc.Popen(cmd,**kw)
+ output=p.communicate()[0]
+ except WindowsError,e:
+ raise ValueError(str(e))
+ if p.returncode:
+ if not silent:
+ msg="command execution failed: %s -> %r"%(cmd,str(output))
+ raise ValueError(msg)
+ output=''
+ return output
+reg_subst=re.compile(r"(\\\\)|(\$\$)|\$\{([^}]+)\}")
+def subst_vars(expr,params):
+ def repl_var(m):
+ if m.group(1):
+ return'\\'
+ if m.group(2):
+ return'$'
+ try:
+ return params.get_flat(m.group(3))
+ except AttributeError:
+ return params[m.group(3)]
+ return reg_subst.sub(repl_var,expr)
+def detect_platform():
+ s=sys.platform
+ for x in'cygwin linux irix sunos hpux aix darwin'.split():
+ if s.find(x)>=0:
+ return x
+ if os.name in'posix java os2'.split():
+ return os.name
+ return s
+def load_tool(tool,tooldir=None):
+ if tooldir:
+ assert isinstance(tooldir,list)
+ sys.path=tooldir+sys.path
+ try:
+ try:
+ return __import__(tool)
+ except ImportError,e:
+ raise WscriptError(e)
+ finally:
+ if tooldir:
+ for d in tooldir:
+ sys.path.remove(d)
+def readf(fname):
+ f=None
+ try:
+ f=open(fname,'rb')
+ txt=f.read()
+ finally:
+ if f:f.close()
+ return txt
+def nada(*k,**kw):
+ pass
+class Context(object):
+ def recurse(self,dirs,name=''):
+ if not name:
+ name=inspect.stack()[1][3]
+ if isinstance(dirs,str):
+ dirs=to_list(dirs)
+ if not getattr(self,'curdir',None):
+ self.curdir=os.getcwd()
+ for x in dirs:
+ if os.path.isabs(x):
+ nexdir=x
+ else:
+ nexdir=os.path.join(self.curdir,x)
+ base=os.path.join(nexdir,WSCRIPT_FILE)
+ try:
+ txt=readf(base+'_'+name)
+ except(OSError,IOError):
+ try:
+ module=load_module(base)
+ except OSError:
+ raise WscriptError('No such script %s'%base)
+ try:
+ f=module.__dict__[name]
+ except KeyError:
+ raise WscriptError('No function %s defined in %s'%(name,base))
+ if getattr(self.__class__,'pre_recurse',None):
+ self.pre_recurse(f,base,nexdir)
+ old=self.curdir
+ self.curdir=nexdir
+ try:
+ f(self)
+ finally:
+ self.curdir=old
+ if getattr(self.__class__,'post_recurse',None):
+ self.post_recurse(module,base,nexdir)
+ else:
+ dc={'ctx':self}
+ if getattr(self.__class__,'pre_recurse',None):
+ dc=self.pre_recurse(txt,base+'_'+name,nexdir)
+ old=self.curdir
+ self.curdir=nexdir
+ try:
+ exec(txt,dc)
+ finally:
+ self.curdir=old
+ if getattr(self.__class__,'post_recurse',None):
+ self.post_recurse(txt,base+'_'+name,nexdir)
+def jar_regexp(regex):
+ if regex.endswith('/'):
+ regex+='**'
+ regex=(re.escape(regex).replace(r"\*\*\/",".*").replace(r"\*\*",".*").replace(r"\*","[^/]*").replace(r"\?","[^/]"))
+ if regex.endswith(r'\/.*'):
+ regex=regex[:-4]+'([/].*)*'
+ regex+='$'
+ return re.compile(regex)
+
--- End Message ---