commit:     2eae5bba7675d51c0eb71b4c17726b6c8699b681
Author:     Nicolas PARLANT <nicolas.parlant <AT> parhuet <DOT> fr>
AuthorDate: Tue Jun 24 00:56:01 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Thu Jun 26 19:54:32 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=2eae5bba

sci-libs/avogadrolibs: adapt lto/dot-a, cmake4, add DEP

fix lto/ODR violations with pending upstream PR, except with vtk
enabled (filter then).

add static-libs useflag for qtplugins libraries (previously
enabled by default).
use dot-a with qt6 even w/o static-libs, because libgwavi.a is required to
build avogadro2.

bump cmake_min for cmake4 compat.

add dev-libs/pegtl in DEPEND, required by vtk's cmake file.

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

 ...100.0.ebuild => avogadrolibs-1.100.0-r1.ebuild} | 40 ++++++---
 .../files/avogadrolibs-1.100-cmake4.patch          | 38 +++++++++
 .../files/avogadrolibs-1.100-fix_odr.patch         | 98 ++++++++++++++++++++++
 3 files changed, 166 insertions(+), 10 deletions(-)

diff --git a/sci-libs/avogadrolibs/avogadrolibs-1.100.0.ebuild 
b/sci-libs/avogadrolibs/avogadrolibs-1.100.0-r1.ebuild
similarity index 83%
rename from sci-libs/avogadrolibs/avogadrolibs-1.100.0.ebuild
rename to sci-libs/avogadrolibs/avogadrolibs-1.100.0-r1.ebuild
index 19472b5c3b31..d6004b49916c 100644
--- a/sci-libs/avogadrolibs/avogadrolibs-1.100.0.ebuild
+++ b/sci-libs/avogadrolibs/avogadrolibs-1.100.0-r1.ebuild
@@ -3,7 +3,7 @@
 
 EAPI=8
 
-inherit cmake
+inherit cmake dot-a flag-o-matic
 
 MY_PV_AVOGEN=1.98.0
 MY_PV_CRYSTALS=1.98.0
@@ -35,7 +35,7 @@ SRC_URI="
 LICENSE="BSD GPL-2+"
 SLOT="0"
 KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux"
-IUSE="archive doc hdf5 mmtf qt6 spglib test vtk"
+IUSE="archive doc hdf5 mmtf qt6 spglib static-libs test vtk"
 RESTRICT="!test? ( test )"
 REQUIRED_USE="
        test? ( qt6 )
@@ -62,6 +62,7 @@ RDEPEND="
 DEPEND="${RDEPEND}
        dev-cpp/eigen:3
        mmtf? ( dev-libs/mmtf-cpp )
+       vtk? ( dev-libs/pegtl )
 "
 BDEPEND="
        doc? ( app-text/doxygen )
@@ -73,6 +74,10 @@ PATCHES=(
        "${FILESDIR}/"${PN}-1.100-tests.patch
        # https://github.com/OpenChemistry/avogadrolibs/issues/1633
        "${FILESDIR}/"${PN}-1.100-fix-openbabel3.patch
+       # fix lto - ODR violations (except with vtk)
+       "${FILESDIR}/"${PN}-1.100-fix_odr.patch
+       # bump cmake_min. From upstream, to be removed with next version
+       "${FILESDIR}/"${PN}-1.100-cmake4.patch
 )
 
 # Static binary (requires ObjCryst++ to build otherwise)
@@ -136,15 +141,27 @@ src_configure() {
                -DUSE_LIBMSYM=OFF
        )
 
-       use qt6 && mycmakeargs+=(
-               -DBUILD_GPL_PLUGINS=ON
-               -DQT_VERSION=6
-       )
+       if use qt6; then
+               mycmakeargs+=(
+                       -DBUILD_GPL_PLUGINS=ON
+                       -DBUILD_STATIC_PLUGINS=$(usex static-libs)
+                       -DQT_VERSION=6
+               )
+
+               # even w/o static-libs due to libgwavi.a, required for avogadro2
+               lto-guarantee-fat
+       fi
 
