sysutils/py-diffoscope: Restore portability of zipinfo call

/dev/stdin is a non-portable non-POSIX extension having different
semantics on different operating systems. zininfo(1) exits with 9 when
/dev/stdin is supplied on FreeBSD. In fact, unzip(1) explicitly documents
that it does not support reading from stdin.

[1] https://lists.reproducible-builds.org/pipermail/diffoscope/2020-March/002632.html

PR:		244750
Submitted by:	Michael Osipov <michael.osipov siemens com>
MFH:		2020Q1
This commit is contained in:
Kubilay Kocak 2020-03-13 04:46:13 +00:00
parent e892248313
commit 3bc03c5e1d
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=528327
2 changed files with 29 additions and 0 deletions

View File

@ -3,6 +3,7 @@
PORTNAME= diffoscope
PORTVERSION= 136
PORTREVISION= 1
CATEGORIES= sysutils python
MASTER_SITES= CHEESESHOP
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}

View File

@ -0,0 +1,28 @@
# Non-portable regression caused by 25fee28c/#879011
# https://lists.reproducible-builds.org/pipermail/diffoscope/2020-March/002632.html
# TODO: Upstream
--- diffoscope/comparators/zip.py.orig 2020-03-12 13:23:59 UTC
+++ diffoscope/comparators/zip.py
@@ -38,10 +38,7 @@ from .utils.command import Command
class Zipinfo(Command):
@tool_required('zipinfo')
def cmdline(self):
- # zipinfo (without -v) puts warning messages (some of which contain
- # $path) into stdin when stderr is not a tty, see #879011 for details.
- # to work around it, we run it on /dev/stdin instead, seems to work ok.
- return ['zipinfo', '/dev/stdin']
+ return ['zipinfo', self.path]
@property
def returncode(self):
@@ -54,9 +51,6 @@ class Zipinfo(Command):
returncode = 0
return returncode
-
- def stdin(self):
- return open(self.path, 'rb')
def filter(self, line):
# we don't care about the archive file path