commit:     2e5e864309fe3fc63d82df289a48460e9101a086
Author:     Nicolas PARLANT <nicolas.parlant <AT> parhuet <DOT> fr>
AuthorDate: Tue Jun 24 06:44:03 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Thu Jun 26 19:54:33 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=2e5e8643

sci-mathematics/mathmod: add 12.1

It includes two patches from upstream for lto and render.

Due to the fix for rendering, media-libs/libglvnd is required as a run-dep.

Signed-off-by: Nicolas PARLANT <nicolas.parlant <AT> parhuet.fr>
Part-of: https://github.com/gentoo/gentoo/pull/42719
Closes: https://github.com/gentoo/gentoo/pull/42719
Signed-off-by: Sam James <sam <AT> gentoo.org>

 sci-mathematics/mathmod/Manifest                   |   1 +
 .../mathmod/files/mathmod-12.1-fix_render.patch    | 166 +++++++++++++++++++++
 .../mathmod/files/mathmod-12.1-type_mismatch.patch |  29 ++++
 sci-mathematics/mathmod/mathmod-12.1.ebuild        |  43 ++++++
 4 files changed, 239 insertions(+)

diff --git a/sci-mathematics/mathmod/Manifest b/sci-mathematics/mathmod/Manifest
index 1cd4834d00bc..a41980bfcbde 100644
--- a/sci-mathematics/mathmod/Manifest
+++ b/sci-mathematics/mathmod/Manifest
@@ -1 +1,2 @@
 DIST mathmod-12.0.tar.gz 9392067 BLAKE2B 
2144c4aa06c3c13bdb5dca333134195d92bea5dcf0478e80f2ca25b41e4c74344725cced3bc72fc4b4f571da5b3ec734b0ea05fc7b1f80566f8b83d229e5627f
 SHA512 
d8a247a14e03c4d6fb4812b4404338162d7ff79745ebe31c467a444fdb48441b950a9d39c7b31fedb3f2bb1961d3075e44eb264b863708bd48f949b8185d60c6
+DIST mathmod-12.1.tar.gz 9475468 BLAKE2B 
9aeb27578d4c17cc2d8414f95ddcd55910458fe49208c0cb0277439a3d5628f517d79644bdd8c7e1ec747482e14898cdcb2896f57ec02a3af3bc033ac28f6034
 SHA512 
2e7ed6e2d345ffc16d275ccebc41352b4fd21f0c085ff25ae35fda7329b103371ccfe7bff6b12d8df3ebb145deaaf8f2ddcaedf3190a5542d1db002e2adc7566

