commit:     2ed9cd89dae70be1fee6eb533e4885be6170f893
Author:     NHOrus <jy6x2b32pie9 <AT> yahoo <DOT> com>
AuthorDate: Tue Feb 25 17:00:04 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sat Apr 12 20:58:19 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=2ed9cd89

media-libs/icclib: update EAPI 7 -> 8, fix build problems

Update code to compile with C23 compilers.
Replace build system with meson: existing makefile and patches appear
to have silently dropped dependencies, that were automagically included
only somewhere. Fixes segfaults on start.
Adds smoke test to check for said segfault

Closes: https://bugs.gentoo.org/875098
Closes: https://bugs.gentoo.org/456780
Signed-off-by: NHOrus <jy6x2b32pie9 <AT> yahoo.com>
Signed-off-by: Sam James <sam <AT> gentoo.org>

 media-libs/icclib/files/icclib-2.14-c23.patch      |  38 +++++++
 media-libs/icclib/files/icclib-2.14-make.patch     | 114 ---------------------
 media-libs/icclib/files/meson.build                |  51 +++++++++
 .../{icclib-2.14.ebuild => icclib-2.14-r1.ebuild}  |  34 +++---
 4 files changed, 107 insertions(+), 130 deletions(-)

diff --git a/media-libs/icclib/files/icclib-2.14-c23.patch 
b/media-libs/icclib/files/icclib-2.14-c23.patch
new file mode 100644
index 000000000000..d4121ee6797c
--- /dev/null
+++ b/media-libs/icclib/files/icclib-2.14-c23.patch
@@ -0,0 +1,38 @@
+--- work.old/icc.c     2025-02-25 20:02:36.215180328 +0400
++++ work/icc.c 2025-02-25 20:04:09.711060955 +0400
+@@ -17326,7 +17326,7 @@
+ /* Returned static buffer is re-used every 5 calls. */
+ char *icmPiv(int di, int *p) {
+       static char buf[5][MAX_CHAN * 16];
+-      static ix = 0;
++      static size_t ix = 0;
+       int e;
+       char *bp;
+ 
+@@ -17349,7 +17349,7 @@
+ /* Returned static buffer is re-used every 5 calls. */
+ char *icmPdv(int di, double *p) {
+       static char buf[5][MAX_CHAN * 16];
+-      static ix = 0;
++      static size_t ix = 0;
+       int e;
+       char *bp;
+ 
+@@ -17372,7 +17372,7 @@
+ /* Returned static buffer is re-used every 5 calls. */
+ char *icmPfv(int di, float *p) {
+       static char buf[5][MAX_CHAN * 16];
+-      static ix = 0;
++      static size_t ix = 0;
+       int e;
+       char *bp;
+ 
+@@ -17395,7 +17395,7 @@
+ /* Returned static buffer is re-used every 5 calls. */
+ char *icmPLab(double *p) {
+       static char buf[5][MAX_CHAN * 16];
+-      static ix = 0;
++      static size_t ix = 0;
+       int e;
+       char *bp;
+       double lab[3];

diff --git a/media-libs/icclib/files/icclib-2.14-make.patch 
b/media-libs/icclib/files/icclib-2.14-make.patch
deleted file mode 100644
index 14e69f17f21a..000000000000
--- a/media-libs/icclib/files/icclib-2.14-make.patch
+++ /dev/null
@@ -1,114 +0,0 @@
---- icclib_V2.14/Makefile
-+++ icclib_V2.14/Makefile
-@@ -3,13 +3,13 @@
- # by uncommenting the appropriate line:
- 
- # Microsoft C++, WinNT setup
--include Makefile.WNT
-+#include Makefile.WNT
- 
- # IBM C++, WinNT setup
- #include Makefile.IBMNT
- 
- # Generic UNIX setup
--#include Makefile.UNIX
-+include Makefile.UNIX
- 
- # Apple OSX
- #include Makefile.OSX
-@@ -32,7 +32,7 @@
- 
- 
- icc$(SUFOBJ): icc.c icc.h
--      $(CC) $(CCOF)icc$(SUFOBJ) icc.c
-+      $(CC) $(CFLAGS) $(CCOF)icc$(SUFOBJ) icc.c
- 
- libicc$(SUFLIB): icc$(SUFOBJ)
-       $(LIBU) $(LIBOF)libicc$(SUFLIB) icc$(SUFOBJ)
-@@ -41,39 +41,39 @@
- 
- # Separate for executables
- iccstd$(SUFOBJ): iccstd.c icc.h
--      $(CC) $(CCOF)iccstd$(SUFOBJ) iccstd.c
-+      $(CC) $(CFLAGS) $(CCOF)iccstd$(SUFOBJ) iccstd.c
- 
- 
- icctest$(SUFOBJ): icctest.c icc.h
--      $(CC) $(CCOF)icctest$(SUFOBJ) icctest.c
-+      $(CC) $(CFLAGS) $(CCOF)icctest$(SUFOBJ) icctest.c
- 
- icctest$(SUFEXE): icctest$(SUFOBJ) iccstd$(SUFOBJ) libicc$(SUFLIB)
-       $(LINK) $(LINKOF)icctest$(SUFEXE) icctest$(SUFOBJ) iccstd$(SUFOBJ) 
libicc$(SUFLIB)
- 
- 
- lutest$(SUFOBJ): lutest.c icc.h
--      $(CC) $(CCOF)lutest$(SUFOBJ) lutest.c
-+      $(CC) $(CFLAGS) $(CCOF)lutest$(SUFOBJ) lutest.c
- 
- lutest$(SUFEXE): lutest$(SUFOBJ) iccstd$(SUFOBJ) libicc$(SUFLIB)
-       $(LINK) $(LINKOF)lutest$(SUFEXE) lutest$(SUFOBJ) iccstd$(SUFOBJ) 
libicc$(SUFLIB)
- 
- 
- icclu$(SUFOBJ): icclu.c icc.h
--      $(CC) $(CCOF)icclu$(SUFOBJ) icclu.c
-+      $(CC) $(CFLAGS) $(CCOF)icclu$(SUFOBJ) icclu.c
- 
- icclu$(SUFEXE): icclu$(SUFOBJ) iccstd$(SUFOBJ) libicc$(SUFLIB)
-       $(LINK) $(LINKOF)icclu$(SUFEXE) icclu$(SUFOBJ) iccstd$(SUFOBJ) 
libicc$(SUFLIB)
- 
- 
- iccdump$(SUFOBJ): iccdump.c icc.h
--      $(CC) $(CCOF)iccdump$(SUFOBJ) iccdump.c
-+      $(CC) $(CFLAGS) $(CCOF)iccdump$(SUFOBJ) iccdump.c
- 
- iccdump$(SUFEXE): iccdump$(SUFOBJ) iccstd$(SUFOBJ) libicc$(SUFLIB)
-       $(LINK) $(LINKOF)iccdump$(SUFEXE) iccdump$(SUFOBJ) iccstd$(SUFOBJ) 
libicc$(SUFLIB)
- 
- 
- iccrw$(SUFOBJ): iccrw.c icc.h
--      $(CC) $(CCOF)iccrw$(SUFOBJ) iccrw.c
-+      $(CC) $(CFLAGS) $(CCOF)iccrw$(SUFOBJ) iccrw.c
- 
- iccrw$(SUFEXE): iccrw$(SUFOBJ) iccstd$(SUFOBJ) libicc$(SUFLIB)
-       $(LINK) $(LINKOF)iccrw$(SUFEXE) iccrw$(SUFOBJ) iccstd$(SUFOBJ) 
libicc$(SUFLIB)
---- icclib_V2.14/Makefile.UNIX
-+++ icclib_V2.14/Makefile.UNIX
-@@ -1,7 +1,7 @@
- # Generic UNIX setup
- 
- SLASH     = /
--SUFLIB    = .a
-+SUFLIB    = .so
- SUFOBJ    = .o
- SUFEXE    = 
- CMDSEP    = ;
-@@ -18,21 +18,22 @@
- STDHDRSDEF = /usr/include
- 
- MAKEU     = make
--LIBU      = ar -r
--LIBOF     = -o
-+LIBOF     = 
- RANLIB    = echo
- AS        = as
--CCFLAGSDEF   = -DUNIX -c
--CC        = cc $(CCFLAGS) $(INCFLAG)$(STDHDRS)
-+CCFLAGSDEF = -DUNIX -fPIC -c
-+CFLAGS    += $(CCFLAGSDEF) $(INCFLAG)$(STDHDRS)
-+CC        = cc
- CCOF      = -o 
--LINKFLAGSDEF = -lm
-+LINKFLAGSDEF = -shared
- LINKLIBS  = 
--LINK      = cc $(LINKFLAGS) $(LINKLIBS)
-+LINK      = $(CC) $(LINKFLAGSDEF) $(LDFLAGS) $(LINKLIBS)
- LINKOF    = -o 
-+LIBU      = $(CC) $(LINKFLAGSDEF) $(LDFLAGS) 
-Wl,-soname,libicc.so.$(ICCLIB_SOVERSION) $(LINKLIBS) -o
- 
- .SUFFIXES:
- .SUFFIXES: .c $(SUFLIB) $(SUFOBJ) $(SUFEXE)
- 
- .c$(SUFOBJ):
--      $(CC) $(CCOF)$*$(SUFOBJ) $<
-+      $(CC) $(CFLAGS) $(CCOF)$*$(SUFOBJ) $<
-       

diff --git a/media-libs/icclib/files/meson.build 
b/media-libs/icclib/files/meson.build
new file mode 100644
index 000000000000..10458037f253
--- /dev/null
+++ b/media-libs/icclib/files/meson.build
@@ -0,0 +1,51 @@
+project('icclib', 'c', version: '2.14')
+
+add_project_arguments('-DUNIX', language: 'c')
+
+cc = meson.get_compiler('c')
+
+math = cc.find_library('m', required: false)
+
+icclib = library(
+    'icc',
+    'icc.c',
+    soversion: '0',
+    dependencies: math,
+    install: true,
+)
+
+executable(
+    'iccdump',
+    ['iccdump.c', 'iccstd.c'],
+    install: true,
+    link_with: icclib,
+    dependencies: math,
+)
+executable(
+    'lutest',
+    ['lutest.c', 'iccstd.c'],
+    install: false,
+    link_with: icclib,
+    dependencies: math,
+)
+executable(
+    'icclu',
+    ['icclu.c', 'iccstd.c'],
+    install: false,
+    link_with: icclib,
+    dependencies: math,
+)
+executable(
+    'iccrw',
+    ['iccrw.c', 'iccstd.c'],
+    install: false,
+    link_with: icclib,
+    dependencies: math,
+)
+executable(
+    'icctest',
+    ['icctest.c', 'iccstd.c'],
+    install: false,
+    link_with: icclib,
+    dependencies: math,
+)

diff --git a/media-libs/icclib/icclib-2.14.ebuild 
b/media-libs/icclib/icclib-2.14-r1.ebuild
similarity index 52%
rename from media-libs/icclib/icclib-2.14.ebuild
rename to media-libs/icclib/icclib-2.14-r1.ebuild
index b472dd74897b..611893bd5c6e 100644
--- a/media-libs/icclib/icclib-2.14.ebuild
+++ b/media-libs/icclib/icclib-2.14-r1.ebuild
@@ -1,15 +1,16 @@
-# Copyright 1999-2020 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=7
+EAPI=8
 
-inherit toolchain-funcs
+inherit meson
 
 MY_P="${PN}_V${PV}"
 
 DESCRIPTION="Library for reading and writing ICC color profile files"
 HOMEPAGE="http://freshmeat.sourceforge.net/projects/icclib";
 SRC_URI="http://www.argyllcms.com/${MY_P}.zip";
+S="${WORKDIR}"
 
 LICENSE="BSD"
 SLOT="0"
@@ -17,26 +18,27 @@ KEYWORDS="~amd64 ~x86"
 
 BDEPEND="app-arch/unzip"
 
-S="${WORKDIR}"
-
 PATCHES=(
-       "${FILESDIR}"/${P}-make.patch
-       "${FILESDIR}"/${P}-fno-common.patch
+       "${FILESDIR}/${P}-fno-common.patch"
+       "${FILESDIR}/${P}-c23.patch"
 )
 
-src_compile() {
-       ICCLIB_SOVERSION="0"
-       emake CC="$(tc-getCC)" ICCLIB_SOVERSION="${ICCLIB_SOVERSION}"
+src_prepare() {
+       default
+
+       cp "${FILESDIR}"/meson.build . || die "Failed to move corrected build 
system"
 }
 
-src_install() {
-       dobin iccdump
+src_test() {
+       "${BUILD_DIR}"/iccdump 2>&1 | tee log
+       if ! grep -q "Dump an ICC file in human readable form" log ; then
+       die "Executable couldn't be started"
+       fi
+}
 
-       mv libicc.so libicc.so.${ICCLIB_SOVERSION} || die
-       dolib.so libicc.so.${ICCLIB_SOVERSION}
-       dosym libicc.so.${ICCLIB_SOVERSION} /usr/$(get_libdir)/libicc.so
+src_install() {
+       meson_install
 
        doheader icc*.h
-
        dodoc Readme.txt todo.txt log.txt
 }

Reply via email to