blob: 6272fcf54a093c6598e71797b5d98b48eec68508 [file] [log] [blame]
The Android Open Source Projecta27d2ba2008-10-21 07:00:00 -07001#!/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
76usePerforce = os.environ.has_key("ANDROID_PRODUCT_OUT")
77
78if usePerforce:
79 b.updateP4Files()
80else:
81 b.updateFiles()
82
83sys.exit(0)