def genHellos(outFilename, overWrite = False, python = False): if python: if not outFilename.endswith(".py"): outFilename = outFilename + ".py" if os.path.exists(outFilename) and not overWrite: raise Exception(CT.boldRed("File ") + CT.boldBlack(outFilename) + CT.boldRed(" already exists, use --overWrite to over write it")) genPyHello(outFilename) #rwx to user and group, r-x to everyone fd = os.open( outFilename, os.O_RDONLY ) os.fchmod( fd, 0o775) os.close( fd ) print((CT.boldGreen("Now run"))) print(("./" + outFilename + " ")) print((CT.boldGreen("or"))) print(("./" + outFilename + " --name Nick")) else: if not outFilename.endswith(".cpp"): outFilename = outFilename + ".cpp" if os.path.exists(outFilename) and not overWrite: raise Exception("File " + outFilename + " already exists, use --overWrite to over write it") genCppHello(outFilename) print((CT.boldGreen("Now run"))) print(("g++ -std=c++11 " + outFilename + " -o hello #-std=c++11 needed for cstdint include in libstdc++")) print ("./hello") print((CT.boldGreen("or run"))) #mac if Utils.isMac(): print(("clang++ " + outFilename + " -o hello")) else: print(("clang++-3.6 -std=c++11 " + outFilename + " -o hello #-std=c++11 needed for cstdint include in libstdc++")) print ("./hello")
def genHellos(outFilename, overWrite = False, python = False): if python: if not outFilename.endswith(".py"): outFilename = outFilename + ".py" if os.path.exists(outFilename) and not overWrite: raise Exception(CT.boldRed("File ") + CT.boldBlack(outFilename) + CT.boldRed(" already exists, use --overWrite to over write it")) genPyHello(outFilename) #rwx to user and group, r-x to everyone fd = os.open( outFilename, os.O_RDONLY ) os.fchmod( fd, 0775) os.close( fd ) print (CT.boldGreen("Now run")) print ("./" + outFilename + " ") print (CT.boldGreen("or")) print ("./" + outFilename + " --name Nick") else: if not outFilename.endswith(".cpp"): outFilename = outFilename + ".cpp" if os.path.exists(outFilename) and not overWrite: raise Exception("File " + outFilename + " already exists, use --overWrite to over write it") genCppHello(outFilename) print (CT.boldGreen("Now run")) print ("g++ -std=c++11 " + outFilename + " -o hello #-std=c++11 needed for cstdint include in libstdc++") print ("./hello") print (CT.boldGreen("or run")) #mac if Utils.isMac(): print ("clang++ " + outFilename + " -o hello") else: print ("clang++-3.6 -std=c++11 " + outFilename + " -o hello #-std=c++11 needed for cstdint include in libstdc++") print ("./hello")
def copyMakefile(self, distDir, overWrite=False): distDir = os.path.join(self.projectDir, distDir) if not os.path.exists(distDir): print(CT.boldGreen(distDir) + CT.boldRed(" doesn't exist skipping")) return if os.path.exists(os.path.join(distDir, "Makefile")) and not overWrite: raise Exception("Error, file " + os.path.join(distDir, "Makefile") + " already exist, use --overWrite overwrite Makefile") shutil.copy(os.path.join(self.setupFrom, "scripts/cppMakefiles/Makefile"), os.path.join(distDir, "Makefile"))
def copySetUp(self, distDir, overWrite=False): if not os.path.exists(distDir): print(CT.boldGreen(distDir) + CT.boldRed(" doesn't exist skipping")) return if os.path.exists(os.path.join(distDir, "setup.py")) and not overWrite: raise Exception("Error, file " + os.path.join(distDir, "setup.py") + " already exist, use --overWrite overwrite setup.py") shutil.copy(os.path.join(self.setupFrom, "setup.py"), os.path.join(distDir, "setup.py")) self.copyDir(os.path.join(self.setupFrom ,"scripts"), os.path.join(distDir,"scripts"), overWrite)
def parseForHeaders(args): headers = set() unknowns = [] for arg in args: if arg in objToHeader: headers.add(objToHeader[arg]) elif ("std::" + arg) in objToHeader: headers.add(objToHeader["std::" + arg]) else: unknowns.append(arg) print(CT.boldRed("Unknowns:")) for u in unknowns: print(CT.boldBlack("unknown which header file contains"), CT.boldRed(u)) if headers: print(CT.boldGreen("found headers:")) for h in sorted(headers): print(h)
def setup(self): if self.args.forceUpdate: for set in self.setUpsNeeded.keys(): if not set in self.setUps.keys(): print CT.boldBlack( "Unrecognized option ") + CT.boldRed(set) else: self.rmDirsForLib(set) for set in self.setUpsNeeded.keys(): if not set in self.setUps.keys(): print CT.boldBlack( "Unrecognized option ") + CT.boldRed(set) else: self.__setup(set, self.setUps[set]) for p in self.installed: print p, CT.boldGreen("installed") for p in self.failedInstall: print p, CT.boldRed("failed to install")
def parseForHeaders(args): headers = set() unknowns = [] for arg in args: if arg in objToHeader: headers.add(objToHeader[arg]) elif ("std::" + arg) in objToHeader: headers.add(objToHeader["std::" + arg]) else: unknowns.append(arg) print(CT.boldRed("Unknowns:")) for u in unknowns: print(CT.boldBlack("unknown which header file contains"), CT.boldRed(u)) if headers: print(CT.boldGreen("found headers:")) for h in sorted(headers): print(h)
def rmDirsForLib(self,lib): if lib not in self.setUps: print CT.boldBlack( "Unrecognized lib: ") + CT.boldRed(lib) else: p = self.__path(lib) if p.build_dir: print "Removing " + CT.boldBlack(p.build_dir) Utils.rm_rf(p.build_dir) if p.local_dir: print "Removing " + CT.boldBlack(p.local_dir) Utils.rm_rf(p.local_dir)
def copyMakefile(self, distDir, overWrite=False): distDir = os.path.join(self.projectDir, distDir) if not os.path.exists(distDir): print( CT.boldGreen(distDir) + CT.boldRed(" doesn't exist skipping")) return if os.path.exists(os.path.join(distDir, "Makefile")) and not overWrite: raise Exception( "Error, file " + os.path.join(distDir, "Makefile") + " already exist, use --overWrite overwrite Makefile") shutil.copy( os.path.join(self.setupFrom, "scripts/cppMakefiles/Makefile"), os.path.join(distDir, "Makefile"))
def copySetUp(self, distDir, overWrite=False): if not os.path.exists(distDir): print( CT.boldGreen(distDir) + CT.boldRed(" doesn't exist skipping")) return if os.path.exists(os.path.join(distDir, "setup.py")) and not overWrite: raise Exception( "Error, file " + os.path.join(distDir, "setup.py") + " already exist, use --overWrite overwrite setup.py") shutil.copy(os.path.join(self.setupFrom, "setup.py"), os.path.join(distDir, "setup.py")) self.copyDir(os.path.join(self.setupFrom, "scripts"), os.path.join(distDir, "scripts"), overWrite)
def main(): args = parse_args() s = Setup(args) ccWhich = Utils.which(s.CC) cxxWhich = Utils.which(s.CXX) cmakeWhich = Utils.which("cmake") if not ccWhich or not cxxWhich or not cmakeWhich: if not ccWhich: print CT.boldRed("Could not find c compiler " + CT.purple + s.CC) if args.compfile: print "Change CC in " + args.compfile else: print "Can supply another c compiler by using -CC [option] or by defining bash environmental CC " print "" if not cxxWhich: print CT.boldRed("Could not find c++ compiler " + CT.purple + s.CXX) if args.compfile: print "Change CXX in " + args.compfile else: print "Can supply another c++ compiler by using -CXX [option] or by defining bash environmental CXX " print "" if not cmakeWhich: print CT.boldRed("Could not find " + CT.purple + "cmake") if Utils.isMac(): print "If you have brew install via, brew update && brew install cmake, otherwise you can follow instructions from http://www.cmake.org/install/" else: print "On ubuntu to install latest cmake do the following" print "sudo add-apt-repository ppa:george-edison55/cmake-3.x" print "sudo apt-get update" print "sudo apt-get install cmake" return 1 if(args.instRPackageName): s.installRPackageName(args.instRPackageName[0]) return 0 if(args.instRPackageSource): s.installRPackageSource(args.instRPackageSource[0]) return 0 if args.updateBibProjects: projectsSplit = args.updateBibProjects.split(",") s.updateBibProjects(projectsSplit) return 0 if args.printLibs: s.printAvailableSetUps() elif args.addBashCompletion: if(os.path.isdir("./bashCompletes")): cmd = "cat bashCompletes/* >> ~/.bash_completion" Utils.run(cmd) if(os.path.isdir("./bash_completion.d")): cmd = "cat bash_completion.d/* >> ~/.bash_completion" Utils.run(cmd) else: if len(s.setUpsNeeded) == 0: s.printAvailableSetUps() return 1 else: s.setup() return 0
def __setup(self, name, builder_f): if os.path.exists(self.__path(name).local_dir): print name, CT.boldGreen("found at ") + CT.boldBlack(self.__path(name).local_dir) else: print name, CT.boldRed("NOT"), "found; building..." try: builder_f() self.installed.append(name) except Exception as inst: print type(inst) print inst print "failed to install " + name self.failedInstall.append(name)
def rm_rf(d): """remove directory forcibly""" if os.path.exists(d): print CT.boldText("rm -rf"), CT.boldRed(d) shutil.rmtree(d)
def rm_rf(d): '''remove directory forcibly''' if os.path.exists(d): print CT.boldText("rm -rf"), CT.boldRed(d) shutil.rmtree(d)
def rm_rf(d): '''remove directory forcibly''' if os.path.exists(d): print(CT.boldText("rm -rf"), CT.boldRed(d)) shutil.rmtree(d)