mirror of
https://github.com/github/codeql.git
synced 2025-12-16 16:53:25 +01:00
Python: Copy Python extractor to codeql repo
This commit is contained in:
53
python/extractor/python_tracer.py
Executable file
53
python/extractor/python_tracer.py
Executable file
@@ -0,0 +1,53 @@
|
||||
#!/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)
|
||||
Reference in New Issue
Block a user