Accepting request 785389 from science

- Fix runtime errors with Python 3.8:
  * 0001-fem-use-time.process_time-instead-of-removed-time.cl.patch
- Fix last python2 she-bang remainders, fix imports:
  * fix_unittestgui_tkinter_py3.patch
- Remove unnecessary opencv build dependency
- update to current 0.18 branch:
  * Fem: fix segmentation fault when opening contraint transform
    panel. Fix Python code
  * Part: the number of domains returned by TopoShape::getDomains
    must match with number of faces
  * apply fixes from master when building with occt 7.4
    + Drop 0002-fix-compile.patch
- Fix build with Python 3.8:
  Add update-swigpyrunin-for-python-3.8.patch
- Spec file cleanup
  * Drop xpm FreeCAD icon
  * Install PNGs/SVG icons in correct paths
  * Remove obsolete update_mime_database calls in %post
  * Remove obsolete conditionals for Leap 42.x

OBS-URL: https://build.opensuse.org/request/show/785389
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/FreeCAD?expand=0&rev=20
This commit is contained in:
Dominique Leuenberger 2020-03-16 09:20:10 +00:00 committed by Git OBS Bridge
commit 947ba0e843
8 changed files with 209 additions and 319 deletions

View File

@ -0,0 +1,86 @@
From 96af5fea1fab074e93011078974fd24fff1068f8 Mon Sep 17 00:00:00 2001
From: looooo <sppedflyer@gmail.com>
Date: Tue, 14 Jan 2020 13:45:35 +0100
Subject: [PATCH] fem: use time.process_time instead of removed time.clock()
[rebased on 0.18.4 branch]
---
src/Mod/Fem/femmesh/femmesh2mesh.py | 4 ++--
src/Mod/Fem/femsolver/calculix/writer.py | 9 +++++++--
src/Mod/Fem/femsolver/z88/writer.py | 8 ++++++--
3 files changed, 15 insertions(+), 6 deletions(-)
diff --git a/src/Mod/Fem/femmesh/femmesh2mesh.py b/src/Mod/Fem/femmesh/femmesh2mesh.py
index 9c0b4f1b9..e6159f2c7 100644
--- a/src/Mod/Fem/femmesh/femmesh2mesh.py
+++ b/src/Mod/Fem/femmesh/femmesh2mesh.py
@@ -90,7 +90,7 @@ def femmesh_2_mesh(myFemMesh, myResults=None):
# This code generates a dict and a faceCode for each face of all elements
# All faceCodes are than sorted.
- start_time = time.clock()
+ start_time = time.process_time()
faceCodeList = []
faceCodeDict = {}
@@ -194,6 +194,6 @@ def femmesh_2_mesh(myFemMesh, myResults=None):
output_mesh.extend(triangle)
# print('my 2. triangle: ', triangle)
- end_time = time.clock()
+ end_time = time.process_time()
print('Mesh by surface search method: ', end_time - start_time)
return output_mesh
diff --git a/src/Mod/Fem/femsolver/calculix/writer.py b/src/Mod/Fem/femsolver/calculix/writer.py
index e9d9e9bae..33302cefa 100644
--- a/src/Mod/Fem/femsolver/calculix/writer.py
+++ b/src/Mod/Fem/femsolver/calculix/writer.py
@@ -69,12 +69,17 @@ class FemInputWriterCcx(FemInputWriter.FemInputWriter):
FreeCAD.Console.PrintMessage('FemInputWriterCcx --> self.file_name --> ' + self.file_name + '\n')
def write_calculix_input_file(self):
- timestart = time.clock()
+ timestart = time.process_time()
+ FreeCAD.Console.PrintMessage("Start writing CalculiX input file\n")
+ FreeCAD.Console.PrintMessage("Write ccx input file to: {}\n".format(self.file_name))
if self.solver_obj.SplitInputWriter is True:
self.write_calculix_splitted_input_file()
else:
self.write_calculix_one_input_file()
- writing_time_string = "Writing time input file: " + str(round((time.clock() - timestart), 2)) + " seconds"
+ writing_time_string = (
+ "Writing time CalculiX input file: {} seconds"
+ .format(round((time.process_time() - timestart), 2))
+ )
if self.femelement_count_test is True:
FreeCAD.Console.PrintMessage(writing_time_string + ' \n\n')
return self.file_name
diff --git a/src/Mod/Fem/femsolver/z88/writer.py b/src/Mod/Fem/femsolver/z88/writer.py
index e141ab9f0..cdcaff63b 100644
--- a/src/Mod/Fem/femsolver/z88/writer.py
+++ b/src/Mod/Fem/femsolver/z88/writer.py
@@ -61,7 +61,7 @@ class FemInputWriterZ88(FemInputWriter.FemInputWriter):
FreeCAD.Console.PrintMessage('FemInputWriterZ88 --> self.file_name --> ' + self.file_name + '\n')
def write_z88_input(self):
- timestart = time.clock()
+ timestart = time.process_time()
if not self.femnodes_mesh:
self.femnodes_mesh = self.femmesh.Nodes
if not self.femelement_table:
@@ -76,7 +76,11 @@ class FemInputWriterZ88(FemInputWriter.FemInputWriter):
self.write_z88_integration_properties()
self.write_z88_memory_parameter()
self.write_z88_solver_parameter()
- FreeCAD.Console.PrintMessage("Writing time input file: " + str(time.clock() - timestart) + ' \n\n')
+ writing_time_string = (
+ "Writing time input file: {} seconds"
+ .format(round((time.process_time() - timestart), 2))
+ )
+ FreeCAD.Console.PrintMessage(writing_time_string + " \n\n")
return self.dir_name
def set_z88_elparam(self):
--
2.25.1

