#2365 backend: log run_cmd stderr even when check=False
Merged 2 years ago by praiskup. Opened 2 years ago by praiskup.
Unknown source appstream-stderr  into  main

@@ -552,10 +552,9 @@

                  continue

  

              self.log.info("Compressing %s by gzip", src)

-             res = run_cmd(["gzip", src])

+             res = run_cmd(["gzip", src], logger=self.log)

              if res.returncode not in [0, 2]:

-                 self.log.error("Unable to compress file %s: %s",

-                                src, res.stderr)

+                 self.log.error("Unable to compress file %s", src)

  

      def _download_results(self):

          """
@@ -632,7 +631,8 @@

          srpm_file = glob.glob(pattern)[0]

          srpm_name = os.path.basename(srpm_file)

          srpm_url = os.path.join(job.results_dir_url, srpm_name)

-         build_details['pkg_name'], build_details['pkg_version'] = pkg_name_evr(srpm_file)

+         build_details['pkg_name'], build_details['pkg_version'] = \

+                 pkg_name_evr(srpm_file, self.log)

          build_details['srpm_url'] = srpm_url

          self.log.info("SRPM URL: %s", srpm_url)

          return build_details
@@ -648,7 +648,7 @@

              "done".format(pipes.quote(job.results_dir))

          )

  

-         result = run_cmd(cmd, shell=True)

+         result = run_cmd(cmd, shell=True, logger=self.log)

          built_packages = result.stdout.strip()

          self.log.info("Built packages:\n%s", built_packages)

          return built_packages

file modified
+21 -22
@@ -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

  

no initial comment

Build succeeded.

Commit 6436390 fixes this pull-request

Pull-Request has been merged by praiskup

2 years ago

Commit 31f65c0 fixes this pull-request

Pull-Request has been merged by praiskup

2 years ago