예제 #1
0
 def occam(self, cfg, args):
     flags = []
     nargs = []
     i = 0
     while i < len(args):
         if self.name == 'install' and args[i] in ['-B', '-f', '-g', '-m', '-o']:
             flags.extend(args[i:i+2])
             i += 1
         elif args[i].startswith('-'):
             flags.append(args[i])
         else:
             nargs.append(args[i])
         i += 1
     cmdline = flags
     def fixarg(arg): return self.fixinputname(arg,keep=False,create=self.name not in ['unlink','rm'])
     inputs = filter(None,map(fixarg,nargs[0:len(nargs)-1]))
     if not inputs:
         return 0
     last = nargs[len(nargs)-1]
     if len(nargs) > 1 and os.path.isdir(last) and self.name not in ['unlink', 'rm']:
         output = last
     else:
         output = self.fixname(last)
     cmdline = flags + inputs + [output]
     if self.name == 'ln' and os.path.exists(output):
         return 0
     return driver.run(cfg.getStdTool(self.name), cmdline)
예제 #2
0
 def occam(self, cfg, args):
     def modify(p):
         if p.startswith('-'):
             return p
         else:
             return self.fixinputname(p)
     args = map(modify,args)
     return driver.run(cfg.getStdTool('chmod'), args)
예제 #3
0
 def occam(self, cfg, args):
     def modify(p):
         if p.startswith('-'):
             return p
         if os.path.isdir(p):
             return p
         if os.path.exists(self.fixinputname(p)):
             return self.fixinputname(p)
         return None
     (flags,nargs) = parse_args(args, ['-m', '-o', '-g'], modify)
     nargs = remove_dups(nargs)
     if len(nargs) == 0:
         return 0
     elif len(nargs) == 1:
         if os.path.isdir(args[-1]):
             return 0
         else:
             nargs += [self.fixinputname(args[-1])]
     return driver.run(cfg.getStdTool('install'),
                       flags + nargs)
예제 #4
0
 def run(self, cfg, _, args):
     logging.getLogger().info('%(cwd)s', {'cwd' : os.getcwd()})
     if not isChild():
         self.occam(cfg, args)
     return driver.run(cfg.getStdTool(self.name), args, pipe=False, inp=sys.stdin, resetPath=True)
예제 #5
0
 def occam(self, cfg, args):
     # "opt -strip %s -o %s" % (input_file, intput_file)
     return driver.run(cfg.getLlvmTool('opt'), 
                       ['-strip', input_file, '-o=%s' % output_file])