View File

@ -1,278 +0,0 @@
diff --git a/src/3rdParty/salomesmesh/inc/Rn.h b/src/3rdParty/salomesmesh/inc/Rn.h
index 6ec871d93..e92d2275a 100644
--- a/src/3rdParty/salomesmesh/inc/Rn.h
+++ b/src/3rdParty/salomesmesh/inc/Rn.h
@@ -180,12 +180,12 @@ class R4: public R3
{
friend std::ostream& operator <<(std::ostream& f, const R4 & P )
{ f << P.x << ' ' << P.y << ' ' << P.z << ' ' << P.omega; return f; }
- friend istream& operator >>(istream& f, R4 & P)
+ friend std::istream& operator >>(std::istream& f, R4 & P)
{ f >> P.x >> P.y >> P.z >> P.omega ; return f; }
friend std::ostream& operator <<(std::ostream& f, const R4 * P )
{ f << P->x << ' ' << P->y << ' ' << P->z << ' ' << P->omega; return f; }
- friend istream& operator >>(istream& f, R4 * P)
+ friend std::istream& operator >>(std::istream& f, R4 * P)
{ f >> P->x >> P->y >> P->z >> P->omega ; return f; }
public:
diff --git a/src/Mod/Drawing/App/DrawingExport.cpp b/src/Mod/Drawing/App/DrawingExport.cpp
index 0c3c23231..550b12c25 100644
--- a/src/Mod/Drawing/App/DrawingExport.cpp
+++ b/src/Mod/Drawing/App/DrawingExport.cpp
@@ -81,6 +81,7 @@
#include <Base/Vector3D.h>
using namespace Drawing;
+using namespace std;
TopoDS_Edge DrawingOutput::asCircle(const BRepAdaptor_Curve& c) const
{
diff --git a/src/Mod/Part/App/Geometry.cpp b/src/Mod/Part/App/Geometry.cpp
index c206bfb63..8403ff29f 100644
--- a/src/Mod/Part/App/Geometry.cpp
+++ b/src/Mod/Part/App/Geometry.cpp
@@ -203,7 +203,7 @@ unsigned int Geometry::getMemSize (void) const
void Geometry::Save(Base::Writer &writer) const
{
const char c = Construction?'1':'0';
- writer.Stream() << writer.ind() << "<Construction value=\"" << c << "\"/>" << endl;
+ writer.Stream() << writer.ind() << "<Construction value=\"" << c << "\"/>" << std::endl;
}
void Geometry::Restore(Base::XMLReader &reader)
@@ -323,7 +323,7 @@ void GeomPoint::Save(Base::Writer &writer) const
<< "X=\"" << Point.x <<
"\" Y=\"" << Point.y <<
"\" Z=\"" << Point.z <<
- "\"/>" << endl;
+ "\"/>" << std::endl;
}
void GeomPoint::Restore(Base::XMLReader &reader)
@@ -793,7 +793,7 @@ void GeomBezierCurve::Save(Base::Writer& writer) const
<< writer.ind()
<< "<BezierCurve "
<< "PolesCount=\"" << poles.size() <<
- "\">" << endl;
+ "\">" << std::endl;
writer.incInd();
@@ -808,11 +808,11 @@ void GeomBezierCurve::Save(Base::Writer& writer) const
"\" Y=\"" << (*itp).y <<
"\" Z=\"" << (*itp).z <<
"\" Weight=\"" << (*itw) <<
- "\"/>" << endl;
+ "\"/>" << std::endl;
}
writer.decInd();
- writer.Stream() << writer.ind() << "</BezierCurve>" << endl ;
+ writer.Stream() << writer.ind() << "</BezierCurve>" << std::endl ;
}
void GeomBezierCurve::Restore(Base::XMLReader& reader)
@@ -1270,7 +1270,7 @@ void GeomBSplineCurve::Save(Base::Writer& writer) const
"\" KnotsCount=\"" << knots.size() <<
"\" Degree=\"" << degree <<
"\" IsPeriodic=\"" << (int) isperiodic <<
- "\">" << endl;
+ "\">" << std::endl;
writer.incInd();
@@ -1285,7 +1285,7 @@ void GeomBSplineCurve::Save(Base::Writer& writer) const
"\" Y=\"" << (*itp).y <<
"\" Z=\"" << (*itp).z <<
"\" Weight=\"" << (*itw) <<
- "\"/>" << endl;
+ "\"/>" << std::endl;
}
std::vector<double>::const_iterator itk;
@@ -1297,11 +1297,11 @@ void GeomBSplineCurve::Save(Base::Writer& writer) const
<< "<Knot "
<< "Value=\"" << (*itk)
<< "\" Mult=\"" << (*itm) <<
- "\"/>" << endl;
+ "\"/>" << std::endl;
}
writer.decInd();
- writer.Stream() << writer.ind() << "</BSplineCurve>" << endl ;
+ writer.Stream() << writer.ind() << "</BSplineCurve>" << std::endl ;
}
void GeomBSplineCurve::Restore(Base::XMLReader& reader)
@@ -1903,7 +1903,7 @@ void GeomCircle::Save(Base::Writer& writer) const
"\" NormalZ=\"" << normal.Z() <<
"\" AngleXU=\"" << AngleXU <<
"\" Radius=\"" << this->myCurve->Radius() <<
- "\"/>" << endl;
+ "\"/>" << std::endl;
}
void GeomCircle::Restore(Base::XMLReader& reader)
@@ -2132,7 +2132,7 @@ void GeomArcOfCircle::Save(Base::Writer &writer) const
"\" Radius=\"" << circle->Radius() <<
"\" StartAngle=\"" << this->myCurve->FirstParameter() <<
"\" EndAngle=\"" << this->myCurve->LastParameter() <<
- "\"/>" << endl;
+ "\"/>" << std::endl;
}
void GeomArcOfCircle::Restore(Base::XMLReader &reader)
@@ -2383,7 +2383,7 @@ void GeomEllipse::Save(Base::Writer& writer) const
<< "MajorRadius=\"" << this->myCurve->MajorRadius() << "\" "
<< "MinorRadius=\"" << this->myCurve->MinorRadius() << "\" "
<< "AngleXU=\"" << AngleXU << "\" "
- << "/>" << endl;
+ << "/>" << std::endl;
}
void GeomEllipse::Restore(Base::XMLReader& reader)
@@ -2653,7 +2653,7 @@ void GeomArcOfEllipse::Save(Base::Writer &writer) const
<< "AngleXU=\"" << AngleXU << "\" "
<< "StartAngle=\"" << this->myCurve->FirstParameter() << "\" "
<< "EndAngle=\"" << this->myCurve->LastParameter() << "\" "
- << "/>" << endl;
+ << "/>" << std::endl;
}
void GeomArcOfEllipse::Restore(Base::XMLReader &reader)
@@ -2826,7 +2826,7 @@ void GeomHyperbola::Save(Base::Writer& writer) const
<< "MajorRadius=\"" << this->myCurve->MajorRadius() << "\" "
<< "MinorRadius=\"" << this->myCurve->MinorRadius() << "\" "
<< "AngleXU=\"" << AngleXU << "\" "
- << "/>" << endl;
+ << "/>" << std::endl;
}
void GeomHyperbola::Restore(Base::XMLReader& reader)
@@ -3083,7 +3083,7 @@ void GeomArcOfHyperbola::Save(Base::Writer &writer) const
<< "AngleXU=\"" << AngleXU << "\" "
<< "StartAngle=\"" << this->myCurve->FirstParameter() << "\" "
<< "EndAngle=\"" << this->myCurve->LastParameter() << "\" "
- << "/>" << endl;
+ << "/>" << std::endl;
}
void GeomArcOfHyperbola::Restore(Base::XMLReader &reader)
@@ -3236,7 +3236,7 @@ void GeomParabola::Save(Base::Writer& writer) const
<< "NormalZ=\"" << normal.Z() << "\" "
<< "Focal=\"" << this->myCurve->Focal() << "\" "
<< "AngleXU=\"" << AngleXU << "\" "
- << "/>" << endl;
+ << "/>" << std::endl;
}
void GeomParabola::Restore(Base::XMLReader& reader)
@@ -3436,7 +3436,7 @@ void GeomArcOfParabola::Save(Base::Writer &writer) const
<< "AngleXU=\"" << AngleXU << "\" "
<< "StartAngle=\"" << this->myCurve->FirstParameter() << "\" "
<< "EndAngle=\"" << this->myCurve->LastParameter() << "\" "
- << "/>" << endl;
+ << "/>" << std::endl;
}
void GeomArcOfParabola::Restore(Base::XMLReader &reader)
@@ -3581,7 +3581,7 @@ void GeomLine::Save(Base::Writer &writer) const
"\" DirX=\"" << Dir.x <<
"\" DirY=\"" << Dir.y <<
"\" DirZ=\"" << Dir.z <<
- "\"/>" << endl;
+ "\"/>" << std::endl;
}
void GeomLine::Restore(Base::XMLReader &reader)
{
@@ -3722,7 +3722,7 @@ void GeomLineSegment::Save (Base::Writer &writer) const
"\" EndX=\"" << End.x <<
"\" EndY=\"" << End.y <<
"\" EndZ=\"" << End.z <<
- "\"/>" << endl;
+ "\"/>" << std::endl;
}
void GeomLineSegment::Restore (Base::XMLReader &reader)
diff --git a/src/Mod/Part/App/Geometry2d.cpp b/src/Mod/Part/App/Geometry2d.cpp
index fb1de909c..979465533 100644
--- a/src/Mod/Part/App/Geometry2d.cpp
+++ b/src/Mod/Part/App/Geometry2d.cpp
@@ -83,6 +83,7 @@
#include <Mod/Part/App/Geom2d/OffsetCurve2dPy.h>
using namespace Part;
+using namespace std;
extern const char* gce_ErrorStatusText(gce_ErrorType et);
diff --git a/src/Mod/Part/App/PropertyTopoShape.cpp b/src/Mod/Part/App/PropertyTopoShape.cpp
index d590a8553..892e568d4 100644
--- a/src/Mod/Part/App/PropertyTopoShape.cpp
+++ b/src/Mod/Part/App/PropertyTopoShape.cpp
@@ -281,11 +281,11 @@ static void BRepTools_Write(const TopoDS_Shape& Sh, Standard_OStream& S) {
static Standard_Boolean BRepTools_Write(const TopoDS_Shape& Sh,
const Standard_CString File)
{
- ofstream os;
+ std::ofstream os;
#if OCC_VERSION_HEX >= 0x060800
- OSD_OpenStream(os, File, ios::out);
+ OSD_OpenStream(os, File, std::ios::out);
#else
- os.open(File, ios::out);
+ os.open(File, std::ios::out);
#endif
if (!os.rdbuf()->is_open()) return Standard_False;
diff --git a/src/Mod/Raytracing/App/AppRaytracingPy.cpp b/src/Mod/Raytracing/App/AppRaytracingPy.cpp
index d48c51c97..1bb2b1b01 100644
--- a/src/Mod/Raytracing/App/AppRaytracingPy.cpp
+++ b/src/Mod/Raytracing/App/AppRaytracingPy.cpp
@@ -40,6 +40,8 @@
#include <Mod/Part/App/TopoShapePy.h>
#include <App/Application.h>
+using namespace std;
+
namespace Raytracing {
class Module : public Py::ExtensionModule<Module>
diff --git a/src/Mod/Raytracing/App/LuxFeature.cpp b/src/Mod/Raytracing/App/LuxFeature.cpp
index 930fe12b7..d1e0a0089 100644
--- a/src/Mod/Raytracing/App/LuxFeature.cpp
+++ b/src/Mod/Raytracing/App/LuxFeature.cpp
@@ -38,6 +38,7 @@
using namespace Raytracing;
+using namespace std;
PROPERTY_SOURCE(Raytracing::LuxFeature, Raytracing::RaySegment)
diff --git a/src/Mod/Raytracing/App/RayFeature.cpp b/src/Mod/Raytracing/App/RayFeature.cpp
index cdd2cb6dc..235a98685 100644
--- a/src/Mod/Raytracing/App/RayFeature.cpp
+++ b/src/Mod/Raytracing/App/RayFeature.cpp
@@ -36,6 +36,7 @@
using namespace Raytracing;
+using namespace std;
PROPERTY_SOURCE(Raytracing::RayFeature, Raytracing::RaySegment)
diff --git a/src/Mod/TechDraw/App/Geometry.cpp b/src/Mod/TechDraw/App/Geometry.cpp
index 123be7979..16e7487ee 100644
--- a/src/Mod/TechDraw/App/Geometry.cpp
+++ b/src/Mod/TechDraw/App/Geometry.cpp
@@ -75,6 +75,7 @@
using namespace TechDrawGeometry;
using namespace TechDraw;
+using namespace std;
// Collection of Geometric Features
Wire::Wire()

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ed50e632f9cc25ad508e8d89372e8f2e88dfb684d88212237314db440c2c5192
size 427463182
oid sha256:6d5e0772aaca0a5aeb6b9e7fef35420011bcf312c7853904c1399e388f648728
size 427464206

View File

@ -1,3 +1,30 @@
-------------------------------------------------------------------
Sun Mar 15 18:13:15 UTC 2020 - Stefan Brüns <stefan.bruens@rwth-aachen.de>
- Fix runtime errors with Python 3.8:
* 0001-fem-use-time.process_time-instead-of-removed-time.cl.patch
- Fix last python2 she-bang remainders, fix imports:
* fix_unittestgui_tkinter_py3.patch
- Remove unnecessary opencv build dependency
- update to current 0.18 branch:
* Fem: fix segmentation fault when opening contraint transform
panel. Fix Python code
* Part: the number of domains returned by TopoShape::getDomains
must match with number of faces
* apply fixes from master when building with occt 7.4
+ Drop 0002-fix-compile.patch
-------------------------------------------------------------------
Sat Mar 14 15:12:29 UTC 2020 - Stefan Brüns <stefan.bruens@rwth-aachen.de>
- Fix build with Python 3.8:
Add update-swigpyrunin-for-python-3.8.patch
- Spec file cleanup
* Drop xpm FreeCAD icon
* Install PNGs/SVG icons in correct paths
* Remove obsolete update_mime_database calls in %post
* Remove obsolete conditionals for Leap 42.x
-------------------------------------------------------------------
Sat Jan 25 11:03:06 UTC 2020 - Hans-Peter Jansen <hpj@urpla.net>
@ -8,18 +35,22 @@ Sat Jan 25 11:03:06 UTC 2020 - Hans-Peter Jansen <hpj@urpla.net>
Fri Jan 24 09:02:08 UTC 2020 - Adrian Schröter <adrian@suse.de>
- update to current 0.18 branch:
* fixes #0004182: Segfault when clicking constraints from a different viewport [skip ci]
* See discussion https://forum.freecadweb.org/viewtopic.php?f=3&t=41879
* fixes #0004233: Access violation and file corruption on undo duplicate sketch
* fixes #0004182: Segfault when clicking constraints from a
different viewport [skip ci]
* [Draft] ImportDXF 0.18 Bug upgrading from 0.16. See discussion
https://forum.freecadweb.org/viewtopic.php?f=3&t=41879
* fixes #0004233: Access violation and file corruption on undo
duplicate sketch
* FEM: py3 fix in selection widget
* FEM: selection widgets, add some error prints
* FEM: equations, fix reset edit mode
* [AddonManager] 0.18 Improve Non GitPython Error..
* ...Handling. Previous output when clicking Macros tab caused errors in Report View with no Macros loaded at all.
* fix encoding problem when clicking a link on StartPage if application is installed into a directory with non-ASCII characters
* [AddonManager] 0.18 Improve Non GitPython Error Handling.
Previous output when clicking Macros tab caused errors in
Report View with no Macros loaded at all.
* fix encoding problem when clicking a link on StartPage if
application is installed into a directory with non-ASCII characters
* [Arch] ArchMaterial 0.18 Fix Crash
-------------------------------------------------------------------
Thu Jan 23 16:41:29 UTC 2020 - Adrian Schröter <adrian@suse.de>

View File

@ -1,5 +1,5 @@
name: FreeCAD
version: 0.18.4
mtime: 1578760669
commit: 9ae129705652eec6be426211e5eaaa16c847b7c5
mtime: 1582676121
commit: 783e1346c7a078f5265c3f0c6a927d09a8c1fe70

View File

@ -41,16 +41,19 @@ Source2: FreeCADCmd.sh
Source3: FreeCAD_shared_mimeinfo
# PATCH-FIX-UPSTREAM 0001-Fix-build-with-pyside2-shiboken2-5.12.1.patch -- Fix build with shiboken2/pyside2 >= 5.12.1
Patch1: 0001-Fix-build-with-pyside2-shiboken2-5.12.1.patch
# PATCH-FIX-UPSTREAM 0002-fix-compile.patch
Patch2: 0002-fix-compile.patch
# PATCH-FIX-OPENSUSE qt-5.14.patch
Patch3: 0003-qt-5.14.patch
# PATCH-FIX-UPSTREAM https://github.com/FreeCAD/FreeCAD/commit/6eacb17b3e03d200.patch
Patch4: update-swigpyrunin-for-python-3.8.patch
# PATCH-FIX-UPSTREAM https://github.com/FreeCAD/FreeCAD/pull/2899
Patch5: 0001-fem-use-time.process_time-instead-of-removed-time.cl.patch
# PATCH-FIX-OPENSUSE Use correct import for Python 3 tkinter
Patch6: fix_unittestgui_tkinter_py3.patch
# Test suite fails on 32bit and I don't want to debug that anymore
ExcludeArch: %ix86 %arm ppc s390 s390x
BuildRequires: Coin-devel
%if 0%{?suse_version} >= 1330
BuildRequires: libboost_filesystem-devel >= 1.55
BuildRequires: libboost_graph-devel >= 1.55
BuildRequires: libboost_program_options-devel >= 1.55
@ -61,9 +64,6 @@ BuildRequires: libboost_signals-devel >= 1.55
%endif
BuildRequires: libboost_system-devel >= 1.55
BuildRequires: libboost_thread-devel >= 1.55
%else
BuildRequires: boost-devel >= 1.55
%endif
BuildRequires: cmake
BuildRequires: dos2unix
@ -78,6 +78,7 @@ BuildRequires: git
BuildRequires: glew-devel
BuildRequires: graphviz
BuildRequires: hdf5-devel
BuildRequires: hicolor-icon-theme
# We use the internal smesh version with fixes atm
#BuildRequires: smesh-devel
BuildRequires: libXerces-c-devel
@ -88,10 +89,9 @@ BuildRequires: make
BuildRequires: netgen-devel
# we use upstream OpenCASCADE instead of oce-devel atm
BuildRequires: occt-devel
BuildRequires: opencv-devel
BuildRequires: pkg-config
%if 0%{?suse_version} >= 1330
%if 0%{?suse_version}
# Qt5 & python3
BuildRequires: python3-devel
BuildRequires: python3-matplotlib
@ -120,7 +120,8 @@ Conflicts: python-pyside
# reported to break FreeCAD here
# https://forum.freecadweb.org/viewtopic.php?t=24610
Conflicts: python-pivy
%else
%endif
%if 0%{?fedora} > 18
BuildRequires: libshiboken-devel
BuildRequires: python-CXX-devel
BuildRequires: python-devel
@ -130,13 +131,6 @@ BuildRequires: python-pyside-tools
BuildRequires: pkgconfig(QtWebKit)
Requires: python-numpy
Requires: python-pyside
%if 0%{?suse_version} > 0
# Qt4 & python2
BuildRequires: libqt4-devel
BuildRequires: python-xml
%endif
%endif
%if 0%{?fedora} > 18
BuildRequires: qt5-qtbase-devel
%endif
@ -176,9 +170,9 @@ mv %_sourcedir/%name-%version %_builddir/%name-%version
%autopatch -p1
# fix env-script-interpreter
sed -i '1c#!%{__python2}' \
sed -i '1c#!%{__python3}' \
src/Mod/Test/testmakeWireString.py \
src/Mod/Test/unittestgui.py
src/Mod/Robot/MovieTool.py
# Fix "wrong-file-end-of-line-encoding" rpmlint warning
sed -i 's/\r$//' ChangeLog.txt
@ -194,7 +188,7 @@ rm src/3rdparty/Pivy-0.5 -fr
%build
mkdir build && cd build
# cmake macro would set standard libdir
# it needs an older specific zipios version -DFREECAD_USE_EXTERNAL_ZIPIOS=TRUE
# it needs an older specific zipios version -DFREECAD_USE_EXTERNAL_ZIPIOS=TRUE
printenv
cmake \
@ -207,12 +201,10 @@ cmake \
-DRESOURCEDIR=%{_datadir}/%{name} \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CXX_FLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing" \
%if 0%{?suse_version} >= 1330
-DPYTHON_EXECUTABLE=/usr/bin/python3 \
-DSHIBOKEN_INCLUDE_DIR=/usr/include/shiboken2/ \
-DPYSIDE_INCLUDE_DIR=/usr/include/PySide2/ \
-DBUILD_QT5=ON \
%endif
-DFREECAD_USE_EXTERNAL_PIVY:BOOL=TRUE \
-DBUILD_MESH_PART:BOOL=ON \
-DBUILD_OPENSCAD:BOOL=ON \
@ -258,8 +250,15 @@ chmod 755 %{buildroot}%{x_prefix}/Mod/Robot/MovieTool.py \
%{buildroot}%{x_prefix}/Mod/Test/unittestgui.py
# Move desktop icon in the correct location
mkdir -p %{buildroot}%{_datadir}/pixmaps
mv %{buildroot}%{_datadir}/%{name}/freecad.xpm %{buildroot}%{_datadir}/pixmaps/freecad.xpm
mkdir -p %{buildroot}%{_datadir}/icons/hicolor/scalable
for size in 64 48 32 16; do
mkdir -p %{buildroot}%{_datadir}/icons/hicolor/${size}x${size}/
mv %{buildroot}%{_datadir}/%{name}/freecad-icon-${size}.png \
%{buildroot}%{_datadir}/icons/hicolor/${size}x${size}/freecad.png
done
mv %{buildroot}%{_datadir}/%{name}/freecad.svg %{buildroot}%{_datadir}/icons/hicolor/scalable
mv %{buildroot}%{_datadir}/%{name}/freecad-doc.png %{buildroot}%{_datadir}/icons/hicolor/64x64/
rm %{buildroot}%{_datadir}/%{name}/freecad.xpm
%suse_update_desktop_file -c %{name} "%{name}" "3D CAD Modeler" %{name} "freecad" Education Engineering
@ -297,13 +296,9 @@ ln -s -t %{buildroot}/usr/bin %{x_prefix}/bin/FreeCADCmd
%fdupes -s %{buildroot}
%post
/sbin/ldconfig
%mime_database_post
%post -p /sbin/ldconfig
%postun
/sbin/ldconfig
%mime_database_postun
%postun -p /sbin/ldconfig
%files
%license LICENSE
@ -313,7 +308,7 @@ ln -s -t %{buildroot}/usr/bin %{x_prefix}/bin/FreeCADCmd
%{_libdir}/%{name}
%{_datadir}/%{name}/
%{_datadir}/mime/packages/%{name}.xml
%{_datadir}/pixmaps/freecad.xpm
%{_datadir}/applications/%{name}.desktop
%{_datadir}/icons/hicolor/*/freecad*.{png,svg}
%changelog

View File

@ -0,0 +1,29 @@
diff --git a/src/Mod/Test/unittestgui.py b/src/Mod/Test/unittestgui.py
index 6e93079b8..e6125a694 100755
--- a/src/Mod/Test/unittestgui.py
+++ b/src/Mod/Test/unittestgui.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
"""
GUI framework and application for use with Python unit testing framework.
Execute tests written using the framework provided by the 'unittest' module.
@@ -29,12 +29,15 @@ __version__ = "$Revision: 2.0 $"[11:-2]
import unittest
import sys
-import Tkinter
-import tkMessageBox
+if sys.version_info.major >= 3:
+ import tkinter as tk
+ from tkinter import messagebox as tkMessageBox
+else:
+ import Tkinter as tk
+ import tkMessageBox
import traceback
import string
-tk = Tkinter # Alternative to the messy 'from Tkinter import *' often seen
##############################################################################

View File

@ -0,0 +1,27 @@
From 6eacb17b3e03d20039b85c9daebab9e44386d6bf Mon Sep 17 00:00:00 2001
From: Richard <hobbes1069@gmail.com>
Date: Thu, 17 Oct 2019 11:20:10 -0500
Subject: [PATCH] Update swigpyrun.in for Python 3.8
In Python 3.8 some functions related to thread state were intentionally made private.
This fix (specific to FreeCAD) was suggested here:
https://bugs.python.org/issue35886
---
src/Base/swigpyrun.inl | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/Base/swigpyrun.inl b/src/Base/swigpyrun.inl
index 0eedaaa87a9..65bba62db3c 100644
--- 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);