From bdc46aaaa0c8b5a86be43c5c84995a64be0c75ff Mon Sep 17 00:00:00 2001 From: Arnaud Diederen Date: Thu, 26 Jan 2023 12:14:15 +0100 Subject: [PATCH] IDAPython: added a mechanism to use the freshly-built modules to perform the pydoc injections check, in case of an out-of-tree build --- build.py | 4 +++- idapython.cpp | 6 +++++- makefile | 6 +++++- out_of_tree/parsed_notifications.zip | Bin 4153655 -> 4153655 bytes 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/build.py b/build.py index 976c053..ef1cc1c 100644 --- a/build.py +++ b/build.py @@ -45,7 +45,8 @@ parser.add_argument("-v", "--verbose", help="Verbose mode", default=False, actio parser.add_argument("-I", "--ida-install", required=True, help="IDA's installation directory", type=str) args = parser.parse_args() -_probe = os.path.join("..", "..", "include", "pro.h") +sdk_relpath = os.path.join("..", "..") +_probe = os.path.join(sdk_relpath, "include", "pro.h") assert os.path.exists(_probe), "Could not find IDA SDK include path (looked for: \"%s\")" % _probe @@ -77,6 +78,7 @@ def main(): if args.verbose: argv.append("-d") env["IDA_INSTALL"] = args.ida_install.replace('\\', '/') + env["SDK_BIN_PATH"] = os.path.abspath(os.path.join(sdk_relpath, "bin")).replace('\\', '/') for ea64 in [True, False]: if ea64: env["__EA64__"] = "1" diff --git a/idapython.cpp b/idapython.cpp index 5ef96b2..9df6524 100644 --- a/idapython.cpp +++ b/idapython.cpp @@ -986,6 +986,10 @@ bool idapython_plugin_t::init() msg("HexraysPython: Python compiled with DEBUG enabled.\n"); #endif + qstring dynload_base; + if ( !qgetenv("IDAPYTHON_DYNLOAD_BASE", &dynload_base) ) + dynload_base = idadir(nullptr); + // Set IDAPYTHON_VERSION in Python qstring init_code; init_code.sprnt( @@ -997,7 +1001,7 @@ bool idapython_plugin_t::init() "IDAPYTHON_IDAUSR_SYSPATH = %s\n", VER_MAJOR, VER_MINOR, VER_PATCH, VER_STATUS, VER_SERIAL, config.remove_cwd_sys_path ? "True" : "False", - idadir(nullptr), + dynload_base.c_str(), sizeof(ea_t)*8, config.autoimport_compat_idaapi ? "True" : "False", config.idausr_syspath ? "True" : "False" diff --git a/makefile b/makefile index 40cbb98..6582073 100644 --- a/makefile +++ b/makefile @@ -187,7 +187,11 @@ else IDAT_PATH?=$(IDA_INSTALL)/idat endif -IDAT_CMD=TVHEADLESS=1 $(IDAT_PATH)$(SUFF64) +ifeq ($(OUT_OF_TREE_BUILD),) + IDAT_CMD=TVHEADLESS=1 $(IDAT_PATH)$(SUFF64) +else + IDAT_CMD=TVHEADLESS=1 IDAPYTHON_DYNLOAD_BASE=$(SDK_BIN_PATH) $(IDAT_PATH)$(SUFF64) +endif # envvar HAS_HEXRAYS must have been set by build.py if needed ifeq ($(OUT_OF_TREE_BUILD),) diff --git a/out_of_tree/parsed_notifications.zip b/out_of_tree/parsed_notifications.zip index 8dba7e01b8973db4e49caba101a841c0b34be5f3..e7c9f00efebfa062a71411c2ecf5cd03ab8fbce8 100644 GIT binary patch delta 6745 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 F{{hdSl_&rJ delta 6608 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 gWoG_J3lxA3R(2T6<&M~w%n+a