• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/usr/bin/env python
2#
3import sys, cpp, kernel, glob, os, re, getopt, clean_header
4from defaults import *
5from utils import *
6
7def usage():
8    print """\
9  usage: %(progname)s
10
11    this program is used to update all the auto-generated clean headers
12    used by the Bionic C library. it assumes the following:
13
14      - a set of source kernel headers is located in '../original',
15        relative to the program's directory
16
17      - the clean headers will be placed in '../arch-<arch>/asm',
18        '../common/linux', '../common/asm-generic', etc..
19
20      - if ANDROID_PRODUCT_OUT is defined in your environment, you're
21        using the Android build system, and the program will issue
22        p4 add / edit / delete commands to update the depot for you.
23        (you'll need to p4 submit manually though)
24""" % { "progname" : os.path.basename(sys.argv[0]) }
25    sys.exit(0)
26
27try:
28    optlist, args = getopt.getopt( sys.argv[1:], '' )
29except:
30    # unrecognized option
31    sys.stderr.write( "error: unrecognized option\n" )
32    usage()
33
34if len(optlist) > 0 or len(args) > 0:
35    usage()
36
37progdir = find_program_dir()
38original_dir = os.path.normpath( progdir + "/../original" )
39if not os.path.isdir( original_dir ):
40    panic( "required directory does not exists: %s\n" % original_dir )
41
42# find all source files in 'original'
43#
44sources = []
45for root, dirs, files in os.walk( original_dir ):
46    for file in files:
47        base, ext = os.path.splitext(file)
48        if ext == ".h":
49            sources.append( "%s/%s" % (root,file) )
50
51b = BatchFileUpdater()
52
53for arch in kernel_archs:
54    b.readDir( os.path.normpath( progdir + "/../arch-%s" % arch ) )
55
56b.readDir( os.path.normpath( progdir + "/../common" ) )
57
58#print "OLD " + repr(b.old_files)
59
60for path in sources:
61    dst_path, newdata = clean_header.cleanupFile(path)
62    if not dst_path:
63        continue
64
65    b.readFile( dst_path )
66    r = b.editFile( dst_path, newdata )
67    if r == 0:
68        r = "unchanged"
69    elif r == 1:
70        r = "edited"
71    else:
72        r = "added"
73
74    print "cleaning: %-*s -> %-*s (%s)" % ( 35, path, 35, dst_path, r )
75
76# We don't use Perforce anymore, but just in case, define ANDROID_USE_P4
77# in your environment if you think you need it.
78usePerforce = os.environ.has_key("ANDROID_USE_P4")
79
80if usePerforce:
81    b.updateP4Files()
82else:
83    b.updateFiles()
84
85sys.exit(0)
86