update known_output

This commit is contained in:
JerryXiao 2023-08-22 14:34:55 +08:00
parent 5792891394
commit 0d24257824
Signed by: Jerry
GPG key ID: 22618F758B5BE2E5
3 changed files with 60 additions and 33 deletions

View file

@ -240,30 +240,31 @@ def _log_parser(log: List[str], report: checkReport) -> None:
else: else:
report.crit(f'[NOM-ALPM] {msg}') report.crit(f'[NOM-ALPM] {msg}')
elif source == 'ALPM-SCRIPTLET': elif source == 'ALPM-SCRIPTLET':
(_, _, _pmsg) = _split_log_line(log[ln-1]) (_sourcem1, _, _pmsg) = _split_log_line(log[ln-1])
if _m := REGEX['l_upgrade'].match(_pmsg): for action in {'upgrade', 'install', 'remove', 'downgrade', 'reinstall'}:
pkg, *_ = _m.groups() if _m := REGEX[f"l_{action}"].match(_pmsg):
elif _m := REGEX['l_install'].match(_pmsg): pkg, *_ = _m.groups()
pkg, *_ = _m.groups() break
elif _m := REGEX['l_remove'].match(_pmsg):
pkg, *_ = _m.groups()
elif _m := REGEX['l_downgrade'].match(_pmsg):
pkg, *_ = _m.groups()
elif _m := REGEX['l_reinstall'].match(_pmsg):
pkg, *_ = _m.groups()
else: else:
report.crit(f'[NOM-SCRIPTLET] {_pmsg}') report.crit(f'[NOM-SCRIPTLET] {_pmsg}')
ln += 1 ln += 1
action = 'unknown'
continue continue
logger.debug(f'.install start {pkg=}') logger.debug(f'.install start {pkg=} {action=}')
while True: while True:
line = log[ln] line = log[ln]
(_, source, msg) = _split_log_line(line) (_, source, msg) = _split_log_line(line)
if source == 'ALPM-SCRIPTLET': if source == 'ALPM-SCRIPTLET':
for r in (*(KNOWN_PACKAGE_OUTPUT.get('', [])), *(KNOWN_PACKAGE_OUTPUT.get(pkg, []))): for r in (*(KNOWN_PACKAGE_OUTPUT.get('', [])), *(KNOWN_PACKAGE_OUTPUT.get(pkg, []))):
if match(r, msg): if isinstance(r, dict):
logger.debug(f'.install output match {pkg=} {msg=} {r=}') if action in r.get('action'):
break if match(r.get('regex'), msg):
logger.debug(f'.install output match {pkg=} {action=} {msg=} {r=}')
break
else:
if match(r, msg):
logger.debug(f'.install output match {pkg=} {msg=} {r=}')
break
else: else:
report.warn(f'package {pkg} says {msg}') report.warn(f'package {pkg} says {msg}')
else: else:

View file

