kernel_abi.py (4f2c0a4acffbec01079c28f839422e64ddeff004) | kernel_abi.py (1d64a1029884f7bfbf00f5c04f7ef04a437fe8a4) |
---|---|
1# -*- coding: utf-8; mode: python -*- 2# coding=utf-8 3# SPDX-License-Identifier: GPL-2.0 4# 5u""" 6 kernel-abi 7 ~~~~~~~~~~ 8 --- 25 unchanged lines hidden (view full) --- 34 35import codecs 36import os 37import subprocess 38import sys 39import re 40import kernellog 41 | 1# -*- coding: utf-8; mode: python -*- 2# coding=utf-8 3# SPDX-License-Identifier: GPL-2.0 4# 5u""" 6 kernel-abi 7 ~~~~~~~~~~ 8 --- 25 unchanged lines hidden (view full) --- 34 35import codecs 36import os 37import subprocess 38import sys 39import re 40import kernellog 41 |
42from os import path 43 | |
44from docutils import nodes, statemachine 45from docutils.statemachine import ViewList 46from docutils.parsers.rst import directives, Directive 47from docutils.utils.error_reporting import ErrorString 48from sphinx.util.docutils import switch_source_input 49 50__version__ = '1.0' 51 --- 16 unchanged lines hidden (view full) --- 68 final_argument_whitespace = True 69 70 option_spec = { 71 "debug" : directives.flag, 72 "rst" : directives.unchanged 73 } 74 75 def run(self): | 42from docutils import nodes, statemachine 43from docutils.statemachine import ViewList 44from docutils.parsers.rst import directives, Directive 45from docutils.utils.error_reporting import ErrorString 46from sphinx.util.docutils import switch_source_input 47 48__version__ = '1.0' 49 --- 16 unchanged lines hidden (view full) --- 66 final_argument_whitespace = True 67 68 option_spec = { 69 "debug" : directives.flag, 70 "rst" : directives.unchanged 71 } 72 73 def run(self): |
76 | |
77 doc = self.state.document 78 if not doc.settings.file_insertion_enabled: 79 raise self.warning("docutils: file insertion disabled") 80 | 74 doc = self.state.document 75 if not doc.settings.file_insertion_enabled: 76 raise self.warning("docutils: file insertion disabled") 77 |
81 env = doc.settings.env 82 cwd = path.dirname(doc.current_source) 83 cmd = "get_abi.pl rest --enable-lineno --dir " 84 cmd += self.arguments[0] | 78 srctree = os.path.abspath(os.environ["srctree"]) |
85 | 79 |
80 args = [ 81 os.path.join(srctree, 'scripts/get_abi.pl'), 82 'rest', 83 '--enable-lineno', 84 '--dir', os.path.join(srctree, 'Documentation', self.arguments[0]), 85 ] 86 |
|
86 if 'rst' in self.options: | 87 if 'rst' in self.options: |
87 cmd += " --rst-source" | 88 args.append('--rst-source') |
88 | 89 |
89 srctree = path.abspath(os.environ["srctree"]) 90 91 fname = cmd 92 93 # extend PATH with $(srctree)/scripts 94 path_env = os.pathsep.join([ 95 srctree + os.sep + "scripts", 96 os.environ["PATH"] 97 ]) 98 shell_env = os.environ.copy() 99 shell_env["PATH"] = path_env 100 shell_env["srctree"] = srctree 101 102 lines = self.runCmd(cmd, shell=True, cwd=cwd, env=shell_env) | 90 lines = subprocess.check_output(args, cwd=os.path.dirname(doc.current_source)).decode('utf-8') |
103 nodeList = self.nestedParse(lines, self.arguments[0]) 104 return nodeList 105 | 91 nodeList = self.nestedParse(lines, self.arguments[0]) 92 return nodeList 93 |
106 def runCmd(self, cmd, **kwargs): 107 u"""Run command ``cmd`` and return its stdout as unicode.""" 108 109 try: 110 proc = subprocess.Popen( 111 cmd 112 , stdout = subprocess.PIPE 113 , stderr = subprocess.PIPE 114 , **kwargs 115 ) 116 out, err = proc.communicate() 117 118 out, err = codecs.decode(out, 'utf-8'), codecs.decode(err, 'utf-8') 119 120 if proc.returncode != 0: 121 raise self.severe( 122 u"command '%s' failed with return code %d" 123 % (cmd, proc.returncode) 124 ) 125 except OSError as exc: 126 raise self.severe(u"problems with '%s' directive: %s." 127 % (self.name, ErrorString(exc))) 128 return out 129 | |
130 def nestedParse(self, lines, fname): 131 env = self.state.document.settings.env 132 content = ViewList() 133 node = nodes.section() 134 135 if "debug" in self.options: 136 code_block = "\n\n.. code-block:: rst\n :linenos:\n" 137 for l in lines.split("\n"): --- 40 unchanged lines hidden --- | 94 def nestedParse(self, lines, fname): 95 env = self.state.document.settings.env 96 content = ViewList() 97 node = nodes.section() 98 99 if "debug" in self.options: 100 code_block = "\n\n.. code-block:: rst\n :linenos:\n" 101 for l in lines.split("\n"): --- 40 unchanged lines hidden --- |