-       use vtk && mycmakeargs+=(
-               -DBUNDLED_GENXRDPATTERN="${WORKDIR}/genXrdPattern"
-               -DUSE_SYSTEM_GENXRDPATTERN=OFF
-       )
+       if use vtk; then
+               mycmakeargs+=(
+                       -DBUNDLED_GENXRDPATTERN="${WORKDIR}/genXrdPattern"
+                       -DUSE_SYSTEM_GENXRDPATTERN=OFF
+               )
+
+               # -Werror=odr -Werror=lto-type-mismatch
+               # https://github.com/OpenChemistry/avogadrolibs/issues/2060
+               filter-lto
+       fi
 
        cmake_src_configure
 }
@@ -169,6 +186,9 @@ src_install() {
 
        cmake_src_install
 
+       # always strip due to libgwavi.a
+       use qt6 && strip-lto-bytecode "${ED}"
+
        # remove CONTRIBUTING, LICENSE and duplicate README
        rm -r "${ED}/usr/share/doc/${PF}/avogadrolibs" || die
 }

diff --git a/sci-libs/avogadrolibs/files/avogadrolibs-1.100-cmake4.patch 
b/sci-libs/avogadrolibs/files/avogadrolibs-1.100-cmake4.patch
new file mode 100644
index 000000000000..07595281b5b6
--- /dev/null
+++ b/sci-libs/avogadrolibs/files/avogadrolibs-1.100-cmake4.patch
@@ -0,0 +1,38 @@
+PR merged
+https://github.com/OpenChemistry/avogadrolibs/pull/2022.patch
+From 7edee1178f5cd95c3b81964ce39d529b413dbe22 Mon Sep 17 00:00:00 2001
+From: Eisuke Kawashima <[email protected]>
+Date: Thu, 5 Jun 2025 09:58:13 +0900
+Subject: [PATCH] build: bump cmake_minimum_required
+
+CMake 4 drops support of 3.4 or earlier
+
+note: FindPython is introduced in 3.12
+https://cmake.org/cmake/help/v3.12/release/3.12.html#modules
+
+Signed-off-by: Eisuke Kawashima <[email protected]>
+---
+ python/CMakeLists.txt                  | 2 +-
+ thirdparty/tinycolormap/CMakeLists.txt | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt
+index 2cb3d0e17b..ab6b073746 100644
+--- a/python/CMakeLists.txt
++++ b/python/CMakeLists.txt
+@@ -1,4 +1,4 @@
+-cmake_minimum_required(VERSION 3.3 FATAL_ERROR)
++cmake_minimum_required(VERSION 3.12 FATAL_ERROR)
+ 
+ if (NOT TARGET Avogadro::Core)
+   find_package(AvogadroLibs REQUIRED)
+diff --git a/thirdparty/tinycolormap/CMakeLists.txt 
b/thirdparty/tinycolormap/CMakeLists.txt
+index ee88bf4878..d4c9096175 100644
+--- a/thirdparty/tinycolormap/CMakeLists.txt
++++ b/thirdparty/tinycolormap/CMakeLists.txt
+@@ -1,4 +1,4 @@
+-cmake_minimum_required(VERSION 3.1)
++cmake_minimum_required(VERSION 3.5)
+ 
+ project(tinycolormap CXX)
+ set(CMAKE_CXX_STANDARD 11)

