[PATCH 3/3] Execute the yum transaction in another process

Brian C. Lane bcl at redhat.com
Wed Apr 3 22:14:39 UTC 2013


On Wed, Apr 03, 2013 at 05:04:58PM -0400, Chris Lumens wrote:
> > +        log.info("Running anaconda-yum to install packages")
> > +        # Watch output for progress, debug and error information
> > +        install_errors = []
> > +        try:
> > +            for line in execReadlines("anaconda-yum", args):
> > +                if line.startswith("PROGRESS_"):
> > +                    key, text = line.split(":", 2)
> > +                    msg = progress_map[key] + text
> > +                    progress.send_message(msg)
> > +                    log.debug(msg)
> > +                elif line.startswith("DEBUG:"):
> > +                    log.debug(line[6:])
> > +                elif line.startswith("INFO:"):
> > +                    log.info(line[5:])
> > +                elif line.startswith("WARN:"):
> > +                    log.warn(line[5:])
> > +                elif line.startswith("ERROR:"):
> > +                    log.error(line[6:])
> > +                    install_errors.append(line[6:])
> > +                else:
> > +                    log.debug(line)
> > +        except IOError as e:
> > +            log.error("Error running anaconda-yum: %s" % e)
> > +            exn = PayloadInstallError(str(e))
> > +            if errorHandler.cb(exn) == ERROR_RAISE:
> > +                raise exn
> > +        finally:
> > +            # log the contents of the scriptlet logfile if any
> > +            if os.path.exists(script_log):
> >                  log.info("==== start rpm scriptlet logs ====")
> > -                with open(script_log.name) as f:
> > +                with open(script_log) as f:
> >                      for l in f:
> >                          log.info(l)
> >                  log.info("==== end rpm scriptlet logs ====")
> > -                os.unlink(script_log.name)
> > +                os.unlink(script_log)
> > +
> > +        if install_errors:
> > +            exn = PayloadInstallError("\n".join(install_errors))
> > +            if errorHandler.cb(exn) == ERROR_RAISE:
> > +                raise exn
> >  
> >      def writeMultiLibConfig(self):
> >          if not self.data.packages.multiLib:
> 
> This section is most concerning to me, from a translation perspective.
> I'm not sure how good of a job we are doing right now with displaying
> correctly translated messages and yum errors but if we're not doing a
> good job of it, we could easily fix it given everything is in the same
> process.
> 
> Do you have any idea what shape it's in given these patches?

It looks like yum is translated, but I am not sure what's going to
happen to those translations when they get passed through the
stdout|stdin link to the main process. I wanted to keep our translations
out of the anaconda-yum script because of this so that's why I made the
PROGRESS_* mapping.

If they do get mangled I'm not sure what we can do about it.

-- 
Brian C. Lane | Anaconda Team | IRC: bcl #anaconda | Port Orchard, WA (PST8PDT)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 482 bytes
Desc: not available
URL: <https://lists.fedorahosted.org/pipermail/anaconda-patches/attachments/20130403/e316c09a/attachment.sig>


More information about the anaconda-patches mailing list