[Qa-jenkins-scm] Build failed in Jenkins: reproducible_reprotest_from_git_master #90

jenkins at jenkins.debian.net jenkins at jenkins.debian.net
Fri Oct 27 00:16:08 UTC 2017


See <https://jenkins.debian.net/job/reproducible_reprotest_from_git_master/90/display/redirect?page=changes>

Changes:

[infinity0] Improve logging to try to get to the bottom of the jenkins failures

------------------------------------------
[...truncated 225.99 KB...]
        if ( cleanup ); then :; else echo >&2 "cleanup failed with exit code $?"; fi;
    fi
    exit $__x
fi
2017-10-27 00:15:30 D: reprotest: #### END REPROTEST BUILD SCRIPT ################################################
2017-10-27 00:15:30 I: reprotest: build successful, copying artifacts
2017-10-27 00:15:30 I: reprotest: copying /tmp/reprotest.qKWWp4/artifacts-experiment-1/ back from virtual server's /tmp/tmpzuf04vbq/experiment-1
2017-10-27 00:15:30 I: reprotest: Running diffoscope: ['diffoscope', '/tmp/tmpzuf04vbq/control', '/tmp/tmpzuf04vbq/experiment-1']
2017-10-27 00:15:31 W: diffoscope.comparators.directory: Unable to find 'getfacl', some directory metadata differences might not be noticed.
2017-10-27 00:15:32 W: diffoscope.comparators.directory: Unable to find 'getfacl', some directory metadata differences might not be noticed.
2017-10-27 00:15:32 W: diffoscope.comparators.directory: Unable to find 'getfacl', some directory metadata differences might not be noticed.
2017-10-27 00:15:32 W: diffoscope.comparators.directory: Unable to find 'getfacl', some directory metadata differences might not be noticed.
--- /tmp/tmpzuf04vbq/control
+++ /tmp/tmpzuf04vbq/experiment-1
├── source-root
│ ├── artifact
│ │ @@ -1 +1 @@
│ │ --rw-r--r--
│ │ +-rw-rw-r--
│ │ ├── stat {}
│ │ │ @@ -1,8 +1,8 @@
│ │ │  
│ │ │    Size: 10        	Blocks: 8          IO Block: 4096   regular file
│ │ │  Links: 1
│ │ │ -Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
│ │ │ +Access: (0664/-rw-rw-r--)  Uid: (    0/    root)   Gid: (    0/    root)
│ │ │  
│ │ │  Modify: 1970-01-01 00:00:00.000000000 +0000
│ │ │  
│ │ │   Birth: -
.Traceback (most recent call last):
  File "/usr/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/tmp/testrun/reprotest/__main__.py", line 8, in <module>
    sys.exit(main())
  File "/tmp/testrun/reprotest/__init__.py", line 810, in main
    r = run(sys.argv[1:])
  File "/tmp/testrun/reprotest/__init__.py", line 682, in run
    logger.basicConfig(level=30-10*verbosity)
AttributeError: 'Logger' object has no attribute 'basicConfig'
Traceback (most recent call last):
  File "/usr/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/tmp/testrun/reprotest/__main__.py", line 8, in <module>
    sys.exit(main())
  File "/tmp/testrun/reprotest/__init__.py", line 810, in main
    r = run(sys.argv[1:])
  File "/tmp/testrun/reprotest/__init__.py", line 682, in run
    logger.basicConfig(level=30-10*verbosity)
AttributeError: 'Logger' object has no attribute 'basicConfig'
.Traceback (most recent call last):
  File "/usr/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/tmp/testrun/reprotest/__main__.py", line 8, in <module>
    sys.exit(main())
  File "/tmp/testrun/reprotest/__init__.py", line 810, in main
    r = run(sys.argv[1:])
  File "/tmp/testrun/reprotest/__init__.py", line 682, in run
    logger.basicConfig(level=30-10*verbosity)
AttributeError: 'Logger' object has no attribute 'basicConfig'
FF
tests/test_shell.py ..

=================================== FAILURES ===================================
___________________________ test_simple_builds[null] ___________________________

