$ git diff --patch-with-stat --summary b54833345564d158d1ba85f7e41c36636b869008..059b8a99dcc9f073af28f71cd1101f3ca72ef9cd
.abf.yml | 2 +-
freecad-0.14-Version_h.patch | 10 ++++++++++
freecad-0.15-zipios.patch | 16 ++++++++++++++++
freecad-0.18-py38.patch | 30 ++++++++++++++++++++++++++++++
freecad.spec | 38 +++++++++++++++++++++++++++++++-------
5 files changed, 88 insertions(+), 8 deletions(-)
create mode 100644 freecad-0.14-Version_h.patch
create mode 100644 freecad-0.15-zipios.patch
create mode 100644 freecad-0.18-py38.patch
diff --git a/.abf.yml b/.abf.yml
index 11922a1..a110e00 100644
--- a/.abf.yml
+++ b/.abf.yml
@@ -1,2 +1,2 @@
sources:
- 0.18.2.tar.gz: 8d7efd381b65c01b2661d2561bb0547a2e69d29f
+ 0.18.3.tar.gz: 7824050fb35d8c1af9996126fcf8c054b69eaf8f
diff --git a/freecad-0.14-Version_h.patch b/freecad-0.14-Version_h.patch
new file mode 100644
index 0000000..74e978d
--- /dev/null
+++ b/freecad-0.14-Version_h.patch
@@ -0,0 +1,10 @@
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -1,4 +1,6 @@
+-add_subdirectory(Build)
++if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Build/Version.h)
++ add_subdirectory(Build)
++endif()
+ add_subdirectory(3rdParty)
+ add_subdirectory(Base)
+ add_subdirectory(App)
diff --git a/freecad-0.15-zipios.patch b/freecad-0.15-zipios.patch
new file mode 100644
index 0000000..260d9eb
--- /dev/null
+++ b/freecad-0.15-zipios.patch
@@ -0,0 +1,16 @@
+--- a/src/Base/CMakeLists.txt
++++ b/src/Base/CMakeLists.txt
+@@ -351,9 +351,11 @@ ENDIF(MSVC)
+ # Use external zipios++ if specified.
+ if(FREECAD_USE_EXTERNAL_ZIPIOS)
+ find_library(ZIPIOS_LIBRARY zipios)
+- find_path(ZIPIOS_INCLUDES zipios++/zipios-config.h)
++ find_path(ZIPIOS_INCLUDES NAMES
++ zipios++/zipios-config.h
++ zipios++/zipios-config.hpp)
+ if(ZIPIOS_LIBRARY)
+- message(STATUS "Found zipios++: ${ZIPIOS}")
++ message(STATUS "Found zipios++: ${ZIPIOS_LIBRARY}")
+ endif()
+ if(ZIPIOS_INCLUDES)
+ message(STATUS "Found zipios++ headers.")
diff --git a/freecad-0.18-py38.patch b/freecad-0.18-py38.patch
new file mode 100644
index 0000000..9913821
--- /dev/null
+++ b/freecad-0.18-py38.patch
@@ -0,0 +1,30 @@
+--- a/src/Base/swigpyrun.cpp
++++ b/src/Base/swigpyrun.cpp
+@@ -35,6 +35,16 @@
+ # pragma GCC diagnostic ignored "-Wcast-function-type"
+ # endif
+ #endif
++
++/* Temporary workaround for PyInterpreterState being made private in Python
++ * 3.8.
++#if PY_VERSION_HEX >= 0x03080000
++# define Py_BUILD_CORE
++# include "internal/pycore_pystate.h"
++# undef Py_BUILD_CORE
++#endif
++*/
++
+ namespace Swig_python {
+ #define SWIG_PYTHON_NO_BUILD_NONE
+ #include <swigpyrun.h>
+--- a/src/Base/swigpyrun.inl
++++ b/src/Base/swigpyrun.inl
+@@ -72,7 +72,7 @@ void cleanupSWIG_T(const char* TypeName)
+
+ PyObject *module, *dict;
+ PyInterpreterState *interp = PyThreadState_GET()->interp;
+- PyObject *modules = interp->modules;
++ PyObject *modules = PyImport_GetModuleDict();
+ module = PyDict_GetItemString(modules, "__builtin__");
+ if (module != NULL && PyModule_Check(module)) {
+ dict = PyModule_GetDict(module);
diff --git a/freecad.spec b/freecad.spec
index 35d7cd6..2b33b69 100644
--- a/freecad.spec
+++ b/freecad.spec
@@ -1,11 +1,16 @@
%define _disable_ld_no_undefined 1
%global plugins Complete Drawing Fem FreeCAD Image Import Inspection Mesh MeshPart Part Points QtUnit Raytracing ReverseEngineering Robot Sketcher Start Web PartDesignGui _PartDesign Spreadsheet SpreadsheetGui
+# Setup python target for shiboken so the right cmake file is imported.
+%global py_suffix %(%{__python3} -c "import sysconfig; print(sysconfig.get_config_var('SOABI'))")
+
%define __noautoreq /^\\\(libFreeCAD.*%(for i in %{plugins}; do echo -n "\\\|$i\\\|$iGui"; done)\\\)\\\(\\\|Gui\\\)\\.so/d
%define _disable_lto 1
+%bcond_with shiboken
+
Name: freecad
Summary: FreeCAD is a general purpose 3D CAD modeler
-Version: 0.18.2
+Version: 0.18.3
Release: 1
License: GPL and LGPL
Group: Graphics
@@ -14,6 +19,11 @@ Source0: https://github.com/FreeCAD/FreeCAD/archive/%{version}.tar.gz
Source1: freecad.desktop
Source2: freecad.1
Source3: %{name}.rpmlintrc
+
+Patch0: freecad-0.15-zipios.patch
+Patch1: freecad-0.14-Version_h.patch
+Patch2: freecad-0.18-py38.patch
+
BuildRequires: doxygen
BuildRequires: qt5-devel
BuildRequires: libxerces-c-devel
@@ -26,11 +36,13 @@ BuildRequires: python2-matplotlib
%endif
BuildRequires: eigen3
BuildRequires: hdf5-devel
+BuildRequires: smesh-devel
BuildRequires: spnav-devel
BuildRequires: boost-static-devel
BuildRequires: cmake(Qt5X11Extras)
BuildRequires: pkgconfig(egl)
BuildRequires: pkgconfig(xt)
+BuildRequires: pkgconfig(xext)
BuildRequires: pkgconfig(expat)
BuildRequires: pkgconfig(gl)
BuildRequires: pkgconfig(glu)
@@ -45,7 +57,8 @@ BuildRequires: pkgconfig(Qt5WebKitWidgets)
BuildRequires: pkgconfig(Qt5Svg)
BuildRequires: pkgconfig(Qt5UiTools)
BuildRequires: pkgconfig(zlib)
-BuildRequires: pyside2-tools
+BuildRequires: pkgconfig(python)
+BuildRequires: python-matplotlib
BuildRequires: cmake
BuildRequires: gcc-gfortran
BuildRequires: opencascade-devel
@@ -83,17 +96,28 @@ sed -i 's!-python2.7!!g' CMakeLists.txt
%define Werror_cflags %nil
#export CC=gcc
#export CXX=g++
-%cmake_qt5 -DBUILD_QT5=ON -DMEDFILE_INCLUDE_DIRS=%{_includedir}/med \
- -DCMAKE_INSTALL_PREFIX=%{_libdir}/%{name} \
+
+
+%cmake_qt5 -DBUILD_QT5=ON \
+ -DMEDFILE_INCLUDE_DIRS=%{_includedir}/med \
+ -DCMAKE_INSTALL_PREFIX=%{_libdir}/%{name} \
-DCMAKE_INSTALL_DATADIR=%{_datadir}/%{name} \
-DCMAKE_INSTALL_DOCDIR=%{_docdir}/%{name} \
-DCMAKE_INSTALL_INCLUDEDIR=%{_includedir} \
-DCMAKE_INSTALL_LIBDIR=%{_libdir}/%{name}/lib \
- -DPYTHON_SUFFIX="-python2.7" \
- -DPYTHON_CONFIG_SUFFIX="-python2.7" \
-DRESOURCEDIR=%{_datadir}/freecad \
+ -DPYTHON_EXECUTABLE=%{__python3} \
+%if %{with shiboken}
+ -DPYSIDE_INCLUDE_DIR=%{_includedir}/PySide2 \
+ -DSHIBOKEN_INCLUDE_DIR=%{_includedir}/shiboken2 \
+ -DPYSIDE_LIBRARY=%{_libdir}/libpyside2.%{py_suffix}.so \
+%endif
+ -DFREECAD_USE_EXTERNAL_SMESH=FALSE \
+ -DSMESH_INCLUDE_DIR=%{_includedir}/smesh \
+ -DOpenGL_GL_PREFERENCE=GLVND \
+ -DBUILD_QT5=ON \
-DUSE_BOOST_PYTHON=OFF
-%make VERBOSE=1
+%make_build VERBOSE=1
%install
%makeinstall_std -C build