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 }
