freecad: 0.21.2 → 1.0rc2 (#343592)

This commit is contained in:
kirillrdy 2024-09-30 15:58:04 +10:00 committed by GitHub
commit 5140208775
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 49 additions and 35 deletions

View File

@ -1,44 +1,43 @@
From c4f452ef6ae083ed21095313582f6d1bd775cbf3 Mon Sep 17 00:00:00 2001 commit c534a831c2f7186ebabe4e17f1e1df6d11ebff89
From: Andreas Rammhold <andreas@rammhold.de> Author: Samuel Rounce <me@samuelrounce.co.uk>
Date: Thu, 2 Nov 2023 17:32:07 +0100 Date: Thu Sep 5 22:17:21 2024 +0100
Subject: [PATCH] NIXOS: don't ignore PYTHONPATH
On NixOS or rather within nixpkgs we provide the runtime Python [PATCH] NIXOS: don't ignore PYTHONPATH
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 On NixOS or rather within nixpkgs we provide the runtime Python
shouldn't accept this patch (as is). What they might accept (once packages via the PYTHONPATH environment variable. FreeCAD tries its
support for older Python versions has been dropped) is removing the best to ignore Python environment variables that are being inherited
PYTHONPATH specific putenv calls. 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/Base/Interpreter.cpp | 1 +
src/Main/MainGui.cpp | 3 --- src/Main/MainGui.cpp | 3 ---
2 files changed, 1 insertion(+), 4 deletions(-) 2 files changed, 1 insertion(+), 3 deletions(-)
diff --git a/src/Base/Interpreter.cpp b/src/Base/Interpreter.cpp diff --git a/src/Base/Interpreter.cpp b/src/Base/Interpreter.cpp
index 52c47168af..9966bd0013 100644 index 2bdc54ccff..ee4f7fc070 100644
--- a/src/Base/Interpreter.cpp --- a/src/Base/Interpreter.cpp
+++ b/src/Base/Interpreter.cpp +++ b/src/Base/Interpreter.cpp
@@ -554,7 +554,9 @@ void initInterpreter(int argc,char *argv[]) @@ -593,6 +593,7 @@ void initInterpreter(int argc, char* argv[])
{
PyStatus status;
PyConfig config; PyConfig config;
PyConfig_InitIsolatedConfig(&config); PyConfig_InitIsolatedConfig(&config);
+ config.isolated = 0; config.isolated = 0;
+ config.use_environment = 1; + config.use_environment = 1;
config.user_site_directory = 1;
status = PyConfig_SetBytesArgv(&config, argc, argv); status = PyConfig_SetBytesArgv(&config, argc, argv);
if (PyStatus_Exception(status)) {
diff --git a/src/Main/MainGui.cpp b/src/Main/MainGui.cpp diff --git a/src/Main/MainGui.cpp b/src/Main/MainGui.cpp
index 48ae847ef4..28813df383 100644 index 36087cffd6..89d49d2cc6 100644
--- a/src/Main/MainGui.cpp --- a/src/Main/MainGui.cpp
+++ b/src/Main/MainGui.cpp +++ b/src/Main/MainGui.cpp
@@ -112,17 +112,14 @@ int main( int argc, char ** argv ) @@ -114,10 +114,8 @@ int main(int argc, char** argv)
// See https://forum.freecad.org/viewtopic.php?f=18&t=20600 // See https://forum.freecad.org/viewtopic.php?f=18&t=20600
// See Gui::Application::runApplication() // See Gui::Application::runApplication()
putenv("LC_NUMERIC=C"); putenv("LC_NUMERIC=C");
@ -49,13 +48,11 @@ index 48ae847ef4..28813df383 100644
#elif defined(__MINGW32__) #elif defined(__MINGW32__)
const char* mingw_prefix = getenv("MINGW_PREFIX"); const char* mingw_prefix = getenv("MINGW_PREFIX");
const char* py_home = getenv("PYTHONHOME"); const char* py_home = getenv("PYTHONHOME");
if (!py_home && mingw_prefix) @@ -125,7 +123,6 @@ int main(int argc, char** argv)
_putenv_s("PYTHONHOME", mingw_prefix); _putenv_s("PYTHONHOME", mingw_prefix);
}
#else #else
- _putenv("PYTHONPATH="); - _putenv("PYTHONPATH=");
// https://forum.freecad.org/viewtopic.php?f=4&t=18288 // https://forum.freecad.org/viewtopic.php?f=4&t=18288
// https://forum.freecad.org/viewtopic.php?f=3&t=20515 // https://forum.freecad.org/viewtopic.php?f=3&t=20515
const char* fc_py_home = getenv("FC_PYTHONHOME"); const char* fc_py_home = getenv("FC_PYTHONHOME");
--
2.42.0

View File

@ -0,0 +1,7 @@
--- a/src/3rdParty/OndselSolver/OndselSolver.pc.in
+++ b/src/3rdParty/OndselSolver/OndselSolver.pc.in
@@ -3,2 +3,2 @@
-libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
-includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
+libdir=@CMAKE_INSTALL_LIBDIR@
+includedir=@CMAKE_INSTALL_INCLUDEDIR@

View File

@ -9,12 +9,12 @@
, gfortran , gfortran
, gts , gts
, hdf5 , hdf5
, libGLU
, libXmu
, libf2c , libf2c
, libGLU
, libredwg , libredwg
, libsForQt5 , libsForQt5
, libspnav , libspnav
, libXmu
, medfile , medfile
, mpi , mpi
, ninja , ninja
@ -29,6 +29,7 @@
, vtk , vtk
, wrapGAppsHook3 , wrapGAppsHook3
, xercesc , xercesc
, yaml-cpp
, zlib , zlib
, withWayland ? false , withWayland ? false
}: }:
@ -50,6 +51,7 @@ let
matplotlib matplotlib
pivy pivy
ply ply
pybind11
pycollada pycollada
pyside2 pyside2
pyside2-tools pyside2-tools
@ -61,13 +63,14 @@ let
in in
stdenv.mkDerivation (finalAttrs: { stdenv.mkDerivation (finalAttrs: {
pname = "freecad"; pname = "freecad";
version = "0.21.2"; version = "1.0rc2";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "FreeCAD"; owner = "FreeCAD";
repo = "FreeCAD"; repo = "FreeCAD";
rev = finalAttrs.version; rev = finalAttrs.version;
hash = "sha256-OX4s9rbGsAhH7tLJkUJYyq2A2vCdkq/73iqYo9adogs="; hash = "sha256-kPmfx/C1fCYwBqh6ZOKZAVNVR9m3VryPmBKu3ksDD5E=";
fetchSubmodules = true;
}; };
nativeBuildInputs = [ nativeBuildInputs = [
@ -100,6 +103,7 @@ stdenv.mkDerivation (finalAttrs: {
opencascade-occt opencascade-occt
pivy pivy
ply # for openSCAD file support ply # for openSCAD file support
pybind11
pycollada pycollada
pyside2 pyside2
pyside2-tools pyside2-tools
@ -116,6 +120,7 @@ stdenv.mkDerivation (finalAttrs: {
swig swig
vtk vtk
xercesc xercesc
yaml-cpp
zlib zlib
] ]
++ lib.optionals spaceNavSupport [ ++ lib.optionals spaceNavSupport [
@ -125,12 +130,17 @@ stdenv.mkDerivation (finalAttrs: {
patches = [ patches = [
./0001-NIXOS-don-t-ignore-PYTHONPATH.patch ./0001-NIXOS-don-t-ignore-PYTHONPATH.patch
./0002-FreeCad-OndselSolver-pkgconfig.patch
]; ];
cmakeFlags = [ cmakeFlags = [
"-Wno-dev" # turns off warnings which otherwise makes it hard to see what is going on "-Wno-dev" # turns off warnings which otherwise makes it hard to see what is going on
"-DBUILD_FLAT_MESH:BOOL=ON" "-DBUILD_FLAT_MESH:BOOL=ON"
"-DBUILD_QT5=ON" "-DBUILD_QT5=ON"
"-DBUILD_DRAWING=ON"
"-DBUILD_FLAT_MESH:BOOL=ON"
"-DINSTALL_TO_SITEPACKAGES=OFF"
"-DFREECAD_USE_PYBIND11=ON"
"-DSHIBOKEN_INCLUDE_DIR=${shiboken2}/include" "-DSHIBOKEN_INCLUDE_DIR=${shiboken2}/include"
"-DSHIBOKEN_LIBRARY=Shiboken2::libshiboken" "-DSHIBOKEN_LIBRARY=Shiboken2::libshiboken"
( (
@ -201,7 +211,7 @@ stdenv.mkDerivation (finalAttrs: {
right at home with FreeCAD. right at home with FreeCAD.
''; '';
license = lib.licenses.lgpl2Plus; license = lib.licenses.lgpl2Plus;
maintainers = with lib.maintainers; [ gebner AndersonTorres ]; maintainers = with lib.maintainers; [ gebner AndersonTorres srounce ];
platforms = lib.platforms.linux; platforms = lib.platforms.linux;
}; };
}) })