virtual_server = ['null']

    def test_simple_builds(virtual_server):
        check_reproducibility('python3 mock_build.py', virtual_server, True)
        with pytest.raises(Exception):
            check_reproducibility('python3 mock_failure.py', virtual_server)
>       check_reproducibility('python3 mock_build.py irreproducible', virtual_server, False)

tests/test_reprotest.py:59: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
tests/test_reprotest.py:27: in check_reproducibility
    Variations.of(VariationSpec.default(TEST_VARIATIONS)))
reprotest/__init__.py:352: in check
    local_dists = [proc.send(nv) for nv in zip(bnames, build_variations)]
reprotest/__init__.py:352: in <listcomp>
    local_dists = [proc.send(nv) for nv in zip(bnames, build_variations)]
reprotest/__init__.py:318: in corun_builds
    bctx.run_build(testbed, build, os.environ, artifact_pattern, testbed_build_pre, no_clean_on_error)
reprotest/__init__.py:212: in run_build
    kind='build')
reprotest/__init__.py:64: in check_exec2
    adtlog.AutopkgtestError)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <reprotest.Testbed object at 0x7f416362aa90>
m = '"su -s /bin/sh root -c set -e; run_build() {\n    mkdir -p /tmp/reprotest.Gd5lTP/build-control-aux && \\\n    mv /tmp...anup ); then :; else echo >&2 "cleanup failed with exit code $?"; fi;\n    fi\n    exit $__x\nfi" failed with status 1'
_type = <class 'reprotest.lib.adtlog.AutopkgtestError'>

    def bomb(self, m, _type=adtlog.TestbedFailure):
        adtlog.debug('%s %s' % (_type.__name__, m))
        #self.stop() # don't stop when bombing, so we can control it via no_clean_on_error
>       raise _type(m)
E       reprotest.lib.adtlog.AutopkgtestError: "su -s /bin/sh root -c set -e; run_build() {
E           mkdir -p /tmp/reprotest.Gd5lTP/build-control-aux && \
E           mv /tmp/reprotest.Gd5lTP/build-control/ /tmp/reprotest.Gd5lTP/const_build_path && \
E           umask 0022 && \
E           export REPROTEST_BUILD_PATH=/tmp/reprotest.Gd5lTP/const_build_path/ && \
E           export REPROTEST_UMASK=$(umask) && \
E           linux64 --uname-2.6 \
E           sh -ec 'cd "$REPROTEST_BUILD_PATH"; unset REPROTEST_BUILD_PATH; umask "$REPROTEST_UMASK"; unset REPROTEST_UMASK; python3 mock_build.py irreproducible'
E       }
E       
E       cleanup() {
E           __c=0; \
E           mv /tmp/reprotest.Gd5lTP/const_build_path /tmp/reprotest.Gd5lTP/build-control/ || __c=$?; \
E           rm -rf /tmp/reprotest.Gd5lTP/build-control-aux || __c=$?; \
E           exit $__c
E       }
E       
E       trap '( cleanup )' HUP INT QUIT ABRT TERM PIPE # FIXME doesn't quite work reliably yet
E       
E       if ( run_build ); then ( cleanup ); else
E           __x=$?; # save the exit code of run_build
E           if ( ! false ); then
E               if ( cleanup ); then :; else echo >&2 "cleanup failed with exit code $?"; fi;
E           fi
E           exit $__x
E       fi" failed with status 1

reprotest/__init__.py:70: AutopkgtestError
__________________________ test_variations[null-home] __________________________

virtual_server = ['null'], captures = 'home'

    @pytest.mark.parametrize('captures', list(VARIATIONS.keys()))
    def test_variations(virtual_server, captures):
        expected = captures not in TEST_VARIATIONS
        with setup_logging(True):
>           check_reproducibility('python3 mock_build.py ' + captures, virtual_server, expected)

tests/test_reprotest.py:90: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

command = 'python3 mock_build.py home', virtual_server = ['null']
reproducible = False

    def check_reproducibility(command, virtual_server, reproducible):
        result = reprotest.check(
            reprotest.TestArgs.of(command, 'tests', 'artifact', diffoscope_args=[]),
            reprotest.TestbedArgs.of(virtual_server),
            Variations.of(VariationSpec.default(TEST_VARIATIONS)))