diff --git a/sci-mathematics/mathmod/files/mathmod-12.1-fix_render.patch 
b/sci-mathematics/mathmod/files/mathmod-12.1-fix_render.patch
new file mode 100644
index 000000000000..aa008177e1c4
--- /dev/null
+++ b/sci-mathematics/mathmod/files/mathmod-12.1-fix_render.patch
@@ -0,0 +1,166 @@
+From upstream. Fix render with >qt-6.6
+https://github.com/parisolab/mathmod/issues/280
+From f5d35f45acc6aa042c486ca60eaa5461c1e56b13 Mon Sep 17 00:00:00 2001
+From: Abderrahman Taha <[email protected]>
+Date: Mon, 23 Jun 2025 23:35:29 -0400
+Subject: [PATCH] #280 QT6: render
+
+---
+ ui_modules/mathmod.cpp | 78 +++++++++++++++++++++++++++++++++++-------
+ 1 file changed, 65 insertions(+), 13 deletions(-)
+
+diff --git a/ui_modules/mathmod.cpp b/ui_modules/mathmod.cpp
+index 9dac14f..f40cb56 100644
+--- a/ui_modules/mathmod.cpp
++++ b/ui_modules/mathmod.cpp
+@@ -20,6 +20,44 @@
+ #include "mathmod.h"
+ 
+ 
++#ifndef GLERROR_H
++#define GLERROR_H
++
++void _check_gl_error(const char *file, int line);
++
++///
++/// Usage
++/// [... some opengl calls]
++/// glCheckError();
++///
++#define check_gl_error() _check_gl_error(__FILE__,__LINE__)
++
++#endif // GLERROR_H
++
++using namespace std;
++
++void _check_gl_error(const char *file, int line) {
++    GLenum err (glGetError());
++
++    while(err!=GL_NO_ERROR) {
++        string error;
++
++        switch(err) {
++        case GL_INVALID_OPERATION:      error="INVALID_OPERATION";      break;
++        case GL_INVALID_ENUM:           error="INVALID_ENUM";           break;
++        case GL_INVALID_VALUE:          error="INVALID_VALUE";          break;
++        case GL_OUT_OF_MEMORY:          error="OUT_OF_MEMORY";          break;
++        case GL_INVALID_FRAMEBUFFER_OPERATION:  
error="INVALID_FRAMEBUFFER_OPERATION";  break;
++        default: error="UNKNOWN_ERROR";  break;
++        }
++
++        cerr << "GL_" << error.c_str() <<" - "<<file<<":"<<line<<endl;
++        err=glGetError();
++    }
++}
++
++
++
+ void MathMod::CalculateTexturePoints(int type)
+ {
+     double tmp, val[6]={0,0,0,0,0,0};
+@@ -1239,7 +1277,6 @@ void MathMod::CreateShaderProgram()
+        msgBox.adjustSize();
+        msgBox.exec();
+     }
+-
+     glAttachShader(shaderprogramId, vertexshader);
+     glAttachShader(shaderprogramId, fragmentshader);
+     glBindAttribLocation(shaderprogramId, 0, "in_Position");
+@@ -1452,6 +1489,16 @@ void MathMod::Winitialize_GL()
+         PutObjectInsideCube();
+         PutObjectInsideCubeOk=true;
+     }
++    // check OpenGL error
++    GLenum myGLEnum;
++    while ((myGLEnum = glGetError()) != GL_NO_ERROR) {
++        qDebug("Error_10 : ");
++        /*QMessageBox msgBox;
++        qDebug("Error_10: ");
++        msgBox.setText("Error_10 : " + QString::number(myGLEnum));
++        msgBox.adjustSize();
++        msgBox.exec();*/
++    }
+ }
+ 
+ void MathMod::UpdateGL()
+@@ -1604,11 +1651,11 @@ void MathMod::CopyData(ObjectProperties *scene)
+         glGenBuffers(2, vbo);
+         /* Bind our first VBO as being the active buffer and storing vertex 
attributes (coordinates) */
+         glBindBuffer(GL_ARRAY_BUFFER, vbo[0]);
+-        glBufferData(GL_ARRAY_BUFFER, 
sizeof(float)*10*(scene->VertxNumber+(12+60+36)),scene->ArrayNorVer_localPt, 
GL_STATIC_DRAW);
+-        glBindBuffer(GL_ARRAY_BUFFER, vbo[0]);
++        glBufferData(GL_ARRAY_BUFFER, 
sizeof(GL_FLOAT)*10*(scene->VertxNumber+(12+60+36)),scene->ArrayNorVer_localPt, 
GL_STATIC_DRAW);
++        //glBindBuffer(GL_ARRAY_BUFFER, vbo[0]);
+         /* Bind our first VBO as being the active buffer and storing vertex 
attributes (coordinates) */
+         glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, vbo[1]);
+-        glBufferData(GL_ELEMENT_ARRAY_BUFFER,sizeof(uint)*(scene->PolyNumber 
+ scene->NbPolygnNbVertexPtMinSize), scene->PolyIndices_localPt, 
GL_STATIC_DRAW);
++        
glBufferData(GL_ELEMENT_ARRAY_BUFFER,sizeof(GLuint)*(scene->PolyNumber + 
scene->NbPolygnNbVertexPtMinSize), scene->PolyIndices_localPt, GL_STATIC_DRAW);
+         size_t cOffset = 0;
+         size_t nOffset = cOffset + 4*sizeof( GL_FLOAT);
+         size_t vOffset = nOffset + 3*sizeof (GL_FLOAT);
+@@ -1618,31 +1665,35 @@ void MathMod::CopyData(ObjectProperties *scene)
+         glEnableVertexAttribArray(attribVertexPosition);
+         // set attrib arrays using glVertexAttribPointer()
+         glVertexAttribPointer(attribVertexPosition, 3, GL_FLOAT, false, 
10*sizeof( GL_FLOAT), (void*)vOffset);
+-        glVertexAttribPointer(attribVertexNormal, 3, GL_FLOAT, false, 
10*sizeof( GL_FLOAT), (void*)nOffset);
+         glVertexAttribPointer(attribVertexColor,4, GL_FLOAT, false, 
10*sizeof( GL_FLOAT), (void*)cOffset);
++        glVertexAttribPointer(attribVertexNormal, 3, GL_FLOAT, false, 
10*sizeof( GL_FLOAT), (void*)nOffset);
+         previousVertxNumber = scene->VertxNumber;
+         previousPolyNumberNbPolygnNbVertexPtMin = (scene->PolyNumber + 
scene->NbPolygnNbVertexPtMinSize);
+         firstaction++;
+     }
+-    else{
+-        if(scene->VertxNumber>previousVertxNumber)
++    else
++    {
++        glBindBuffer(GL_ARRAY_BUFFER, vbo[0]);
++        glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, vbo[1]);
++        if(scene->VertxNumber>previousVertxNumber>0)
+         {
+-            glBufferData(GL_ARRAY_BUFFER, 
sizeof(float)*10*(scene->VertxNumber+(12+60+36)), scene->ArrayNorVer_localPt, 
GL_STATIC_DRAW);
++            glBufferData(GL_ARRAY_BUFFER, 
sizeof(GL_FLOAT)*10*(scene->VertxNumber+(12+60+36)), 
scene->ArrayNorVer_localPt, GL_STATIC_DRAW);
+             previousVertxNumber = scene->VertxNumber;
+         }
+         else
+         {
+-            glBufferSubData(GL_ARRAY_BUFFER, 0, 
sizeof(float)*10*(scene->VertxNumber+(12+60+36)), scene->ArrayNorVer_localPt);
++            glBufferSubData(GL_ARRAY_BUFFER, 0, 
sizeof(GL_FLOAT)*10*(scene->VertxNumber+(12+60+36)), (void 
*)scene->ArrayNorVer_localPt);
+             previousVertxNumber = scene->VertxNumber;
+         }
++
+         if((scene->PolyNumber + 
scene->NbPolygnNbVertexPtMinSize)>previousPolyNumberNbPolygnNbVertexPtMin)
+         {
+-           
glBufferData(GL_ELEMENT_ARRAY_BUFFER,sizeof(uint)*(scene->PolyNumber + 
scene->NbPolygnNbVertexPtMinSize), scene->PolyIndices_localPt, GL_STATIC_DRAW);
+-           previousPolyNumberNbPolygnNbVertexPtMin =  (scene->PolyNumber + 
scene->NbPolygnNbVertexPtMinSize);
++            
glBufferData(GL_ELEMENT_ARRAY_BUFFER,sizeof(GLuint)*(scene->PolyNumber + 
scene->NbPolygnNbVertexPtMinSize), scene->PolyIndices_localPt, GL_STATIC_DRAW);
++            previousPolyNumberNbPolygnNbVertexPtMin =  (scene->PolyNumber + 
scene->NbPolygnNbVertexPtMinSize);
+         }
+         else
+         {
+-            glBufferSubData(GL_ELEMENT_ARRAY_BUFFER,0, 
sizeof(uint)*(scene->PolyNumber + scene->NbPolygnNbVertexPtMinSize), 
scene->PolyIndices_localPt);
++            glBufferSubData(GL_ELEMENT_ARRAY_BUFFER,0, 
sizeof(GLuint)*(scene->PolyNumber + scene->NbPolygnNbVertexPtMinSize), 
scene->PolyIndices_localPt);
+             previousPolyNumberNbPolygnNbVertexPtMin =  (scene->PolyNumber + 
scene->NbPolygnNbVertexPtMinSize);
+         }
+     }
+@@ -1652,11 +1703,13 @@ void MathMod::draw(ObjectProperties *scene)
+ {
+     if(!PutObjectInsideCubeOk)
+         return;
++
+     if (scene->componentsinfos.Interleave)
+     {
+         CopyData(scene);
+         scene->componentsinfos.Interleave = false;
+     }
++    glUseProgram(shaderprogramId);
+     // clear buffer
+     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+     // set modelview matrix
+@@ -1737,7 +1790,6 @@ void MathMod::draw(ObjectProperties *scene)
+         for (uint i = 0; i < scene->componentsinfos.NbComponentsType.size(); 
i++)
+             if (scene->componentsinfos.ThereisCND[i])
+                 DrawParisoCND(scene, i);
+-
+     // Draw Normales:
+     if (scene->norm == 1 && scene->componentsinfos.updateviewer)
+         DrawNormals(scene);

diff --git a/sci-mathematics/mathmod/files/mathmod-12.1-type_mismatch.patch 
b/sci-mathematics/mathmod/files/mathmod-12.1-type_mismatch.patch
new file mode 100644
index 000000000000..d4b8944b7f68
--- /dev/null
+++ b/sci-mathematics/mathmod/files/mathmod-12.1-type_mismatch.patch
@@ -0,0 +1,29 @@
+From upstream, fix lto-type-mismatch
+https://github.com/parisolab/mathmod/issues/279
+From dac6f48effe334062f91f236906211e922178f50 Mon Sep 17 00:00:00 2001
+From: Abderrahman Taha <[email protected]>
+Date: Thu, 19 Jun 2025 12:27:03 -0400
+Subject: [PATCH] =?UTF-8?q?#279=20ui=5Fmodules/comvar.h:21:12:=20warning:?=
+ =?UTF-8?q?=20type=20of=20=E2=80=98CalculFactor=E2=80=99=20does=20not=20ma?=
+ =?UTF-8?q?tch=20original=20declaration=20[-Wlto-type-mismatch]?=
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+---
+ ui_modules/parametersoptions.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/ui_modules/parametersoptions.cpp 
b/ui_modules/parametersoptions.cpp
+index a2d4b125..298109eb 100644
+--- a/ui_modules/parametersoptions.cpp
++++ b/ui_modules/parametersoptions.cpp
+@@ -24,7 +24,7 @@
+ #include <sstream>
+ #include <string>
+ int Threads[3]={8,1,64};
+-int CalculFactor[6]={4,4,4,8,8};
++int CalculFactor[5]={4,4,4,8,8};
+ int InitParGrid=50;
+ int InitIsoGrid=40;
+ static bool MACOS = false;

diff --git a/sci-mathematics/mathmod/mathmod-12.1.ebuild 
b/sci-mathematics/mathmod/mathmod-12.1.ebuild
new file mode 100644
index 000000000000..266e95209d57
--- /dev/null
+++ b/sci-mathematics/mathmod/mathmod-12.1.ebuild
@@ -0,0 +1,43 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit desktop qmake-utils xdg
+
+DESCRIPTION="Plot parametric and implicit surfaces"
+HOMEPAGE="https://github.com/parisolab/mathmod
+       https://sourceforge.net/projects/mathmod/
+       https://www.facebook.com/parisolab";
+SRC_URI="https://github.com/parisolab/mathmod/archive/${PV}.tar.gz -> 
${P}.tar.gz"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+       dev-qt/qtbase:6[gui,opengl,widgets]
+       media-libs/libglvnd
+"
+DEPEND="${RDEPEND}"
+
+PATCHES=(
+       # From upstream, to be removed with release 13.0
+       "${FILESDIR}"/${P}-type_mismatch.patch
+       "${FILESDIR}"/${P}-fix_render.patch
+)
+
+src_configure() {
+       eqmake6 MathMod.pro
+}
+
+src_install() {
+       dobin MathMod
+       insinto /usr/share/${P}
+       doins mathmodconfig.js mathmodcollection.js advancedmodels.js
+       local size
+       for size in 16 32 64; do
+               newicon -s ${size} 
images/icon/catenoid_mini_${size}x${size}.png catenoid.png
+       done
+       make_desktop_entry MathMod MathMod catenoid
+}

Reply via email to