mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-02-20 19:16:11 +00:00
Merge pull request #263599 from andir/fix-freecad-python-3.11
Fix FreeCAD with Python 3.11
This commit is contained in:
commit
9d5d25bbfe
@ -0,0 +1,60 @@
|
||||
From c4f452ef6ae083ed21095313582f6d1bd775cbf3 Mon Sep 17 00:00:00 2001
|
||||
From: Andreas Rammhold <andreas@rammhold.de>
|
||||
Date: Thu, 2 Nov 2023 17:32:07 +0100
|
||||
Subject: [PATCH] NIXOS: don't ignore PYTHONPATH
|
||||
|
||||
On NixOS or rather within nixpkgs we provide the runtime Python
|
||||
packages via the PYTHONPATH environment variable. FreeCAD tries its
|
||||
best to ignore Python environment variables that are being inherited
|
||||
from the environment. For Python versions >=3.11 it also tries to
|
||||
initialize the interpreter config without any environmental data. We
|
||||
have to initialize the configuration *with* the information from the
|
||||
environment for our packaging to work.
|
||||
|
||||
Upstream has purposely isolated the environments AFAIK and thus
|
||||
shouldn't accept this patch (as is). What they might accept (once
|
||||
support for older Python versions has been dropped) is removing the
|
||||
PYTHONPATH specific putenv calls.
|
||||
---
|
||||
src/Base/Interpreter.cpp | 2 +-
|
||||
src/Main/MainGui.cpp | 3 ---
|
||||
2 files changed, 1 insertion(+), 4 deletions(-)
|
||||
|
||||
diff --git a/src/Base/Interpreter.cpp b/src/Base/Interpreter.cpp
|
||||
index 52c47168af..9966bd0013 100644
|
||||
--- a/src/Base/Interpreter.cpp
|
||||
+++ b/src/Base/Interpreter.cpp
|
||||
@@ -554,7 +554,7 @@ void initInterpreter(int argc,char *argv[])
|
||||
{
|
||||
PyStatus status;
|
||||
PyConfig config;
|
||||
- PyConfig_InitIsolatedConfig(&config);
|
||||
+ PyConfig_InitPythonConfig(&config);
|
||||
|
||||
status = PyConfig_SetBytesArgv(&config, argc, argv);
|
||||
if (PyStatus_Exception(status)) {
|
||||
diff --git a/src/Main/MainGui.cpp b/src/Main/MainGui.cpp
|
||||
index 48ae847ef4..28813df383 100644
|
||||
--- a/src/Main/MainGui.cpp
|
||||
+++ b/src/Main/MainGui.cpp
|
||||
@@ -112,17 +112,14 @@ int main( int argc, char ** argv )
|
||||
// See https://forum.freecad.org/viewtopic.php?f=18&t=20600
|
||||
// See Gui::Application::runApplication()
|
||||
putenv("LC_NUMERIC=C");
|
||||
- putenv("PYTHONPATH=");
|
||||
#elif defined(FC_OS_MACOSX)
|
||||
(void)QLocale::system();
|
||||
- putenv("PYTHONPATH=");
|
||||
#elif defined(__MINGW32__)
|
||||
const char* mingw_prefix = getenv("MINGW_PREFIX");
|
||||
const char* py_home = getenv("PYTHONHOME");
|
||||
if (!py_home && mingw_prefix)
|
||||
_putenv_s("PYTHONHOME", mingw_prefix);
|
||||
#else
|
||||
- _putenv("PYTHONPATH=");
|
||||
// https://forum.freecad.org/viewtopic.php?f=4&t=18288
|
||||
// https://forum.freecad.org/viewtopic.php?f=3&t=20515
|
||||
const char* fc_py_home = getenv("FC_PYTHONHOME");
|
||||
--
|
||||
2.42.0
|
||||
|
@ -108,6 +108,10 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
qtx11extras
|
||||
];
|
||||
|
||||
patches = [
|
||||
./0001-NIXOS-don-t-ignore-PYTHONPATH.patch
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
"-Wno-dev" # turns off warnings which otherwise makes it hard to see what is going on
|
||||
"-DBUILD_FLAT_MESH:BOOL=ON"
|
||||
@ -127,10 +131,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
export NIX_LDFLAGS="-L${gfortran.cc}/lib64 -L${gfortran.cc}/lib $NIX_LDFLAGS";
|
||||
'';
|
||||
|
||||
# Their main() removes PYTHONPATH=, and we rely on it.
|
||||
preConfigure = ''
|
||||
sed '/putenv("PYTHONPATH/d' -i src/Main/MainGui.cpp
|
||||
|
||||
qtWrapperArgs+=(--prefix PYTHONPATH : "$PYTHONPATH")
|
||||
'';
|
||||
|
||||
|
@ -10,11 +10,6 @@
|
||||
, qt5
|
||||
, shiboken2
|
||||
}:
|
||||
|
||||
# Only build when Python<=3.10
|
||||
# See https://bugreports.qt.io/browse/PYSIDE-1864
|
||||
# "There are no plans to support Python versions > 3.10 in the 5.15 branch."
|
||||
disabledIf (pythonAtLeast "3.11") (
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "pyside2";
|
||||
version = "5.15.11";
|
||||
@ -80,4 +75,4 @@ stdenv.mkDerivation rec {
|
||||
homepage = "https://wiki.qt.io/Qt_for_Python";
|
||||
maintainers = with maintainers; [ gebner ];
|
||||
};
|
||||
})
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user