| |
@@ -13,7 +13,6 @@
|
| |
import configparser
|
| |
from configparser import ConfigParser
|
| |
|
| |
- from contextlib import contextmanager
|
| |
from operator import methodcaller
|
| |
|
| |
import traceback
|
| |
@@ -100,6 +99,9 @@
|
| |
munch.Munch(stdout, stderr, returncode)
|
| |
executed cmd, standard output, error output, and the return code
|
| |
"""
|
| |
+
|
| |
+ start = time.time()
|
| |
+
|
| |
def _info(logger, *args, **kwargs):
|
| |
if not logger:
|
| |
return
|
| |
@@ -129,13 +131,22 @@
|
| |
code = 124 # inspired by /bin/timeout
|
| |
timeouted = True
|
| |
|
| |
- _info(logger, "Finished with code %s (%s)", code, str_cmd)
|
| |
+ took_seconds = int(time.time() - start)
|
| |
+
|
| |
+ outputs_dumped = f"\nstdout:\n{stdout}\nstderr:\n{stderr}\n"
|
| |
+
|
| |
+ _info(
|
| |
+ logger,
|
| |
+ "Finished after %d seconds with exit code %s (%s)%s",
|
| |
+ took_seconds, code, str_cmd, outputs_dumped if code else "",
|
| |
+ )
|
| |
|
| |
if check and code != 0:
|
| |
- raise CommandException(
|
| |
- "Command '{cmd}' failed with status '{status}'\n"
|
| |
- "stdout:\n{stdout}\nstderr:\n{stderr}\n".format(
|
| |
- cmd=str_cmd, stdout=stdout, stderr=stderr, status=code))
|
| |
+ exc_msg = f"Command '{str_cmd}' failed, exit code '{code}"
|
| |
+ if not logger:
|
| |
+ # this has not yet been logged, make it a part of the exception
|
| |
+ exc_msg += outputs_dumped
|
| |
+ raise CommandException(exc_msg)
|
| |
|
| |
return munch.Munch(
|
| |
cmd=cmd,
|
| |
@@ -619,19 +630,7 @@
|
| |
return chroot.rsplit("-", 2)[2]
|
| |
|
| |
|
| |
- @contextmanager
|
| |
- def local_file_logger(name, path, fmt):
|
| |
- build_logger = create_file_logger(name, path, fmt)
|
| |
- try:
|
| |
- yield build_logger
|
| |
- finally:
|
| |
- # TODO: kind of ugly solution
|
| |
- # we should remove handler from build loger, otherwise we would write
|
| |
- # to the previous project
|
| |
- for h in build_logger.handlers[:]:
|
| |
- build_logger.removeHandler(h)
|
| |
-
|
| |
- def pkg_name_evr(srpm_path):
|
| |
+ def pkg_name_evr(srpm_path, logger):
|
| |
"""
|
| |
Queries a package for its name and evr (epoch:version-release)
|
| |
"""
|
| |
@@ -639,12 +638,12 @@
|
| |
'%{NAME} %{EPOCH} %{VERSION} %{RELEASE}', srpm_path]
|
| |
|
| |
try:
|
| |
- result = run_cmd(cmd)
|
| |
+ result = run_cmd(cmd, logger=logger)
|
| |
except OSError as e:
|
| |
raise CoprBackendSrpmError(str(e))
|
| |
|
| |
if result.returncode != 0:
|
| |
- raise CoprBackendSrpmError('Error querying srpm: %s' % result.stderr)
|
| |
+ raise CoprBackendSrpmError('Error querying SRPM')
|
| |
|
| |
try:
|
| |
name, epoch, version, release = result.stdout.split(" ")
|
| |
@@ -698,7 +697,7 @@
|
| |
|
| |
result = run_cmd(cmd, timeout=timeout, logger=logger, catch_timeout=True)
|
| |
if result.returncode and logger:
|
| |
- logger.error("Createrepo failed, stderr:\n%s", result.stderr)
|
| |
+ logger.error("Createrepo failed")
|
| |
|
| |
return not result.returncode
|
| |
|
| |