contrib: header-tools scripts updated to python3

The scripts in contrib/header-tools/ are incompatible with python3.
This updates them to use python3.

contrib/header-tools/ChangeLog:

	* count-headers: Adapt to Python 3.
	* gcc-order-headers: Likewise.
	* graph-header-logs: Likewise.
	* graph-include-web: Likewise.
	* headerutils.py: Likewise.
	* included-by: Likewise.
	* reduce-headers: Likewise.
	* replace-header: Likewise.
	* show-headers: Likewise.

Signed-off-by: Sundeep KOKKONDA <sundeep.kokkonda@windriver.com>
This commit is contained in:
Sundeep KOKKONDA 2024-03-29 03:22:11 -07:00 committed by Jonathan Wakely
parent 03e1a72703
commit ac6fb0ff70
No known key found for this signature in database
9 changed files with 177 additions and 177 deletions

View file

@ -1,4 +1,4 @@
#! /usr/bin/python2
#! /usr/bin/python3
import os.path
import sys
import shlex
@ -45,11 +45,11 @@ if not usage and len (src) > 0:
l.sort (key=lambda tup:tup[0], reverse=True)
for f in l:
print str (f[0]) + " : " + f[1]
print (str (f[0]) + " : " + f[1])
else:
print "count-headers file1 [filen]"
print "Count the number of occurrences of all includes across all listed files"
print ("count-headers file1 [filen]")
print ("Count the number of occurrences of all includes across all listed files")

View file

@ -1,11 +1,11 @@
#! /usr/bin/python2
#! /usr/bin/python3
import os
import sys
import shlex
import re
from headerutils import *
import Queue
import queue
file_list = list ()
usage = False
@ -77,19 +77,19 @@ def create_master_list (fn, verbose):
if fn != "diagnostic.h" and fn != "diagnostic-core.h":
master_list.append (fn)
if (verbose):
print fn + " included by: " + includes[fn][0]
print (fn + " included by: " + includes[fn][0])
def print_dups ():
if dups:
print "\nduplicated includes"
print ("\nduplicated includes")
for i in dups:
string = "dup : " + i + " : "
string += includes[i][0]
for i2 in dups[i]:
string += ", "+i2
print string
print (string)
def process_known_dups ():
@ -230,11 +230,11 @@ for arg in sys.argv[1:]:
elif arg[0:2] == "-v":
show_master = True
else:
print "Error: unrecognized option " + arg
print ("Error: unrecognized option " + arg)
elif os.path.exists(arg):
file_list.append (arg)
else:
print "Error: file " + arg + " Does not exist."
print ("Error: file " + arg + " Does not exist.")
usage = True
if not file_list and not show_master:
@ -242,7 +242,7 @@ if not file_list and not show_master:
if not usage and not os.path.exists ("coretypes.h"):
usage = True
print "Error: Must run command in main gcc source directory containing coretypes.h\n"
print ("Error: Must run command in main gcc source directory containing coretypes.h\n")
# process diagnostic.h first.. it's special since GCC_DIAG_STYLE can be
# overridden by languages, but must be done so by a file included BEFORE it.
@ -268,20 +268,20 @@ process_known_dups ()
desired_order = master_list
if show_master:
print " Canonical order of gcc include files: "
print (" Canonical order of gcc include files: ")
for x in master_list:
print x
print " "
print (x)
print (" ")
if usage:
print "gcc-order-headers [-i] [-v] file1 [filen]"
print " Ensures gcc's headers files are included in a normalized form with"
print " redundant headers removed. The original files are saved in filename.bak"
print " Outputs a list of files which changed."
print " -i ignore conditional compilation."
print " Use after examining the file to be sure includes within #ifs are safe"
print " Any headers within conditional sections will be ignored."
print " -v Show the canonical order of known headers"
print ("gcc-order-headers [-i] [-v] file1 [filen]")
print (" Ensures gcc's headers files are included in a normalized form with")
print (" redundant headers removed. The original files are saved in filename.bak")
print (" Outputs a list of files which changed.")
print (" -i ignore conditional compilation.")
print (" Use after examining the file to be sure includes within #ifs are safe")
print (" Any headers within conditional sections will be ignored.")
print (" -v Show the canonical order of known headers")
sys.exit(0)
@ -303,7 +303,7 @@ for fn in file_list:
if ii_include_list_cond (iinfo):
if not ignore_conditional:
print fn + ": Cannot process due to conditional compilation of includes"
print (fn + ": Cannot process due to conditional compilation of includes")
didnt_do.append (fn)
src = list ()
@ -329,8 +329,8 @@ for fn in file_list:
src_line[nm] = ii_src_line(iinfo)[d]
if src_line[nm].find("/*") != -1 and src_line[nm].find("*/") == -1:
# this means we have a multi line comment, abort!'
print fn + ": Cannot process due to a multi-line comment :"
print " " + src_line[nm]
print (fn + ": Cannot process due to a multi-line comment :")
print (" " + src_line[nm])
if fn not in didnt_do:
didnt_do.append (fn)
src = list ()
@ -375,22 +375,22 @@ for fn in file_list:
for line in new_src:
fl.write (line)
fl.close ()
print fn
print (fn)
if didnt_do:
print "\n\n Did not process the following files due to conditional dependencies:"
print ("\n\n Did not process the following files due to conditional dependencies:")
str = ""
for x in didnt_do:
str += x + " "
print str
print "\n"
print "Please examine to see if they are safe to process, and re-try with -i. "
print "Safeness is determined by checking whether any of the reordered headers are"
print "within a conditional and could be hauled out of the conditional, thus changing"
print "what the compiler will see."
print "Multi-line comments after a #include can also cause failuer, they must be turned"
print "into single line comments or removed."
print (str)
print ("\n")
print ("Please examine to see if they are safe to process, and re-try with -i. ")
print ("Safeness is determined by checking whether any of the reordered headers are")
print ("within a conditional and could be hauled out of the conditional, thus changing")
print ("what the compiler will see.")
print ("Multi-line comments after a #include can also cause failuer, they must be turned")
print ("into single line comments or removed.")

