Try all packages when installpkg --optional is used.
Also sort the expanded list of packages so that any failures will be consistent instead of depending on the randomness of a set(). And add better logging when things fail. The core issue is that repodata may have packages that match globs, but they cannot actually be installed (eg. sigrok-firmware). This can cause *some* of the globbed packages to be installed before hitting the failure package. With this change it will log the expanded list of packages if a glob is used. It will skip any packages that fail to install when using --optional with the glob, and continue to install the rest. Related: rhbz#1440417
This commit is contained in:
parent
33308c227c
commit
1c6b083260
@ -570,8 +570,21 @@ class LoraxTemplateRunner(object):
|
|||||||
for exclude in excludes:
|
for exclude in excludes:
|
||||||
pkgnames = {pkgname for pkgname in pkgnames if not fnmatch.fnmatch(pkgname, exclude)}
|
pkgnames = {pkgname for pkgname in pkgnames if not fnmatch.fnmatch(pkgname, exclude)}
|
||||||
|
|
||||||
|
# Sort the results so that we have consistent results
|
||||||
|
pkgnames = sorted(pkgnames)
|
||||||
|
|
||||||
|
# If the request is a glob, expand it in the log
|
||||||
|
if any(g for g in ['*','?','.'] if g in p):
|
||||||
|
logger.info("installpkg: %s expands to %s", p, ",".join(pkgnames))
|
||||||
|
|
||||||
for pkgname in pkgnames:
|
for pkgname in pkgnames:
|
||||||
|
try:
|
||||||
self.dbo.install(pkgname)
|
self.dbo.install(pkgname)
|
||||||
|
except Exception as e: # pylint: disable=broad-except
|
||||||
|
if required:
|
||||||
|
raise
|
||||||
|
# Not required, log it and continue processing pkgs
|
||||||
|
logger.error("installpkg %s failed: %s", pkgname, str(e))
|
||||||
except Exception as e: # pylint: disable=broad-except
|
except Exception as e: # pylint: disable=broad-except
|
||||||
logger.error("installpkg %s failed: %s", p, str(e))
|
logger.error("installpkg %s failed: %s", p, str(e))
|
||||||
errors = True
|
errors = True
|
||||||
|
Loading…
Reference in New Issue
Block a user