[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