diff --git a/bdistrib.sh b/bdistrib.sh index b210c1ff..9f809c33 100755 --- a/bdistrib.sh +++ b/bdistrib.sh @@ -73,6 +73,12 @@ echo "copying pin" mkdir -p distrib/qira/pin cp -av pin/makefile pin/pin_build.sh pin/qirapin.cpp distrib/qira/pin/ +echo "copying cda" +mkdir -p distrib/qira/cda distrib/qira/cda/clang +cp -av cda/*.py distrib/qira/cda/ +cp -av cda/clang/*.py distrib/qira/cda/clang/ +cp -Rav cda/static distrib/qira/cda/ + # package up the python, hopefully this includes pymongo driver # hmm, it doesn't, user will need to install #cd bin diff --git a/cda/cachegen.py b/cda/cachegen.py index 988a37b6..a29e4b73 100755 --- a/cda/cachegen.py +++ b/cda/cachegen.py @@ -1,12 +1,12 @@ #!/usr/bin/env python2.7 import os import sys +import cda_config basedir = os.path.dirname(os.path.realpath(__file__)) #sys.path.append(basedir+"/clang/llvm/tools/clang/bindings/python") import clang.cindex as ci -#ci.Config.set_library_file(basedir+"/clang/build/Release+Asserts/lib/libclang.so") -ci.Config.set_library_file(basedir+"/libclang.so") +ci.Config.set_library_file(cda_config.LIBCLANG_PATH) import pickle from clang.cindex import CursorKind @@ -122,9 +122,8 @@ def parse_file(filename, args=[]): def parse_files(files, args=[]): args.append("-I") - #args.append(basedir+"/clang-latest/build/Release+Asserts/lib/clang/3.4.2/include") # for unbuilt clang - args.append(basedir+"/include") + args.append(cda_config.CLANG_INCLUDES) for fn in files: print "CDA: caching",fn try: diff --git a/cda/cda_config.py b/cda/cda_config.py new file mode 100644 index 00000000..d7e374ff --- /dev/null +++ b/cda/cda_config.py @@ -0,0 +1,7 @@ +#ci.Config.set_library_file(basedir+"/clang/build/Release+Asserts/lib/libclang.so") +#ci.Config.set_library_file(basedir+"/libclang.so") +LIBCLANG_PATH = '/usr/lib/x86_64-linux-gnu/libclang.so.1' +#args.append(basedir+"/clang-latest/build/Release+Asserts/lib/clang/3.4.2/include") +#args.append(basedir+"/include") +CLANG_INCLUDES = '/usr/lib/llvm-3.4/lib/clang/3.4/include' + diff --git a/install.sh b/install.sh index 0fd7fe23..c3ebb199 100755 --- a/install.sh +++ b/install.sh @@ -8,6 +8,8 @@ PIP="pip" if [ $(which apt-get) ]; then echo "installing apt packages" sudo apt-get install build-essential python-dev python-pip debootstrap + echo "installing cda packages" + sudo apt-get install codesearch clang elif [ $(which pacman) ]; then echo "installing pip" sudo pacman -S base-devel python2-pip diff --git a/middleware/qira.py b/middleware/qira.py index 52310900..dc587295 100755 --- a/middleware/qira.py +++ b/middleware/qira.py @@ -41,7 +41,7 @@ if __name__ == '__main__': raise Exception("--web-host must be a valid IPv4/IPv6 address") # handle arguments - if sys.argv[0] == "cda": + if sys.argv[0][-3:] == "cda": print "*** called as cda, not running QIRA" args.cda_only = True diff --git a/middleware/qira_program.py b/middleware/qira_program.py index c45c9e51..d54bb41b 100644 --- a/middleware/qira_program.py +++ b/middleware/qira_program.py @@ -261,10 +261,15 @@ class Program: return raw.encode("hex") def research(self, re): - csearch = qira_config.BASEDIR + "/cda/codesearch-latest/csearch" - out = subprocess.Popen([csearch, "-n", "--", re], stdout=subprocess.PIPE, env={"CSEARCHINDEX": self.cindexname}) - dat = out.communicate() - return dat[0].split("\n")[:-1] + try: + #csearch = qira_config.BASEDIR + "/cda/codesearch-latest/csearch" + csearch = "/usr/bin/csearch" + out = subprocess.Popen([csearch, "-n", "--", re], stdout=subprocess.PIPE, env={"CSEARCHINDEX": self.cindexname}) + dat = out.communicate() + return dat[0].split("\n")[:-1] + except: + print "ERROR: csearch not found" + return [] def getdwarf(self): if not qira_config.WITH_DWARF: @@ -325,11 +330,17 @@ class Program: (files, self.dwarves, self.rdwarves, dirs) = cachewrap("/tmp/qira_dwarfcaches", self.proghash, parse_dwarf) - cindex = qira_config.BASEDIR + "/cda/codesearch-latest/cindex" self.cindexname = get_cachename("/tmp/qira_cindexcaches", self.proghash) if not os.path.isfile(self.cindexname): if os.fork() == 0: - os.execve(cindex, [cindex,"--"]+files, {"CSEARCHINDEX": self.cindexname}) + try: + #cindex = qira_config.BASEDIR + "/cda/codesearch-latest/cindex" + cindex = "/usr/bin/cindex" + os.execve(cindex, [cindex,"--"]+files, {"CSEARCHINDEX": self.cindexname}) + except: + print "ERROR: cindex not found" + exit(0) + # no need to wait # cda