@ -22,13 +22,22 @@ KNOWN_HOOK_OUTPUT = {
r'==> Image generation successful.*', r'==> Image generation successful.*',
r'[ ]+-> .+', r'[ ]+-> .+',
r'ssh-.* .*', r'ssh-.* .*',
], r'==> Using default configuration file: \'/etc/mkinitcpio\.conf\'',
'70-dkms-upgrade.hook': [
r'==> dkms remove --no-depmod -m .* -v .* -k .*',
], ],
'70-dkms-install.hook': [ '70-dkms-install.hook': [
r'==> dkms install --no-depmod -m .* -v .* -k .*', r'==> dkms install --no-depmod [^ ]+ -k [^ ]+',
r'==> depmod .*', r'==> depmod [^ ]+',
],
'71-dkms-remove.hook': [
r'==> dkms remove --no-depmod [^ ]+ -k [^ ]+',
r'==> depmod [^ ]+',
],
'70-dkms-upgrade.hook': [
r'==> dkms remove --no-depmod [^ ]+ -k [^ ]+',
r'==> depmod [^ ]+',
],
'90-update-appstream-cache.hook': [
r'✔ Metadata cache was updated successfully\.',
], ],
**KNOWN_HOOK_OUTPUT_OVERRIDE **KNOWN_HOOK_OUTPUT_OVERRIDE
} }
@ -48,6 +57,7 @@ _keyring_output = [
r'gpg: depth:.+ valid:.+ signed:.+ trust:.+, .+, .+, .+, .+, .+', r'gpg: depth:.+ valid:.+ signed:.+ trust:.+, .+, .+, .+, .+, .+',
r'gpg: key .+: no user ID for key signature packet of class .+', r'gpg: key .+: no user ID for key signature packet of class .+',
r'gpg: inserting ownertrust of .+', r'gpg: inserting ownertrust of .+',
r'gpg: changing ownertrust from .+ to .+',
r'[ ]+-> .+', r'[ ]+-> .+',
] ]
@ -70,8 +80,8 @@ KNOWN_PACKAGE_OUTPUT = {
'fontconfig': [ 'fontconfig': [
r'Rebuilding fontconfig cache\.\.\.', r'Rebuilding fontconfig cache\.\.\.',
], ],
'nvidia-utils': [ 'lib32-fontconfig': [
r'If you run into trouble with CUDA not being available, run nvidia-modprobe first\.', r'Rebuilding 32-bit fontconfig cache\.\.\.',
], ],
'virtualbox': _vbox_output, 'virtualbox': _vbox_output,
'virtualbox-ext-oracle': _vbox_output, 'virtualbox-ext-oracle': _vbox_output,
@ -79,8 +89,20 @@ KNOWN_PACKAGE_OUTPUT = {
'virtualbox-ext-vnc-svn': _vbox_output, 'virtualbox-ext-vnc-svn': _vbox_output,
'tor-browser': [ 'tor-browser': [
r'$', r'$',
r'==> The copy of Tor Browser in your home directory will be upgraded at the', {'action': ['upgrade'], 'regex': r'==> The copy of Tor Browser in your home directory will be upgraded at the'},
r'==> first time you run it as your normal user\. Just start it and have fun!', {'action': ['upgrade'], 'regex': r'==> first time you run it as your normal user\. Just start it and have fun!'},
],
'grub': [
{'action': ['upgrade'], 'regex': r':: To use the new features provided in this GRUB update, it is recommended'},
{'action': ['upgrade'], 'regex': r' to install it to the MBR or UEFI\. Due to potential configuration'},
{'action': ['upgrade'], 'regex': r' incompatibilities, it is advised to run both, installation and generation'},
{'action': ['upgrade'], 'regex': r' of configuration:'},
{'action': ['upgrade'], 'regex': r' \$ grub-install \.\.\.'},
{'action': ['upgrade'], 'regex': r' \$ grub-mkconfig -o /boot/grub/grub\.cfg'},
],
'nvidia-utils': [
{'action': ['upgrade'], 'regex': r'If you run into trouble with CUDA not being available, run nvidia-modprobe first\.'},
{'action': ['upgrade'], 'regex': r'If you use GDM on Wayland, you might have to run systemctl enable --now nvidia-resume\.service'},
], ],
**KNOWN_PACKAGE_OUTPUT_OVERRIDE **KNOWN_PACKAGE_OUTPUT_OVERRIDE
} }

View file

@ -84,15 +84,19 @@ def upgrade(interactive=False) -> List[str]:
) )
if qp.returncode != 1: if qp.returncode != 1:
qp.check_returncode() qp.check_returncode()
sp = subprocess.run( try:
sync_upgrade_cmd, sp = subprocess.run(
stdin=subprocess.DEVNULL, sync_upgrade_cmd,
stdout=subprocess.PIPE, stdin=subprocess.DEVNULL,
stderr=subprocess.STDOUT, stdout=subprocess.PIPE,
encoding='utf-8', stderr=subprocess.STDOUT,
timeout=TIMEOUT, encoding='utf-8',
check=True timeout=TIMEOUT,
) check=True
)
except subprocess.CalledProcessError as e:
logger.error(f"upgrade check failed {e.returncode=} {e.output=}")
raise
upgrade_pkgnames = list() upgrade_pkgnames = list()
upgrade_pkgs = list() upgrade_pkgs = list()
for line in filter(None, qp.stdout.split('\n')): for line in filter(None, qp.stdout.split('\n')):