|
ChampSim
|
Classes | |
| class | GlobalConfig |
Functions | |
| def | run_and_get_output (popen_args) |
| def | get_dependencies (filename) |
| def | is_qt_plugin (filename) |
| def | is_qt_lib (filename) |
| def | is_loader_path_lib (filename) |
| def | normalize_qtplugin_name (filename) |
| def | normalize_qtlib_name (filename) |
| def | normalize_loaderpath_name (filename) |
| def | fix_dependency (binary, dep) |
| def | fix_binary (binary) |
| def | fix_main_binaries () |
| def | main () |
Variables | |
| string | QTLIB_NAME_REGEX = r'^(?:@executable_path)?/.*/(Qt[a-zA-Z]*).framework/(?:Versions/\d/)?\1$' |
| string | QTLIB_NORMALIZED = r'$prefix/Frameworks/$qtlib.framework/Versions/$qtversion/$qtlib' |
| string | QTPLUGIN_NAME_REGEX = r'^(?:@executable_path)?/.*/[pP]lug[iI]ns/(.*)/(.*).dylib$' |
| string | QTPLUGIN_NORMALIZED = r'$prefix/PlugIns/$plugintype/$pluginname.dylib' |
| string | LOADERPATH_REGEX = r'^@[a-z_]+path/(.*)' |
| string | LOADERPATH_NORMALIZED = r'$prefix/Frameworks/$loaderpathlib' |
| def applocal.fix_binary | ( | binary | ) |
input:
binary: relative or absolute path (no @executable_path syntax)
process:
- first fix the rpath for the qt libs on which 'binary' depend
- copy into the bundle of exepath the eventual libraries that are missing
- (create the soft links) needed ?
- do the same for all qt dependencies of binary (recursive)
| def applocal.fix_dependency | ( | binary, | |
| dep | |||
| ) |
fix 'dep' dependency of 'binary'. 'dep' is a qt library
| def applocal.fix_main_binaries | ( | ) |
list the main binaries of the app bundle and fix them
| def applocal.get_dependencies | ( | filename | ) |
input: filename must be an absolute path Should call `otool` and returns the list of dependencies, unsorted, unmodified, just the raw list so then we could eventually re-use in other more specialized functions
| def applocal.is_loader_path_lib | ( | filename | ) |
Checks if a given file is loaded via @loader_path or @rpath
| def applocal.is_qt_lib | ( | filename | ) |
Checks if a given file is a qt library. Accepts absolute path as well as path containing @executable_path
| def applocal.is_qt_plugin | ( | filename | ) |
Checks if a given file is a qt plugin. Accepts absolute path as well as path containing @executable_path
| def applocal.main | ( | ) |
| def applocal.normalize_loaderpath_name | ( | filename | ) |
input: a path to a loaderpath library, as returned by otool, that can have this form :
- an relative path @loaderpath/yyy
output:
a tuple (loaderpathlib, abspath, rpath) where:
- loaderpathlib is the name of the loaderpath lib
- abspath is the absolute path of the qt lib inside the app bundle of exepath
- relpath is the correct rpath to a qt lib inside the app bundle
| def applocal.normalize_qtlib_name | ( | filename | ) |
input: a path to a qt library, as returned by otool, that can have this form :
- an absolute path /lib/xxx/yyy
- @executable_path/../Frameworks/QtSerialPort.framework/Versions/5/QtSerialPort
output:
a tuple (qtlib, abspath, rpath) where:
- qtlib is the name of the qtlib (QtCore, QtWidgets, etc.)
- abspath is the absolute path of the qt lib inside the app bundle of exepath
- relpath is the correct rpath to a qt lib inside the app bundle
| def applocal.normalize_qtplugin_name | ( | filename | ) |
input: a path to a qt plugin, as returned by otool, that can have this form :
- an absolute path /../plugins/PLUGINTYPE/PLUGINNAME.dylib
- @executable_path/../plugins/PLUGINTYPE/PLUGINNAME.dylib
output:
a tuple (qtlib, abspath, rpath) where:
- qtname is the name of the plugin (libqcocoa.dylib, etc.)
- abspath is the absolute path of the qt lib inside the app bundle of exepath
- relpath is the correct rpath to a qt lib inside the app bundle
| def applocal.run_and_get_output | ( | popen_args | ) |
Run process and get all output
| string applocal.LOADERPATH_NORMALIZED = r'$prefix/Frameworks/$loaderpathlib' |
| string applocal.LOADERPATH_REGEX = r'^@[a-z_]+path/(.*)' |
| string applocal.QTLIB_NAME_REGEX = r'^(?:@executable_path)?/.*/(Qt[a-zA-Z]*).framework/(?:Versions/\d/)?\1$' |
| string applocal.QTLIB_NORMALIZED = r'$prefix/Frameworks/$qtlib.framework/Versions/$qtversion/$qtlib' |
| string applocal.QTPLUGIN_NAME_REGEX = r'^(?:@executable_path)?/.*/[pP]lug[iI]ns/(.*)/(.*).dylib$' |
| string applocal.QTPLUGIN_NORMALIZED = r'$prefix/PlugIns/$plugintype/$pluginname.dylib' |