View file

@ -1,4 +1,4 @@
#! /usr/bin/python2
#! /usr/bin/python3
import os.path
import sys
import shlex
@ -53,7 +53,7 @@ ignore = [ "coretypes_h",
def process_log_file (header, logfile):
if header_roots.get (header) != None:
print "Error: already processed log file: " + header + ".log"
print ("Error: already processed log file: " + header + ".log")
return
hname = pretty_name (header)
header_roots[hname] = { }
@ -66,7 +66,7 @@ def process_log_file (header, logfile):
if newinc:
incfrom = list()
newinc = False
fn = re.findall(ur".*/(.*?):", line)
fn = re.findall(r".*/(.*?):", line)
if len(fn) != 1:
continue
if fn[0][-2:] != ".h":
@ -76,16 +76,16 @@ def process_log_file (header, logfile):
incfrom.append (n)
continue
newinc = True
note = re.findall (ur"^.*note: (.*)", line)
note = re.findall (r"^.*note: (.*)", line)
if len(note) > 0:
sline.append (("note", note[0]))
else:
err_msg = re.findall (ur"^.*: error: (.*)", line)
err_msg = re.findall (r"^.*: error: (.*)", line)
if len(err_msg) == 1:
msg = err_msg[0]
if (len (re.findall("error: forward declaration", line))) != 0:
continue
path = re.findall (ur"^(.*?):.*error: ", line)
path = re.findall (r"^(.*?):.*error: ", line)
if len(path) != 1:
continue
if path[0][-2:] != ".h":
@ -95,7 +95,7 @@ def process_log_file (header, logfile):
continue
sline.append (("error", msg, fname, incfrom))
print str(len(sline)) + " lines to process"
print (str(len(sline)) + " lines to process")
lastline = "note"
for line in sline:
if line[0] != "note" and lastline[0] == "error":
@ -111,7 +111,7 @@ def process_log_file (header, logfile):
if ee not in extra_edges:
extra_edges.append (ee)
fname = t
print string
print (string)
if hname not in nodes:
nodes.append(hname)
@ -125,7 +125,7 @@ def process_log_file (header, logfile):
if header_roots[hname].get(fname) == None:
header_roots[hname][fname] = list()
if msg not in header_roots[hname][fname]:
print string + ofname + " : " +msg
print (string + ofname + " : " +msg)
header_roots[hname][fname].append (msg)
lastline = line;
@ -181,10 +181,10 @@ def build_dot_file (file_list):
if verbose:
depcount.sort(key=lambda tup:tup[2])
for x in depcount:
print " ("+str(x[2])+ ") : " + x[0] + " -> " + x[1]
print (" ("+str(x[2])+ ") : " + x[0] + " -> " + x[1])
if (x[2] <= verbosity):
for l in header_roots[x[0]][x[1]]:
print " " + l
print (" " + l)
output.write ("}\n");
@ -205,7 +205,7 @@ for arg in sys.argv[1:]:
if (verbosity == 9):
verbosity = 9999
elif arg[0:1] == "-":
print "Unrecognized option " + arg
print ("Unrecognized option " + arg)
dohelp = True
else:
files.append (arg)
@ -214,16 +214,16 @@ if len(sys.argv) == 1:
dohelp = True
if dohelp:
print "Parses the log files from the reduce-headers tool to generate"
print "dependency graphs for the include web for specified files."
print "Usage: [-nnum] [-h] [-v[n]] [-ooutput] file1 [[file2] ... [filen]]"
print " -ooutput : Specifies output to output.dot and output.png"
print " Defaults to 'graph.dot and graph.png"
print " -vn : verbose mode, shows the number of connections, and if n"
print " is specified, show the messages if # < n. 9 is infinity"
print " -h : help"
print ("Parses the log files from the reduce-headers tool to generate")
print ("dependency graphs for the include web for specified files.")
print ("Usage: [-nnum] [-h] [-v[n]] [-ooutput] file1 [[file2] ... [filen]]")
print (" -ooutput : Specifies output to output.dot and output.png")
print (" Defaults to 'graph.dot and graph.png")
print (" -vn : verbose mode, shows the number of connections, and if n")
print (" is specified, show the messages if # < n. 9 is infinity")
print (" -h : help")
else:
print files
print (files)
build_dot_file (files)
os.system ("dot -Tpng " + dotname + " -o" + graphname)

View file

@ -1,4 +1,4 @@
#! /usr/bin/python2
#! /usr/bin/python3
import os.path
import sys
import shlex
@ -82,7 +82,7 @@ for arg in sys.argv[1:]:
noterm = True
elif arg[0:2] == "-f":
if not os.path.exists (arg[2:]):
print "Option " + arg +" doesn't specify a proper file"
print ("Option " + arg +" doesn't specify a proper file")
dohelp = True
else:
sfile = open (arg[2:], "r")
@ -93,7 +93,7 @@ for arg in sys.argv[1:]:
elif arg[0:2] == "-n":
edge_thresh = int (arg[2:])
elif arg[0:1] == "-":
print "Unrecognized option " + arg
print ("Unrecognized option " + arg)
dohelp = True
else:
files.append (arg)
@ -102,17 +102,17 @@ if len(sys.argv) == 1:
dohelp = True
if dohelp:
print "Generates a graph of the include web for specified files."
print "Usage: [-finput_file] [-h] [-ooutput] [file1 ... [filen]]"
print " -finput_file : Input file containing a list of files to process."
print " -ooutput : Specifies output to output.dot and output.png."
print " defaults to graph.dot and graph.png."
print " -nnum : Specifies the # of edges beyond which sfdp is invoked. def=0."
print " -a : Aggregate all .c files to 1 file. Shows only include web."
print " -at : Aggregate, but don't include terminal.h to .c links."
print " -h : Print this help."
print ("Generates a graph of the include web for specified files.")
print ("Usage: [-finput_file] [-h] [-ooutput] [file1 ... [filen]]")
print (" -finput_file : Input file containing a list of files to process.")
print (" -ooutput : Specifies output to output.dot and output.png.")
print (" defaults to graph.dot and graph.png.")
print (" -nnum : Specifies the # of edges beyond which sfdp is invoked. def=0.")
print (" -a : Aggregate all .c files to 1 file. Shows only include web.")
print (" -at : Aggregate, but don't include terminal.h to .c links.")
print (" -h : Print this help.")
else:
print files
print (files)
build_dot_file (files)
if edges > edge_thresh:
os.system ("sfdp -Tpng " + dotname + " -o" + graphname)

View file

@ -1,4 +1,4 @@
#! /usr/bin/python2
#! /usr/bin/python3
import os.path
import sys
import shlex
@ -10,7 +10,7 @@ import pickle
import multiprocessing
def find_pound_include (line, use_outside, use_slash):
inc = re.findall (ur"^\s*#\s*include\s*\"(.+?)\"", line)
inc = re.findall (r"^\s*#\s*include\s*\"(.+?)\"", line)
if len(inc) == 1:
nm = inc[0]
if use_outside or os.path.exists (nm):
@ -19,17 +19,17 @@ def find_pound_include (line, use_outside, use_slash):
return ""
def find_system_include (line):
inc = re.findall (ur"^\s*#\s*include\s*<(.+?)>", line)
inc = re.findall (r"^\s*#\s*include\s*<(.+?)>", line)
if len(inc) == 1:
return inc[0]
return ""
def find_pound_define (line):
inc = re.findall (ur"^\s*#\s*define ([A-Za-z0-9_]+)", line)
inc = re.findall (r"^\s*#\s*define ([A-Za-z0-9_]+)", line)
if len(inc) != 0:
if len(inc) > 1:
print "What? more than 1 match in #define??"
print inc
print ("What? more than 1 match in #define??")
print (inc)
sys.exit(5)
return inc[0];
return ""
@ -49,26 +49,26 @@ def is_pound_endif (line):
return False
def find_pound_if (line):
inc = re.findall (ur"^\s*#\s*if\s+(.*)", line)
inc = re.findall (r"^\s*#\s*if\s+(.*)", line)
if len(inc) == 0:
inc = re.findall (ur"^\s*#\s*elif\s+(.*)", line)
inc = re.findall (r"^\s*#\s*elif\s+(.*)", line)
if len(inc) > 0:
inc2 = re.findall (ur"defined\s*\((.+?)\)", inc[0])
inc3 = re.findall (ur"defined\s+([a-zA-Z0-9_]+)", inc[0])
inc2 = re.findall (r"defined\s*\((.+?)\)", inc[0])
inc3 = re.findall (r"defined\s+([a-zA-Z0-9_]+)", inc[0])
for yy in inc3:
inc2.append (yy)
return inc2
else:
inc = re.findall (ur"^\s*#\s*ifdef\s(.*)", line)
inc = re.findall (r"^\s*#\s*ifdef\s(.*)", line)
if len(inc) == 0:
inc = re.findall (ur"^\s*#\s*ifndef\s(.*)", line)
inc = re.findall (r"^\s*#\s*ifndef\s(.*)", line)
if len(inc) > 0:
inc2 = re.findall ("[A-Za-z_][A-Za-z_0-9]*", inc[0])
return inc2
if len(inc) == 0:
return list ()
print "WTF. more than one line returned for find_pound_if"
print inc
print ("WTF. more than one line returned for find_pound_if")
print (inc)
sys.exit(5)
@ -248,8 +248,8 @@ def find_gcc_bld_dir (path):
for y in files:
p = os.path.dirname (y)
if os.path.basename (p) == "gcc":
blddir = p
break
blddir = p
break
return blddir
@ -424,7 +424,7 @@ def find_replace_include (find, replace, src):
# pass in a require and provide dictionary to be read in.
def read_require_provides (require, provide):
if not os.path.exists ("require-provide.master"):
print "require-provide.master file is not available. please run data collection."
print ("require-provide.master file is not available. please run data collection.")
sys.exit(1)
incl_list = open("require-provide.master").read().splitlines()
for f in incl_list:
@ -501,7 +501,7 @@ def spawn_makes (command_list):
c = subprocess.Popen(command, bufsize=-1, stdout=devnull, stderr=subprocess.PIPE, shell=True)
proc_res.append ((c, tname))
print text[:-2]
print (text[:-2])
for p in proc_res:
output = p[0].communicate()

View file

@ -1,4 +1,4 @@
#! /usr/bin/python2
#! /usr/bin/python3
import os.path
import sys
import shlex
@ -43,7 +43,7 @@ for x in sys.argv[1:]:
file_list = open (x[2:]).read().splitlines()
scanfiles = False
elif x[0] == "-":
print "Error: Unknown option " + x
print ("Error: Unknown option " + x)
usage = True
else:
src.append (x)
@ -89,21 +89,21 @@ if not usage:
if len (careabout) < num_match:
output = ""
if output != "":
print output
print (output)
else:
print "included-by [-h] [-i] [-c] [-v] [-a] [-nx] file1 [file2] ... [filen]"
print "find the list of all files in subdirectories that include any of "
print "the listed files. processed to a depth of 3 subdirs"
print " -h : Show this message"
print " -i : process only header files (*.h) for #include"
print " -c : process only source files (*.c *.cc) for #include"
print " If nothing is specified, defaults to -i -c"
print " -s : Same as -c."
print " -v : Show which include(s) were found"
print " -nx : Only list files which have at least x different matches. Default = 1"
print " -a : Show only files which all listed files are included"
print " This is equivilent to -nT where T == # of items in list"
print " -flistfile : Show only files contained in the list of files"
print ("included-by [-h] [-i] [-c] [-v] [-a] [-nx] file1 [file2] ... [filen]")
print ("find the list of all files in subdirectories that include any of ")
print ("the listed files. processed to a depth of 3 subdirs")
print (" -h : Show this message")
print (" -i : process only header files (*.h) for #include")
print (" -c : process only source files (*.c *.cc) for #include")
print (" If nothing is specified, defaults to -i -c")
print (" -s : Same as -c.")
print (" -v : Show which include(s) were found")
print (" -nx : Only list files which have at least x different matches. Default = 1")
print (" -a : Show only files which all listed files are included")
print (" This is equivilent to -nT where T == # of items in list")
print (" -flistfile : Show only files contained in the list of files")

View file

@ -1,4 +1,4 @@
#! /usr/bin/python2
#! /usr/bin/python3
import os.path
import sys
import shlex
@ -177,7 +177,7 @@ def build_target_dict (bld_dir, just_these):
target = t.strip()
tpath = bld_dir + "/" + target
if not os.path.exists (tpath + "/gcc"):
print "Error: gcc build directory for target " + t + " Does not exist: " + tpath + "/gcc"
print ("Error: gcc build directory for target " + t + " Does not exist: " + tpath + "/gcc")
error = True
else:
target_dict[target] = tpath
@ -209,7 +209,7 @@ def find_targets (src_file):
targ_list = list()
obj_name = get_obj_name (src_file)
if not obj_name:
print "Error: " + src_file + " - Cannot determine object name."
print ("Error: " + src_file + " - Cannot determine object name.")
return list()
# Put the high priority targets which tend to trigger failures first
@ -263,22 +263,22 @@ def try_to_remove (src_file, h_list, verbose):
hostbuild = True
if not target_dict:
summary = src_file + ": Target builds are required for config files. None found."
print summary
print (summary)
return summary
if not targ_list:
summary =src_file + ": Cannot find any targets which build this file."
print summary
print (summary)
return summary
if hostbuild:
# confirm it actually builds before we do anything
print "Confirming source file builds"
print ("Confirming source file builds")
res = get_make_output (build_dir + "/gcc", "all")
if res[0] != 0:
message = "Error: " + src_file + " does not build currently."
summary = src_file + " does not build on host."
print message
print res[1]
print (message)
print (res[1])
if verbose:
verbose.write (message + "\n")
verbose.write (res[1]+ "\n")
@ -314,7 +314,7 @@ def try_to_remove (src_file, h_list, verbose):
lookfor = ii_src_line(src_info)[inc_file]
src_tmp.remove (lookfor)
message = "Trying " + src_file + " without " + inc_file
print message
print (message)
if verbose:
verbose.write (message + "\n")
out = open(src_file, "w")
@ -350,7 +350,7 @@ def try_to_remove (src_file, h_list, verbose):
message = "Passed host and target builds"
if keep:
print message + "\n"
print (message + "\n")
if (rc != 0):
if verbose:
@ -392,7 +392,7 @@ def try_to_remove (src_file, h_list, verbose):
if ii_path(iinfo) == "build" and not target_dict:
keep = True
text = message + " : Will not remove a build file without some targets."
print text
print (text)
ilog = open(src_file+".log","a")
ilog.write (text +"\n")
ilog.write ("============================================\n");
@ -414,7 +414,7 @@ def try_to_remove (src_file, h_list, verbose):
text = message + ", but must keep " + inc_file + " because it provides " + dep
if because.get(dep) != None:
text = text + " Possibly required by " + because[dep]
print text
print (text)
ilog = open(inc_file+".log","a")
ilog.write (because[dep]+": Requires [dep] in "+src_file+"\n")
ilog.write ("============================================\n");
@ -444,7 +444,7 @@ def try_to_remove (src_file, h_list, verbose):
src_tmp = copy.deepcopy (src_data)
else:
print message + " --> removing " + inc_file + "\n"
print (message + " --> removing " + inc_file + "\n")
rmcount += 1
if verbose:
verbose.write (message + " --> removing " + inc_file + "\n")
@ -454,7 +454,7 @@ def try_to_remove (src_file, h_list, verbose):
remove_count[inc_file] += 1
src_data = copy.deepcopy (src_tmp)
except:
print "Interuption: restoring original file"
print ("Interuption: restoring original file")
out = open(src_file, "w")
for line in src_orig:
out.write (line)
@ -473,8 +473,8 @@ def try_to_remove (src_file, h_list, verbose):
rc = res[0]
if (rc != 0):
# host build failed! return to original version
print "Error: " + src_file + " Failed to bootstrap at end!!! restoring."
print " Bad version at " + src_file + ".bad"
print ("Error: " + src_file + " Failed to bootstrap at end!!! restoring.")
print (" Bad version at " + src_file + ".bad")
os.rename (src_file, src_file + ".bad")
out = open(src_file, "w")
for line in src_orig:
@ -486,7 +486,7 @@ def try_to_remove (src_file, h_list, verbose):
summary = src_file + ": No change."
else:
summary = src_file + ": Reduction performed, "+str(rmcount)+" includes removed."
print summary
print (summary)
return summary
only_h = list ()
@ -513,11 +513,11 @@ for x in sys.argv[1:]:
elif x[0:2] == "-t":
target_dir = x[2:]
elif x[0] == "-":
print "Error: Unrecognized option " + x
print ("Error: Unrecognized option " + x)
usgae = True
else:
if not os.path.exists (x):
print "Error: specified file " + x + " does not exist."
print ("Error: specified file " + x + " does not exist.")
usage = True
else:
src.append (x)
@ -526,50 +526,50 @@ if target_dir:
build_target_dict (target_dir, only_targs)
if build_dir == "" and target_dir == "":
print "Error: Must specify a build directory, and/or a target directory."
print ("Error: Must specify a build directory, and/or a target directory.")
usage = True
if build_dir and not os.path.exists (build_dir):
print "Error: specified build directory does not exist : " + build_dir
print ("Error: specified build directory does not exist : " + build_dir)
usage = True
if target_dir and not os.path.exists (target_dir):
print "Error: specified target directory does not exist : " + target_dir
print ("Error: specified target directory does not exist : " + target_dir)
usage = True
if usage:
print "Attempts to remove extraneous include files from source files."
print " "
print "Should be run from the main gcc source directory, and works on a target"
print "directory, as we attempt to make the 'all' target."
print " "
print "By default, gcc-reorder-includes is run on each file before attempting"
print "to remove includes. this removes duplicates and puts some headers in a"
print "canonical ordering"
print " "
print "The build directory should be ready to compile via make. Time is saved"
print "if the build is already complete, so that only changes need to be built."
print " "
print "Usage: [options] file1.c [file2.c] ... [filen.c]"
print " -bdir : the root build directory to attempt buiding .o files."
print " -tdir : the target build directory"
print " -d : Ignore conditional macro dependencies."
print " "
print " -Dmacro : Ignore a specific macro for dependencies"
print " -Ttarget : Only consider target in target directory."
print " -fheader : Specifies a specific .h file to be considered."
print " "
print " -D, -T, and -f can be specified mulitple times and are aggregated."
print " "
print " The original file will be in filen.bak"
print " "
print ("Attempts to remove extraneous include files from source files.")
print (" ")
print ("Should be run from the main gcc source directory, and works on a target")
print ("directory, as we attempt to make the 'all' target.")
print (" ")
print ("By default, gcc-reorder-includes is run on each file before attempting")
print ("to remove includes. this removes duplicates and puts some headers in a")
print ("canonical ordering")
print (" ")
print ("The build directory should be ready to compile via make. Time is saved")
print ("if the build is already complete, so that only changes need to be built.")
print (" ")
print ("Usage: [options] file1.c [file2.c] ... [filen.c]")
print (" -bdir : the root build directory to attempt buiding .o files.")
print (" -tdir : the target build directory")
print (" -d : Ignore conditional macro dependencies.")
print (" ")
print (" -Dmacro : Ignore a specific macro for dependencies")
print (" -Ttarget : Only consider target in target directory.")
print (" -fheader : Specifies a specific .h file to be considered.")
print (" ")
print (" -D, -T, and -f can be specified mulitple times and are aggregated.")
print (" ")
print (" The original file will be in filen.bak")
print (" ")
sys.exit (0)
if only_h:
print "Attempting to remove only these files:"
print ("Attempting to remove only these files:")
for x in only_h:
print x
print " "
print (x)
print (" ")
logfile = open("reduce-headers.log","w")
@ -583,7 +583,7 @@ ilog = open("reduce-headers.sum","a")
ilog.write ("===============================================================\n")
for x in remove_count:
msg = x + ": Removed " + str(remove_count[x]) + " times."
print msg
print (msg)
logfile.write (msg + "\n")
ilog.write (msg + "\n")

View file

@ -1,4 +1,4 @@
#! /usr/bin/python2
#! /usr/bin/python3
import os.path
import sys
import shlex
@ -20,7 +20,7 @@ for x in sys.argv[1:]:
elif x[0:2] == "-r":
replace.append (x[2:])
elif x[0:1] == "-":
print "Error: unrecognized option " + x
print ("Error: unrecognized option " + x)
usage = True
else:
files.append (x)
@ -29,25 +29,25 @@ if find == "":
usage = True
if usage:
print "replace-header -fheader -rheader [-rheader] file1 [filen.]"
print ("replace-header -fheader -rheader [-rheader] file1 [filen.]")
sys.exit(0)
string = ""
for x in replace:
string = string + " '"+x+"'"
print "Replacing '"+find+"' with"+string
print ("Replacing '"+find+"' with"+string)
for x in files:
src = readwholefile (x)
src = find_replace_include (find, replace, src)
if (len(src) > 0):
print x + ": Changed"
print (x + ": Changed")
out = open(x, "w")
for line in src:
out.write (line);
out.close ()
else:
print x
print (x)

View file

@ -1,4 +1,4 @@
#! /usr/bin/python2
#! /usr/bin/python3
import os.path
import sys
import shlex
@ -93,17 +93,17 @@ for x in sys.argv[1:]:
if len(src) != 1:
usage = True
elif not os.path.exists (src[0]):
print src[0] + ": Requested source file does not exist.\n"
print (src[0] + ": Requested source file does not exist.\n")
usage = True
if usage:
print "show-headers [-idir] [-sfilen] file1 "
print " "
print " Show a hierarchical visual format how many times each header file"
print " is included in a source file. Should be run from the source directory"
print " files from find-include-depends"
print " -s : search for a header, and point it out."
print " -i : Specifies additonal directories to search for includes."
print ("show-headers [-idir] [-sfilen] file1 ")
print (" ")
print (" Show a hierarchical visual format how many times each header file")
print (" is included in a source file. Should be run from the source directory")
print (" files from find-include-depends")
print (" -s : search for a header, and point it out.")
print (" -i : Specifies additonal directories to search for includes.")
sys.exit(0)
@ -114,10 +114,10 @@ if extradir:
blddir = find_gcc_bld_dir ("../..")
if blddir:
print "Using build directory: " + blddir
print ("Using build directory: " + blddir)
incl_dirs.insert (0, blddir)
else:
print "Could not find a build directory, better results if you specify one with -i"
print ("Could not find a build directory, better results if you specify one with -i")
# search path is now ".", blddir, extradirs_from_-i, built_in_incl_dirs
incl_dirs.insert (0, ".")
@ -137,15 +137,15 @@ for line in data:
if d and d[-2:] == ".h":
process_include (d, 1)
print "\n" + x
print ("\n" + x)
for line in output:
print line
print (line)
if highlight:
print " "
print (" ")
for h in summary:
print h + " is included by source file."
print (h + " is included by source file.")
for h in highlight:
if h not in summary:
print h + " is not included by source file."
print (h + " is not included by source file.")