Debian Bug report logs - #940471
diffoscope: test failures

version graph

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.

Toggle useless messages

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):

From: Gianfranco Costamagna <locutusofborg@debian.org>
To: submit@bugs.debian.org
Subject: diffoscope: test failures
Date: Mon, 16 Sep 2019 08:57:54 +0200
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):

From: "Chris Lamb" <lamby@debian.org>
To: "Gianfranco Costamagna" <locutusofborg@debian.org>, 940471@bugs.debian.org
Subject: Re: Bug#940471: diffoscope: test failures
Date: Mon, 16 Sep 2019 12:09:37 +0200
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):

From: Gianfranco Costamagna <locutusofborg@debian.org>
To: 940471@bugs.debian.org
Subject: Re: Bug#940471: diffoscope: test failures
Date: Mon, 16 Sep 2019 16:38:38 +0200
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):

From: Chris Lamb <lamby@debian.org>
To: 940471-submitter@bugs.debian.org
Subject: Bug#940471 marked as pending in diffoscope
Date: Tue, 17 Sep 2019 10:16:05 +0000
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):

From: "Chris Lamb" <lamby@debian.org>
To: "Gianfranco Costamagna" <locutusofborg@debian.org>, 940471@bugs.debian.org
Subject: Re: Bug#940471: diffoscope: test failures
Date: Tue, 17 Sep 2019 12:17:20 +0200
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):

From: Chris Lamb <lamby@debian.org>
To: 940471-close@bugs.debian.org
Subject: Bug#940471: fixed in diffoscope 124
Date: Tue, 17 Sep 2019 10:34:40 +0000
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.


Debian bug tracking system administrator <owner@bugs.debian.org>. Last modified: Wed May 17 09:36:38 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.