Re-enabled linux tests physics (#5701)
* Re-enabled linux tests physics * Fix for python load errors on Linux (#5627) * Explicitly load libpython on Linux Downstream loads of python modules that weren't linked to libpython would fail to load because libraries were loaded using the RTLD_LOCAL flag. This adds a function that will explicitly load libpython on Linux using the RTLD_GLOBAL flag. Signed-off-by: amzn-phist <52085794+amzn-phist@users.noreply.github.com> * Fix misspelled function name Signed-off-by: amzn-phist <52085794+amzn-phist@users.noreply.github.com> * Addressing PR feedback - Updates naming and location of things. - Adds load code to a Gem template. - Updates error checking. Signed-off-by: amzn-phist <52085794+amzn-phist@users.noreply.github.com> * Address further feedback Removes the api function in favor of just having modules inherit off a PythonLoader class, that way we get RAAI behavior and lifetime management for free. Signed-off-by: amzn-phist <52085794+amzn-phist@users.noreply.github.com> Signed-off-by: aljanru <aljanru@amazon.co.uk> Co-authored-by: amzn-phist <52085794+amzn-phist@users.noreply.github.com>
This commit is contained in:
@@ -0,0 +1,25 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) Contributors to the Open 3D Engine Project.
|
||||||
|
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
namespace AzToolsFramework::EmbeddedPython
|
||||||
|
{
|
||||||
|
// When using embedded Python, some platforms need to explicitly load the python library.
|
||||||
|
// For any modules that depend on 3rdParty::Python package, the AZ::Module should inherit this class.
|
||||||
|
class PythonLoader
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
PythonLoader();
|
||||||
|
~PythonLoader();
|
||||||
|
|
||||||
|
private:
|
||||||
|
void* m_embeddedLibPythonHandle{ nullptr };
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace AzToolsFramework::EmbeddedPython
|
||||||
@@ -47,6 +47,7 @@ set(FILES
|
|||||||
API/EntityCompositionRequestBus.h
|
API/EntityCompositionRequestBus.h
|
||||||
API/EntityCompositionNotificationBus.h
|
API/EntityCompositionNotificationBus.h
|
||||||
API/EditorViewportIconDisplayInterface.h
|
API/EditorViewportIconDisplayInterface.h
|
||||||
|
API/PythonLoader.h
|
||||||
API/ViewPaneOptions.h
|
API/ViewPaneOptions.h
|
||||||
API/ViewportEditorModeTrackerInterface.h
|
API/ViewportEditorModeTrackerInterface.h
|
||||||
Application/Ticker.h
|
Application/Ticker.h
|
||||||
|
|||||||
+20
@@ -0,0 +1,20 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) Contributors to the Open 3D Engine Project.
|
||||||
|
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <AzToolsFramework/API/PythonLoader.h>
|
||||||
|
|
||||||
|
namespace AzToolsFramework::EmbeddedPython
|
||||||
|
{
|
||||||
|
PythonLoader::PythonLoader()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
PythonLoader::~PythonLoader()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
+34
@@ -0,0 +1,34 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) Contributors to the Open 3D Engine Project.
|
||||||
|
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <AzToolsFramework/API/PythonLoader.h>
|
||||||
|
#include <AzCore/Debug/Trace.h>
|
||||||
|
#include <dlfcn.h>
|
||||||
|
|
||||||
|
namespace AzToolsFramework::EmbeddedPython
|
||||||
|
{
|
||||||
|
PythonLoader::PythonLoader()
|
||||||
|
{
|
||||||
|
constexpr char libPythonName[] = "libpython3.7m.so.1.0";
|
||||||
|
if (m_embeddedLibPythonHandle = dlopen(libPythonName, RTLD_NOW | RTLD_GLOBAL);
|
||||||
|
m_embeddedLibPythonHandle == nullptr)
|
||||||
|
{
|
||||||
|
char* err = dlerror();
|
||||||
|
AZ_Error("PythonLoader", false, "Failed to load %s with error: %s\n", libPythonName, err ? err : "Unknown Error");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
PythonLoader::~PythonLoader()
|
||||||
|
{
|
||||||
|
if (m_embeddedLibPythonHandle)
|
||||||
|
{
|
||||||
|
dlclose(m_embeddedLibPythonHandle);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace AzToolsFramework::EmbeddedPython
|
||||||
@@ -7,4 +7,5 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
set(FILES
|
set(FILES
|
||||||
|
AzToolsFramework/API/PythonLoader_Linux.cpp
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -7,4 +7,5 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
set(FILES
|
set(FILES
|
||||||
|
../Common/Default/AzToolsFramework/API/PythonLoader_Default.cpp
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -7,4 +7,5 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
set(FILES
|
set(FILES
|
||||||
|
../Common/Default/AzToolsFramework/API/PythonLoader_Default.cpp
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -9,11 +9,13 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <AzCore/Module/Module.h>
|
#include <AzCore/Module/Module.h>
|
||||||
|
#include <AzToolsFramework/API/PythonLoader.h>
|
||||||
|
|
||||||
namespace AtomToolsFramework
|
namespace AtomToolsFramework
|
||||||
{
|
{
|
||||||
class AtomToolsFrameworkModule
|
class AtomToolsFrameworkModule
|
||||||
: public AZ::Module
|
: public AZ::Module
|
||||||
|
, public AzToolsFramework::EmbeddedPython::PythonLoader
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
AZ_RTTI(AtomToolsFrameworkModule, "{B58B7CA8-98C9-4DC8-8607-E094989BBBE2}", AZ::Module);
|
AZ_RTTI(AtomToolsFrameworkModule, "{B58B7CA8-98C9-4DC8-8607-E094989BBBE2}", AZ::Module);
|
||||||
|
|||||||
@@ -9,6 +9,8 @@
|
|||||||
#include <AzCore/Memory/SystemAllocator.h>
|
#include <AzCore/Memory/SystemAllocator.h>
|
||||||
#include <AzCore/Module/Module.h>
|
#include <AzCore/Module/Module.h>
|
||||||
|
|
||||||
|
#include <AzToolsFramework/API/PythonLoader.h>
|
||||||
|
|
||||||
#include <PythonSystemComponent.h>
|
#include <PythonSystemComponent.h>
|
||||||
#include <PythonReflectionComponent.h>
|
#include <PythonReflectionComponent.h>
|
||||||
#include <PythonMarshalComponent.h>
|
#include <PythonMarshalComponent.h>
|
||||||
@@ -18,6 +20,7 @@ namespace EditorPythonBindings
|
|||||||
{
|
{
|
||||||
class EditorPythonBindingsModule
|
class EditorPythonBindingsModule
|
||||||
: public AZ::Module
|
: public AZ::Module
|
||||||
|
, public AzToolsFramework::EmbeddedPython::PythonLoader
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
AZ_RTTI(EditorPythonBindingsModule, "{851B9E35-4FD5-49B1-8207-E40D4BBA36CC}", AZ::Module);
|
AZ_RTTI(EditorPythonBindingsModule, "{851B9E35-4FD5-49B1-8207-E40D4BBA36CC}", AZ::Module);
|
||||||
|
|||||||
@@ -9,12 +9,15 @@
|
|||||||
#include <AzCore/Memory/SystemAllocator.h>
|
#include <AzCore/Memory/SystemAllocator.h>
|
||||||
#include <AzCore/Module/Module.h>
|
#include <AzCore/Module/Module.h>
|
||||||
|
|
||||||
|
#include <AzToolsFramework/API/PythonLoader.h>
|
||||||
|
|
||||||
#include <PythonAssetBuilderSystemComponent.h>
|
#include <PythonAssetBuilderSystemComponent.h>
|
||||||
|
|
||||||
namespace PythonAssetBuilder
|
namespace PythonAssetBuilder
|
||||||
{
|
{
|
||||||
class PythonAssetBuilderModule
|
class PythonAssetBuilderModule
|
||||||
: public AZ::Module
|
: public AZ::Module
|
||||||
|
, public AzToolsFramework::EmbeddedPython::PythonLoader
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
AZ_RTTI(PythonAssetBuilderModule, "{35C9457E-54C2-474C-AEBE-5A70CC1D435D}", AZ::Module);
|
AZ_RTTI(PythonAssetBuilderModule, "{35C9457E-54C2-474C-AEBE-5A70CC1D435D}", AZ::Module);
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
|
|
||||||
#include <${Name}ModuleInterface.h>
|
#include <${Name}ModuleInterface.h>
|
||||||
#include <${Name}EditorSystemComponent.h>
|
#include <${Name}EditorSystemComponent.h>
|
||||||
|
#include <AzToolsFramework/API/PythonLoader.h>
|
||||||
|
|
||||||
void Init${SanitizedCppName}Resources()
|
void Init${SanitizedCppName}Resources()
|
||||||
{
|
{
|
||||||
@@ -21,6 +22,7 @@ namespace ${SanitizedCppName}
|
|||||||
{
|
{
|
||||||
class ${SanitizedCppName}EditorModule
|
class ${SanitizedCppName}EditorModule
|
||||||
: public ${SanitizedCppName}ModuleInterface
|
: public ${SanitizedCppName}ModuleInterface
|
||||||
|
, public AzToolsFramework::EmbeddedPython::PythonLoader
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
AZ_RTTI(${SanitizedCppName}EditorModule, "${ModuleClassId}", ${SanitizedCppName}ModuleInterface);
|
AZ_RTTI(${SanitizedCppName}EditorModule, "${ModuleClassId}", ${SanitizedCppName}ModuleInterface);
|
||||||
|
|||||||
@@ -83,7 +83,7 @@
|
|||||||
"CMAKE_OPTIONS": "-G 'Ninja Multi-Config' -DCMAKE_C_COMPILER=clang-12 -DCMAKE_CXX_COMPILER=clang++-12 -DLY_PARALLEL_LINK_JOBS=4",
|
"CMAKE_OPTIONS": "-G 'Ninja Multi-Config' -DCMAKE_C_COMPILER=clang-12 -DCMAKE_CXX_COMPILER=clang++-12 -DLY_PARALLEL_LINK_JOBS=4",
|
||||||
"CMAKE_LY_PROJECTS": "AutomatedTesting",
|
"CMAKE_LY_PROJECTS": "AutomatedTesting",
|
||||||
"CMAKE_TARGET": "all",
|
"CMAKE_TARGET": "all",
|
||||||
"CTEST_OPTIONS": "-E (AutomatedTesting::Atom_TestSuite_Main|AutomatedTesting::PhysicsTests_Main|AutomatedTesting::PrefabTests|AutomatedTesting::TerrainTests_Main|Gem::EMotionFX.Editor.Tests) -L (SUITE_smoke|SUITE_main) -LE (REQUIRES_gpu) --no-tests=error",
|
"CTEST_OPTIONS": "-E (AutomatedTesting::Atom_TestSuite_Main|AutomatedTesting::PrefabTests|AutomatedTesting::TerrainTests_Main|Gem::EMotionFX.Editor.Tests) -L (SUITE_smoke|SUITE_main) -LE (REQUIRES_gpu) --no-tests=error",
|
||||||
"TEST_RESULTS": "True"
|
"TEST_RESULTS": "True"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -96,7 +96,7 @@
|
|||||||
"CMAKE_OPTIONS": "-G 'Ninja Multi-Config' -DCMAKE_C_COMPILER=clang-12 -DCMAKE_CXX_COMPILER=clang++-12 -DLY_UNITY_BUILD=FALSE -DLY_PARALLEL_LINK_JOBS=4",
|
"CMAKE_OPTIONS": "-G 'Ninja Multi-Config' -DCMAKE_C_COMPILER=clang-12 -DCMAKE_CXX_COMPILER=clang++-12 -DLY_UNITY_BUILD=FALSE -DLY_PARALLEL_LINK_JOBS=4",
|
||||||
"CMAKE_LY_PROJECTS": "AutomatedTesting",
|
"CMAKE_LY_PROJECTS": "AutomatedTesting",
|
||||||
"CMAKE_TARGET": "all",
|
"CMAKE_TARGET": "all",
|
||||||
"CTEST_OPTIONS": "-E (AutomatedTesting::Atom_TestSuite_Main|AutomatedTesting::PhysicsTests_Main|AutomatedTesting::PrefabTests|AutomatedTesting::TerrainTests_Main|Gem::EMotionFX.Editor.Tests) -L (SUITE_smoke|SUITE_main) -LE (REQUIRES_gpu) --no-tests=error",
|
"CTEST_OPTIONS": "-E (AutomatedTesting::Atom_TestSuite_Main|AutomatedTesting::PrefabTests|AutomatedTesting::TerrainTests_Main|Gem::EMotionFX.Editor.Tests) -L (SUITE_smoke|SUITE_main) -LE (REQUIRES_gpu) --no-tests=error",
|
||||||
"TEST_RESULTS": "True"
|
"TEST_RESULTS": "True"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user