[Qa-jenkins-scm] Build failed in Jenkins: reproducible_reprotest_from_git_master #45
jenkins at jenkins.debian.net
jenkins at jenkins.debian.net
Wed Jul 19 15:21:39 UTC 2017
See <https://jenkins.debian.net/job/reproducible_reprotest_from_git_master/45/display/redirect?page=changes>
Changes:
[infinity0] Use autopkgtest upstream paths, makes things easier to import
[infinity0] Add script for importing autopkgtest code
[infinity0] Import autopkgtest 4.4
[infinity0] Patches needed for autopkgtest 4.4
[infinity0] Update d/changelog with autopkgtest info
------------------------------------------
[...truncated 258.45 KB...]
tests/tests.py:22:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
build_command = 'python3 mock_build.py umask', artifact_pattern = 'artifact'
virtual_server_args = ['null'], source_root = 'tests', no_clean_on_error = False
variations = frozenset({'build_path', 'environment', 'exec_path', 'home', 'kernel', 'locales', ...})
store_dir = None, diffoscope_args = [], testbed_pre = None, testbed_init = None
def check(build_command, artifact_pattern, virtual_server_args, source_root,
no_clean_on_error=False, variations=VARIATIONS,
store_dir=None, diffoscope_args=[],
testbed_pre=None, testbed_init=None):
# default argument [] is safe here because we never mutate it.
if not source_root:
raise ValueError("invalid source root: %s" % source_root)
if store_dir:
store_dir = str(store_dir)
if not os.path.exists(store_dir):
os.makedirs(store_dir, exist_ok=False)
elif os.listdir(store_dir):
raise ValueError("store_dir must be empty: %s" % store_dir)
store = Pair(os.path.join(store_dir, "control"),
os.path.join(store_dir, "experiment"))
logging.debug("virtual_server_args: %r", virtual_server_args)
script = Pair.of(Script(build_command))
env = Pair(types.MappingProxyType(os.environ.copy()),
types.MappingProxyType(os.environ.copy()))
source_root = str(source_root)
with tempfile.TemporaryDirectory() as temp_dir:
if testbed_pre:
new_source_root = os.path.join(temp_dir, "testbed_pre")
shutil.copytree(source_root, new_source_root, symlinks=True)
subprocess.check_call(["sh", "-ec", testbed_pre], cwd=new_source_root)
source_root = new_source_root
logging.debug("source_root: %s", source_root)
result = Pair(os.path.join(temp_dir, 'control_artifact/'),
os.path.join(temp_dir, 'experiment_artifact/'))
# TODO: an alternative strategy is to run the testbed twice; not sure
# if it's worth implementing at this stage, but perhaps in the future.
> with start_testbed(virtual_server_args, temp_dir, no_clean_on_error) as testbed:
reprotest/__init__.py:439:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <contextlib._GeneratorContextManager object at 0x7fd48b4e6c88>
def __enter__(self):
try:
> return next(self.gen)
/usr/lib/python3.5/contextlib.py:59:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
args = ['null'], temp_dir = '/tmp/tmpuztdzeyx', no_clean_on_error = False
@_contextlib.contextmanager
def start_testbed(args, temp_dir, no_clean_on_error=False):
'''This is a simple wrapper around adt_testbed that automates the
initialization and cleanup.'''
# Find the location of reprotest using setuptools and then get the
# path for the correct virt-server script.
server_path = get_server_path(args[0])
logging.info('STARTING VIRTUAL SERVER %r', [server_path] + args[1:])
testbed = adt_testbed.Testbed([server_path] + args[1:], temp_dir, None)
> testbed.start()
reprotest/__init__.py:65:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <reprotest.lib.adt_testbed.Testbed object at 0x7fd48b4e69b0>
def start(self):
# are we running from a checkout?
root_dir = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
if os.path.exists(os.path.join(root_dir, '.git')):
try:
head = subprocess.check_output(['git', 'show', '--no-patch', '--oneline'],
cwd=root_dir)
head = head.decode('UTF-8').strip()
except OSError:
head = 'cannot determine current HEAD'
adtlog.info('git checkout: %s' % head)
else:
adtlog.info('version @version@')
# log command line invocation for the log
adtlog.info('host %s; command line: %s' % (
os.uname()[1], ' '.join([pipes.quote(w) for w in sys.argv])))
self.sp = subprocess.Popen(self.vserver_argv,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
universal_newlines=True)
> self.expect('ok', 0)
reprotest/lib/adt_testbed.py:109:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <reprotest.lib.adt_testbed.Testbed object at 0x7fd48b4e69b0>
keyword = 'ok', nresults = 0
def expect(self, keyword, nresults):
line = self.sp.stdout.readline()
if not line:
> self.bomb('unexpected eof from the testbed')
reprotest/lib/adt_testbed.py:374:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <reprotest.lib.adt_testbed.Testbed object at 0x7fd48b4e69b0>
m = 'unexpected eof from the testbed'
_type = <class 'reprotest.lib.adtlog.TestbedFailure'>
def bomb(self, m, _type=adtlog.TestbedFailure):
adtlog.debug('%s %s' % (_type.__name__, m))
> self.stop()
reprotest/lib/adt_testbed.py:353:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <reprotest.lib.adt_testbed.Testbed object at 0x7fd48b4e69b0>
def stop(self):
adtlog.debug('testbed stop')
if self.stop_sent:
# avoid endless loop
return
self.stop_sent = True
self.close()
if self.sp is None:
return
ec = self.sp.returncode
if ec is None:
self.sp.stdout.close()
> self.send('quit')
reprotest/lib/adt_testbed.py:124:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <reprotest.lib.adt_testbed.Testbed object at 0x7fd48b4e69b0>
string = 'quit'
def send(self, string):
try:
adtlog.debug('sending command to testbed: ' + string)
self.sp.stdin.write(string)
self.sp.stdin.write('\n')
self.sp.stdin.flush()
self.lastsend = string
except:
(type, value, dummy) = sys.exc_info()
self.bomb('cannot send to testbed: %s' % traceback.
> format_exception_only(type, value))
reprotest/lib/adt_testbed.py:369:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <reprotest.lib.adt_testbed.Testbed object at 0x7fd48b4e69b0>
m = "cannot send to testbed: ['BrokenPipeError: [Errno 32] Broken pipe\\n']"
_type = <class 'reprotest.lib.adtlog.TestbedFailure'>
def bomb(self, m, _type=adtlog.TestbedFailure):
adtlog.debug('%s %s' % (_type.__name__, m))
self.stop()
> raise _type(m)
E reprotest.lib.adtlog.TestbedFailure: cannot send to testbed: ['BrokenPipeError: [Errno 32] Broken pipe\n']
reprotest/lib/adt_testbed.py:354: TestbedFailure
During handling of the above exception, another exception occurred:
virtual_server = ['null'], captures = 'umask'
@pytest.mark.parametrize('captures', list(reprotest.VARIATIONS.keys()))
def test_variations(virtual_server, captures):
expected = 1 if captures in TEST_VARIATIONS else 0
> check_return_code('python3 mock_build.py ' + captures, virtual_server, expected)
tests/tests.py:51:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
command = 'python3 mock_build.py umask', virtual_server = ['null'], code = 1
def check_return_code(command, virtual_server, code):
try:
retcode = reprotest.check(command, 'artifact', virtual_server, 'tests', variations=TEST_VARIATIONS)
except SystemExit as system_exit:
retcode = system_exit.args[0]
finally:
if isinstance(code, int):
> assert(retcode == code)
E UnboundLocalError: local variable 'retcode' referenced before assignment
tests/tests.py:27: UnboundLocalError
___________________________ test_debian_build[null] ____________________________
virtual_server = ['null']
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 + ['debuild -b -nc -uc -us', '../*.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 0x7fd48d6aad08>(((['/tmp/testrun/.tox/py35/bin/python', '-m', 'reprotest', '--no-diffoscope', '--dont-vary', 'fileordering'] + ['debuild -b -nc -uc -us', '../*.deb']) + ['null']), env={'DEB_BUILD_OPTIONS': 'nocheck', 'LANG': 'en_GB.UTF-8', 'PATH': '/tmp/testrun/.tox/py35/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11', 'PYTHONHASHSEED': '1834317909', ...})
E + where <function call at 0x7fd48d6aad08> = subprocess.call
E + and {'DEB_BUILD_OPTIONS': 'nocheck', 'LANG': 'en_GB.UTF-8', 'PATH': '/tmp/testrun/.tox/py35/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11', 'PYTHONHASHSEED': '1834317909', ...} = dict(([('REPROTEST_TEST_DONTVARY', 'fileordering'), ('https_proxy', 'https://127.0.9.1:9'), ('PATH', '/tmp/testrun/.tox/py35...in/X11'), ('PYTHONIOENCODING', 'utf-8'), ('VIRTUAL_ENV', '/tmp/testrun/.tox/py35'), ('VIRTUALENV_DOWNLOAD', 'no'), ...] + [('DEB_BUILD_OPTIONS', 'nocheck')]))
E + where [('REPROTEST_TEST_DONTVARY', 'fileordering'), ('https_proxy', 'https://127.0.9.1:9'), ('PATH', '/tmp/testrun/.tox/py35...in/X11'), ('PYTHONIOENCODING', 'utf-8'), ('VIRTUAL_ENV', '/tmp/testrun/.tox/py35'), ('VIRTUALENV_DOWNLOAD', 'no'), ...] = list(ItemsView(environ({'REPROTEST_TEST_DONTVARY': 'fileordering', 'https_proxy': 'https://127.0.9.1:9', 'PATH': '/tmp/test...IRTUALENV_DOWNLOAD': 'no', 'LANG': 'en_GB.UTF-8', 'PYTHONHASHSEED': '1834317909', 'http_proxy': 'http://127.0.9.1:9'})))
E + where ItemsView(environ({'REPROTEST_TEST_DONTVARY': 'fileordering', 'https_proxy': 'https://127.0.9.1:9', 'PATH': '/tmp/test...IRTUALENV_DOWNLOAD': 'no', 'LANG': 'en_GB.UTF-8', 'PYTHONHASHSEED': '1834317909', 'http_proxy': 'http://127.0.9.1:9'})) = <bound method Mapping.items of environ({'REPROTEST_TEST_DONTVARY': 'fileordering', 'https_proxy': 'https://127.0.9.1:9...IRTUALENV_DOWNLOAD': 'no', 'LANG': 'en_GB.UTF-8', 'PYTHONHASHSEED': '1834317909', 'http_proxy': 'http://127.0.9.1:9'})>()
E + where <bound method Mapping.items of environ({'REPROTEST_TEST_DONTVARY': 'fileordering', 'https_proxy': 'https://127.0.9.1:9...IRTUALENV_DOWNLOAD': 'no', 'LANG': 'en_GB.UTF-8', 'PYTHONHASHSEED': '1834317909', 'http_proxy': 'http://127.0.9.1:9'})> = environ({'REPROTEST_TEST_DONTVARY': 'fileordering', 'https_proxy': 'https://127.0.9.1:9', 'PATH': '/tmp/testrun/.tox/p...VIRTUALENV_DOWNLOAD': 'no', 'LANG': 'en_GB.UTF-8', 'PYTHONHASHSEED': '1834317909', 'http_proxy': 'http://127.0.9.1:9'}).items
E + where environ({'REPROTEST_TEST_DONTVARY': 'fileordering', 'https_proxy': 'https://127.0.9.1:9', 'PATH': '/tmp/testrun/.tox/p...VIRTUALENV_DOWNLOAD': 'no', 'LANG': 'en_GB.UTF-8', 'PYTHONHASHSEED': '1834317909', 'http_proxy': 'http://127.0.9.1:9'}) = os.environ
tests/tests.py:68: AssertionError
===================== 12 failed, 1 passed in 13.93 seconds =====================
ERROR: InvocationError: '/tmp/testrun/.tox/py35/bin/python -m coverage run --omit .tox/* --parallel -m py.test -s tests/tests.py'
___________________________________ summary ____________________________________
ERROR: py35: commands failed
debian/rules:23: 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 gave error exit status 2
debuild: fatal error at line 1124:
dpkg-buildpackage -rfakeroot -us -uc failed
+ cleanup
+ '[' -e /chroots/chroot-run-sid.UVi3wxhga/tmp/testrun/stats.csv ']'
+ '[' false = true ']'
++ ls -1 '/chroots/chroot-run-sid.UVi3wxhga/tmp/debian-edu-doc_*.changes'
++ true
+ CHANGES=
+ '[' '!' -z '' ']'
+ '[' false = true ']'
+ '[' -d /chroots/chroot-run-sid.UVi3wxhga/proc ']'
+ sudo umount -l /chroots/chroot-run-sid.UVi3wxhga/proc
+ '[' -d /chroots/chroot-run-sid.UVi3wxhga/testrun ']'
+ '[' -d /chroots/chroot-run-sid.UVi3wxhga ']'
+ sudo rm -rf --one-file-system /chroots/chroot-run-sid.UVi3wxhga
Wed 19 Jul 15:21:39 UTC 2017 - /srv/jenkins/bin/chroot-run.sh stopped running as /tmp/jenkins-script-ZdHVlEQz, which will now be removed.
Build step 'Execute shell' marked build as failure
More information about the Qa-jenkins-scm
mailing list