commit:     b0e9736af21b54b778c8cfb8d1ceba7bf8fb4a0b
Author:     Paul Zander <negril.nx+gentoo <AT> gmail <DOT> com>
AuthorDate: Sun Jan 12 22:05:38 2025 +0000
Commit:     Nowa Ammerlaan <nowa <AT> gentoo <DOT> org>
CommitDate: Tue Jan 14 08:54:46 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=b0e9736a

sci-libs/ondselsolver: add 1.0.1_p20241127

Fix broken mangling so all tests pass.

Closes: https://bugs.gentoo.org/947934
Signed-off-by: Paul Zander <negril.nx+gentoo <AT> gmail.com>
Closes: https://github.com/gentoo/gentoo/pull/40110
Signed-off-by: Nowa Ammerlaan <nowa <AT> gentoo.org>

 sci-libs/ondselsolver/Manifest                     |   1 +
 .../ondselsolver-1.0.1-include-cstdint-gcc15.patch |  70 +++++++++
 ...lsolver-1.0.1-properly-demangle-typenames.patch | 173 +++++++++++++++++++++
 .../ondselsolver-1.0.1_p20241127.ebuild            |  35 +++++
 4 files changed, 279 insertions(+)

diff --git a/sci-libs/ondselsolver/Manifest b/sci-libs/ondselsolver/Manifest
index 8d120dd3e5d5..94934435ef72 100644
--- a/sci-libs/ondselsolver/Manifest
+++ b/sci-libs/ondselsolver/Manifest
@@ -1 +1,2 @@
 DIST ondselsolver-1.0.1_p20241024.tar.gz 4668075 BLAKE2B 
82e13168b2f6d988e411613584d9bb943afd9df73716a467d2681658d530e71173abcb31e432075dce8ebc1f0276ecb2b7b837bf057fb68f654c972e2d77f5b5
 SHA512 
918542fca4bfcb952d6d9500a0f3721549810dd2cde9adfb352d9301e0e1bf0fe1100a301316f15a6dcd18e36d371c58ba4a41b8f8e0878a77db4cbf054a095a
+DIST ondselsolver-1.0.1_p20241127.tar.gz 4669048 BLAKE2B 
6f6c4f9468b2474890b05ca394947aa91bc1780e1ef922bba40144a30c247db32d7a5de469ed27e426209013b07a137522bad9c220d9e1862f7e946696974b0b
 SHA512 
3504a6ab379f2d9d943a1a6da8f79abffebd7fe45fd3258f0bfeb0a789d73a2b68714c10e77e48987514c8acb23800412c10daa0046ed82dab4a2aab569851ff

