summaryrefslogtreecommitdiffstats
path: root/libc/kernel/tools/clean_header.py
diff options
context:
space:
mode:
Diffstat (limited to 'libc/kernel/tools/clean_header.py')
-rwxr-xr-xlibc/kernel/tools/clean_header.py148
1 files changed, 0 insertions, 148 deletions
diff --git a/libc/kernel/tools/clean_header.py b/libc/kernel/tools/clean_header.py
deleted file mode 100755
index de4bf85..0000000
--- a/libc/kernel/tools/clean_header.py
+++ /dev/null
@@ -1,148 +0,0 @@
-#!/usr/bin/env python
-#
-
-import sys, cpp, kernel, glob, os, re, getopt
-from defaults import *
-from utils import *
-
-noUpdate = 1
-
-def cleanupFile( 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
-
- if not os.path.exists(src_path):
- if noUpdate:
- panic( "file does not exist: '%s'\n" % path )
- sys.stderr.write( "warning: file does not exit: %s\n" % path )
- return None, None
-
- if not os.path.isfile(src_path):
- if noUpdate:
- panic( "path is not a file: '%s'\n" % 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 );
- sys.stderr.write( "warning: file not in 'original' ignored: %s\n" % path )
- return None, None
-
- src_path = src_path[len(original_path):]
- if len(src_path) > 0 and src_path[0] == '/':
- src_path = src_path[1:]
-
- if len(src_path) == 0:
- panic( "oops, internal error, can't extract correct relative path" )
-
- # convert into destination path, extracting architecture if needed
- # and the corresponding list of known static functions
- #
- arch = None
- re_asm_arch = re.compile( r"asm-([\w\d_\+\.\-]+)(/.*)" )
- m = re_asm_arch.match(src_path)
- statics = kernel_known_generic_statics
- if m and m.group(1) != 'generic':
- dst_path = "arch-%s/asm/%s" % m.groups()
- arch = m.group(1)
- statics = statics.union( kernel_known_statics.get( arch, set() ) )
- else:
- dst_path = "common/" + src_path
-
- dst_path = os.path.normpath( original_path + "/../" + dst_path )
-
- # now, let's parse the file
- #
- list = cpp.BlockParser().parseFile(path)
- if not list:
- 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 )
-
- out = StringOutput()
- list.write(out)
- return dst_path, out.get()
-
-
-if __name__ == "__main__":
-
- def usage():
- print """\
- usage: %s [options] <header_path>
-
- options:
- -v enable verbose mode
-
- -u enabled update mode
- this will try to update the corresponding 'clean header'
- if the content has changed. with this, you can pass more
- than one file on the command-line
-
- <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:], 'uv' )
- except:
- # unrecognized option
- sys.stderr.write( "error: unrecognized option\n" )
- usage()
-
- for opt, arg in optlist:
- if opt == '-u':
- noUpdate = 0
- elif opt == '-v':
- verbose = 1
- D_setlevel(1)
-
- if len(args) == 0:
- usage()
-
- if noUpdate:
- for path in args:
- dst_path, newdata = cleanupFile(path)
- print newdata
-
- sys.exit(0)
-
- # now let's update our files.
-
- b = BatchFileUpdater()
-
- for path in args:
- dst_path, newdata = cleanupFile(path)
- if not dst_path:
- continue
-
- b.readFile( dst_path )
- r = b.editFile( dst_path, newdata )
- if r == 0:
- r = "unchanged"
- elif r == 1:
- r = "edited"
- else:
- r = "added"
-
- print "cleaning: %-*s -> %-*s (%s)" % ( 35, path, 35, dst_path, r )
-
-
- if os.environ.has_key("ANDROID_PRODUCT_OUT"):
- b.updateP4Files()
- else:
- b.updateFiles()
-
- sys.exit(0)