commit:     c4de145641e5a27421eba9ac125ec8a2a6b9a7a2
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Fri Jul 14 11:23:22 2023 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Fri Jul 14 11:23:22 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=c4de1456

dev-util/diffoscope: backport libarchive-c-5 fix

Signed-off-by: Sam James <sam <AT> gentoo.org>

 dev-util/diffoscope/diffoscope-243-r3.ebuild       | 127 +++++++++++++++++++++
 .../files/diffoscope-243-libarchive-c-5.patch      |  49 ++++++++
 2 files changed, 176 insertions(+)

diff --git a/dev-util/diffoscope/diffoscope-243-r3.ebuild 
b/dev-util/diffoscope/diffoscope-243-r3.ebuild
new file mode 100644
index 000000000000..17a009db5db2
--- /dev/null
+++ b/dev-util/diffoscope/diffoscope-243-r3.ebuild
@@ -0,0 +1,127 @@
+# Copyright 2022-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..11} )
+PYTHON_REQ_USE="ncurses"
+inherit distutils-r1
+
+DESCRIPTION="Will try to get to the bottom of what makes files or directories 
different"
+HOMEPAGE="https://diffoscope.org/ https://pypi.org/project/diffoscope/";
+# We could use pypi, but upstream provide distribution tarballs, so let's use 
those.
+# TODO: verify-sig
+SRC_URI="https://diffoscope.org/archive/${P}.tar.bz2";
+
+LICENSE="GPL-3+"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ia64 ~ppc64 ~x86"
+IUSE="acl binutils bzip2 libcaca colord cpio +diff docx dtc e2fsprogs file
+find gettext gif gpg haskell hdf5 hex imagemagick iso java llvm lzma
+mono opendocument pascal pdf postscript R rpm sqlite squashfs
+ssh tar test tcpdump zip zlib zstd"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+       dev-python/python-magic[${PYTHON_USEDEP}]
+       dev-python/libarchive-c[${PYTHON_USEDEP}]
+       dev-python/distro[${PYTHON_USEDEP}]
+       dev-python/tlsh[${PYTHON_USEDEP}]
+       acl? ( sys-apps/acl )
+       binutils? ( sys-devel/binutils )
+       bzip2? ( app-arch/bzip2 )
+       libcaca? ( media-libs/libcaca )
+       colord? ( x11-misc/colord )
+       cpio? ( app-arch/cpio )
+       diff? ( sys-apps/diffutils )
+       docx? ( app-text/docx2txt )
+       dtc? ( sys-apps/dtc )
+       e2fsprogs? ( sys-fs/e2fsprogs )
+       file? ( sys-apps/file )
+       find? ( sys-apps/findutils )
+       gettext? ( sys-devel/gettext )
+       gif? ( media-libs/giflib )
+       gpg? ( app-crypt/gnupg )
+       haskell? ( dev-lang/ghc )
+       hdf5? ( sci-libs/hdf5 )
+       hex? ( app-editors/vim-core )
+       imagemagick? ( media-gfx/imagemagick )
+       iso? ( app-cdr/cdrtools )
+       java? ( virtual/jdk )
+       llvm? ( sys-devel/llvm )
+       lzma? ( app-arch/xz-utils )
+       mono? ( dev-lang/mono )
+       opendocument? ( app-text/odt2txt )
+       pascal? ( dev-lang/fpc )
+       pdf? (
+               app-text/pdftk
+               app-text/poppler
+               dev-python/pypdf[${PYTHON_USEDEP}]
+       )
+       postscript? ( app-text/ghostscript-gpl )
+       R? ( dev-lang/R )
+       rpm? ( app-arch/rpm )
+       sqlite? ( dev-db/sqlite:3 )
+       squashfs? ( sys-fs/squashfs-tools )
+       ssh? ( virtual/openssh )
+       tar? ( app-arch/tar )
+       tcpdump? ( net-analyzer/tcpdump )
+       zip? ( app-arch/unzip )
+       zlib? ( app-arch/gzip )
+       zstd? ( app-arch/zstd )
+"
+# Presence of filemagic's magic.py breaks imports
+# of dev-python/python-magic: bug #716482
+RDEPEND+=" !dev-python/filemagic"
+
+# pull in optional tools for tests:
+# img2txt: bug #797688
+# docx2txt: bug #797688
+BDEPEND="
+       test? (
+               app-text/docx2txt
+               app-text/html2text
+               media-libs/libcaca
+               virtual/imagemagick-tools[jpeg]
+       )
+"
+
+PATCHES=(
+       "${FILESDIR}"/${P}-libarchive-c-5.patch
+)
+
+EPYTEST_DESELECT=(
+       # Test seems to use different tarball
+       tests/test_presenters.py::test_text_proper_indentation
+
+       # Needs triage
+       
tests/comparators/test_binary.py::test_with_compare_details_and_tool_not_found
+       tests/comparators/test_rlib.py::test_item3_deflate_llvm_bitcode
+       tests/comparators/test_gif.py::test_has_visuals
+
+       # img2txt based failures, bug #797688
+       tests/comparators/test_ico_image.py::test_diff
+       tests/comparators/test_ico_image.py::test_diff_meta
+       tests/comparators/test_ico_image.py::test_diff_meta2
+       tests/comparators/test_ico_image.py::test_has_visuals
+       tests/comparators/test_jpeg_image.py::test_diff
+       tests/comparators/test_jpeg_image.py::test_compare_non_existing
+       tests/comparators/test_jpeg_image.py::test_diff_meta
+       tests/comparators/test_jpeg_image.py::test_has_visuals
+
+       # docx2txt based falures, bug #797688
+       tests/comparators/test_docx.py::test_diff
+
+       # Formatting
+       tests/test_source.py::test_code_is_black_clean
+
+       # Fails on ZFS
+       tests/test_main.py::test_non_unicode_filename
+
+       # Fails on (unreleased) LLVM 16 with minor difference
+       tests/comparators/test_macho.py::test_llvm_diff
+       tests/comparators/test_elf.py::test_libmix_differences
+)
+
+distutils_enable_tests pytest

