Debian Bug report logs -
#863880
diffoscope: Document feeders.
Reported by: Daniel Shahaf <danielsh@apache.org>
Date: Thu, 1 Jun 2017 13:39:04 UTC
Severity: wishlist
Tags: patch
Found in version diffoscope/82
Fixed in version diffoscope/91
Done: Mattia Rizzolo <mattia@debian.org>
Bug is archived. No further changes may be made.
Toggle useless messages
Report forwarded
to debian-bugs-dist@lists.debian.org, Reproducible builds folks <reproducible-builds@lists.alioth.debian.org>:
Bug#863880; Package src:diffoscope.
(Thu, 01 Jun 2017 13:39:06 GMT) (full text, mbox, link).
Acknowledgement sent
to Daniel Shahaf <danielsh@apache.org>:
New Bug report received and forwarded. Copy sent to Reproducible builds folks <reproducible-builds@lists.alioth.debian.org>.
(Thu, 01 Jun 2017 13:39:06 GMT) (full text, mbox, link).
Message #5 received at submit@bugs.debian.org (full text, mbox, reply):
Source: diffoscope
Version: 82
Severity: wishlist
Tags: patch
Dear Maintainer,
Please find attached a patch documenting the internal "feeder" concept.
The patch was developed against 00f6b7d53d8f7f30701e51dce29942145406c369, and diff.py
has changed since then, but AFAICT not in ways that affect this patch.
Cheers,
Daniel
[[[
From 64819ae8000a2677f4b1d7e599787becae2ac963 Mon Sep 17 00:00:00 2001
From: Daniel Shahaf <danielsh@apache.org>
Date: Mon, 29 May 2017 15:14:54 +0000
Subject: [PATCH 2/2] diffoscope.diff: Document feeders.
---
diffoscope/diff.py | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 58 insertions(+)
diff --git a/diffoscope/diff.py b/diffoscope/diff.py
index a300217..bd6e2d8 100644
--- a/diffoscope/diff.py
+++ b/diffoscope/diff.py
@@ -235,6 +235,64 @@ class FIFOFeeder(threading.Thread):
if self._exception is not None:
raise self._exception
+class _Feeder:
+ """A 'feeder' is a specialized writer.
+
+ A 'feeder' is a callable that takes as argument a writeable file, and writes
+ to it. Feeders can transform the written data, truncate it, checksum it,
+ and so on. The callable must return True to represent that the data had
+ a terminating newline, and False otherwise.
+
+ Feeders are created by the functions make_feeder_from_raw_reader() and
+ empty_file_feeder(). The returned objects are closures, and are not
+ (currently?) instances of any particular class.
+ """
+ pass
+
+def empty_file_feeder():
+ """Returns a feeder that simulates an empty file.
+
+ See _Feeder for feeders.
+ """
+ def feeder(f):
+ return False
+ return feeder
+
+def make_feeder_from_raw_reader(in_file, filter=None):
+ """Create a feeder that checksums, truncates, and transcodes the data.
+ The optional argument FILTER is a callable that gets passed each line,
+ and returns the line that should be used in its stead. (There is no
+ facility for FILTER to discard a line entirely.)
+
+ See _Feeder for feeders.
+ """
+ def feeder(out_file):
+ h = None
+ end_nl = False
+ max_lines = Config().max_diff_input_lines
+ line_count = 0
+
+ if max_lines < float("inf"):
+ h = hashlib.sha1()
+
+ for buf in in_file:
+ line_count += 1
+ out = filter(buf) if filter else buf
+ if h:
+ h.update(out)
+ if line_count < max_lines:
+ out_file.write(out)
+ end_nl = buf[-1] == '\n'
+
+ if h and line_count >= max_lines:
+ out_file.write("[ Too much input for diff (SHA1: {}) ]\n".format(
+ h.hexdigest(),
+ ).encode('utf-8'))
+ end_nl = True
+
+ return end_nl
+ return feeder
+
def diff(feeder1, feeder2):
tmpdir = get_temporary_directory().name
]]]
Information forwarded
to debian-bugs-dist@lists.debian.org, Reproducible builds folks <reproducible-builds@lists.alioth.debian.org>:
Bug#863880; Package src:diffoscope.
(Wed, 03 Jan 2018 20:09:02 GMT) (full text, mbox, link).
Acknowledgement sent
to Chris Lamb <lamby@debian.org>:
Extra info received and forwarded to list. Copy sent to Reproducible builds folks <reproducible-builds@lists.alioth.debian.org>.
(Wed, 03 Jan 2018 20:09:02 GMT) (full text, mbox, link).
Message #10 received at 863880@bugs.debian.org (full text, mbox, reply):
tags 863880 + pending
thanks
Hey,
Sorry for not seeing this before! I've applied this in Git after
making it flake8 compliant:
https://anonscm.debian.org/git/reproducible/diffoscope.git/commit/?id=0348d842dd7b2e9b25d5194efdfb1131af20b6b3
Thanks!
Best wishes,
--
,''`.
: :' : Chris Lamb
`. `'` lamby@debian.org / chris-lamb.co.uk
`-
Added tag(s) pending.
Request was from Chris Lamb <lamby@debian.org>
to control@bugs.debian.org.
(Wed, 03 Jan 2018 20:09:06 GMT) (full text, mbox, link).
Reply sent
to Mattia Rizzolo <mattia@debian.org>:
You have taken responsibility.
(Thu, 01 Mar 2018 13:09:10 GMT) (full text, mbox, link).
Notification sent
to Daniel Shahaf <danielsh@apache.org>:
Bug acknowledged by developer.
(Thu, 01 Mar 2018 13:09:10 GMT) (full text, mbox, link).
Message #17 received at 863880-close@bugs.debian.org (full text, mbox, reply):
Source: diffoscope
Source-Version: 91
We believe that the bug you reported is fixed in the latest version of
diffoscope, which is due to be installed in the Debian FTP archive.
A summary of the changes between this version and the previous one is
attached.
Thank you for reporting the bug, which will now be closed. If you
have further comments please address them to 863880@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.
Debian distribution maintenance software
pp.
Mattia Rizzolo <mattia@debian.org> (supplier of updated diffoscope package)
(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmaster@ftp-master.debian.org)
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Format: 1.8
Date: Thu, 01 Mar 2018 13:40:48 +0100
Source: diffoscope
Binary: diffoscope
Architecture: source
Version: 91
Distribution: unstable
Urgency: medium
Maintainer: Reproducible builds folks <reproducible-builds@lists.alioth.debian.org>
Changed-By: Mattia Rizzolo <mattia@debian.org>
Description:
diffoscope - in-depth comparison of files, archives, and directories
Closes: 849386 863879 863880 877726 886736 886963 887180 888112 888401 888402 890528
Changes:
diffoscope (91) unstable; urgency=medium
.
[ Mattia Rizzolo ]
* d/clean: Remove .cache/.
* diff: Wrap long regular expression for improved readability.
* comparators.json: Fix UnicodeDecodeError with a non-UTF8 locale.
* d/copyright: Update for the new year.
* d/control: Bump Standards-Version to 4.1.3, no changes needed.
* tests/android:
+ Skip tests involving abootimg on BE archs (see #725729).
.
[ Daniel Shahaf ]
* diffoscope.diff: Document feeders. Closes: #863880
* Optimize the common case of feeders. Closes: #863879
.
[ Juliana Oliveira ]
* {tempfiles, utils.archive}: catch possible FileNotFoundError.
* comparators.java: add support for procyon-decompiler. Closes: #849386
* {command, feeders, diff}: replaces subprocess.Popen() by .run().
This is done in preparation for work on multiprocessing (#842837).
+ {command, zip, feeders}: replaces .wait by the new .returncode property.
+ comparators.utils.command: replaces .stderr_content by .stderr.
* tests:
+ test_progress: fix test case for some broken versions of
python-progressbar. Closes: #877726
+ utils.tools: add support for modules on skip_unless* annotations.
.
[ Chris Lamb ]
* comparators:
+ utils/compare:
- Show extended filesystem metadata even when directly comparing two
files, not just when we specify two directories. Closes: #888402
+ macho:
- If the If the LLVM disassembler does not work, try the
internal one. Closes: #886736
- Always strip the filename, not just when by itself.
+ json:
- Do some cheap fuzzy parsing to detect JSON files not named .json.
- Also match unicode JSON files.
- Optionally compare JSONs with the jsondiff module. Closes: #888112
+ directory:
- Report differences in extended file attributes when comparing files.
Closes: #888401
+ xsb:
- Add support for comparing XMLBeans binary schemas.
+ barkeley_db:
- Add support for comparing Berkeley DB files. Closes: #890528
* Misc code cleaup.
* tests:
+ comparators.test_elf: Return '0' if we can't parse the readelf
version number. Closes: #886963
* debian:
+ Explicitly build-depend and recommend e2fsprogs. Closes: #887180
.
[ Ximin Luo ]
* Partially revert the changes done for #888402 to maintain the current.
behaviour of --exclude-directory-metadata.
* Refactor how the configuration is loaded:
+ Move the defaults into a Config.reset() method.
+ reset() the configuration at the end of main(), to help the testsuite.
Checksums-Sha1:
cf78d47c07e0cea4b0d667c02a0beff82b2cb28b 3429 diffoscope_91.dsc
f10a233ff4469d6405eac3bc6c03da6d33962efb 8935512 diffoscope_91.tar.xz
1413267eea08eb05b0664a4ba13b46abc50a9df7 20151 diffoscope_91_amd64.buildinfo
Checksums-Sha256:
28e12196a5e461349d1cfdfa96bb3914337f6bd6327d13637de80a5bedd08169 3429 diffoscope_91.dsc
12034827db747b831b0c80a340f607c8ac4b85936610d38985135941b8a4f0ee 8935512 diffoscope_91.tar.xz
a456c23241bed0e2dc6230a03e3f7897ad9a715f54da1e662b4f7864c0804d5f 20151 diffoscope_91_amd64.buildinfo
Files:
4a1c8bd026d379c91fec4db88eee3679 3429 devel optional diffoscope_91.dsc
a72769fc6dc5f80c6a31b8730234444a 8935512 devel optional diffoscope_91.tar.xz
728e5ffa6fff19b50c3baf3dfe0a2ee6 20151 devel optional diffoscope_91_amd64.buildinfo
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCgAdFiEEi3hoeGwz5cZMTQpICBa54Yx2K60FAlqX9qYACgkQCBa54Yx2
K62jGg/+J2JLNEmq/nVoNa182wyzTzerZVy03V5Pc4WBt1pyZ4DPbvDrAhZvWZmP
qBXr54UxkbbNfXa+fYAph4xr7D5xL4olDEOFRcDf5UJfGwdjaravc6CeE1z915eW
IJkFIOd17ySKlxM5RAVQ1xtQqXiCsBBHa4W2XryleNivJOSOKotEbkEul8MrregE
HREtWF76l7t5Mas2bFxD0xjYAfIYgB8vDLCFnsoOHsqUKksf2PYr60ge2CmCLKUO
Lw/gTcXD+T8k6UBoC2HXmU/2Wgsd9KClAOHUWwdJK78akvvjSC+zBfcewW1vtM1P
lVui0SjSmd7K3suNZgNnrCboKpq7J8ULR8g1GikElxV6orkDsmhX5SfqgsiqWsqw
yZbm1VHRBtOawnQUD8U2bLqVZsTOsE5JMF7ehHjGehEgoCgg3oNTbY8cIAWyd8y/
erk43kNYKhYdHbEfpvGRJekSvJOS8BY4h94ThJ1B4dElUhMzESJ5Fa2S/Ik3fyDS
WKWY8rS3WSons4WL+yjvd7Y2hfuf/IWt6XaG2rge3ODJlwD3BxFrLg7NzkNhH7NJ
a1yITYx2JbMahQZQribpkdPiFcx38y0LcAT25br8AY+asa0fr7qPOfshQfytFiIs
bDfMRuWM5I6KsCwvE4Gtjrawrux03EdbB0piGQzWKpfAmO3qqdE=
=L47V
-----END PGP SIGNATURE-----
Bug archived.
Request was from Debbugs Internal Request <owner@bugs.debian.org>
to internal_control@bugs.debian.org.
(Wed, 02 May 2018 07:32:47 GMT) (full text, mbox, link).
Send a report that this bug log contains spam.
Debian bug tracking system administrator <owner@bugs.debian.org>.
Last modified:
Wed May 17 14:07:12 2023;
Machine Name:
buxtehude
Debian Bug tracking system
Debbugs is free software and licensed under the terms of the GNU
Public License version 2. The current version can be obtained
from https://bugs.debian.org/debbugs-source/.
Copyright © 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson,
2005-2017 Don Armstrong, and many other contributors.