summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Weber <xmw@gentoo.org>2013-04-27 22:49:15 +0000
committerMichael Weber <xmw@gentoo.org>2013-04-27 22:49:15 +0000
commitf74d835e04e0b17b8fb4ea19d67fc6d02e0d78b2 (patch)
treebeac8073bf57413459559bf172b86de1378b9117 /media-gfx/freecad
parentVersion bump (bug #467466), add caps use flag. (diff)
downloadgentoo-2-f74d835e04e0b17b8fb4ea19d67fc6d02e0d78b2.tar.gz
gentoo-2-f74d835e04e0b17b8fb4ea19d67fc6d02e0d78b2.tar.bz2
gentoo-2-f74d835e04e0b17b8fb4ea19d67fc6d02e0d78b2.zip
Taking main, revbump to fix automagic dep on libspnav[x] (bug 454150), add launcher icon (bug 416327), remove bundled libs (bug 467482), fix install path (bug 464854)
(Portage version: 2.2.0_alpha173/cvs/Linux x86_64, signed Manifest commit with key 62EEF090)
Diffstat (limited to 'media-gfx/freecad')
-rw-r--r--media-gfx/freecad/ChangeLog14
-rw-r--r--media-gfx/freecad/files/freecad-0.12.5284-no-3rdParty.patch9
-rw-r--r--media-gfx/freecad/files/freecad-0.12.5284-no-permissive.patch40
-rw-r--r--media-gfx/freecad/files/freecad-0.12.5284-occ-6.5.5.patch224
-rw-r--r--media-gfx/freecad/files/freecad-0.12.5284-salomesmesh-occ-6.5.5.patch228
-rw-r--r--media-gfx/freecad/files/freecad-0.13.1830-remove-qt3-support.patch33
-rw-r--r--media-gfx/freecad/freecad-0.12.5284-r3.ebuild128
-rw-r--r--media-gfx/freecad/freecad-0.13.1830.ebuild90
-rw-r--r--media-gfx/freecad/metadata.xml8
9 files changed, 770 insertions, 4 deletions
diff --git a/media-gfx/freecad/ChangeLog b/media-gfx/freecad/ChangeLog
index 317eb28dbe6a..85735b3a2a6d 100644
--- a/media-gfx/freecad/ChangeLog
+++ b/media-gfx/freecad/ChangeLog
@@ -1,6 +1,18 @@
# ChangeLog for media-gfx/freecad
# Copyright 1999-2013 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/media-gfx/freecad/ChangeLog,v 1.14 2013/03/07 15:54:35 axs Exp $
+# $Header: /var/cvsroot/gentoo-x86/media-gfx/freecad/ChangeLog,v 1.15 2013/04/27 22:49:15 xmw Exp $
+
+*freecad-0.13.1830 (27 Apr 2013)
+*freecad-0.12.5284-r3 (27 Apr 2013)
+
+ 27 Apr 2013; Michael Weber <xmw@gentoo.org> +freecad-0.12.5284-r3.ebuild,
+ +files/freecad-0.12.5284-no-3rdParty.patch,
+ +files/freecad-0.12.5284-no-permissive.patch,
+ +files/freecad-0.12.5284-occ-6.5.5.patch, +freecad-0.13.1830.ebuild,
+ +files/freecad-0.13.1830-remove-qt3-support.patch, metadata.xml:
+ Taking main, revbump to fix automagic dep on libspnav[x] (bug 454150), add
+ launcher icon (bug 416327), remove bundled libs (bug 467482), fix install
+ path (bug 464854)
07 Mar 2013; Ian Stakenvicius <axs@gentoo.org> freecad-0.12.5284-r2.ebuild:
adjust dependency of xerces-c, re-fixing bug 295849
diff --git a/media-gfx/freecad/files/freecad-0.12.5284-no-3rdParty.patch b/media-gfx/freecad/files/freecad-0.12.5284-no-3rdParty.patch
new file mode 100644
index 000000000000..d5797567b2c5
--- /dev/null
+++ b/media-gfx/freecad/files/freecad-0.12.5284-no-3rdParty.patch
@@ -0,0 +1,9 @@
+--- FreeCAD-0.12.5284/src/CMakeLists.txt
++++ FreeCAD-0.12.5284/src/CMakeLists.txt
+@@ -1,6 +1,5 @@
+
+ add_subdirectory(Build)
+-add_subdirectory(3rdParty)
+ add_subdirectory(Base)
+ add_subdirectory(App)
+ add_subdirectory(Main)
diff --git a/media-gfx/freecad/files/freecad-0.12.5284-no-permissive.patch b/media-gfx/freecad/files/freecad-0.12.5284-no-permissive.patch
new file mode 100644
index 000000000000..d19a92f4d7bc
--- /dev/null
+++ b/media-gfx/freecad/files/freecad-0.12.5284-no-permissive.patch
@@ -0,0 +1,40 @@
+--- FreeCAD-0.12.5284/src/Mod/Mesh/App/WildMagic4/Wm4Query2Filtered.inl
++++ FreeCAD-0.12.5284/src/Mod/Mesh/App/WildMagic4/Wm4Query2Filtered.inl
+@@ -55,7 +55,7 @@
+ Real fLen1 = Math<Real>::Sqrt(fX1*fX1 + fY1*fY1);
+ Real fScaledUncertainty = m_fUncertainty*fLen0*fLen1;
+
+- Real fDet2 = Det2(fX0,fY0,fX1,fY1);
++ Real fDet2 = this->Det2(fX0,fY0,fX1,fY1);
+ if (Math<Real>::FAbs(fDet2) >= fScaledUncertainty)
+ {
+ return (fDet2 > (Real)0.0 ? +1 : (fDet2 < (Real)0.0 ? -1 : 0));
+@@ -93,7 +93,7 @@
+ Real fLen2 = Math<Real>::Sqrt(fD2x*fD2x + fD2y*fD2y + fZ2*fZ2);
+ Real fScaledUncertainty = m_fUncertainty*fLen0*fLen1*fLen2;
+
+- Real fDet3 = Det3(fD0x,fD0y,fZ0,fD1x,fD1y,fZ1,fD2x,fD2y,fZ2);
++ Real fDet3 = this->Det3(fD0x,fD0y,fZ0,fD1x,fD1y,fZ1,fD2x,fD2y,fZ2);
+ if (Math<Real>::FAbs(fDet3) >= fScaledUncertainty)
+ {
+ return (fDet3 < (Real)0.0 ? 1 : (fDet3 > (Real)0.0 ? -1 : 0));
+--- FreeCAD-0.12.5284/src/Mod/Mesh/App/WildMagic4/Wm4Query3Filtered.in
++++ FreeCAD-0.12.5284/src/Mod/Mesh/App/WildMagic4/Wm4Query3Filtered.inl
+@@ -62,7 +62,7 @@
+ Real fLen2 = Math<Real>::Sqrt(fX2*fX2 + fY2*fY2 + fZ2*fZ2);
+ Real fScaledUncertainty = m_fUncertainty*fLen0*fLen1*fLen2;
+
+- Real fDet3 = Det3(fX0,fY0,fZ0,fX1,fY1,fZ1,fX2,fY2,fZ2);
++ Real fDet3 = this->Det3(fX0,fY0,fZ0,fX1,fY1,fZ1,fX2,fY2,fZ2);
+ if (Math<Real>::FAbs(fDet3) >= fScaledUncertainty)
+ {
+ return (fDet3 > (Real)0.0 ? +1 : (fDet3 < (Real)0.0 ? -1 : 0));
+@@ -115,7 +115,7 @@
+ Real fLen3 = Math<Real>::Sqrt(fD3x*fD3x+fD3y*fD3y+fD3z*fD3z+fW3*fW3);
+ Real fScaledUncertainty = m_fUncertainty*fLen0*fLen1*fLen2*fLen3;
+
+- Real fDet4 = Det4(fD0x,fD0y,fD0z,fW0,fD1x,fD1y,fD1z,fW1,fD2x,
++ Real fDet4 = this->Det4(fD0x,fD0y,fD0z,fW0,fD1x,fD1y,fD1z,fW1,fD2x,
+ fD2y,fD2z,fW2,fD3x,fD3y,fD3z,fW3);
+
+ if (Math<Real>::FAbs(fDet4) >= fScaledUncertainty)
diff --git a/media-gfx/freecad/files/freecad-0.12.5284-occ-6.5.5.patch b/media-gfx/freecad/files/freecad-0.12.5284-occ-6.5.5.patch
new file mode 100644
index 000000000000..1886f8eca952
--- /dev/null
+++ b/media-gfx/freecad/files/freecad-0.12.5284-occ-6.5.5.patch
@@ -0,0 +1,224 @@
+--- FreeCAD-0.12.5284/src/Mod/Part/App/TopoShape.cpp
++++ FreeCAD-0.12.5284/src/Mod/Part/App/TopoShape.cpp
+@@ -1370,7 +1370,7 @@
+
+ //circular profile
+ Handle(Geom_Circle) aCirc = new Geom_Circle (gp::XOY(), 1.0);
+- aCirc->Rotate (gp::OZ(), Standard_PI/2.);
++ aCirc->Rotate (gp::OZ(), M_PI/2.);
+
+ //perpendicular section
+ Handle(BRepAdaptor_HCurve) myPath = new BRepAdaptor_HCurve(path_adapt);
+@@ -1469,12 +1469,12 @@
+ }
+
+ gp_Pnt2d aPnt(0, 0);
+- gp_Dir2d aDir(2. * PI, pitch);
++ gp_Dir2d aDir(2. * M_PI, pitch);
+ gp_Ax2d aAx2d(aPnt, aDir);
+
+ Handle(Geom2d_Line) line = new Geom2d_Line(aAx2d);
+ gp_Pnt2d beg = line->Value(0);
+- gp_Pnt2d end = line->Value(sqrt(4.0*PI*PI+pitch*pitch)*(height/pitch));
++ gp_Pnt2d end = line->Value(sqrt(4.0*M_PI*M_PI+pitch*pitch)*(height/pitch));
+ Handle(Geom2d_TrimmedCurve) segm = GCE2d_MakeSegment(beg , end);
+
+ TopoDS_Edge edgeOnSurf = BRepBuilderAPI_MakeEdge(segm , surf);
+@@ -1772,7 +1772,7 @@
+ Standard_Real x3, y3, z3;
+
+ Handle_StlMesh_Mesh aMesh = new StlMesh_Mesh();
+- StlTransfer::BuildIncrementalMesh(this->_Shape, accuracy, aMesh);
++ StlTransfer::BuildIncrementalMesh(this->_Shape, accuracy, false, aMesh);
+ StlMesh_MeshExplorer xp(aMesh);
+ for (Standard_Integer nbd=1;nbd<=aMesh->NbDomains();nbd++) {
+ for (xp.InitTriangle (nbd); xp.MoreTriangle (); xp.NextTriangle ()) {
+--- FreeCAD-0.12.5284/src/Mod/Part/App/FeatureRevolution.cpp
++++ FreeCAD-0.12.5284/src/Mod/Part/App/FeatureRevolution.cpp
+@@ -71,7 +71,7 @@
+ try {
+ // Now, let's get the TopoDS_Shape
+ TopoDS_Shape revolve = base->Shape.getShape().revolve(gp_Ax1(pnt, dir),
+- Angle.getValue()/180.0f*Standard_PI);
++ Angle.getValue()/180.0f*M_PI);
+ if (revolve.IsNull())
+ return new App::DocumentObjectExecReturn("Resulting shape is null");
+ this->Shape.setValue(revolve);
+--- FreeCAD-0.12.5284/src/Mod/Part/App/PrimitiveFeature.cpp
++++ FreeCAD-0.12.5284/src/Mod/Part/App/PrimitiveFeature.cpp
+@@ -263,9 +263,9 @@
+ return new App::DocumentObjectExecReturn("Radius of sphere too small");
+ try {
+ BRepPrimAPI_MakeSphere mkSphere(Radius.getValue(),
+- Angle1.getValue()/180.0f*Standard_PI,
+- Angle2.getValue()/180.0f*Standard_PI,
+- Angle3.getValue()/180.0f*Standard_PI);
++ Angle1.getValue()/180.0f*M_PI,
++ Angle2.getValue()/180.0f*M_PI,
++ Angle3.getValue()/180.0f*M_PI);
+ TopoDS_Shape ResultShape = mkSphere.Shape();
+ this->Shape.setValue(ResultShape);
+ }
+@@ -321,9 +321,9 @@
+ gp_Ax2 ax2(pnt,dir);
+ BRepPrimAPI_MakeSphere mkSphere(ax2,
+ Radius2.getValue(),
+- Angle1.getValue()/180.0f*Standard_PI,
+- Angle2.getValue()/180.0f*Standard_PI,
+- Angle3.getValue()/180.0f*Standard_PI);
++ Angle1.getValue()/180.0f*M_PI,
++ Angle2.getValue()/180.0f*M_PI,
++ Angle3.getValue()/180.0f*M_PI);
+ Standard_Real scale = Radius1.getValue()/Radius2.getValue();
+ gp_Dir xDir = ax2.XDirection();
+ gp_Dir yDir = ax2.YDirection();
+@@ -380,7 +380,7 @@
+ try {
+ BRepPrimAPI_MakeCylinder mkCylr(Radius.getValue(),
+ Height.getValue(),
+- Angle.getValue()/180.0f*Standard_PI);
++ Angle.getValue()/180.0f*M_PI);
+ TopoDS_Shape ResultShape = mkCylr.Shape();
+ this->Shape.setValue(ResultShape);
+ }
+@@ -429,7 +429,7 @@
+ BRepPrimAPI_MakeCone mkCone(Radius1.getValue(),
+ Radius2.getValue(),
+ Height.getValue(),
+- Angle.getValue()/180.0f*Standard_PI);
++ Angle.getValue()/180.0f*M_PI);
+ TopoDS_Shape ResultShape = mkCone.Shape();
+ this->Shape.setValue(ResultShape);
+ }
+@@ -498,9 +498,9 @@
+ #else
+ BRepPrimAPI_MakeTorus mkTorus(Radius1.getValue(),
+ Radius2.getValue(),
+- Angle1.getValue()/180.0f*Standard_PI,
+- Angle2.getValue()/180.0f*Standard_PI,
+- Angle3.getValue()/180.0f*Standard_PI);
++ Angle1.getValue()/180.0f*M_PI,
++ Angle2.getValue()/180.0f*M_PI,
++ Angle3.getValue()/180.0f*M_PI);
+ const TopoDS_Solid& ResultShape = mkTorus.Solid();
+ #endif
+ this->Shape.setValue(ResultShape);
+--- FreeCAD-0.12.5284/src/Mod/Part/App/AppPartPy.cpp
++++ FreeCAD-0.12.5284/src/Mod/Part/App/AppPartPy.cpp
+@@ -492,7 +492,7 @@
+ d.SetCoord(vec.x, vec.y, vec.z);
+ }
+ Handle_Geom_Plane aPlane = new Geom_Plane(p, d);
+- BRepBuilderAPI_MakeFace Face(aPlane, 0.0, length, 0.0, width);
++ BRepBuilderAPI_MakeFace Face(aPlane, 0.0, length, 0.0, width, Precision::Confusion());
+ return new TopoShapeFacePy(new TopoShape((Face.Face())));
+ }
+ catch (Standard_DomainError) {
+--- FreeCAD-0.12.5284/src/Mod/Part/App/GeometrySurfacePyImp.cpp
++++ FreeCAD-0.12.5284/src/Mod/Part/App/GeometrySurfacePyImp.cpp
+@@ -79,7 +79,7 @@
+ s->Bounds(u1,u2,v1,v2);
+ if (!PyArg_ParseTuple(args, "|dddd", &u1,&u2,&v1,&v2))
+ return 0;
+- BRepBuilderAPI_MakeFace mkBuilder(s, u1, u2, v1, v2);
++ BRepBuilderAPI_MakeFace mkBuilder(s, u1, u2, v1, v2, Precision::Confusion());
+ TopoDS_Shape sh = mkBuilder.Shape();
+ return new TopoShapeFacePy(new TopoShape(sh));
+ }
+--- FreeCAD-0.12.5284/src/Mod/Part/App/Geometry.cpp
++++ FreeCAD-0.12.5284/src/Mod/Part/App/Geometry.cpp
+@@ -1252,7 +1252,7 @@
+ Handle_Geom_Surface s = Handle_Geom_Surface::DownCast(handle());
+ Standard_Real u1,u2,v1,v2;
+ s->Bounds(u1,u2,v1,v2);
+- BRepBuilderAPI_MakeFace mkBuilder(s, u1, u2, v1, v2);
++ BRepBuilderAPI_MakeFace mkBuilder(s, u1, u2, v1, v2, Precision::Confusion());
+ return mkBuilder.Shape();
+ }
+
+--- FreeCAD-0.12.5284/src/Mod/Part/App/PrimitiveFeature.cpp
++++ FreeCAD-0.12.5284/src/Mod/Part/App/PrimitiveFeature.cpp
+@@ -191,7 +191,7 @@
+ gp_Pnt pnt(0.0,0.0,0.0);
+ gp_Dir dir(0.0,0.0,1.0);
+ Handle_Geom_Plane aPlane = new Geom_Plane(pnt, dir);
+- BRepBuilderAPI_MakeFace mkFace(aPlane, 0.0, L, 0.0, W);
++ BRepBuilderAPI_MakeFace mkFace(aPlane, 0.0, L, 0.0, W, Precision::Confusion());
+
+ const char *error=0;
+ switch (mkFace.Error())
+--- FreeCAD-0.12.5284/src/Mod/Part/App/TopoShape.cpp
++++ FreeCAD-0.12.5284/src/Mod/Part/App/TopoShape.cpp
+@@ -1338,7 +1338,7 @@
+ double u1,u2,v1,v2;
+ surf->Bounds(u1,u2,v1,v2);
+
+- BRepBuilderAPI_MakeFace mkBuilder(surf, umin, umax, v1, v2);
++ BRepBuilderAPI_MakeFace mkBuilder(surf, umin, umax, v1, v2, Precision::Confusion());
+ return mkBuilder.Face();
+ }
+
+@@ -1391,7 +1391,7 @@
+
+ Standard_Real u1,u2,v1,v2;
+ mySurface->Bounds(u1,u2,v1,v2);
+- BRepBuilderAPI_MakeFace mkBuilder(mySurface, u1, u2, v1, v2);
++ BRepBuilderAPI_MakeFace mkBuilder(mySurface, u1, u2, v1, v2, Precision::Confusion());
+ return mkBuilder.Shape();
+ }
+
+@@ -1443,7 +1443,7 @@
+ mkSweep.Perform(tol, Standard_False, GeomAbs_C1, BSplCLib::MaxDegree(), 1000);
+
+ const Handle_Geom_Surface& surf = mkSweep.Surface();
+- BRepBuilderAPI_MakeFace mkBuilder(surf, umin, umax, vmin, vmax);
++ BRepBuilderAPI_MakeFace mkBuilder(surf, umin, umax, vmin, vmax, Precision::Confusion());
+ return mkBuilder.Face();
+ }
+
+--- FreeCAD-0.12.5284/src/Mod/Part/App/TopoShapeFacePyImp.cpp
++++ FreeCAD-0.12.5284/src/Mod/Part/App/TopoShapeFacePyImp.cpp
+@@ -135,7 +135,7 @@
+ return -1;
+ }
+
+- BRepBuilderAPI_MakeFace mkFace(S);
++ BRepBuilderAPI_MakeFace mkFace(S, Precision::Confusion());
+ if (bound) {
+ Py::List list(bound);
+ for (Py::List::iterator it = list.begin(); it != list.end(); ++it) {
+--- FreeCAD-0.12.5284/src/Mod/Fem/App/AppFemPy.cpp
++++ FreeCAD-0.12.5284/src/Mod/Fem/App/AppFemPy.cpp
+@@ -498,12 +498,12 @@
+
+ //Do a Monte Carlo approach and start from the Principal Axis System
+ //and rotate +/- 60° around each axis in a first iteration
+- double angle_range_min_x=-PI/3.0,angle_range_max_x=PI/3.0,
+- angle_range_min_y=-PI/3.0,angle_range_max_y=PI/3.0,
+- angle_range_min_z=-PI/3.0,angle_range_max_z=PI/3.0;
++ double angle_range_min_x=-M_PI/3.0,angle_range_max_x=M_PI/3.0,
++ angle_range_min_y=-M_PI/3.0,angle_range_max_y=M_PI/3.0,
++ angle_range_min_z=-M_PI/3.0,angle_range_max_z=M_PI/3.0;
+
+ //We rotate until we are 0.1° sure to be in the right position
+- for (step_size = (2.0*PI/it_steps);step_size>(2.0*PI/3600.0);step_size=(2.0*PI/it_steps))
++ for (step_size = (2.0*M_PI/it_steps);step_size>(2.0*M_PI/3600.0);step_size=(2.0*M_PI/it_steps))
+ {
+ for(alpha_x=angle_range_min_x;alpha_x<angle_range_max_x;alpha_x=alpha_x+step_size)
+ {
+@@ -744,11 +744,11 @@
+
+ //Do a Monte Carlo approach and start from the Principal Axis System
+ //and rotate +/- 60° around each axis in a first iteration
+- double angle_range_min_x=-PI/3.0,angle_range_max_x=PI/3.0,
+- angle_range_min_y=-PI/3.0,angle_range_max_y=PI/3.0,
+- angle_range_min_z=-PI/3.0,angle_range_max_z=PI/3.0;
++ double angle_range_min_x=-M_PI/3.0,angle_range_max_x=M_PI/3.0,
++ angle_range_min_y=-M_PI/3.0,angle_range_max_y=M_PI/3.0,
++ angle_range_min_z=-M_PI/3.0,angle_range_max_z=M_PI/3.0;
+
+- for (step_size = (2.0*PI/it_steps);step_size>(2.0*PI/360.0);step_size=(2.0*PI/it_steps))
++ for (step_size = (2.0*M_PI/it_steps);step_size>(2.0*M_PI/360.0);step_size=(2.0*M_PI/it_steps))
+ {
+ for(alpha_x=angle_range_min_x;alpha_x<angle_range_max_x;alpha_x=alpha_x+step_size)
+ {
diff --git a/media-gfx/freecad/files/freecad-0.12.5284-salomesmesh-occ-6.5.5.patch b/media-gfx/freecad/files/freecad-0.12.5284-salomesmesh-occ-6.5.5.patch
new file mode 100644
index 000000000000..50e30e6cfc09
--- /dev/null
+++ b/media-gfx/freecad/files/freecad-0.12.5284-salomesmesh-occ-6.5.5.patch
@@ -0,0 +1,228 @@
+--- FreeCAD-0.12.5284/src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshEditor.cpp
++++ FreeCAD-0.12.5284/src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshEditor.cpp
+@@ -1374,7 +1374,7 @@
+ const SMDS_MeshNode * n1,
+ const SMDS_MeshNode * n2)
+ {
+- double angle = 2*PI; // bad angle
++ double angle = 2*M_PI; // bad angle
+
+ // get normals
+ SMESH::Controls::TSequenceOfXYZ P1, P2;
+--- FreeCAD-0.12.5284/src/3rdParty/salomesmesh/src/SMESH/SMESH_Pattern.cpp
++++ FreeCAD-0.12.5284/src/3rdParty/salomesmesh/src/SMESH/SMESH_Pattern.cpp
+@@ -1234,7 +1234,7 @@
+ maxLen2 = Max( maxLen2, ( n[1]->myUV - n[2]->myUV ).SquareModulus() );
+ }
+ maxLen2 = Max( maxLen2, ( n[2]->myUV - node->myUV ).SquareModulus() );
+- minDiag = sqrt( maxLen2 ) * PI / 60.; // ~ maxLen * Sin( 3 deg )
++ minDiag = sqrt( maxLen2 ) * M_PI / 60.; // ~ maxLen * Sin( 3 deg )
+ }
+
+ // check if newUV is behind 3 dirs: n[0]-n[1], n[1]-n[2] and n[0]-n[2]
+@@ -1721,9 +1721,9 @@
+ if ( iDir == 1 )
+ aNorm[ iDir ].Reverse(); // along iDir isoline
+
+- double angle = tgt1.Angle( tgt2 ); // [-PI, PI]
++ double angle = tgt1.Angle( tgt2 ); // [-M_PI, M_PI]
+ // maybe angle is more than |PI|
+- if ( Abs( angle ) > PI / 2. ) {
++ if ( Abs( angle ) > M_PI / 2. ) {
+ // check direction of the last but one perpendicular isoline
+ TIsoNode* prevNode = bndNode2->GetNext( iDir, 0 );
+ bndNode1 = prevNode->GetBoundaryNode( 1 - iDir, 0 );
+@@ -1734,7 +1734,7 @@
+ double angle2 = tgt1.Angle( isoDir );
+ //cout << " isoDir: "<< isoDir.X() <<" "<<isoDir.Y() << " ANGLE: "<< angle << " "<<angle2<<endl;
+ if (angle2 * angle < 0 && // check the sign of an angle close to PI
+- Abs ( Abs ( angle ) - PI ) <= PI / 180. ) {
++ Abs ( Abs ( angle ) - M_PI ) <= M_PI / 180. ) {
+ //MESSAGE("REVERSE ANGLE");
+ angle = -angle;
+ }
+@@ -1746,7 +1746,7 @@
+ // cout << "bndNode1: " << bndNode1->myUV.X()<<" "<<bndNode1->myUV.Y()<< endl;
+ // cout << "bndNode2: " << bndNode2->myUV.X()<<" "<<bndNode2->myUV.Y()<<endl;
+ // cout <<" tgt: " << tgt1.X()<<" "<<tgt1.Y()<<" "<< tgt2.X()<<" "<<tgt2.Y()<<endl;
+- angle += ( angle < 0 ) ? 2. * PI : -2. * PI;
++ angle += ( angle < 0 ) ? 2. * M_PI : -2. * M_PI;
+ }
+ }
+ aTgt[ iDir ] = tgt1.Rotated( angle * ratio[ iDir ] ).XY();
+@@ -1785,7 +1785,7 @@
+ double initAngle = initTgt1.Angle( initTgt2 );
+ double angle = node->myDir[0].Angle( node->myDir[1] );
+ if ( reversed ) angle = -angle;
+- if ( initAngle > angle && initAngle - angle > PI / 2.1 ) {
++ if ( initAngle > angle && initAngle - angle > M_PI / 2.1 ) {
+ // find a close internal node
+ TIsoNode* nClose = 0;
+ list< TIsoNode* > testNodes;
+--- FreeCAD-0.12.5284/src/3rdParty/salomesmesh/src/Controls/SMESH_Controls.cpp
++++ FreeCAD-0.12.5284/src/3rdParty/salomesmesh/src/Controls/SMESH_Controls.cpp
+@@ -332,12 +332,12 @@
+ aMin = Min(aMin,A0);
+ }
+
+- return aMin * 180.0 / PI;
++ return aMin * 180.0 / M_PI;
+ }
+
+ double MinimumAngle::GetBadRate( double Value, int nbNodes ) const
+ {
+- //const double aBestAngle = PI / nbNodes;
++ //const double aBestAngle = M_PI / nbNodes;
+ const double aBestAngle = 180.0 - ( 360.0 / double(nbNodes) );
+ return ( fabs( aBestAngle - Value ));
+ }
+@@ -831,19 +831,19 @@
+ gp_XYZ N = GI.Crossed( GJ );
+
+ if ( N.Modulus() < gp::Resolution() )
+- return PI / 2;
++ return M_PI / 2;
+
+ N.Normalize();
+
+ double H = ( thePnt2 - theG ).Dot( N );
+- return asin( fabs( H / L ) ) * 180. / PI;
++ return asin( fabs( H / L ) ) * 180. / M_PI;
+ }
+
+ double Warping::GetBadRate( double Value, int /*nbNodes*/ ) const
+ {
+ // the warp is in the range [0.0,PI/2]
+ // 0.0 = good (no warp)
+- // PI/2 = bad (face pliee)
++ // M_PI/2 = bad (face pliee)
+ return Value;
+ }
+
+@@ -915,14 +915,14 @@
+ return 0.;
+
+ // Compute skew
+- static double PI2 = PI / 2.;
++ static double PI2 = M_PI / 2.;
+ if ( P.size() == 3 )
+ {
+ double A0 = fabs( PI2 - skewAngle( P( 3 ), P( 1 ), P( 2 ) ) );
+ double A1 = fabs( PI2 - skewAngle( P( 1 ), P( 2 ), P( 3 ) ) );
+ double A2 = fabs( PI2 - skewAngle( P( 2 ), P( 3 ), P( 1 ) ) );
+
+- return Max( A0, Max( A1, A2 ) ) * 180. / PI;
++ return Max( A0, Max( A1, A2 ) ) * 180. / M_PI;
+ }
+ else
+ {
+@@ -939,7 +939,7 @@
+ if ( A < Precision::Angular() )
+ return 0.;
+
+- return A * 180. / PI;
++ return A * 180. / M_PI;
+ }
+ }
+
+--- FreeCAD-0.12.5284/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_CompositeHexa_3D.cpp
++++ FreeCAD-0.12.5284/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_CompositeHexa_3D.cpp
+@@ -812,7 +812,7 @@
+ int iMyCommon;
+ if ( mySides.Contain( otherSide, &iMyCommon ) ) {
+ // check if normals of two faces are collinear at all vertices of a otherSide
+- const double angleTol = PI / 180 / 2;
++ const double angleTol = M_PI / 180 / 2;
+ int iV, nbV = otherSide.NbVertices(), nbCollinear = 0;
+ for ( iV = 0; iV < nbV; ++iV )
+ {
+--- FreeCAD-0.12.5284/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_RadialQuadrangle_1D2D.cpp
++++ FreeCAD-0.12.5284/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_RadialQuadrangle_1D2D.cpp
+@@ -355,8 +355,8 @@
+ for(; itn != theNodes.end(); itn++ ) {
+ CNodes.push_back( (*itn).second );
+ double ang = (*itn).first - fang;
+- if( ang>PI ) ang = ang - 2*PI;
+- if( ang<-PI ) ang = ang + 2*PI;
++ if( ang>M_PI ) ang = ang - 2*M_PI;
++ if( ang<-M_PI ) ang = ang + 2*M_PI;
+ Angles.Append( ang );
+ }
+ }
+@@ -404,7 +404,7 @@
+ // a segment of line
+ double fp, lp;
+ Handle(Geom_Circle) aCirc = Handle(Geom_Circle)::DownCast( getCurve( CircEdge, &fp, &lp ));
+- if( fabs(fabs(lp-fp)-PI) > Precision::Confusion() ) {
++ if( fabs(fabs(lp-fp)-M_PI) > Precision::Confusion() ) {
+ // not half of circle
+ return error(COMPERR_BAD_SHAPE);
+ }
+@@ -434,8 +434,8 @@
+ for(; itn != theNodes.end(); itn++ ) {
+ CNodes.push_back( (*itn).second );
+ double ang = (*itn).first - fang;
+- if( ang>PI ) ang = ang - 2*PI;
+- if( ang<-PI ) ang = ang + 2*PI;
++ if( ang>M_PI ) ang = ang - 2*M_PI;
++ if( ang<-M_PI ) ang = ang + 2*M_PI;
+ Angles.Append( ang );
+ }
+ const SMDS_MeshNode* NF = theNodes.begin()->second;
+@@ -587,8 +587,8 @@
+ for(; itn != theNodes.end(); itn++ ) {
+ CNodes.push_back( (*itn).second );
+ double ang = (*itn).first - fang;
+- if( ang>PI ) ang = ang - 2*PI;
+- if( ang<-PI ) ang = ang + 2*PI;
++ if( ang>M_PI ) ang = ang - 2*M_PI;
++ if( ang<-M_PI ) ang = ang + 2*M_PI;
+ Angles.Append( ang );
+ }
+ P1 = gp_Pnt( NF->X(), NF->Y(), NF->Z() );
+@@ -1055,7 +1055,7 @@
+ aLine = Handle(Geom_Line)::DownCast(C3);
+ }
+ bool ok = !aCirc.IsNull() && !aLine.IsNull();
+- if( fabs(fabs(lp-fp)-PI) > Precision::Confusion() ) {
++ if( fabs(fabs(lp-fp)-M_PI) > Precision::Confusion() ) {
+ // not half of circle
+ ok = false;
+ }
+--- FreeCAD-0.12.5284/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_QuadToTriaAdaptor.cpp
++++ FreeCAD-0.12.5284/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_QuadToTriaAdaptor.cpp
+@@ -1037,19 +1037,19 @@
+ double ang1 = fabs(VN1.Angle(VI1));
+ double ang2 = fabs(VN2.Angle(VI2));
+ double h1,h2;
+- if(ang1>PI/3.)
++ if(ang1>M_PI/3.)
+ h1 = VI1.Magnitude()/2;
+ else
+ h1 = VI1.Magnitude()*cos(ang1);
+- if(ang2>PI/3.)
++ if(ang2>M_PI/3.)
+ h2 = VI2.Magnitude()/2;
+ else
+ h2 = VI2.Magnitude()*cos(ang2);
+ double coef1 = 0.5;
+- if(ang1<PI/3)
++ if(ang1<M_PI/3)
+ coef1 -= cos(ang1)*0.25;
+ double coef2 = 0.5;
+- if(ang2<PI/3)
++ if(ang2<M_PI/3)
+ coef2 -= cos(ang1)*0.25;
+
+ SMDS_MeshNode* aNode1 = const_cast<SMDS_MeshNode*>(Ns1[4]);
+--- FreeCAD-0.12.5284/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_AutomaticLength.cpp
++++ FreeCAD-0.12.5284/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_AutomaticLength.cpp
+@@ -116,7 +116,7 @@
+ */
+ //================================================================================
+
+- const double a14divPI = 14. / PI;
++ const double a14divPI = 14. / M_PI;
+
+ inline double segLength(double S0, double edgeLen, double minLen )
+ {
diff --git a/media-gfx/freecad/files/freecad-0.13.1830-remove-qt3-support.patch b/media-gfx/freecad/files/freecad-0.13.1830-remove-qt3-support.patch
new file mode 100644
index 000000000000..8f761d8796d6
--- /dev/null
+++ b/media-gfx/freecad/files/freecad-0.13.1830-remove-qt3-support.patch
@@ -0,0 +1,33 @@
+--- freecad-0.13.1830/src/Mod/Arch/Resources/ui/archprefs-base.ui
++++ freecad-0.13.1830/src/Mod/Arch/Resources/ui/archprefs-base.ui
+@@ -309,7 +309,7 @@
+ </layout>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+- <pixmapfunction>qPixmapFromMimeSource</pixmapfunction>
++ <pixmapfunction></pixmapfunction>
+ <customwidgets>
+ <customwidget>
+ <class>Gui::ColorButton</class>
+--- freecad-0.13.1830/src/Mod/Draft/Resources/ui/userprefs-base.ui
++++ freecad-0.13.1830/src/Mod/Draft/Resources/ui/userprefs-base.ui
+@@ -1185,7 +1185,7 @@
+ </layout>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+- <pixmapfunction>qPixmapFromMimeSource</pixmapfunction>
++ <pixmapfunction></pixmapfunction>
+ <customwidgets>
+ <customwidget>
+ <class>Gui::FileChooser</class>
+--- freecad-0.13.1830/src/Mod/Draft/Resources/ui/userprefs-import.ui
++++ freecad-0.13.1830/src/Mod/Draft/Resources/ui/userprefs-import.ui
+@@ -536,7 +536,7 @@
+ </layout>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+- <pixmapfunction>qPixmapFromMimeSource</pixmapfunction>
++ <pixmapfunction></pixmapfunction>
+ <customwidgets>
+ <customwidget>
+ <class>Gui::FileChooser</class>
diff --git a/media-gfx/freecad/freecad-0.12.5284-r3.ebuild b/media-gfx/freecad/freecad-0.12.5284-r3.ebuild
new file mode 100644
index 000000000000..ca4375ba38db
--- /dev/null
+++ b/media-gfx/freecad/freecad-0.12.5284-r3.ebuild
@@ -0,0 +1,128 @@
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-gfx/freecad/freecad-0.12.5284-r3.ebuild,v 1.1 2013/04/27 22:49:15 xmw Exp $
+
+EAPI=5
+
+PYTHON_DEPEND=2
+
+inherit eutils multilib fortran-2 python cmake-utils
+
+DESCRIPTION="QT based Computer Aided Design application"
+HOMEPAGE="http://sourceforge.net/apps/mediawiki/free-cad/"
+SRC_URI="mirror://sourceforge/free-cad/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE=""
+
+RDEPEND="dev-cpp/eigen:3
+ dev-games/ode
+ dev-libs/boost
+ dev-libs/libf2c
+ dev-libs/libspnav[X]
+ dev-libs/xerces-c[icu]
+ dev-python/PyQt4[svg]
+ dev-python/pivy
+ dev-qt/qtgui:4
+ dev-qt/qtopengl:4
+ dev-qt/qtsvg:4
+ dev-qt/qtwebkit:4
+ dev-qt/qtxmlpatterns:4
+ media-libs/SoQt
+ media-libs/coin[doc]
+ sci-libs/gts
+ sci-libs/opencascade
+ sys-libs/zlib
+ virtual/glu"
+DEPEND="${RDEPEND}
+ >=dev-lang/swig-2.0.4-r1:0"
+
+# http://bugs.gentoo.org/show_bug.cgi?id=352435
+# http://www.gentoo.org/foundation/en/minutes/2011/20110220_trustees.meeting_log.txt
+RESTRICT="bindist mirror"
+
+S="${WORKDIR}/FreeCAD-${PV}"
+
+pkg_setup() {
+ fortran-2_pkg_setup
+ python_set_active_version 2
+}
+
+src_prepare() {
+ einfo remove bundled libs
+ rm -rf src/3rdParty/{Pivy{,-0.5},boost}
+ einfo cleanup build system
+ find . -name "configure*" -print -delete
+
+ epatch \
+ "${FILESDIR}"/${P}-gcc46.patch \
+ "${FILESDIR}"/${P}-removeoldswig.patch \
+ "${FILESDIR}"/${P}-glu.patch \
+ "${FILESDIR}"/${P}-nodir.patch \
+ "${FILESDIR}"/${P}-qt3support.patch \
+ "${FILESDIR}"/${P}-boost148.patch \
+ "${FILESDIR}"/${P}-nopivy.patch \
+ "${FILESDIR}"/${P}-no-permissive.patch
+
+ local my_cas_version=$(eselect opencascadee show 2>/dev/null || echo 6.5)
+ if [ "${my_cas_version}" > "6.5.0" ] ; then
+ epatch "${FILESDIR}"/${P}-occ-6.5.5.patch
+ epatch "${FILESDIR}"/${P}-salomesmesh-occ-6.5.5.patch
+ fi
+
+ local my_coin_version=$(best_version media-libs/coin)
+ local my_coin_path="${EROOT}"usr/share/doc/${my_coin_version##*/}/html
+ sed -e "s:/usr/share/doc/libcoin60-doc/html:${my_coin_path}:" \
+ -i cMake/FindCoin3DDoc.cmake || die
+
+ sed -e '/FREECAD_BUILD_FEM/s: ON): OFF):' \
+ -i CMakeLists.txt || die
+ #sed -e '/add_subdirectory(Fem)/d' \
+ # -e '/add_subdirectory(MeshPart)/d' \
+ # -i src/Mod/CMakeLists.txt || die
+}
+
+src_configure() {
+ local my_occ_env=${EROOT}etc/env.d/50opencascade
+ if [ -e "${EROOT}etc//env.d/51opencascade" ] ; then
+ my_occ_env=${EROOT}etc/env.d/51opencascade
+ fi
+ export CASROOT=$(sed -ne '/^CASROOT=/{s:.*=:: ; p}' $my_occ_env)
+
+ local mycmakeargs=(
+ -DOCC_INCLUDE_DIR="${CASROOT}"/inc
+ -DOCC_INCLUDE_PATH="${CASROOT}"/inc
+ -DOCC_LIBRARY="${CASROOT}"/lib/libTKernel.so
+ -DOCC_LIBRARY_DIR="${CASROOT}"/lib
+ -DOCC_LIB_PATH="${CASROOT}"/lib
+ -DCOIN3D_INCLUDE_DIR="${EROOT}"usr/include/coin
+ -DCOIN3D_LIBRARY="${EROOT}"usr/$(get_libdir)/libCoin.so
+ -DSOQT_LIBRARY="${EROOT}"usr/$(get_libdir)/libSoQt.so
+ -DSOQT_INCLUDE_PATH="${EROOT}"usr/include/coin
+ -DCMAKE_INSTALL_PREFIX="${EROOT}"usr/$(get_libdir)/${P}
+ )
+ cmake-utils_src_configure
+ ewarn "${P} will be built against opencascade version ${CASROOT}"
+}
+
+src_install() {
+ cmake-utils_src_install
+ insinto /usr/$(get_libdir)/${P}/Mod/Start
+ doins -r src/Mod/Start/StartPage
+
+ prune_libtool_files
+
+ make_wrapper FreeCAD \
+ "${EROOT}"usr/$(get_libdir)/${P}/bin/FreeCAD \
+ "" "${EROOT}"usr/$(get_libdir)/${P}/lib
+ make_wrapper FreeCADCmd \
+ "${EROOT}"usr/$(get_libdir)/${P}/bin/FreeCADCmd \
+ "" "${EROOT}"usr/$(get_libdir)/${P}/lib
+
+ newicon src/Main/icon.ico ${PN}.ico
+ make_desktop_entry FreeCAD
+
+ dodoc README.Linux ChangeLog.txt
+}
diff --git a/media-gfx/freecad/freecad-0.13.1830.ebuild b/media-gfx/freecad/freecad-0.13.1830.ebuild
new file mode 100644
index 000000000000..12bfbf1b7246
--- /dev/null
+++ b/media-gfx/freecad/freecad-0.13.1830.ebuild
@@ -0,0 +1,90 @@
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-gfx/freecad/freecad-0.13.1830.ebuild,v 1.1 2013/04/27 22:49:15 xmw Exp $
+
+EAPI=5
+
+PYTHON_DEPEND=2
+
+inherit eutils multilib fortran-2 python cmake-utils
+
+DESCRIPTION="QT based Computer Aided Design application"
+HOMEPAGE="http://www.freecadweb.org/"
+SRC_URI="mirror://sourceforge/free-cad/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS=""
+IUSE=""
+
+RDEPEND="dev-cpp/eigen:3
+ dev-games/ode
+ dev-libs/boost
+ dev-libs/libf2c
+ dev-libs/libspnav[X]
+ dev-libs/xerces-c[icu]
+ dev-python/PyQt4[svg]
+ dev-python/pivy
+ dev-qt/qtgui:4
+ dev-qt/qtopengl:4
+ dev-qt/qtsvg:4
+ dev-qt/qtwebkit:4
+ dev-qt/qtxmlpatterns:4
+ media-libs/SoQt
+ media-libs/coin[doc]
+ sci-libs/gts
+ sci-libs/opencascade
+ sys-libs/zlib
+ virtual/glu"
+DEPEND="${RDEPEND}
+ >=dev-lang/swig-2.0.4-r1:0"
+
+# http://bugs.gentoo.org/show_bug.cgi?id=352435
+# http://www.gentoo.org/foundation/en/minutes/2011/20110220_trustees.meeting_log.txt
+RESTRICT="bindist mirror"
+
+S="${WORKDIR}/FreeCAD-${PV}"
+
+pkg_setup() {
+ fortran-2_pkg_setup
+ python_set_active_version 2
+}
+
+src_prepare() {
+ einfo remove bundled libs
+ rm -rf src/3rdParty
+
+ epatch "${FILESDIR}"/${P}-remove-qt3-support.patch
+}
+
+src_configure() {
+ local my_occ_env=${EROOT}etc/env.d/50opencascade
+ if [ -e "${EROOT}etc//env.d/51opencascade" ] ; then
+ my_occ_env=${EROOT}etc/env.d/51opencascade
+ fi
+ export CASROOT=$(sed -ne '/^CASROOT=/{s:.*=:: ; p}' $my_occ_env)
+
+ local mycmakeargs=(
+ -DOCC_INCLUDE_DIR="${CASROOT}"/inc
+ -DOCC_INCLUDE_PATH="${CASROOT}"/inc
+ -DOCC_LIBRARY="${CASROOT}"/lib/libTKernel.so
+ -DOCC_LIBRARY_DIR="${CASROOT}"/lib
+ -DOCC_LIB_PATH="${CASROOT}"/lib
+ -DCOIN3D_INCLUDE_DIR="${EROOT}"usr/include/coin
+ -DCOIN3D_LIBRARY="${EROOT}"usr/$(get_libdir)/libCoin.so
+ -DSOQT_LIBRARY="${EROOT}"usr/$(get_libdir)/libSoQt.so
+ -DSOQT_INCLUDE_PATH="${EROOT}"usr/include/coin
+ -DCMAKE_BINARY_DIR="${EROOT}"usr/bin
+ -DCMAKE_INSTALL_PREFIX="${EROOT}"usr/$(get_libdir)/${P}
+ )
+ cmake-utils_src_configure
+ ewarn "${P} will be built against opencascade version ${CASROOT}"
+}
+
+src_install() {
+ cmake-utils_src_install
+
+ prune_libtool_files
+
+ dodoc README.Linux ChangeLog.txt
+}
diff --git a/media-gfx/freecad/metadata.xml b/media-gfx/freecad/metadata.xml
index 91f4e72fb544..59acc2cc580e 100644
--- a/media-gfx/freecad/metadata.xml
+++ b/media-gfx/freecad/metadata.xml
@@ -1,7 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
- <maintainer>
- <email>maintainer-needed@gentoo.org</email>
- </maintainer>
+<maintainer>
+<email>xmw@gentoo.org</email>
+<name>Michael Weber</name>
+</maintainer>
</pkgmetadata>
+