commit:     ceac182a39057fcb5902187462db203c2b7cc96e
Author:     Markus Meier <maekke <AT> gentoo <DOT> org>
AuthorDate: Sun May 25 08:08:58 2025 +0000
Commit:     Markus Meier <maekke <AT> gentoo <DOT> org>
CommitDate: Sun May 25 08:08:58 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ceac182a

media-libs/libpano13: fix build with gcc 15 for bug #956590

Bug: https://bugs.gentoo.org/956590
Signed-off-by: Markus Meier <maekke <AT> gentoo.org>

 .../files/libpano13-2.9.22-fabs-sqrt.patch         | 19 ++++++++
 .../libpano13/files/libpano13-2.9.22-gcc15.patch   | 50 ++++++++++++++++++++
 media-libs/libpano13/libpano13-2.9.22-r1.ebuild    | 53 ++++++++++++++++++++++
 3 files changed, 122 insertions(+)

diff --git a/media-libs/libpano13/files/libpano13-2.9.22-fabs-sqrt.patch 
b/media-libs/libpano13/files/libpano13-2.9.22-fabs-sqrt.patch
new file mode 100644
index 000000000000..d571176dca63
--- /dev/null
+++ b/media-libs/libpano13/files/libpano13-2.9.22-fabs-sqrt.patch
@@ -0,0 +1,19 @@
+diff '--color=auto' -ru libpano13-2.9.22.orig/lmdif.c libpano13-2.9.22/lmdif.c
+--- libpano13-2.9.22.orig/lmdif.c      2025-05-25 09:57:52.790672552 +0200
++++ libpano13-2.9.22/lmdif.c   2025-05-25 09:58:26.444542495 +0200
+@@ -1222,7 +1222,6 @@
+ static double zero = 0.0;
+ static double p25 = 0.25;
+ static double p5 = 0.5;
+-double fabs(), sqrt();
+ 
+ /*
+ *     copy r and (q transpose)*b to preserve input and initialize s.
+@@ -1416,7 +1415,6 @@
+ static double rgiant = 1.304e19;
+ static double zero = 0.0;
+ static double one = 1.0;
+-double fabs(), sqrt();
+ 
+ s1 = zero;
+ s2 = zero;

diff --git a/media-libs/libpano13/files/libpano13-2.9.22-gcc15.patch 
b/media-libs/libpano13/files/libpano13-2.9.22-gcc15.patch
new file mode 100644
index 000000000000..14605cc9be87
--- /dev/null
+++ b/media-libs/libpano13/files/libpano13-2.9.22-gcc15.patch
@@ -0,0 +1,50 @@
+
+
+Fix for gcc15 breakage (Lukas Wirz)
+
+https://bugs.launchpad.net/bugs/2096612
+
+abi-compliance-checker:
+Problems with Data Types
+High 0
+Medium 0
+Low 1
+filter.h
+[+] typedef lmfunc 1
+Change Effect
+1 Base type has been changed from int(*)(...) to int(*)(int, int, double*, 
double*, int*). Recompilation of a client program may be broken.
+[+] affected symbols: 26 (4.7%)
+
+--- a/filter.h
++++ b/filter.h
+@@ -410,7 +410,7 @@
+ 
+ // function to minimize in Levenberg-Marquardt solver
+ 
+-typedef               int (*lmfunc)();        
++typedef int (*lmfunc)(int m, int n, double x[], double fvec[], int *iflag);
+ 
+ struct triangle
+ {
+@@ -774,13 +774,19 @@
+ PANO13_IMPEX void     matrix_inv_mult         ( double m[3][3], double 
vector[3] );
+ PANO13_IMPEX double   smallestRoot            ( double *p );
+ PANO13_IMPEX void     SetCorrectionRadius     ( cPrefs *cP );
+-PANO13_IMPEX int              lmdif                           ();
++PANO13_IMPEX int    lmdif(int m, int n, double x[], double fvec[],
++                          double ftol, double xtol, double gtol,
++                          int maxfev, double epsfcn, double diag[],
++                          int mode, double factor, int nprint,
++                          int *info, int *nfev, double fjac[],
++                          int ldfjac, int ipvt[], double qtf[],
++                          double wa1[], double wa2[], double wa3[], double 
wa4[]);
+ PANO13_IMPEX void     fourier                         ( TrformStr *TrPtr, 
cPrefs *cP );
+ PANO13_IMPEX unsigned short   gamma_correct( double pix );
+ PANO13_IMPEX int      EqualCPrefs( cPrefs *c1, cPrefs *c2 );
+ PANO13_IMPEX double   OverlapRMS                      ( MultiLayerImage *mim 
);
+ PANO13_IMPEX double   distSquared                     ( int num ); 
+-PANO13_IMPEX int              fcnPano();
++PANO13_IMPEX int    fcnPano(int m, int n, double x[], double fvec[], int 
*iflag);
+ PANO13_IMPEX int              EvaluateControlPointError ( int num, double 
*errptr, double errComponent[2]);
+ PANO13_IMPEX void     doCoordinateTransform( CoordInfo *c, tMatrix *t );
+ PANO13_IMPEX void     findOptimumtMatrix( transformCoord *tP, tMatrix *tM, 
lmfunc f);

diff --git a/media-libs/libpano13/libpano13-2.9.22-r1.ebuild 
b/media-libs/libpano13/libpano13-2.9.22-r1.ebuild
new file mode 100644
index 000000000000..b881ffea432f
--- /dev/null
+++ b/media-libs/libpano13/libpano13-2.9.22-r1.ebuild
@@ -0,0 +1,53 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="8"
+
+inherit java-pkg-opt-2 cmake
+
+DESCRIPTION="Helmut Dersch's panorama toolbox library"
+HOMEPAGE="http://panotools.sourceforge.net/";
+SRC_URI="https://downloads.sourceforge.net/panotools/${P}.tar.gz";
+S="${WORKDIR}/${PN}-$(ver_cut 1-3)"
+
+LICENSE="GPL-2"
+SLOT="0/3"
+KEYWORDS="~amd64 ~arm64 ~x86 ~amd64-linux ~x86-linux ~ppc-macos"
+IUSE="java static-libs suitesparse"
+
+DEPEND="media-libs/libpng:=
+       media-libs/tiff:=
+       media-libs/libjpeg-turbo:=
+       sys-libs/zlib
+       java? ( >=virtual/jdk-1.8:* )
+       suitesparse? ( sci-libs/suitesparse )"
+RDEPEND="${DEPEND}"
+
+PATCHES=(
+       "${FILESDIR}/${P}-gcc15.patch"
+       "${FILESDIR}/${P}-fabs-sqrt.patch"
+)
+
+pkg_setup() {
+       java-pkg-opt-2_pkg_setup
+}
+
+src_configure() {
+       local mycmakeargs=(
+               -DSUPPORT_JAVA_PROGRAMS=$(usex java)
+               -DUSE_SPARSE_LEVMAR=$(usex suitesparse)
+       )
+       cmake_src_configure
+}
+
+src_install() {
+       cmake_src_install
+
+       if ! use static-libs ; then
+               find "${D}" -name "*.a" -type f -delete || die
+       fi
+}
+
+pkg_preinst() {
+       java-pkg-opt-2_pkg_preinst
+}

Reply via email to