Files
codeql/python/extractor/python_tracer.py

54 lines
1.6 KiB
Python
Executable File

#!/usr/bin/env python
#This file needs to be able to handle all versions of Python we are likely to encounter
#Which is probably 2.6 and upwards
'''This module sets up sys.path from the environment
and runs the populator when called from semmle tools such as buildSnapshot.'''
import sys
import os
# The constant is put here instead of make_zips.py, since make_zips.py is not present in
# the distributed extractor-python code
def getzipfilename():
return 'python3src.zip'
def load_library():
try:
tools = os.environ['ODASA_TOOLS']
except KeyError:
try:
tools = os.path.join(os.environ['SEMMLE_DIST'], "tools")
except KeyError:
tools = sys.path[0]
try:
zippath = os.path.join(tools, getzipfilename())
sys.path = [ zippath ] + sys.path
except Exception:
#Failed to find tools. Error is reported below
zippath = tools
try:
import semmle.populator
except ImportError as ex:
print("FATAL ERROR: ")
print(ex)
if tools is not None:
if not os.path.exists(os.path.join(tools, getzipfilename())):
sys.stderr.write("No tracer library found in " + tools + "\n")
else:
sys.stderr.write("Unable to load tracer library at %s:\n" % zippath)
import traceback
traceback.print_exc(file=sys.stderr)
else:
print(sys.path)
sys.stderr.write("Cannot find Semmle tools\n")
sys.exit(2)
if __name__ == "__main__":
original_path = sys.path
load_library()
import semmle.populator
semmle.populator.main(original_path)