~dricottone/huttese-apk

ref: d56be4a168a343bd939aaf290e2cc852e13f9576 huttese-apk/sr.ht/py-pygments/pr-815-support-dmesg.patch -rw-r--r-- 8.4 KiB
d56be4a1 — Drew DeVault Handle Alpine release in pkgkit 5 years ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
# HG changeset patch
# User martijn@msi.localhost
# Date 1556805935 -7200
# Branch lexer-dmesg
# Node ID 7452fc8eec5e070203326abaeeb1e5de6fa59608
# Parent  6d6b6fc3d439fa1019d9412ef8438dc03c449644
This commit adds a lexer for linux kernel logs as outputted by `dmesg`

It supports output from `dmesg`, in that case it highlights based on
keywords in the line

It can also highlight `dmesg -x` output. In that case it uses the
loglevels from the kernel to highlight the lines.

diff --git a/AUTHORS b/AUTHORS
--- a/AUTHORS
+++ b/AUTHORS
@@ -35,6 +35,7 @@
 * Stéphane Blondon -- SGF lexer
 * Frits van Bommel -- assembler lexers
 * Pierre Bourdon -- bugfixes
+* Martijn Braam -- Kernel log lexer
 * Matthias Bussonnier -- ANSI style handling for terminal-256 formatter
 * chebee7i -- Python traceback lexer improvements
 * Hiram Chirino -- Scaml and Jade lexers
diff --git a/doc/languages.rst b/doc/languages.rst
--- a/doc/languages.rst
+++ b/doc/languages.rst
@@ -120,6 +120,11 @@
 * `Smarty <http://www.smarty.net>`_ templates (PHP templating)
 * Tea
 
+Log files
+---------
+
+* Linux kernel log (dmesg)
+
 Other markup
 ------------
 
diff --git a/pygments/lexers/_mapping.py b/pygments/lexers/_mapping.py
--- a/pygments/lexers/_mapping.py
+++ b/pygments/lexers/_mapping.py
@@ -233,6 +233,7 @@
     'JuttleLexer': ('pygments.lexers.javascript', 'Juttle', ('juttle', 'juttle'), ('*.juttle',), ('application/juttle', 'application/x-juttle', 'text/x-juttle', 'text/juttle')),
     'KalLexer': ('pygments.lexers.javascript', 'Kal', ('kal',), ('*.kal',), ('text/kal', 'application/kal')),
     'KconfigLexer': ('pygments.lexers.configs', 'Kconfig', ('kconfig', 'menuconfig', 'linux-config', 'kernel-config'), ('Kconfig', '*Config.in*', 'external.in*', 'standard-modules.in'), ('text/x-kconfig',)),
+    'KernelLogLexer': ('pygments.lexers.log', 'Kernel log', ('kmsg', 'dmesg'), ('*.kmsg', '*.dmesg'), ()),
     'KokaLexer': ('pygments.lexers.haskell', 'Koka', ('koka',), ('*.kk', '*.kki'), ('text/x-koka',)),
     'KotlinLexer': ('pygments.lexers.jvm', 'Kotlin', ('kotlin',), ('*.kt',), ('text/x-kotlin',)),
     'LSLLexer': ('pygments.lexers.scripting', 'LSL', ('lsl',), ('*.lsl',), ('text/x-lsl',)),
