commit:     81f044d7b5f70314f72ec500664d240877ea2242
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Fri Mar 17 22:39:16 2023 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Fri Mar 17 23:56:11 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=81f044d7

media-gfx/gphoto2: fix build w/ clang 16

Closes: https://bugs.gentoo.org/896212
Signed-off-by: Sam James <sam <AT> gentoo.org>

 .../gphoto2/files/gphoto2-2.5.28-clang-16.patch    | 77 ++++++++++++++++++++++
 media-gfx/gphoto2/gphoto2-2.5.28-r1.ebuild         | 54 +++++++++++++++
 2 files changed, 131 insertions(+)

diff --git a/media-gfx/gphoto2/files/gphoto2-2.5.28-clang-16.patch 
b/media-gfx/gphoto2/files/gphoto2-2.5.28-clang-16.patch
new file mode 100644
index 000000000000..e21d38b311e9
--- /dev/null
+++ b/media-gfx/gphoto2/files/gphoto2-2.5.28-clang-16.patch
@@ -0,0 +1,77 @@
+https://bugs.gentoo.org/896212
+https://github.com/gphoto/gphoto2/pull/569
+https://github.com/gphoto/gphoto2/commit/ccc4c1f092bd21ebc713f4d7b9be85be49f92f1e
+https://github.com/gphoto/gphoto2/commit/366930ccc1a261c3eb883da2bf3c655162ccd75f
+
+From ccc4c1f092bd21ebc713f4d7b9be85be49f92f1e Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.k...@gmail.com>
+Date: Fri, 2 Sep 2022 12:59:46 -0700
+Subject: [PATCH] gphoto2: Use pthread_t abstract type for thead IDs
+
+This is not a plain old datatype in every libc, e.g. with musl this
+would fail in type conversion
+
+Signed-off-by: Khem Raj <raj.k...@gmail.com>
+--- a/gphoto2/main.c
++++ b/gphoto2/main.c
+@@ -1198,7 +1198,7 @@ thread_func (void *data)
+       pthread_cleanup_pop (1);
+ }
+ 
+-static unsigned int
++static pthread_t
+ start_timeout_func (Camera *camera, unsigned int timeout,
+                   CameraTimeoutFunc func, void __unused__ *data)
+ {
+@@ -1219,7 +1219,7 @@ start_timeout_func (Camera *camera, unsigned int timeout,
+ }
+ 
+ static void
+-stop_timeout_func (Camera __unused__ *camera, unsigned int id,
++stop_timeout_func (Camera __unused__ *camera, pthread_t id,
+                  void __unused__ *data)
+ {
+       pthread_t tid = id;
+
+
+From 366930ccc1a261c3eb883da2bf3c655162ccd75f Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.k...@gmail.com>
+Date: Wed, 1 Mar 2023 22:58:37 -0800
+Subject: [PATCH] Match prototypes of callbacks with libgphoto
+
+In 
https://github.com/gphoto/gphoto2/pull/535/commits/ccc4c1f092bd21ebc713f4d7b9be85be49f92f1e
+we tried to fix by using pthread_t but it also needs to make changes in
+libgphoto and these changes can be invasive, therefore lets revert to
+older types and to fix musl problem fix it via type casts
+
+Signed-off-by: Khem Raj <raj.k...@gmail.com>
+--- a/gphoto2/main.c
++++ b/gphoto2/main.c
+@@ -1198,7 +1198,7 @@ thread_func (void *data)
+       pthread_cleanup_pop (1);
+ }
+ 
+-static pthread_t
++static unsigned int
+ start_timeout_func (Camera *camera, unsigned int timeout,
+                   CameraTimeoutFunc func, void __unused__ *data)
+ {
+@@ -1215,14 +1215,14 @@ start_timeout_func (Camera *camera, unsigned int 
timeout,
+ 
+       pthread_create (&tid, NULL, thread_func, td);
+ 
+-      return (tid);
++      return (unsigned int)tid;
+ }
+ 
+ static void
+-stop_timeout_func (Camera __unused__ *camera, pthread_t id,
++stop_timeout_func (Camera __unused__ *camera, unsigned int id,
+                  void __unused__ *data)
+ {
+-      pthread_t tid = id;
++      pthread_t tid = (pthread_t)id;
+ 
+       pthread_cancel (tid);
+       pthread_join (tid, NULL);
+

diff --git a/media-gfx/gphoto2/gphoto2-2.5.28-r1.ebuild 
b/media-gfx/gphoto2/gphoto2-2.5.28-r1.ebuild
new file mode 100644
index 000000000000..451c24940a8e
--- /dev/null
+++ b/media-gfx/gphoto2/gphoto2-2.5.28-r1.ebuild
@@ -0,0 +1,54 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools
+
+DESCRIPTION="Free, redistributable digital camera software application"
+HOMEPAGE="http://www.gphoto.org/";
+SRC_URI="mirror://sourceforge/gphoto/${P}.tar.xz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm64 ~hppa ~ppc ~ppc64 ~sparc ~x86"
+IUSE="aalib ncurses nls readline"
+
+# aalib -> needs libjpeg
+RDEPEND="
+       >=dev-libs/popt-1.6.1
+       >=media-libs/libexif-0.6.9
+       >=media-libs/libgphoto2-2.5.17:=[exif]
+       aalib? (
+               media-libs/aalib
+               media-libs/libjpeg-turbo
+       )
+       ncurses? ( dev-libs/cdk:= )
+       readline? ( sys-libs/readline:= )
+"
+DEPEND="${RDEPEND}"
+BDEPEND="
+       virtual/pkgconfig
+       nls? ( >=sys-devel/gettext-0.14.1 )
+"
+
+PATCHES=(
+       "${FILESDIR}"/${P}-clang-16.patch
+)
+
+src_prepare() {
+       default
+       # Leave GCC debug builds under user control
+       sed -r '/(C|LD)FLAGS/ s/ -g( |")/\1/' \
+               -i configure{.ac,} || die
+       eautoreconf
+}
+
+src_configure() {
+       econf \
+               $(use_with aalib) \
+               $(use_with aalib jpeg) \
+               $(use_with ncurses cdk) \
+               $(use_enable nls) \
+               $(use_with readline)
+}

Reply via email to