Commit the working code
This commit is contained in:
parent
a0fdf41038
commit
48df5fbbd2
77
bisdef.py
Normal file
77
bisdef.py
Normal file
@ -0,0 +1,77 @@
|
||||
#!/usr/bin/python
|
||||
import sys, os, math, linecache, re
|
||||
|
||||
# change numerator and denominator variables progressively to perform a proper bissection search manually
|
||||
numerator = 1
|
||||
denominator = 2
|
||||
|
||||
defconfig_file_name = "defconfig_clean"
|
||||
|
||||
def usage():
|
||||
print("""Usage: bissect_conf [<input_comparison_file> <config_in>]
|
||||
|
||||
Will output a defconfig file with the changes detected from the comparison_file to the config_in file
|
||||
Example usage:
|
||||
$ bissect_conf comparison_file defconfig_not_working
|
||||
""")
|
||||
sys.exit(0)
|
||||
|
||||
def main():
|
||||
global merge_style
|
||||
outup_f = open("defconfig", "w")
|
||||
|
||||
|
||||
# parse command line args
|
||||
if ("-h" in sys.argv or "--help" in sys.argv):
|
||||
usage()
|
||||
|
||||
compare_file = open("compare.defconfig")
|
||||
compare_file_data = compare_file.readlines()
|
||||
compare_file_num = len(compare_file_data)
|
||||
|
||||
defconfig_file = open(defconfig_file_name)
|
||||
defconfig_data = defconfig_file.readlines()
|
||||
|
||||
# split into number of chunks equal to denominator
|
||||
denomi_lines = math.ceil(compare_file_num/denominator)
|
||||
|
||||
for i in range(denomi_lines*(numerator-1), denomi_lines*(numerator)): # first line is at 1
|
||||
compare_file_line = compare_file_data[i]
|
||||
|
||||
##############################################################################################################
|
||||
# the comparison file describes a change which starts with a "-"
|
||||
if compare_file_line.startswith("-"):
|
||||
compare_file_line = compare_file_line[1:]
|
||||
current_config_name = "CONFIG_" + compare_file_line.split(" ")[0]
|
||||
|
||||
# cycle through entire defconfig file and search for config_name
|
||||
for j in range(0, len(defconfig_data)):
|
||||
if current_config_name+" " in defconfig_data[j] or current_config_name+"=" in defconfig_data[j]:
|
||||
defconfig_data[j] = current_config_name+"="+compare_file_line.split(" ")[1]
|
||||
|
||||
if j == len(defconfig_data) - 1:
|
||||
defconfig_data.append(current_config_name+"="+compare_file_line.split(" ")[1])
|
||||
|
||||
##############################################################################################################
|
||||
# the comparison file describes a change which starts with a "+"
|
||||
elif compare_file_line.startswith("+"):
|
||||
compare_file_line = compare_file_line[1:]
|
||||
current_config_name = "CONFIG_" + compare_file_line.split(" ")[0]
|
||||
#current_config_name = current_config_name.strip()
|
||||
|
||||
# cycle through entire defconfig file and search for config_name
|
||||
for j in range(0, len(defconfig_data)):
|
||||
if current_config_name in defconfig_data[j]:
|
||||
defconfig_data[j] = ""
|
||||
|
||||
##############################################################################################################
|
||||
else:
|
||||
current_config_name = "CONFIG_" + compare_file_line.split(" ")[1]
|
||||
print(compare_file_line)
|
||||
for j in range(0, len(defconfig_data)):
|
||||
if current_config_name+" " in defconfig_data[j] or current_config_name+"=" in defconfig_data[j]:
|
||||
defconfig_data[j] = current_config_name+"="+compare_file_line.split(" ")[2]+"\n"
|
||||
|
||||
outup_f.writelines(defconfig_data)
|
||||
|
||||
main()
|
Loading…
Reference in New Issue
Block a user