diff --git a/pygments/lexers/log.py b/pygments/lexers/log.py
new file mode 100644
--- /dev/null
+++ b/pygments/lexers/log.py
@@ -0,0 +1,59 @@
+# -*- coding: utf-8 -*-
+"""
+    pygments.lexers.log
+    ~~~~~~~~~~~~~~~~~~~~~
+
+    Lexers for various log file formats.
+
+    :copyright: Copyright 2006-2019 by the Pygments team, see AUTHORS.
+    :license: BSD, see LICENSE for details.
+"""
+
+from pygments.lexer import RegexLexer, include
+from pygments.token import *
+
+__all__ = ['KernelLogLexer']
+
+
+class KernelLogLexer(RegexLexer):
+    name = 'Kernel log'
+    aliases = ['kmsg', 'dmesg']
+    filenames = ['*.kmsg', '*.dmesg']
+
+    tokens = {
+        'root': [
+            (r'^(?=\[)', Text, 'unknown'),
+            (r'^([^:]+):debug\s*: (?=\[)', Text, 'debug'),
+            (r'^([^:]+):info\s*: (?=\[)', Text, 'info'),
+            (r'^([^:]+):warn\s*: (?=\[)', Text, 'warn'),
+            (r'^([^:]+):notice\s*: (?=\[)', Text, 'warn'),
+            (r'^([^:]+):err\s*: (?=\[)', Text, 'error'),
+            (r'^([^:]+):crit\s*: (?=\[)', Text, 'error'),
+        ],
+        'unknown': [
+            (r'^(?=.+(warning|notice|audit|deprecated))', Text, 'warn'),
+            (r'^(?=.+(error|critical|fail|Bug))', Text, 'error'),
+            (r'', Text, 'info'),
+        ],
+        'base': [
+            (r'\[[0-9\. ]+\] ', Number),
+            (r'(?<=\] ).+?:', Keyword),
+            (r'\n', Text, '#pop'),
+        ],
+        'debug': [
+            include('base'),
+            (r'.+\n', Text, '#pop')
+        ],
+        'info': [
+            include('base'),
+            (r'.+\n', Text, '#pop')
+        ],
+        'warn': [
+            include('base'),
+            (r'.+', Comment, '#pop')
+        ],
+        'error': [
+            include('base'),
+            (r'.+\n', Generic.Error, '#pop')
+        ]
+    }
diff --git a/tests/examplefiles/example.dmesg b/tests/examplefiles/example.dmesg
new file mode 100644
--- /dev/null
+++ b/tests/examplefiles/example.dmesg
@@ -0,0 +1,52 @@
+[    0.000000] Linux version 5.0.9-arch1-1-ARCH (builduser@heftig-18307) (gcc version 8.3.0 (GCC)) #1 SMP PREEMPT Sat Apr 20 15:00:46 UTC 2019
+[    0.000000] Command line: initrd=\initramfs-linux.img root=/dev/nvme0n1p1 nouveau.noaccel=1 rw
+[    0.000000] KERNEL supported cpus:
+[    0.000000]   Intel GenuineIntel
+[    0.000000]   AMD AuthenticAMD
+[    0.000000]   Hygon HygonGenuine
+[    0.000000]   Centaur CentaurHauls
+[    0.000000] x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers'
+[    0.000000] x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers'
+[    0.000000] x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers'
+[    0.000000] x86/fpu: Supporting XSAVE feature 0x008: 'MPX bounds registers'
+[    0.000000] x86/fpu: Supporting XSAVE feature 0x010: 'MPX CSR'
+[    0.000000] x86/fpu: xstate_offset[2]:  576, xstate_sizes[2]:  256
+[    0.000000] x86/fpu: xstate_offset[3]:  832, xstate_sizes[3]:   64
+[    0.000000] x86/fpu: xstate_offset[4]:  896, xstate_sizes[4]:   64
+[    0.000000] x86/fpu: Enabled xstate features 0x1f, context size is 960 bytes, using 'compacted' format.
+[    2.663456] tpm_crb MSFT0101:00: [Firmware Bug]: ACPI region does not cover the entire command/response buffer. [mem 0xfed40000-0xfed4087f flags 0x200] vs fed40080 f80
+[    2.663514] tpm_crb MSFT0101:00: [Firmware Bug]: ACPI region does not cover the entire command/response buffer. [mem 0xfed40000-0xfed4087f flags 0x200] vs fed40080 f80
+[    2.664809] Bluetooth: Core ver 2.22
+[    2.664820] NET: Registered protocol family 31
+[ 3134.452501] usb 2-2: new SuperSpeed Gen 1 USB device number 2 using xhci_hcd
+[ 3134.471506] usb 2-2: New USB device found, idVendor=0781, idProduct=cfd2, bcdDevice= 0.02
+[ 3134.471508] usb 2-2: New USB device strings: Mfr=3, Product=4, SerialNumber=2
+
+kern  :notice: [    0.000000] Linux version 5.0.9-arch1-1-ARCH (builduser@heftig-18307) (gcc version 8.3.0 (GCC)) #1 SMP PREEMPT Sat Apr 20 15:00:46 UTC 2019
+kern  :info  : [    0.000000] Command line: initrd=\initramfs-linux.img root=/dev/nvme0n1p1 nouveau.noaccel=1 rw
+kern  :info  : [    0.000000] KERNEL supported cpus:
+kern  :info  : [    0.000000]   Intel GenuineIntel
+kern  :info  : [    0.000000]   AMD AuthenticAMD
+kern  :info  : [    0.000000]   Hygon HygonGenuine
+kern  :info  : [    0.000000]   Centaur CentaurHauls
+kern  :info  : [    0.000000] x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers'
+kern  :info  : [    0.000000] x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers'
+kern  :info  : [    0.000000] x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers'
+kern  :info  : [    0.000000] x86/fpu: Supporting XSAVE feature 0x008: 'MPX bounds registers'
+kern  :info  : [    0.000000] x86/fpu: Supporting XSAVE feature 0x010: 'MPX CSR'
+kern  :info  : [    0.000000] x86/fpu: xstate_offset[2]:  576, xstate_sizes[2]:  256
+kern  :info  : [    0.000000] x86/fpu: xstate_offset[3]:  832, xstate_sizes[3]:   64
+kern  :info  : [    0.000000] x86/fpu: xstate_offset[4]:  896, xstate_sizes[4]:   64
+kern  :info  : [    0.000000] x86/fpu: Enabled xstate features 0x1f, context size is 960 bytes, using 'compacted' format.
+kern  :info  : [    0.000000] BIOS-provided physical RAM map:
+kern  :info  : [    0.000000] BIOS-e820: [mem 0x0000000000000000-0x0000000000057fff] usable
+kern  :info  : [    2.382262] EXT4-fs (nvme0n1p1): re-mounted. Opts: (null)
+kern  :notice: [    2.389774] random: systemd-random-: uninitialized urandom read (512 bytes read)
+kern  :info  : [    2.397148] usb 1-10: New USB device found, idVendor=8087, idProduct=0aa7, bcdDevice= 0.01
+kern  :info  : [    2.397150] usb 1-10: New USB device strings: Mfr=0, Product=0, SerialNumber=0
+kern  :info  : [    2.519599] usb 1-12: new high-speed USB device number 4 using xhci_hcd
+kern  :crit  : [18706.135478] mce: CPU6: Package temperature above threshold, cpu clock throttled (total events = 79)
+kern  :crit  : [18706.135479] mce: CPU3: Package temperature above threshold, cpu clock throttled (total events = 79)
+kern  :crit  : [18706.135484] mce: CPU4: Package temperature above threshold, cpu clock throttled (total events = 79)
+kern  :info  : [18706.136450] mce: CPU4: Core temperature/speed normal
+kern  :info  : [18706.136451] mce: CPU1: Package temperature/speed normal