Package: src:diffoscope; Maintainer for src:diffoscope is Reproducible builds folks <reproducible-builds@lists.alioth.debian.org>;
Reported by: Gianfranco Costamagna <locutusofborg@debian.org>
Date: Mon, 16 Sep 2019 07:03:02 UTC
Severity: serious
Found in version diffoscope/123
Fixed in version diffoscope/124
Done: Chris Lamb <lamby@debian.org>
Bug is archived. No further changes may be made.
View this report as an mbox folder, status mbox, maintainer mbox
Report forwarded
to debian-bugs-dist@lists.debian.org, Reproducible builds folks <reproducible-builds@lists.alioth.debian.org>:
Bug#940471; Package src:diffoscope.
(Mon, 16 Sep 2019 07:03:04 GMT) (full text, mbox, link).
Acknowledgement sent
to Gianfranco Costamagna <locutusofborg@debian.org>:
New Bug report received and forwarded. Copy sent to Reproducible builds folks <reproducible-builds@lists.alioth.debian.org>.
(Mon, 16 Sep 2019 07:03:04 GMT) (full text, mbox, link).
Message #5 received at submit@bugs.debian.org (full text, mbox, reply):
Source: diffoscope
Version: 123
Severity: serious
Hello, looks like the latest diffoscope in unstable has a test failure that is preventing it from entering testing:
snip of the test failure:
==================================== ERRORS ====================================
____________________ ERROR at setup of test_identification _____________________
tmpdir = local('/tmp/pytest-of-debci/pytest-0/test_identification0')
@pytest.fixture
def cmi(tmpdir):
input_ = str(tmpdir.join('{}.mli'.format(prefix)))
output = str(tmpdir.join('{}.cmi'.format(prefix)))
with open(input_, 'w') as f:
pass
> subprocess.check_call(('ocamlc', '-c', input_))
f = <_io.TextIOWrapper name='/tmp/pytest-of-debci/pytest-0/test_identification0/test1.mli' mode='w' encoding='UTF-8'>
input_ = '/tmp/pytest-of-debci/pytest-0/test_identification0/test1.mli'
output = '/tmp/pytest-of-debci/pytest-0/test_identification0/test1.cmi'
prefix = 'test1'
tmpdir = local('/tmp/pytest-of-debci/pytest-0/test_identification0')
tests/comparators/test_ocaml.py:41:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.7/subprocess.py:342: in check_call
retcode = call(*popenargs, **kwargs)
/usr/lib/python3.7/subprocess.py:323: in call
with Popen(*popenargs, **kwargs) as p:
/usr/lib/python3.7/subprocess.py:775: in __init__
restore_signals, start_new_session)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <subprocess.Popen object at 0x7f9a4e7e9e90>
args = ['ocamlc', '-c', '/tmp/pytest-of-debci/pytest-0/test_identification0/test1.mli']
executable = b'ocamlc', preexec_fn = None, close_fds = True, pass_fds = ()
cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False
p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1
errwrite = -1, restore_signals = True, start_new_session = False
def _execute_child(self, args, executable, preexec_fn, close_fds,
pass_fds, cwd, env,
startupinfo, creationflags, shell,
p2cread, p2cwrite,
c2pread, c2pwrite,
errread, errwrite,
restore_signals, start_new_session):
"""Execute program (POSIX version)"""
if isinstance(args, (str, bytes)):
args = [args]
else:
args = list(args)
if shell:
# On Android the default shell is at '/system/bin/sh'.
unix_shell = ('/system/bin/sh' if
hasattr(sys, 'getandroidapilevel') else '/bin/sh')
args = [unix_shell, "-c"] + args
if executable:
args[0] = executable
if executable is None:
executable = args[0]
orig_executable = executable
# For transferring possible exec failure from child to parent.
# Data format: "exception name:hex errno:description"
# Pickle is not used; it is complex and involves memory allocation.
errpipe_read, errpipe_write = os.pipe()
# errpipe_write must not be in the standard io 0, 1, or 2 fd range.
low_fds_to_close = []
while errpipe_write < 3:
low_fds_to_close.append(errpipe_write)
errpipe_write = os.dup(errpipe_write)
for low_fd in low_fds_to_close:
os.close(low_fd)
try:
try:
# We must avoid complex work that could involve
# malloc or free in the child process to avoid
# potential deadlocks, thus we do all this here.
# and pass it to fork_exec()
if env is not None:
env_list = []
for k, v in env.items():
k = os.fsencode(k)
if b'=' in k:
raise ValueError("illegal environment variable name")
env_list.append(k + b'=' + os.fsencode(v))
else:
env_list = None # Use execv instead of execve.
executable = os.fsencode(executable)
if os.path.dirname(executable):
executable_list = (executable,)
else:
# This matches the behavior of os._execvpe().
executable_list = tuple(
os.path.join(os.fsencode(dir), executable)
for dir in os.get_exec_path(env))
fds_to_keep = set(pass_fds)
fds_to_keep.add(errpipe_write)
self.pid = _posixsubprocess.fork_exec(
args, executable_list,
close_fds, tuple(sorted(map(int, fds_to_keep))),
cwd, env_list,
p2cread, p2cwrite, c2pread, c2pwrite,
errread, errwrite,
errpipe_read, errpipe_write,
restore_signals, start_new_session, preexec_fn)
self._child_created = True
finally:
# be sure the FD is closed no matter what
os.close(errpipe_write)
# self._devnull is not always defined.
devnull_fd = getattr(self, '_devnull', None)
if p2cread != -1 and p2cwrite != -1 and p2cread != devnull_fd:
os.close(p2cread)
if c2pwrite != -1 and c2pread != -1 and c2pwrite != devnull_fd:
os.close(c2pwrite)
if errwrite != -1 and errread != -1 and errwrite != devnull_fd:
os.close(errwrite)
if devnull_fd is not None:
os.close(devnull_fd)
# Prevent a double close of these fds from __init__ on error.
self._closed_child_pipe_fds = True
# Wait for exec to fail or succeed; possibly raising an
# exception (limited in size)
errpipe_data = bytearray()
while True:
part = os.read(errpipe_read, 50000)
errpipe_data += part
if not part or len(errpipe_data) > 50000:
break
finally:
# be sure the FD is closed no matter what
os.close(errpipe_read)
if errpipe_data:
try:
pid, sts = os.waitpid(self.pid, 0)
if pid == self.pid:
self._handle_exitstatus(sts)
else:
self.returncode = sys.maxsize
except ChildProcessError:
pass
try:
exception_name, hex_errno, err_msg = (
errpipe_data.split(b':', 2))
# The encoding here should match the encoding
# written in by the subprocess implementations
# like _posixsubprocess
err_msg = err_msg.decode()
except ValueError:
exception_name = b'SubprocessError'
hex_errno = b'0'
err_msg = 'Bad exception data from child: {!r}'.format(
bytes(errpipe_data))
child_exception_type = getattr(
builtins, exception_name.decode('ascii'),
SubprocessError)
if issubclass(child_exception_type, OSError) and hex_errno:
errno_num = int(hex_errno, 16)
child_exec_never_called = (err_msg == "noexec")
if child_exec_never_called:
err_msg = ""
# The error must be from chdir(cwd).
err_filename = cwd
else:
err_filename = orig_executable
if errno_num != 0:
err_msg = os.strerror(errno_num)
if errno_num == errno.ENOENT:
err_msg += ': ' + repr(err_filename)
> raise child_exception_type(errno_num, err_msg, err_filename)
E FileNotFoundError: [Errno 2] No such file or directory: 'ocamlc': 'ocamlc'
args = ['ocamlc', '-c', '/tmp/pytest-of-debci/pytest-0/test_identification0/test1.mli']
c2pread = -1
c2pwrite = -1
child_exception_type = <class 'OSError'>
child_exec_never_called = False
close_fds = True
creationflags = 0
cwd = None
devnull_fd = None
env = None
env_list = None
err_filename = 'ocamlc'
err_msg = "No such file or directory: 'ocamlc'"
errno_num = 2
errpipe_data = bytearray(b'OSError:2:')
errpipe_read = 8
errpipe_write = 10
errread = -1
errwrite = -1
exception_name = bytearray(b'OSError')
executable = b'ocamlc'
executable_list = (b'/usr/local/bin/ocamlc',
b'/usr/bin/ocamlc',
b'/bin/ocamlc',
b'/usr/local/games/ocamlc',
b'/usr/games/ocamlc',
b'/sbin/ocamlc',
b'/usr/sbin/ocamlc',
b'/usr/local/sbin/ocamlc')
fds_to_keep = {10}
hex_errno = bytearray(b'2')
low_fds_to_close = []
orig_executable = 'ocamlc'
p2cread = -1
p2cwrite = -1
part = b''
pass_fds = ()
pid = 8251
preexec_fn = None
restore_signals = True
self = <subprocess.Popen object at 0x7f9a4e7e9e90>
shell = False
start_new_session = False
startupinfo = None
sts = 65280
/usr/lib/python3.7/subprocess.py:1522: FileNotFoundError
____________________ ERROR at setup of test_no_differences _____________________
tmpdir = local('/tmp/pytest-of-debci/pytest-0/test_no_differences0')
@pytest.fixture
def cmi(tmpdir):
input_ = str(tmpdir.join('{}.mli'.format(prefix)))
output = str(tmpdir.join('{}.cmi'.format(prefix)))
with open(input_, 'w') as f:
pass
> subprocess.check_call(('ocamlc', '-c', input_))
f = <_io.TextIOWrapper name='/tmp/pytest-of-debci/pytest-0/test_no_differences0/test1.mli' mode='w' encoding='UTF-8'>
input_ = '/tmp/pytest-of-debci/pytest-0/test_no_differences0/test1.mli'
output = '/tmp/pytest-of-debci/pytest-0/test_no_differences0/test1.cmi'
prefix = 'test1'
tmpdir = local('/tmp/pytest-of-debci/pytest-0/test_no_differences0')
tests/comparators/test_ocaml.py:41:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.7/subprocess.py:342: in check_call
retcode = call(*popenargs, **kwargs)
/usr/lib/python3.7/subprocess.py:323: in call
with Popen(*popenargs, **kwargs) as p:
/usr/lib/python3.7/subprocess.py:775: in __init__
restore_signals, start_new_session)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <subprocess.Popen object at 0x7f9a4e82b8d0>
args = ['ocamlc', '-c', '/tmp/pytest-of-debci/pytest-0/test_no_differences0/test1.mli']
executable = b'ocamlc', preexec_fn = None, close_fds = True, pass_fds = ()
cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False
p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1
errwrite = -1, restore_signals = True, start_new_session = False
def _execute_child(self, args, executable, preexec_fn, close_fds,
pass_fds, cwd, env,
startupinfo, creationflags, shell,
p2cread, p2cwrite,
c2pread, c2pwrite,
errread, errwrite,
restore_signals, start_new_session):
"""Execute program (POSIX version)"""
if isinstance(args, (str, bytes)):
args = [args]
else:
args = list(args)
if shell:
# On Android the default shell is at '/system/bin/sh'.
unix_shell = ('/system/bin/sh' if
hasattr(sys, 'getandroidapilevel') else '/bin/sh')
args = [unix_shell, "-c"] + args
if executable:
args[0] = executable
if executable is None:
executable = args[0]
orig_executable = executable
# For transferring possible exec failure from child to parent.
# Data format: "exception name:hex errno:description"
# Pickle is not used; it is complex and involves memory allocation.
errpipe_read, errpipe_write = os.pipe()
# errpipe_write must not be in the standard io 0, 1, or 2 fd range.
low_fds_to_close = []
while errpipe_write < 3:
low_fds_to_close.append(errpipe_write)
errpipe_write = os.dup(errpipe_write)
for low_fd in low_fds_to_close:
os.close(low_fd)
try:
try:
# We must avoid complex work that could involve
# malloc or free in the child process to avoid
# potential deadlocks, thus we do all this here.
# and pass it to fork_exec()
if env is not None:
env_list = []
for k, v in env.items():
k = os.fsencode(k)
if b'=' in k:
raise ValueError("illegal environment variable name")
env_list.append(k + b'=' + os.fsencode(v))
else:
env_list = None # Use execv instead of execve.
executable = os.fsencode(executable)
if os.path.dirname(executable):
executable_list = (executable,)
else:
# This matches the behavior of os._execvpe().
executable_list = tuple(
os.path.join(os.fsencode(dir), executable)
for dir in os.get_exec_path(env))
fds_to_keep = set(pass_fds)
fds_to_keep.add(errpipe_write)
self.pid = _posixsubprocess.fork_exec(
args, executable_list,
close_fds, tuple(sorted(map(int, fds_to_keep))),
cwd, env_list,
p2cread, p2cwrite, c2pread, c2pwrite,
errread, errwrite,
errpipe_read, errpipe_write,
restore_signals, start_new_session, preexec_fn)
self._child_created = True
finally:
# be sure the FD is closed no matter what
os.close(errpipe_write)
# self._devnull is not always defined.
devnull_fd = getattr(self, '_devnull', None)
if p2cread != -1 and p2cwrite != -1 and p2cread != devnull_fd:
os.close(p2cread)
if c2pwrite != -1 and c2pread != -1 and c2pwrite != devnull_fd:
os.close(c2pwrite)
if errwrite != -1 and errread != -1 and errwrite != devnull_fd:
os.close(errwrite)
if devnull_fd is not None:
os.close(devnull_fd)
# Prevent a double close of these fds from __init__ on error.
self._closed_child_pipe_fds = True
# Wait for exec to fail or succeed; possibly raising an
# exception (limited in size)
errpipe_data = bytearray()
while True:
part = os.read(errpipe_read, 50000)
errpipe_data += part
if not part or len(errpipe_data) > 50000:
break
finally:
# be sure the FD is closed no matter what
os.close(errpipe_read)
if errpipe_data:
try:
pid, sts = os.waitpid(self.pid, 0)
if pid == self.pid:
self._handle_exitstatus(sts)
else:
self.returncode = sys.maxsize
except ChildProcessError:
pass
try:
exception_name, hex_errno, err_msg = (
errpipe_data.split(b':', 2))
# The encoding here should match the encoding
# written in by the subprocess implementations
# like _posixsubprocess
err_msg = err_msg.decode()
except ValueError:
exception_name = b'SubprocessError'
hex_errno = b'0'
err_msg = 'Bad exception data from child: {!r}'.format(
bytes(errpipe_data))
child_exception_type = getattr(
builtins, exception_name.decode('ascii'),
SubprocessError)
if issubclass(child_exception_type, OSError) and hex_errno:
errno_num = int(hex_errno, 16)
child_exec_never_called = (err_msg == "noexec")
if child_exec_never_called:
err_msg = ""
# The error must be from chdir(cwd).
err_filename = cwd
else:
err_filename = orig_executable
if errno_num != 0:
err_msg = os.strerror(errno_num)
if errno_num == errno.ENOENT:
err_msg += ': ' + repr(err_filename)
> raise child_exception_type(errno_num, err_msg, err_filename)
E FileNotFoundError: [Errno 2] No such file or directory: 'ocamlc': 'ocamlc'
args = ['ocamlc', '-c', '/tmp/pytest-of-debci/pytest-0/test_no_differences0/test1.mli']
c2pread = -1
c2pwrite = -1
child_exception_type = <class 'OSError'>
child_exec_never_called = False
close_fds = True
creationflags = 0
cwd = None
devnull_fd = None
env = None
env_list = None
err_filename = 'ocamlc'
err_msg = "No such file or directory: 'ocamlc'"
errno_num = 2
errpipe_data = bytearray(b'OSError:2:')
errpipe_read = 8
errpipe_write = 10
errread = -1
errwrite = -1
exception_name = bytearray(b'OSError')
executable = b'ocamlc'
executable_list = (b'/usr/local/bin/ocamlc',
b'/usr/bin/ocamlc',
b'/bin/ocamlc',
b'/usr/local/games/ocamlc',
b'/usr/games/ocamlc',
b'/sbin/ocamlc',
b'/usr/sbin/ocamlc',
b'/usr/local/sbin/ocamlc')
fds_to_keep = {10}
hex_errno = bytearray(b'2')
low_fds_to_close = []
orig_executable = 'ocamlc'
p2cread = -1
p2cwrite = -1
part = b''
pass_fds = ()
pid = 8252
preexec_fn = None
restore_signals = True
self = <subprocess.Popen object at 0x7f9a4e82b8d0>
shell = False
start_new_session = False
startupinfo = None
sts = 65280
/usr/lib/python3.7/subprocess.py:1522: FileNotFoundError
=========================== short test summary info ============================
ERROR tests/comparators/test_ocaml.py::test_identification
ERROR tests/comparators/test_ocaml.py::test_no_differences
Added tag(s) moreinfo.
Request was from "Chris Lamb" <lamby@debian.org>
to control@bugs.debian.org.
(Mon, 16 Sep 2019 10:12:02 GMT) (full text, mbox, link).
Information forwarded
to debian-bugs-dist@lists.debian.org, Reproducible builds folks <reproducible-builds@lists.alioth.debian.org>:
Bug#940471; Package src:diffoscope.
(Mon, 16 Sep 2019 10:18:03 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>.
(Mon, 16 Sep 2019 10:18:03 GMT) (full text, mbox, link).
Message #12 received at 940471@bugs.debian.org (full text, mbox, reply):
tags 940471 + moreinfo
thanks
Hi Gianfranco,
> Hello, looks like the latest diffoscope in unstable has a test failure
> that is preventing it from entering testing:
Hm, I can't reproduce this unfortunately.
> FileNotFoundError: [Errno 2] No such file or directory: 'ocamlc': 'ocamlc'
This does not make immediate sense to me - ocamlc is provided by the
ocaml-nox package which is listed in the Build-Depends and in the
autopkgtest debian/tests/control file.
Any ideas?
Regards,
--
,''`.
: :' : Chris Lamb
`. `'` lamby@debian.org 🍥 chris-lamb.co.uk
`-
Information forwarded
to debian-bugs-dist@lists.debian.org, Reproducible builds folks <reproducible-builds@lists.alioth.debian.org>:
Bug#940471; Package src:diffoscope.
(Mon, 16 Sep 2019 14:42:08 GMT) (full text, mbox, link).
Acknowledgement sent
to Gianfranco Costamagna <locutusofborg@debian.org>:
Extra info received and forwarded to list. Copy sent to Reproducible builds folks <reproducible-builds@lists.alioth.debian.org>.
(Mon, 16 Sep 2019 14:42:08 GMT) (full text, mbox, link).
Message #17 received at 940471@bugs.debian.org (full text, mbox, reply):
tags 940471 - moreinfo > thanks > > Hi Gianfranco, > > > Hello, looks like the latest diffoscope in unstable has a test failure > > that is preventing it from entering testing: > > Hm, I can't reproduce this unfortunately. > > > FileNotFoundError: [Errno 2] No such file or directory: 'ocamlc': 'ocamlc' > > This does not make immediate sense to me - ocamlc is provided by the > ocaml-nox package which is listed in the Build-Depends and in the > autopkgtest debian/tests/control file. > > Any ideas? > If you look at the log, https://ci.debian.net/packages/d/diffoscope/testing/amd64/ you can see that pytest-with-recommends works, because it installs ocaml-nox, while pytest doesn't... look at debian/tests/control Tests: pytest Depends: diffoscope, python3-pytest, file, python3-tlsh I would expect either: 1) ocaml-nox to become a runtime dependency for pytest test 2) test being skipped when ocaml-nox is not installed 3) ocaml-nox become a runtime dependency of diffoscope. I don't really know which one is better, I think 2), but since it requires code modifications, I went for 1) in Ubuntu https://launchpad.net/ubuntu/+source/diffoscope/123ubuntu1 (lets see how it goes) G. > > Regards, > > -- > ,''`. > : :' : Chris Lamb > `. `'` lamby@debian.org ???? chris-lamb.co.uk > `- > >
Removed tag(s) moreinfo.
Request was from Gianfranco Costamagna <locutusofborg@debian.org>
to control@bugs.debian.org.
(Tue, 17 Sep 2019 06:39:03 GMT) (full text, mbox, link).
Added tag(s) pending.
Request was from "Chris Lamb" <lamby@debian.org>
to control@bugs.debian.org.
(Tue, 17 Sep 2019 10:21:05 GMT) (full text, mbox, link).
Message sent on
to Gianfranco Costamagna <locutusofborg@debian.org>:
Bug#940471.
(Tue, 17 Sep 2019 10:21:07 GMT) (full text, mbox, link).
Message #24 received at 940471-submitter@bugs.debian.org (full text, mbox, reply):
Control: tag -1 pending Hello, Bug #940471 in diffoscope reported by you has been fixed in the Git repository and is awaiting an upload. You can see the commit message below and you can check the diff of the fix at: https://salsa.debian.org/reproducible-builds/diffoscope/commit/bf83651d62a9717feba892a4b01d8d7ec28bac49 ------------------------------------------------------------------------ Also conditionally skip the identification and "no differences" tests as we require the Ocaml compiler to be present when building the test files themselves. (Closes: #940471) ------------------------------------------------------------------------ (this message was generated automatically) -- Greetings https://bugs.debian.org/940471
Information forwarded
to debian-bugs-dist@lists.debian.org, Reproducible builds folks <reproducible-builds@lists.alioth.debian.org>:
Bug#940471; Package src:diffoscope.
(Tue, 17 Sep 2019 10:30:03 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>.
(Tue, 17 Sep 2019 10:30:03 GMT) (full text, mbox, link).
Message #29 received at 940471@bugs.debian.org (full text, mbox, reply):
tags 940471 + pending
thanks
Hi Gianfranco,
> If you look at the log,
> https://ci.debian.net/packages/d/diffoscope/testing/amd64/
>
> you can see that pytest-with-recommends works, because it installs ocaml-nox,
> while pytest doesn't...
Ah, of course; I should have looked at the entire log
> 2) test being skipped when ocaml-nox is not installed
This is the route we have taken elsewhere and I have committed it in:
https://salsa.debian.org/reproducible-builds/diffoscope/commit/bf83651d62a9717feba892a4b01d8d7ec28bac49
Best wishes,
--
,''`.
: :' : Chris Lamb
`. `'` lamby@debian.org 🍥 chris-lamb.co.uk
`-
Reply sent
to Chris Lamb <lamby@debian.org>:
You have taken responsibility.
(Tue, 17 Sep 2019 10:39:16 GMT) (full text, mbox, link).
Notification sent
to Gianfranco Costamagna <locutusofborg@debian.org>:
Bug acknowledged by developer.
(Tue, 17 Sep 2019 10:39:16 GMT) (full text, mbox, link).
Message #34 received at 940471-close@bugs.debian.org (full text, mbox, reply):
Source: diffoscope
Source-Version: 124
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 940471@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.
Debian distribution maintenance software
pp.
Chris Lamb <lamby@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: SHA256
Format: 1.8
Date: Tue, 17 Sep 2019 12:19:07 +0200
Source: diffoscope
Architecture: source
Version: 124
Distribution: unstable
Urgency: medium
Maintainer: Reproducible builds folks <reproducible-builds@lists.alioth.debian.org>
Changed-By: Chris Lamb <lamby@debian.org>
Closes: 939387 940471
Changes:
diffoscope (124) unstable; urgency=medium
.
[ Chris Lamb ]
* Also conditionally skip the identification and "no differences" tests as we
require the Ocaml compiler to be present when building the test files
themselves. (Closes: #940471)
.
[ Mattia Rizzolo ]
* Permit all sorts of version suffixes when checking the Debian package
version matches setup.py, not just for backports. (Closes: #939387)
.
[ Vagrant Cascadian ]
* Add external tools on GNU Guix for odt2txt, sng and pppdump
.
[ Marc Herbert ]
* Remove StaticLibFile in the ELF comparator -- ArFile.compare_details() is
superior. (Closes: reproducible-builds/diffoscope#64)
Checksums-Sha1:
ae5b4dc9232dface50f1e5c5cfab39b3710b0bbc 4683 diffoscope_124.dsc
f82b1af6d9a9df04a12c239bbd846d9350fbc6a3 1129436 diffoscope_124.tar.xz
4898d6596be1d025eff020755cf088f0a2a1381d 26403 diffoscope_124_amd64.buildinfo
Checksums-Sha256:
8758c84677e953c9d7fa6aff9253256dfe2e77e4ee8ad7c06060485bce239322 4683 diffoscope_124.dsc
99f3721f576137130438d9a83699ba1c6778f79f94db0007733ad2629390636a 1129436 diffoscope_124.tar.xz
6f4278ce874a92449d3bad3e6e15c5b89ce97e2604b58fe6bf38ea57d84544c2 26403 diffoscope_124_amd64.buildinfo
Files:
45cde69834f09d13a69e6e89c97bf9cb 4683 devel optional diffoscope_124.dsc
dc02917c3173239f2b2a1bd323fd5318 1129436 devel optional diffoscope_124.tar.xz
06434d89bc528797ed2f2e428856049f 26403 devel optional diffoscope_124_amd64.buildinfo
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCAAdFiEEwv5L0nHBObhsUz5GHpU+J9QxHlgFAl2AtXMACgkQHpU+J9Qx
Hlj4vhAAt4InZz3wqw5Gc/xMDuLtofOuiMSO/qcfCGSHrkLpFIY7KxrU8bis+VpX
pO5dO40GqBc/wtQXCUxBq9WhvA7b1D58+VHoB+nTgBnPo3zF9k8YqzG6KYpacovQ
RVjMGZzNYYRjNY3IDIznAkpRC4YLOr81CA/BecP4cbx6y+H5HWt+UWRTWgB7FZSw
HsThGDA8BTYz5/Snv4B9uaC96h2ex+/pYVfpmiWfrrWHi9sZjCOJi1JzAokiD5Hs
kR5isBblIVwszrB62qwC161PMlK7xm3BiM0KPQTjHsoieNUGDdhy96aD/M3k+WLQ
mrBpZUuAiANPuZHV7ySHBLVAz9UzpMvxNVi/4jOxxFFKgtZxQlsh5s+tu2K9Aq1+
UjNQ2BPAzXMqbejNhUEG0rGzyhKt+TObtBBULKl+iIr1gbZMdPjzvQW2gFgaNEQZ
GBa1yxp92mEp7nchHdCGt18b7SZtovsEfoodTsvZhqa6zCCg1vhKtn/QBpYSFblH
S6RfqmiQpudnF43h0ICyLMw+yfgLNV0EqRdNQ7r+Yc/HuNGJhOIsRlpr5Mucj3UK
yXGcLvkpoaQ23HQichRImvsg+4u16mJJukWprhEkQMBlgBp32qujAuohpfjQLTbN
+BJ3ZwVojxntYpBP65syvMs36YRMGrv9ygxX4eWyB/XI22EUuss=
=NKWB
-----END PGP SIGNATURE-----
Bug archived.
Request was from Debbugs Internal Request <owner@bugs.debian.org>
to internal_control@bugs.debian.org.
(Wed, 16 Oct 2019 07:30:11 GMT) (full text, mbox, link).
Send a report that this bug log contains spam.
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.