Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
chore(ci): detect LOAD segment with RWX permissions warning
Ignore it also when only overflow detected.

Signed-off-by: Frederic Pillon <frederic.pillon@st.com>
  • Loading branch information
fpistm committed Sep 4, 2024
commit b296d7d2743a423a5e8d37c79da2339d7264e791
22 changes: 18 additions & 4 deletions CI/build/arduino-cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,12 +74,11 @@
sketch_options = {} # key: sketch pattern, value: options
na_sketch_pattern = {} # key: board name, value: sketch pattern list

all_warnings = False

# Counter
nb_build_passed = 0
nb_build_failed = 0
nb_build_skipped = 0
nb_warnings = 0

# Timing
full_buildTime = time.time()
Expand All @@ -95,7 +94,7 @@
overflow_pattern = re.compile(
r"(will not fit in |section .+ is not within )?region( .+ overflowed by [\d]+ bytes)?"
)

warning_pattern = re.compile(r"warning: .+LOAD segment with RWX permissions")
# format
build_format_header = "| {:^8} | {:42} | {:^10} | {:^7} |"
build_format_result = "| {:^8} | {:42} | {:^19} | {:^6.2f}s |"
Expand Down Expand Up @@ -590,11 +589,18 @@ def find_board():
def check_status(status, build_conf, boardKo, nb_build_conf):
global nb_build_passed
global nb_build_failed
global nb_warnings
sketch_name = build_conf[idx_cmd][-1].name

if status[1] == 0:
result = fsucc
nb_build_passed += 1
# Check warnings
logFile = build_conf[idx_log] / f"{sketch_name}.log"
for i, line in enumerate(open(logFile)):
if warning_pattern.search(line):
nb_warnings += 1
print(f"Warning: {line}")
elif status[1] == 1:
# Check if failed due to a region overflowed
logFile = build_conf[idx_log] / f"{sketch_name}.log"
Expand All @@ -608,7 +614,11 @@ def check_status(status, build_conf, boardKo, nb_build_conf):
elif ld_pattern.search(line):
# If one ld line is not for region overflowed --> failed
if overflow_pattern.search(line) is None:
error_found = True
if warning_pattern.search(line):
nb_warnings += 1
print(f"Warning: {line}")
else:
error_found = True
else:
overflow_found = True
if error_found:
Expand Down Expand Up @@ -692,6 +702,8 @@ def log_final_result():
sfail = f"{nb_build_failed} failed ({stat_failed}%)"
sskip = f"{nb_build_skipped} skipped)"
f.write(f"{ssucc}, {sfail} of {nb_build_total} builds ({sskip})\n")
if nb_warnings:
f.write(f"Total warning to remove: {nb_warnings}\n")
f.write(f"Ends {time.strftime('%A %d %B %Y %H:%M:%S')}\n")
f.write(f"Duration: {duration}\n")
f.write(f"Logs are available here:\n{output_dir}\n")
Expand All @@ -702,6 +714,8 @@ def log_final_result():
sfail = f"{nb_build_failed} {ffail} ({stat_failed}%)"
sskip = f"{nb_build_skipped} {fskip}"
print(f"Builds Summary: {ssucc}, {sfail} of {nb_build_total} builds ({sskip})")
if nb_warnings:
print(f"Total warning to remove: {nb_warnings}")
print(f"Duration: {duration}")
print("Logs are available here:")
print(output_dir)
Expand Down
Loading