From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id EEF44158013 for ; Sat, 2 Dec 2023 05:14:29 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id D273B2BC03C; Sat, 2 Dec 2023 05:14:28 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [IPv6:2001:470:ea4a:1:5054:ff:fec7:86e4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id B94AE2BC03C for ; Sat, 2 Dec 2023 05:14:28 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id E9C1E33BE12 for ; Sat, 2 Dec 2023 05:14:27 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 112B01448 for ; Sat, 2 Dec 2023 05:14:26 +0000 (UTC) From: "Sam James" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Sam James" Message-ID: <1701494016.17ee1596c7eb55a81cfbb018ca62f9900a7e0eac.sam@gentoo> Subject: [gentoo-commits] repo/gentoo:master commit in: x11-misc/colord/files/, x11-misc/colord/ X-VCS-Repository: repo/gentoo X-VCS-Files: x11-misc/colord/colord-1.4.6-r2.ebuild x11-misc/colord/files/colord-1.4.6-FILE_OFFSET_BITS.patch x11-misc/colord/files/colord-1.4.6-time_t-ptr-truncation.patch X-VCS-Directories: x11-misc/colord/ x11-misc/colord/files/ X-VCS-Committer: sam X-VCS-Committer-Name: Sam James X-VCS-Revision: 17ee1596c7eb55a81cfbb018ca62f9900a7e0eac X-VCS-Branch: master Date: Sat, 2 Dec 2023 05:14:26 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: b3e6ddc8-aea3-4ee6-afaf-86a046fcde8b X-Archives-Hash: f1c367628fb5d286446db93af87bcb0e commit: 17ee1596c7eb55a81cfbb018ca62f9900a7e0eac Author: Sam James gentoo org> AuthorDate: Sat Dec 2 05:13:20 2023 +0000 Commit: Sam James gentoo org> CommitDate: Sat Dec 2 05:13:36 2023 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=17ee1596 x11-misc/colord: fix modern c issue (32-bit ptr truncation) Closes: https://bugs.gentoo.org/918990 Signed-off-by: Sam James gentoo.org> x11-misc/colord/colord-1.4.6-r2.ebuild | 129 +++++++++++++++++++++ .../files/colord-1.4.6-FILE_OFFSET_BITS.patch | 38 ++++++ .../files/colord-1.4.6-time_t-ptr-truncation.patch | 35 ++++++ 3 files changed, 202 insertions(+) diff --git a/x11-misc/colord/colord-1.4.6-r2.ebuild b/x11-misc/colord/colord-1.4.6-r2.ebuild new file mode 100644 index 000000000000..20e350ceb6e5 --- /dev/null +++ b/x11-misc/colord/colord-1.4.6-r2.ebuild @@ -0,0 +1,129 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 +VALA_USE_DEPEND="vapigen" + +inherit bash-completion-r1 meson-multilib tmpfiles udev vala + +DESCRIPTION="System service to accurately color manage input and output devices" +HOMEPAGE="https://www.freedesktop.org/software/colord/" +SRC_URI="https://www.freedesktop.org/software/colord/releases/${P}.tar.xz" + +LICENSE="GPL-2+" +SLOT="0/2" # subslot = libcolord soname version +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86" + +IUSE="gtk-doc argyllcms examples extra-print-profiles +introspection scanner selinux systemd test vala" +RESTRICT="!test? ( test ) test" # Tests try to read and write files in /tmp +REQUIRED_USE="vala? ( introspection )" + +DEPEND=" + >=dev-libs/glib-2.58.0:2[${MULTILIB_USEDEP}] + >=media-libs/lcms-2.6:2=[${MULTILIB_USEDEP}] + dev-db/sqlite:3=[${MULTILIB_USEDEP}] + >=dev-libs/libgusb-0.2.7[introspection?,${MULTILIB_USEDEP}] + + dev-libs/libgudev:=[${MULTILIB_USEDEP}] + virtual/libudev:=[${MULTILIB_USEDEP}] + virtual/udev + + systemd? ( >=sys-apps/systemd-44:0= ) + scanner? ( + media-gfx/sane-backends + sys-apps/dbus + ) + >=sys-auth/polkit-0.114 + argyllcms? ( media-gfx/argyllcms ) + introspection? ( >=dev-libs/gobject-introspection-1.56:= ) +" +RDEPEND="${DEPEND} + acct-group/colord + acct-user/colord + selinux? ( sec-policy/selinux-colord ) +" +BDEPEND=" + acct-group/colord + acct-user/colord + app-text/docbook-xsl-ns-stylesheets + dev-libs/libxslt + >=sys-devel/gettext-0.17 + virtual/pkgconfig + extra-print-profiles? ( media-gfx/argyllcms ) + gtk-doc? ( + dev-util/gtk-doc + app-text/docbook-xml-dtd:4.1.2 + ) + vala? ( $(vala_depend) ) +" + +PATCHES=( + "${FILESDIR}"/${P}-lcms2-corruption.patch + "${FILESDIR}"/${P}-time_t-ptr-truncation.patch + "${FILESDIR}"/${P}-FILE_OFFSET_BITS.patch +) + +src_prepare() { + default + use vala && vala_src_prepare + + # Test requires a running session + # https://github.com/hughsie/colord/issues/94 + sed -i -e "/test('colord-test-daemon'/d" lib/colord/meson.build || die + + # Adapt to Gentoo paths + sed -i \ + -e "s|find_program('spotread'|find_program('argyll-spotread'|" \ + -e "s|find_program('colprof'|find_program('argyll-colprof'|" \ + meson.build || die + + # meson gnome.generate_vapi properly handles VAPIGEN and other vala + # environment variables. It is counter-productive to check for an + # unversioned vapigen, as that breaks versioned VAPIGEN usages. + sed -i -e "/find_program('vapigen')/d" meson.build || die +} + +multilib_src_configure() { + local emesonargs=( + $(meson_native_true daemon) + -Dbash_completion=false + $(meson_native_true udev_rules) # Install udev rules only from native build + $(meson_native_use_bool systemd) + -Dlibcolordcompat=true + $(meson_native_use_bool argyllcms argyllcms_sensor) + $(meson_native_use_bool scanner sane) + $(meson_native_use_bool introspection) + $(meson_native_use_bool vala vapi) + $(meson_native_use_bool extra-print-profiles print_profiles) + $(meson_use test tests) + -Dinstalled_tests=false + -Ddaemon_user=colord + $(meson_native_true man) + $(meson_use gtk-doc docs) + --localstatedir="${EPREFIX}"/var + ) + meson_src_configure +} + +multilib_src_install_all() { + newbashcomp data/colormgr colormgr + + # Ensure config and profile directories exist and /var/lib/colord/* + # is writable by colord user + keepdir /var/lib/color{,d}/icc + fowners colord:colord /var/lib/colord{,/icc} + + if use examples; then + docinto examples + dodoc examples/*.c + fi +} + +pkg_postinst() { + udev_reload + tmpfiles_process colord.conf +} + +pkg_postrm() { + udev_reload +} diff --git a/x11-misc/colord/files/colord-1.4.6-FILE_OFFSET_BITS.patch b/x11-misc/colord/files/colord-1.4.6-FILE_OFFSET_BITS.patch new file mode 100644 index 000000000000..c41f73e4eb8a --- /dev/null +++ b/x11-misc/colord/files/colord-1.4.6-FILE_OFFSET_BITS.patch @@ -0,0 +1,38 @@ +https://github.com/hughsie/colord/pull/159 + +From 72cc7bb299de09ec53aa4ce125af370158127d0e Mon Sep 17 00:00:00 2001 +From: Sam James +Date: Sat, 2 Dec 2023 05:07:46 +0000 +Subject: [PATCH] meson.build: set FILE_OFFSET_BITS explicitly + +This is needed if building introspection because: +a) Meson's own setting of FILE_OFFSET_BITS (which it does by default) doesn't +affect the introspection tooling; + +b) glibc's headers seem to react poorly to _just_ _TIME_BITS being set, even +though in this cas, the failure was for a 64-bit ABI anyway. + +Fixes: ce9732a87bc2a0ddca841b49b9b9e24351ea78c8 +Signed-off-by: Sam James +--- + meson.build | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/meson.build b/meson.build +index 072a612..b0b1af8 100644 +--- a/meson.build ++++ b/meson.build +@@ -215,7 +215,9 @@ add_project_arguments('-DCD_COMPILATION', language: 'c') + # Needed for realpath() and PATH_MAX + add_project_arguments('-D_XOPEN_SOURCE=700', language : 'c') + # Needed to opt-in to 64-bit time_t on glibc. We pass 64-bit pointers into +-# gmtime_r. ++# gmtime_r. We have to set F_O_B here despite Meson defaulting to it because ++# it doesn't get passed down to introspection otherwise. ++add_project_arguments('-D_FILE_OFFSET_BITS=64', language : 'c') + add_project_arguments('-D_TIME_BITS=64', language : 'c') + + prefix = get_option('prefix') +-- +2.43.0 + diff --git a/x11-misc/colord/files/colord-1.4.6-time_t-ptr-truncation.patch b/x11-misc/colord/files/colord-1.4.6-time_t-ptr-truncation.patch new file mode 100644 index 000000000000..687b595feca5 --- /dev/null +++ b/x11-misc/colord/files/colord-1.4.6-time_t-ptr-truncation.patch @@ -0,0 +1,35 @@ +https://bugs.gentoo.org/918990 +https://github.com/hughsie/colord/issues/157 +https://github.com/hughsie/colord/commit/ce9732a87bc2a0ddca841b49b9b9e24351ea78c8 + +From ce9732a87bc2a0ddca841b49b9b9e24351ea78c8 Mon Sep 17 00:00:00 2001 +From: Sam James +Date: Fri, 1 Dec 2023 22:20:17 +0000 +Subject: [PATCH] meson.build: use 64-bit time_t + +We call `gmtime_r` (which expects `time_t`) with a 64-bit pointer (`gint64*`). + +On 32-bit systems, `time_t` is 32-bit unless you opt-in to a 64-bit wide version +(at least on glibc). To avoid truncation and -Wincompatible-pointer-types, +opt-in to 64-bit `time_t` for glibc with `-D_TIME_BITS=64` in meson. + +This should be fine ABI wise because the time is only passed down into lcms2 +into `_cmsEncodeDateTimeNumber` where it seems to decompose it and it worked already +for 64-bit systems. Plus, they use their own types like `cmsUInt16Number` to ensure +they're wide enough. + +Fixes: https://github.com/hughsie/colord/issues/157 +Signed-off-by: Sam James +--- a/meson.build ++++ b/meson.build +@@ -214,6 +214,9 @@ add_project_arguments('-DCD_COMPILATION', language: 'c') + + # Needed for realpath() and PATH_MAX + add_project_arguments('-D_XOPEN_SOURCE=700', language : 'c') ++# Needed to opt-in to 64-bit time_t on glibc. We pass 64-bit pointers into ++# gmtime_r. ++add_project_arguments('-D_TIME_BITS=64', language : 'c') + + prefix = get_option('prefix') + +