>       assert result == reproducible
E       assert True == False

tests/test_reprotest.py:28: AssertionError
_______________________ test_variations[null-exec_path] ________________________

virtual_server = ['null'], captures = 'exec_path'

    @pytest.mark.parametrize('captures', list(VARIATIONS.keys()))
    def test_variations(virtual_server, captures):
        expected = captures not in TEST_VARIATIONS
        with setup_logging(True):
>           check_reproducibility('python3 mock_build.py ' + captures, virtual_server, expected)

tests/test_reprotest.py:90: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

command = 'python3 mock_build.py exec_path', virtual_server = ['null']
reproducible = False

    def check_reproducibility(command, virtual_server, reproducible):
        result = reprotest.check(
            reprotest.TestArgs.of(command, 'tests', 'artifact', diffoscope_args=[]),
            reprotest.TestbedArgs.of(virtual_server),
            Variations.of(VariationSpec.default(TEST_VARIATIONS)))
>       assert result == reproducible
E       assert True == False

tests/test_reprotest.py:28: AssertionError
___________________________ test_debian_build[null] ____________________________

virtual_server = ['null']

    @pytest.mark.need_builddeps
    def test_debian_build(virtual_server):
        # This is a bit dirty though it works - when building the debian package,
        # debian/rules will call this, which will call debian/rules, so ../*.deb
        # gets written twice and the second one is the "real" one, but since it
        # should all be reproducible, this should be OK.
>       assert(0 == subprocess.call(
            REPROTEST + ['dpkg-buildpackage -b -nc --no-sign', '../*.deb'] + virtual_server,
            # "nocheck" to stop tests recursing into themselves
            env=dict(list(os.environ.items()) + [("DEB_BUILD_OPTIONS", "nocheck")])))
E       AssertionError: assert 0 == 1
E        +  where 1 = <function call at 0x7f416577ee18>(((['/tmp/testrun/.tox/py36/bin/python', '-m', 'reprotest', '--no-diffoscope', '--vary=-fileordering,-user_group,-domain_host'] + ['dpkg-buildpackage -b -nc --no-sign', '../*.deb']) + ['null']), env={'DEB_BUILD_OPTIONS': 'nocheck', 'LANG': 'en_GB.UTF-8', 'PATH': '/tmp/testrun/.tox/py36/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11', 'PYTEST_CURRENT_TEST': 'tests/test_reprotest.py::test_debian_build[null] (call)', ...})
E        +    where <function call at 0x7f416577ee18> = subprocess.call
E        +    and   {'DEB_BUILD_OPTIONS': 'nocheck', 'LANG': 'en_GB.UTF-8', 'PATH': '/tmp/testrun/.tox/py36/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11', 'PYTEST_CURRENT_TEST': 'tests/test_reprotest.py::test_debian_build[null] (call)', ...} = dict(([('LANG', 'en_GB.UTF-8'), ('PYTHONIOENCODING', 'utf-8'), ('https_proxy', 'https://127.0.9.1:9'), ('VIRTUALENV_DOWNLOAD', 'no'), ('http_proxy', 'http://127.0.9.1:9'), ('REPROTEST_TEST_DONTVARY', 'fileordering,user_group,domain_host'), ...] + [('DEB_BUILD_OPTIONS', 'nocheck')]))
E        +      where [('LANG', 'en_GB.UTF-8'), ('PYTHONIOENCODING', 'utf-8'), ('https_proxy', 'https://127.0.9.1:9'), ('VIRTUALENV_DOWNLOAD', 'no'), ('http_proxy', 'http://127.0.9.1:9'), ('REPROTEST_TEST_DONTVARY', 'fileordering,user_group,domain_host'), ...] = list(ItemsView(environ({'LANG': 'en_GB.UTF-8', 'PYTHONIOENCODING': 'utf-8', 'https_proxy': 'https://127.0.9.1:9', 'VIRTUALE...UAL_ENV': '/tmp/testrun/.tox/py36', 'PYTEST_CURRENT_TEST': 'tests/test_reprotest.py::test_debian_build[null] (call)'})))
E        +        where ItemsView(environ({'LANG': 'en_GB.UTF-8', 'PYTHONIOENCODING': 'utf-8', 'https_proxy': 'https://127.0.9.1:9', 'VIRTUALE...UAL_ENV': '/tmp/testrun/.tox/py36', 'PYTEST_CURRENT_TEST': 'tests/test_reprotest.py::test_debian_build[null] (call)'})) = <bound method Mapping.items of environ({'LANG': 'en_GB.UTF-8', 'PYTHONIOENCODING': 'utf-8', 'https_proxy': 'https://12...UAL_ENV': '/tmp/testrun/.tox/py36', 'PYTEST_CURRENT_TEST': 'tests/test_reprotest.py::test_debian_build[null] (call)'})>()
E        +          where <bound method Mapping.items of environ({'LANG': 'en_GB.UTF-8', 'PYTHONIOENCODING': 'utf-8', 'https_proxy': 'https://12...UAL_ENV': '/tmp/testrun/.tox/py36', 'PYTEST_CURRENT_TEST': 'tests/test_reprotest.py::test_debian_build[null] (call)'})> = environ({'LANG': 'en_GB.UTF-8', 'PYTHONIOENCODING': 'utf-8', 'https_proxy': 'https://127.0.9.1:9', 'VIRTUALENV_DOWNLOA...TUAL_ENV': '/tmp/testrun/.tox/py36', 'PYTEST_CURRENT_TEST': 'tests/test_reprotest.py::test_debian_build[null] (call)'}).items
E        +            where environ({'LANG': 'en_GB.UTF-8', 'PYTHONIOENCODING': 'utf-8', 'https_proxy': 'https://127.0.9.1:9', 'VIRTUALENV_DOWNLOA...TUAL_ENV': '/tmp/testrun/.tox/py36', 'PYTEST_CURRENT_TEST': 'tests/test_reprotest.py::test_debian_build[null] (call)'}) = os.environ

