diff options
author | David 'Digit' Turner <digit@google.com> | 2010-10-11 22:11:06 +0200 |
---|---|---|
committer | David 'Digit' Turner <digit@google.com> | 2011-02-03 18:07:41 +0100 |
commit | fc2693110ee8a2ba22a445ad9855fbe9e118d439 (patch) | |
tree | 6bbfcf0620780f454b5c0ac2dbd5341a00cfa157 /libc/kernel/tools/clean_header.py | |
parent | 040e18f362716c0bab1d9c39a869b98d6c61584c (diff) |
libc: Update auto-gen scripts
Make the scripts use external/kernel-headers/original by default.
clean_header.py: Document -k<path>, add -d<path>
find_headers.py: Make kernel config files optional
update_all.py: Allow setting the path to kernel headers on the command-line
update_all.py: Better formatting of output on ttys
update_all.py: Automatically perform "git add/rm" on affected files.
SYSCALLS.TXT: Fix typo in __socketcall definition.
checksyscalls.py: Add support for superH architecture in the checks.
gensyscalls.py: Automatically perform "git add/rm" on affected files.
cpp.py: Fixed a bug that prevented certain type definitions to
be kept in the generated clean header (e.g.
struct ethtool_drvinfo in <linux/ethtool.h>)
All scripts will use the content of external/kernel-headers/original by default now.
The generated code removes all empty lines and trailing whitespace. This is useful
to ensure a unified output even if we change the parser again in the future.
The top-level disclaimer has been edited with update instructions to regenerate
the headers when needed.
Also, a warning is now inserted every 8th line in the final output:
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Changes under kernel/arch-arm and kernel/arch-x86 should correspond to whitespace
differences and additionnal struct definitions that were missed by the previous
parser implementation.
Change-Id: Icd1c056bacd766759f3e9b7bb5d63a246f3d656a
WARNING: If you run these script, do not submit the result to gerrit for now.
It seems there are discrepancies between the content of original headers
and those currently commited under bionic/libc/kernel/.
(This problem is the main motivation to insert the warning repeatedly).
Current list of issues:
- Missing SuperH headers (i.e. external/kernel-headers/original/asm-sh)
Diffstat (limited to 'libc/kernel/tools/clean_header.py')
-rwxr-xr-x | libc/kernel/tools/clean_header.py | 41 |
1 files changed, 21 insertions, 20 deletions
diff --git a/libc/kernel/tools/clean_header.py b/libc/kernel/tools/clean_header.py index dad91206e..94b19cee8 100755 --- a/libc/kernel/tools/clean_header.py +++ b/libc/kernel/tools/clean_header.py @@ -7,12 +7,12 @@ from utils import * noUpdate = 1 -def cleanupFile( path ): +def cleanupFile( path, original_path=kernel_original_path ): """reads an original header and perform the cleanup operation on it this functions returns the destination path and the clean header as a single string""" # check the header path - src_path = path + src_path = path if not os.path.exists(src_path): if noUpdate: @@ -26,7 +26,6 @@ def cleanupFile( path ): sys.stderr.write( "warning: not a file: %s\n" % path ) return None, None - original_path = kernel_original_path if os.path.commonprefix( [ src_path, original_path ] ) != original_path: if noUpdate: panic( "file is not in 'original' directory: %s\n" % path ); @@ -54,27 +53,27 @@ def cleanupFile( path ): else: dst_path = "common/" + src_path - dst_path = os.path.normpath( original_path + "/../" + dst_path ) + dst_path = os.path.normpath( kernel_cleaned_path + "/" + dst_path ) # now, let's parse the file # - list = cpp.BlockParser().parseFile(path) - if not list: + blocks = cpp.BlockParser().parseFile(path) + if not blocks: sys.stderr.write( "error: can't parse '%s'" % path ) sys.exit(1) - list.optimizeMacros( kernel_known_macros ) - list.optimizeIf01() - list.removeVarsAndFuncs( statics ) - list.removeComments() - list.removeEmptyLines() - list.removeMacroDefines( kernel_ignored_macros ) - list.insertDisclaimer( kernel.kernel_disclaimer ) - list.replaceTokens( kernel_token_replacements ) + blocks.optimizeMacros( kernel_known_macros ) + blocks.optimizeIf01() + blocks.removeVarsAndFuncs( statics ) + blocks.replaceTokens( kernel_token_replacements ) + blocks.removeComments() + blocks.removeMacroDefines( kernel_ignored_macros ) + blocks.removeWhiteSpace() out = StringOutput() - list.write(out) + out.write( kernel_disclaimer ) + blocks.writeWithWarning(out, kernel_warning, 4) return dst_path, out.get() @@ -92,12 +91,15 @@ if __name__ == "__main__": if the content has changed. with this, you can pass more than one file on the command-line + -k<path> specify path of original kernel headers + -d<path> specify path of cleaned kernel headers + <header_path> must be in a subdirectory of 'original' """ % os.path.basename(sys.argv[0]) sys.exit(1) try: - optlist, args = getopt.getopt( sys.argv[1:], 'uvk:' ) + optlist, args = getopt.getopt( sys.argv[1:], 'uvk:d:' ) except: # unrecognized option sys.stderr.write( "error: unrecognized option\n" ) @@ -111,6 +113,8 @@ if __name__ == "__main__": D_setlevel(1) elif opt == '-k': kernel_original_path = arg + elif opt == '-d': + kernel_cleaned_path = arg if len(args) == 0: usage() @@ -143,9 +147,6 @@ if __name__ == "__main__": print "cleaning: %-*s -> %-*s (%s)" % ( 35, path, 35, dst_path, r ) - if os.environ.has_key("ANDROID_PRODUCT_OUT"): - b.updateP4Files() - else: - b.updateFiles() + b.updateGitFiles() sys.exit(0) |