diff --git a/dev-util/diffoscope/files/diffoscope-243-libarchive-c-5.patch 
b/dev-util/diffoscope/files/diffoscope-243-libarchive-c-5.patch
new file mode 100644
index 000000000000..36b5dbbe63e4
--- /dev/null
+++ b/dev-util/diffoscope/files/diffoscope-243-libarchive-c-5.patch
@@ -0,0 +1,49 @@
+https://salsa.debian.org/reproducible-builds/diffoscope/-/issues/344
+https://salsa.debian.org/reproducible-builds/diffoscope/-/commit/3c4e378df315a4182da60e50769f1760cc561c2d
+
+From 3c4e378df315a4182da60e50769f1760cc561c2d Mon Sep 17 00:00:00 2001
+From: Chris Lamb <[email protected]>
+Date: Thu, 13 Jul 2023 13:39:42 +0100
+Subject: [PATCH] Attempt compatibility with libarchive-5. (Re: 344)
+
+--- a/diffoscope/comparators/utils/libarchive.py
++++ b/diffoscope/comparators/utils/libarchive.py
+@@ -122,6 +122,13 @@ libarchive.ArchiveEntry.pathname = property(
+ 
+ 
+ def list_libarchive(path, ignore_errors=False):
++    def force_str(val):
++        # libarchive ~5 began to return uname and gname as UTF-8 whilst
++        # previous versions returned bytes that required decoding.
++        if not isinstance(val, str):
++            val = val.decode("utf-8", errors="surrogateescape")
++        return val
++
+     try:
+         with libarchive.file_reader(path) as archive:
+             for entry in archive:
+@@ -146,18 +153,14 @@ def list_libarchive(path, ignore_errors=False):
+                 ) + ".{:06d}".format(entry.mtime_nsec // 1000)
+                 if entry.uname:
+                     user = "{user:<8} {uid:>7}".format(
+-                        user=entry.uname.decode(
+-                            "utf-8", errors="surrogateescape"
+-                        ),
++                        user=force_str(entry.uname),
+                         uid="({})".format(entry.uid),
+                     )
+                 else:
+                     user = entry.uid
+                 if entry.gname:
+                     group = "{group:<8} {gid:>7}".format(
+-                        group=entry.gname.decode(
+-                            "utf-8", errors="surrogateescape"
+-                        ),
++                        group=force_str(entry.gname),
+                         gid="({})".format(entry.gid),
+                     )
+                 else:
+-- 
+GitLab
+
+

Reply via email to