tests/test_reprotest.py:136: AssertionError
______________________________ test_command_lines ______________________________

    def test_command_lines():
>       test_args, _, _ = check_command_line(".".split(), 0)

tests/test_reprotest.py:102: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
tests/test_reprotest.py:33: in check_command_line
    return reprotest.run(command_line, True)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

argv = ['.'], dry_run = True

    def run(argv, dry_run=None):
        # Argparse exits with status code 2 if something goes wrong, which
        # is already the right status exit code for reprotest.
        parser = cli_parser()
        parsed_args = command_line(parser, argv)
        config_args = config_to_args(parser, parsed_args.config_file)
        # Command-line arguments override config file settings.
        parsed_args = command_line(parser, config_args + argv)
        dry_run = parsed_args.dry_run or dry_run
    
        verbosity = parsed_args.verbosity
        adtlog.verbosity = verbosity - 1
>       logger.basicConfig(level=30-10*verbosity)
E       AttributeError: 'Logger' object has no attribute 'basicConfig'

reprotest/__init__.py:682: AttributeError
===================== 5 failed, 14 passed in 73.59 seconds =====================
ERROR: InvocationError: '/tmp/testrun/.tox/py36/bin/python -m coverage run --omit .tox/* --parallel -m py.test -s tests/'
___________________________________ summary ____________________________________
ERROR:   py36: commands failed
debian/rules:26: recipe for target 'override_dh_auto_test' failed
make[1]: *** [override_dh_auto_test] Error 1
make[1]: Leaving directory '/tmp/testrun'
debian/rules:7: recipe for target 'build' failed
make: *** [build] Error 2
dpkg-buildpackage: error: debian/rules build subprocess returned exit status 2
debuild: fatal error at line 1124:
dpkg-buildpackage -rfakeroot -us -uc failed
Fri 27 Oct 00:16:08 UTC 2017 - /srv/jenkins/bin/chroot-run.sh stopped running as /tmp/jenkins-script-OQudmIaY, which will now be removed.
Build step 'Execute shell' marked build as failure



More information about the Qa-jenkins-scm mailing list