Determine python version from python module directly

This commit is contained in:
baldurk
2026-03-13 13:07:44 +00:00
parent d32b8a0371
commit 6e3a0201a8
6 changed files with 36 additions and 14 deletions
@@ -72,4 +72,9 @@ extern "C" void ProcessDecRefQueue()
{
}
extern "C" RENDERDOC_EXPORT_API int _rd_python_minor_version()
{
return PY_MINOR_VERSION;
}
REPLAY_PROGRAM_MARKER()
+1 -2
View File
@@ -2444,8 +2444,7 @@ extern "C" RENDERDOC_API int RENDERDOC_CC RENDERDOC_RunUnitTests(const rdcstr &c
const rdcarray<rdcstr> &args);
DOCUMENT("INTERNAL: Run functional tests.");
extern "C" RENDERDOC_API int RENDERDOC_CC RENDERDOC_RunFunctionalTests(int pythonMinorVersion,
const rdcarray<rdcstr> &args);
extern "C" RENDERDOC_API int RENDERDOC_CC RENDERDOC_RunFunctionalTests(const rdcarray<rdcstr> &args);
#endif
#if !defined(SWIG)
+20 -2
View File
@@ -891,8 +891,7 @@ static void TestPrintMsg(const rdcstr &msg)
OSUtility::WriteOutput(OSUtility::Output_StdErr, msg.c_str());
}
extern "C" RENDERDOC_API int RENDERDOC_CC RENDERDOC_RunFunctionalTests(int pythonMinorVersion,
const rdcarray<rdcstr> &args)
extern "C" RENDERDOC_API int RENDERDOC_CC RENDERDOC_RunFunctionalTests(const rdcarray<rdcstr> &args)
{
#if ENABLED(RDOC_WIN32)
const char *moduledir = "/pymodules";
@@ -932,6 +931,25 @@ extern "C" RENDERDOC_API int RENDERDOC_CC RENDERDOC_RunFunctionalTests(int pytho
return 1;
}
void *moduleHandle = Process::LoadModule(moduleFilename);
int pythonMinorVersion = 0;
if(moduleHandle)
{
typedef int (*PFN_rd_python_minor_version)();
PFN_rd_python_minor_version minor = (PFN_rd_python_minor_version)Process::GetFunctionAddress(
moduleHandle, "_rd_python_minor_version");
pythonMinorVersion = minor();
}
else
{
TestPrintMsg(StringFormat::Fmt("Couldn't load python module at %s\n", moduleFilename.c_str()));
return 1;
}
// if we've been built either on windows or on linux from within the project root, going up two
// directories from the library will put us at the project root. This is the most common scenario
// and we don't add handling for locating the script elsewhere as in that case the user can run it
+2 -2
View File
@@ -7,9 +7,9 @@ set(includes PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty ${CMAKE_SOURCE_DIR}/re
set(libraries PRIVATE renderdoc)
if(PythonLibs_FOUND)
add_definitions(-DPYTHON_VERSION_MINOR=${PYTHON_VERSION_MINOR})
add_definitions(-DPYTHON_AVAILALBE=1)
else()
add_definitions(-DPYTHON_VERSION_MINOR=0)
add_definitions(-DPYTHON_AVAILALBE=0)
endif()
if(APPLE)
+4 -4
View File
@@ -846,7 +846,7 @@ public:
virtual void AddOptions(cmdline::parser &parser)
{
parser.set_footer(
#if PYTHON_VERSION_MINOR > 0
#if PYTHON_AVAILABLE == 1
"<unit|functional>"
#else
"<unit>"
@@ -876,7 +876,7 @@ public:
rest.erase(rest.begin());
if(mode != "unit"
#if PYTHON_VERSION_MINOR > 0
#if PYTHON_AVAILABLE == 1
&& mode != "functional"
#endif
)
@@ -898,9 +898,9 @@ public:
{
if(mode == "unit")
return RENDERDOC_RunUnitTests("renderdoccmd test unit", args);
#if PYTHON_VERSION_MINOR > 0
#if PYTHON_AVAILABLE == 1
else if(mode == "functional")
return RENDERDOC_RunFunctionalTests(PYTHON_VERSION_MINOR, args);
return RENDERDOC_RunFunctionalTests(args);
#endif
std::cerr << "Unsupported test frame work '" << mode << "'" << std::endl << std::endl;
+4 -4
View File
@@ -102,7 +102,7 @@
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_CRT_SECURE_NO_WARNINGS;RENDERDOC_PLATFORM_WIN32;NDEBUG;_CONSOLE;PYTHON_VERSION_MINOR=6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>WIN32;_CRT_SECURE_NO_WARNINGS;RENDERDOC_PLATFORM_WIN32;NDEBUG;_CONSOLE;PYTHON_AVAILABLE=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(SolutionDir)renderdocshim\;$(SolutionDir)renderdoc\api\;$(SolutionDir)renderdoc\api\replay;$(SolutionDir)renderdoccmd\3rdparty\;$(SolutionDir)renderdoc\3rdparty\</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<TreatWarningAsError>true</TreatWarningAsError>
@@ -124,7 +124,7 @@
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_CRT_SECURE_NO_WARNINGS;WIN64;RENDERDOC_PLATFORM_WIN32;NDEBUG;_CONSOLE;PYTHON_VERSION_MINOR=6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>WIN32;_CRT_SECURE_NO_WARNINGS;WIN64;RENDERDOC_PLATFORM_WIN32;NDEBUG;_CONSOLE;PYTHON_AVAILABLE=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(SolutionDir)renderdocshim\;$(SolutionDir)renderdoc\api\;$(SolutionDir)renderdoc\api\replay;$(SolutionDir)renderdoccmd\3rdparty\;$(SolutionDir)renderdoc\3rdparty\</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<TreatWarningAsError>true</TreatWarningAsError>
@@ -147,7 +147,7 @@
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;_CRT_SECURE_NO_WARNINGS;RENDERDOC_PLATFORM_WIN32;NDEBUG;RELEASE;_CONSOLE;PYTHON_VERSION_MINOR=6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>WIN32;_CRT_SECURE_NO_WARNINGS;RENDERDOC_PLATFORM_WIN32;NDEBUG;RELEASE;_CONSOLE;PYTHON_AVAILABLE=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(SolutionDir)renderdocshim\;$(SolutionDir)renderdoc\api\;$(SolutionDir)renderdoc\api\replay;$(SolutionDir)renderdoccmd\3rdparty\;$(SolutionDir)renderdoc\3rdparty\</AdditionalIncludeDirectories>
<TreatWarningAsError>true</TreatWarningAsError>
</ClCompile>
@@ -170,7 +170,7 @@
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;_CRT_SECURE_NO_WARNINGS;WIN64;RENDERDOC_PLATFORM_WIN32;NDEBUG;RELEASE;_CONSOLE;PYTHON_VERSION_MINOR=6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>WIN32;_CRT_SECURE_NO_WARNINGS;WIN64;RENDERDOC_PLATFORM_WIN32;NDEBUG;RELEASE;_CONSOLE;PYTHON_AVAILABLE=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(SolutionDir)renderdocshim\;$(SolutionDir)renderdoc\api\;$(SolutionDir)renderdoc\api\replay;$(SolutionDir)renderdoccmd\3rdparty\;$(SolutionDir)renderdoc\3rdparty\</AdditionalIncludeDirectories>
<TreatWarningAsError>true</TreatWarningAsError>
</ClCompile>