diff --git a/sci-libs/avogadrolibs/files/avogadrolibs-1.100-fix_odr.patch 
b/sci-libs/avogadrolibs/files/avogadrolibs-1.100-fix_odr.patch
new file mode 100644
index 000000000000..307466464b1e
--- /dev/null
+++ b/sci-libs/avogadrolibs/files/avogadrolibs-1.100-fix_odr.patch
@@ -0,0 +1,98 @@
+https://github.com/OpenChemistry/avogadrolibs/pull/2059.patch
+From ef234b94bcff5e4416e7ae0546c3e8977d3ad3a2 Mon Sep 17 00:00:00 2001
+From: Nicolas PARLANT <[email protected]>
+Date: Tue, 24 Jun 2025 02:23:13 +0200
+Subject: [PATCH] Fix ODR violations, move enums into class scope
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+avogadrolibs-1.100.0/avogadro/qtplugins/cp2kinput/cp2kinputdialog.cpp:61:6:
+error: type ‘Avogadro::QtPlugins::BasisOption’ violates the C++ One Definition 
Rule [-Werror=odr]
+   61 | enum BasisOption
+      |      ^
+avogadrolibs-1.100.0/work/avogadrolibs-1.100.0/avogadro/qtplugins/cp2kinput/cp2kinputdialog.cpp:40:6:
+error: type ‘Avogadro::QtPlugins::CalculateOption’ violates the C++ One 
Definition Rule [-Werror=odr]
+   40 | enum CalculateOption
+      |      ^
+
+Signed-off-by: Nicolas PARLANT <[email protected]>
+---
+ .../qtplugins/cp2kinput/cp2kinputdialog.cpp   | 21 -------------------
+ .../qtplugins/cp2kinput/cp2kinputdialog.h     | 21 +++++++++++++++++++
+ 2 files changed, 21 insertions(+), 21 deletions(-)
+
+diff --git a/avogadro/qtplugins/cp2kinput/cp2kinputdialog.cpp 
b/avogadro/qtplugins/cp2kinput/cp2kinputdialog.cpp
+index 5eec8b6d..97f583a3 100644
+--- a/avogadro/qtplugins/cp2kinput/cp2kinputdialog.cpp
++++ b/avogadro/qtplugins/cp2kinput/cp2kinputdialog.cpp
+@@ -37,16 +37,6 @@ using Avogadro::MoleQueue::JobObject;
+ 
+ namespace Avogadro::QtPlugins {
+ 
+-enum CalculateOption
+-{
+-  CalculateEnergy = 0,
+-  CalculateEnergyAndForces,
+-  CalculateMolecularDynamics,
+-  CalculateGeometryOptimization,
+-
+-  CalculateCount
+-};
+-
+ enum FunctionalOption
+ {
+   FunctionalBLYP = 0,
+@@ -58,17 +48,6 @@ enum FunctionalOption
+   FunctionalCount
+ };
+ 
+-enum BasisOption
+-{
+-  BasisSZVGTH = 0,
+-  BasisDZVGTH,
+-  BasisDZVPGTH,
+-  BasisTZVPGTH,
+-  BasisTZV2PGTH,
+-
+-  BasisCount
+-};
+-
+ enum MethodOption
+ {
+   DFT = 0,
+diff --git a/avogadro/qtplugins/cp2kinput/cp2kinputdialog.h 
b/avogadro/qtplugins/cp2kinput/cp2kinputdialog.h
+index dc24594f..52be8dcd 100644
+--- a/avogadro/qtplugins/cp2kinput/cp2kinputdialog.h
++++ b/avogadro/qtplugins/cp2kinput/cp2kinputdialog.h
+@@ -31,6 +31,27 @@ class Cp2kInputDialog : public QDialog
+ {
+   Q_OBJECT
+ 
++  enum CalculateOption
++  {
++    CalculateEnergy = 0,
++    CalculateEnergyAndForces,
++    CalculateMolecularDynamics,
++    CalculateGeometryOptimization,
++
++    CalculateCount
++  };
++
++  enum BasisOption
++  {
++    BasisSZVGTH = 0,
++    BasisDZVGTH,
++    BasisDZVPGTH,
++    BasisTZVPGTH,
++    BasisTZV2PGTH,
++
++    BasisCount
++  };
++
+ public:
+   explicit Cp2kInputDialog(QWidget* parent_ = nullptr,
+                            Qt::WindowFlags f = Qt::WindowFlags());
+-- 
+2.49.0
+

Reply via email to