diff --git 
a/sci-libs/ondselsolver/files/ondselsolver-1.0.1-include-cstdint-gcc15.patch 
b/sci-libs/ondselsolver/files/ondselsolver-1.0.1-include-cstdint-gcc15.patch
new file mode 100644
index 000000000000..9068c1cf2fad
--- /dev/null
+++ b/sci-libs/ondselsolver/files/ondselsolver-1.0.1-include-cstdint-gcc15.patch
@@ -0,0 +1,70 @@
+From 432aa45ca37ecc3e15a8fb4a62ebf85b0a189775 Mon Sep 17 00:00:00 2001
+From: Paul Zander <[email protected]>
+Date: Sat, 11 Jan 2025 00:14:18 +0100
+Subject: [PATCH] include cstdint [gcc15]
+
+Signed-off-by: Paul Zander <[email protected]>
+
+diff --git a/OndselSolver/Constraint.h b/OndselSolver/Constraint.h
+index 119b627..a7409a8 100644
+--- a/OndselSolver/Constraint.h
++++ b/OndselSolver/Constraint.h
+@@ -8,6 +8,7 @@
+ 
+ #pragma once
+ 
++#include <cstdint>
+ #include <memory>
+ 
+ #include "enum.h"
+diff --git a/OndselSolver/DirectionCosineConstraintIqcJqc.h 
b/OndselSolver/DirectionCosineConstraintIqcJqc.h
+index 5d68fcd..c81a41f 100644
+--- a/OndselSolver/DirectionCosineConstraintIqcJqc.h
++++ b/OndselSolver/DirectionCosineConstraintIqcJqc.h
+@@ -9,6 +9,7 @@
+ #pragma once
+ 
+ #include "DirectionCosineConstraintIqcJc.h"
++#include <cstdint>
+ 
+ namespace MbD {
+     class DirectionCosineConstraintIqcJqc : public 
DirectionCosineConstraintIqcJc
+diff --git a/OndselSolver/DispCompIecJecO.h b/OndselSolver/DispCompIecJecO.h
+index 74a1ca4..da3243a 100644
+--- a/OndselSolver/DispCompIecJecO.h
++++ b/OndselSolver/DispCompIecJecO.h
+@@ -9,6 +9,7 @@
+ #pragma once
+ 
+ #include "KinematicIeJe.h"
++#include <cstdint>
+ 
+ namespace MbD {
+       class DispCompIecJecO : public KinematicIeJe
+diff --git a/OndselSolver/FullMatrix.h b/OndselSolver/FullMatrix.h
+index 1013791..90e54aa 100644
+--- a/OndselSolver/FullMatrix.h
++++ b/OndselSolver/FullMatrix.h
+@@ -9,6 +9,7 @@
+ #pragma once
+ 
+ #include <cmath>
++#include <cstdint>
+ #include <memory>
+ 
+ #include "RowTypeMatrix.h"
+diff --git a/OndselSolver/NewtonRaphson.h b/OndselSolver/NewtonRaphson.h
+index 9d9fb19..bf0c517 100644
+--- a/OndselSolver/NewtonRaphson.h
++++ b/OndselSolver/NewtonRaphson.h
+@@ -8,6 +8,7 @@
+  
+ #pragma once
+ 
++#include <cstdint>
+ #include <memory>
+ #include <vector>
+ 
+-- 
+2.47.1
+

diff --git 
a/sci-libs/ondselsolver/files/ondselsolver-1.0.1-properly-demangle-typenames.patch
 
b/sci-libs/ondselsolver/files/ondselsolver-1.0.1-properly-demangle-typenames.patch
new file mode 100644
index 000000000000..20c6533d73a9
--- /dev/null
+++ 
b/sci-libs/ondselsolver/files/ondselsolver-1.0.1-properly-demangle-typenames.patch
@@ -0,0 +1,173 @@
+From 71c1f42d85ee1819741786255dc8876047398e8e Mon Sep 17 00:00:00 2001
+From: Paul Zander <[email protected]>
+Date: Sun, 12 Jan 2025 19:22:48 +0100
+Subject: [PATCH] properly demangle typenames
+
+Signed-off-by: Paul Zander <[email protected]>
+
+diff --git a/OndselSolver/ASMTItem.cpp b/OndselSolver/ASMTItem.cpp
+index a18e7c9..9d5383a 100644
+--- a/OndselSolver/ASMTItem.cpp
++++ b/OndselSolver/ASMTItem.cpp
+@@ -12,6 +12,7 @@
+ #include "ASMTAssembly.h"
+ #include "Constant.h"
+ #include <algorithm>
++#include "Demangle.h"
+ 
+ using namespace MbD;
+ 
+@@ -41,9 +42,7 @@ void MbD::ASMTItem::noop()
+ 
+ std::string MbD::ASMTItem::classname()
+ {
+-      std::string str = typeid(*this).name();
+-      auto answer = str.substr(11, str.size() - 11);
+-      return answer;
++      return demangle(typeid(*this).name());
+ }
+ 
+ void MbD::ASMTItem::setName(const std::string& str)
+diff --git a/OndselSolver/ASMTJoint.cpp b/OndselSolver/ASMTJoint.cpp
+index 40edd52..bb710e3 100644
+--- a/OndselSolver/ASMTJoint.cpp
++++ b/OndselSolver/ASMTJoint.cpp
+@@ -9,6 +9,7 @@
+ 
+ #include "ASMTJoint.h"
+ #include "Joint.h"
++#include "Demangle.h"
+ 
+ using namespace MbD;
+ 
+@@ -47,9 +48,7 @@ void MbD::ASMTJoint::storeOnLevel(std::ofstream& os, size_t 
level)
+ 
+ void MbD::ASMTJoint::storeOnTimeSeries(std::ofstream& os)
+ {
+-      std::string label = typeid(*this).name();
+-      label = label.substr(15, label.size() - 15);
+-      os << label << "Series\t" << fullName("") << std::endl;
++      os << demangle(typeid(*this).name()) << "Series\t" << fullName("") << 
std::endl;
+       ASMTItemIJ::storeOnTimeSeries(os);
+ }
+ 
+diff --git a/OndselSolver/Array.h b/OndselSolver/Array.h
+index 636e9a5..e270795 100644
+--- a/OndselSolver/Array.h
++++ b/OndselSolver/Array.h
+@@ -16,6 +16,7 @@
+ #include "Numeric.h"
+ #include <limits>
+ 
++#include "Demangle.h"
+ //#include "Symbolic.h"
+ 
+ namespace MbD {
+@@ -51,10 +52,7 @@ namespace MbD {
+               void atitimes(size_t i, double factor);
+ 
+               virtual std::ostream& printOn(std::ostream& s) const {
+-                      std::string str = typeid(*this).name();
+-                      auto classname = str.substr(11, str.size() - 11);
+-                      s << classname << std::endl;
+-                      return s;
++                      return s << demangle(typeid(*this).name()) << std::endl;
+               }
+               friend std::ostream& operator<<(std::ostream& s, const Array& 
array)
+               {
+diff --git a/OndselSolver/Demangle.h b/OndselSolver/Demangle.h
+new file mode 100644
+index 0000000..810936d
+--- /dev/null
++++ b/OndselSolver/Demangle.h
+@@ -0,0 +1,39 @@
++#ifndef DEMANGLE_H
++#define DEMANGLE_H 1
++#include <string>
++
++#ifdef _WIN32
++#include <typeinfo>
++namespace {
++std::string demangle(const char* mangled_name) noexcept {
++  return mangled_name;
++}
++}
++#else // __linux__
++#include <cxxabi.h>
++namespace {
++std::string demangle(const char* mangled_name) noexcept {
++  int error = 0;
++  char *demang_name = abi::__cxa_demangle(mangled_name, 0, 0, &error);
++
++  switch (error) {
++  case 0:
++    break;
++  case -1:
++    return "memory allocation failed";
++  case -2:
++    return "not a valid mangled name";
++  case -3:
++    return "invalid arguments";
++  default:
++    return "__cxa_demangle failed";
++  }
++
++  std::string name(demang_name);
++  free(demang_name);
++
++  return name.substr(name.find_last_of("::") + 1);
++}
++}
++#endif // __linux__
++#endif
+diff --git a/OndselSolver/Item.cpp b/OndselSolver/Item.cpp
+index 4435d5d..120cd3c 100644
+--- a/OndselSolver/Item.cpp
++++ b/OndselSolver/Item.cpp
+@@ -15,6 +15,7 @@
+ #include "Item.h"
+ #include "System.h"
+ #include "Symbolic.h"
++#include "Demangle.h"
+ 
+ using namespace MbD;
+ 
+@@ -44,10 +45,7 @@ void Item::initialize()
+ 
+ std::ostream& Item::printOn(std::ostream& s) const
+ {
+-      std::string str = typeid(*this).name();
+-      auto classname = str.substr(11, str.size() - 11);
+-      s << classname << std::endl;
+-      return s;
++      return s << demangle(typeid(*this).name()) << std::endl;
+ }
+ 
+ void Item::initializeLocally()
+diff --git a/OndselSolver/Symbolic.cpp b/OndselSolver/Symbolic.cpp
+index 75bcbb6..4961964 100644
+--- a/OndselSolver/Symbolic.cpp
++++ b/OndselSolver/Symbolic.cpp
+@@ -15,6 +15,7 @@
+ #include "Product.h"
+ #include "Sum.h"
+ #include "Power.h"
++#include "Demangle.h"
+ 
+ using namespace MbD;
+ 
+@@ -160,10 +161,7 @@ bool Symbolic::isConstant()
+ 
+ std::ostream& Symbolic::printOn(std::ostream& s) const
+ {
+-      std::string str = typeid(*this).name();
+-      auto classname = str.substr(11, str.size() - 11);
+-      s << classname;
+-      return s;
++      return s << demangle(typeid(*this).name());
+ }
+ 
+ std::shared_ptr<std::vector<Symsptr>> Symbolic::getTerms()
+-- 
+2.48.0
+

diff --git a/sci-libs/ondselsolver/ondselsolver-1.0.1_p20241127.ebuild 
b/sci-libs/ondselsolver/ondselsolver-1.0.1_p20241127.ebuild
new file mode 100644
index 000000000000..da2e1dccd90b
--- /dev/null
+++ b/sci-libs/ondselsolver/ondselsolver-1.0.1_p20241127.ebuild
@@ -0,0 +1,35 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake
+
+COMMIT=07785b7576a0655660badd845f06ed286208da1a
+
+DESCRIPTION="Assembly Constraints and Multibody Dynamics code"
+HOMEPAGE="https://github.com/Ondsel-Development/OndselSolver/";
+SRC_URI="https://github.com/Ondsel-Development/OndselSolver/archive/${COMMIT}.tar.gz
 -> ${P}.tar.gz"
+S="${WORKDIR}/OndselSolver-${COMMIT}"
+
+LICENSE="LGPL-2.1"
+SLOT="0"
+KEYWORDS="~amd64"
+
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+DEPEND="test? ( dev-cpp/gtest )"
+
+PATCHES=(
+       "${FILESDIR}/${PN}-1.0.1_p20241024-system-gtest.patch"
+       "${FILESDIR}/${PN}-1.0.1-properly-demangle-typenames.patch"
+)
+
+src_configure() {
+       local mycmakeargs=(
+               -DONDSELSOLVER_BUILD_TESTS=$(usex test)
+       )
+
+       cmake_src_configure
+}

Reply via email to