Skip to content

Commit 3dd7113

Browse files
authored
Merge branch 'master' into ethernet_compat_layer
2 parents 8698fef + 4070a87 commit 3dd7113

File tree

10 files changed

+348
-64
lines changed

10 files changed

+348
-64
lines changed

.github/scripts/on-push.sh

Lines changed: 31 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ function build(){
99
local fqbn=$2
1010
local chunk_index=$3
1111
local chunks_cnt=$4
12-
shift; shift; shift; shift;
12+
local build_log=$5
13+
shift; shift; shift; shift; shift;
1314
local sketches=$*
1415

1516
local BUILD_SKETCH="${SCRIPTS_DIR}/sketch_utils.sh build"
@@ -22,6 +23,9 @@ function build(){
2223
if [ "$OS_IS_LINUX" == "1" ]; then
2324
args+=" -p $ARDUINO_ESP32_PATH/libraries"
2425
args+=" -i $chunk_index -m $chunks_cnt"
26+
if [ $build_log -eq 1 ]; then
27+
args+=" -l $build_log"
28+
fi
2529
${BUILD_SKETCHES} ${args}
2630
else
2731
for sketch in ${sketches}; do
@@ -45,6 +49,7 @@ fi
4549

4650
CHUNK_INDEX=$1
4751
CHUNKS_CNT=$2
52+
BUILD_LOG=$3
4853
BUILD_PIO=0
4954
if [ "$#" -lt 2 ] || [ "$CHUNKS_CNT" -le 0 ]; then
5055
CHUNK_INDEX=0
@@ -55,6 +60,10 @@ elif [ "$CHUNK_INDEX" -eq "$CHUNKS_CNT" ]; then
5560
BUILD_PIO=1
5661
fi
5762

63+
if [ "$BUILD_LOG" -le 0 ]; then
64+
BUILD_LOG=0
65+
fi
66+
5867
#echo "Updating submodules ..."
5968
#git -C "$GITHUB_WORKSPACE" submodule update --init --recursive > /dev/null 2>&1
6069

@@ -77,13 +86,28 @@ if [ "$BUILD_PIO" -eq 0 ]; then
7786
$ARDUINO_ESP32_PATH/libraries/ESP32/examples/Camera/CameraWebServer/CameraWebServer.ino\
7887
$ARDUINO_ESP32_PATH/libraries/Insights/examples/MinimalDiagnostics/MinimalDiagnostics.ino\
7988
"
89+
#create sizes_file
90+
sizes_file="$GITHUB_WORKSPACE/cli_compile_$CHUNK_INDEX.json"
8091

81-
build "esp32s3" $FQBN_ESP32S3 $CHUNK_INDEX $CHUNKS_CNT $SKETCHES_ESP32
82-
build "esp32s2" $FQBN_ESP32S2 $CHUNK_INDEX $CHUNKS_CNT $SKETCHES_ESP32
83-
build "esp32c3" $FQBN_ESP32C3 $CHUNK_INDEX $CHUNKS_CNT $SKETCHES_ESP32
84-
build "esp32c6" $FQBN_ESP32C6 $CHUNK_INDEX $CHUNKS_CNT $SKETCHES_ESP32
85-
build "esp32h2" $FQBN_ESP32H2 $CHUNK_INDEX $CHUNKS_CNT $SKETCHES_ESP32
86-
build "esp32" $FQBN_ESP32 $CHUNK_INDEX $CHUNKS_CNT $SKETCHES_ESP32
92+
if [ "$BUILD_LOG" -eq 1 ]; then
93+
#create sizes_file and echo start of JSON array with "boards" key
94+
echo "{\"boards\": [" > $sizes_file
95+
fi
96+
97+
#build sketches for different targets
98+
build "esp32s3" $FQBN_ESP32S3 $CHUNK_INDEX $CHUNKS_CNT $BUILD_LOG $SKETCHES_ESP32
99+
build "esp32s2" $FQBN_ESP32S2 $CHUNK_INDEX $CHUNKS_CNT $BUILD_LOG $SKETCHES_ESP32
100+
build "esp32c3" $FQBN_ESP32C3 $CHUNK_INDEX $CHUNKS_CNT $BUILD_LOG $SKETCHES_ESP32
101+
build "esp32c6" $FQBN_ESP32C6 $CHUNK_INDEX $CHUNKS_CNT $BUILD_LOG $SKETCHES_ESP32
102+
build "esp32h2" $FQBN_ESP32H2 $CHUNK_INDEX $CHUNKS_CNT $BUILD_LOG $SKETCHES_ESP32
103+
build "esp32" $FQBN_ESP32 $CHUNK_INDEX $CHUNKS_CNT $BUILD_LOG $SKETCHES_ESP32
104+
105+
if [ "$BUILD_LOG" -eq 1 ]; then
106+
#remove last comma from the last JSON object
107+
sed -i '$ s/.$//' "$sizes_file"
108+
#echo end of JSON array
109+
echo "]}" >> $sizes_file
110+
fi
87111
else
88112
source ${SCRIPTS_DIR}/install-platformio-esp32.sh
89113
# PlatformIO ESP32 Test

.github/scripts/sketch_utils.sh

Lines changed: 67 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,14 @@ function build_sketch(){ # build_sketch <ide_path> <user_path> <path-to-ino> [ex
2727
shift
2828
sketchdir=$1
2929
;;
30+
-i )
31+
shift
32+
chunk_index=$1
33+
;;
34+
-l )
35+
shift
36+
log_compilation=$1
37+
;;
3038
* )
3139
break
3240
;;
@@ -140,6 +148,9 @@ function build_sketch(){ # build_sketch <ide_path> <user_path> <path-to-ino> [ex
140148
build_dir="$HOME/.arduino/tests/$sketchname/build.tmp"
141149
fi
142150

151+
output_file="$HOME/.arduino/cli_compile_output.txt"
152+
sizes_file="$GITHUB_WORKSPACE/cli_compile_$chunk_index.json"
153+
143154
mkdir -p "$ARDUINO_CACHE_DIR"
144155
for i in `seq 0 $(($len - 1))`
145156
do
@@ -164,13 +175,39 @@ function build_sketch(){ # build_sketch <ide_path> <user_path> <path-to-ino> [ex
164175
--build-property "compiler.warning_flags.all=-Wall -Werror=all -Wextra" \
165176
--build-cache-path "$ARDUINO_CACHE_DIR" \
166177
--build-path "$build_dir" \
167-
$xtra_opts "${sketchdir}"
178+
$xtra_opts "${sketchdir}" \
179+
> $output_file
168180

169181
exit_status=$?
170182
if [ $exit_status -ne 0 ]; then
171183
echo ""ERROR: Compilation failed with error code $exit_status""
172184
exit $exit_status
173185
fi
186+
187+
if [ $log_compilation ]; then
188+
#Extract the program storage space and dynamic memory usage in bytes and percentage in separate variables from the output, just the value without the string
189+
flash_bytes=$(grep -oE 'Sketch uses ([0-9]+) bytes' $output_file | awk '{print $3}')
190+
flash_percentage=$(grep -oE 'Sketch uses ([0-9]+) bytes \(([0-9]+)%\)' $output_file | awk '{print $5}' | tr -d '(%)')
191+
ram_bytes=$(grep -oE 'Global variables use ([0-9]+) bytes' $output_file | awk '{print $4}')
192+
ram_percentage=$(grep -oE 'Global variables use ([0-9]+) bytes \(([0-9]+)%\)' $output_file | awk '{print $6}' | tr -d '(%)')
193+
194+
# Extract the directory path excluding the filename
195+
directory_path=$(dirname "$sketch")
196+
# Define the constant part
197+
constant_part="/home/runner/Arduino/hardware/espressif/esp32/libraries/"
198+
# Extract the desired substring using sed
199+
lib_sketch_name=$(echo "$directory_path" | sed "s|$constant_part||")
200+
#append json file where key is fqbn, sketch name, sizes -> extracted values
201+
echo "{\"name\": \"$lib_sketch_name\",
202+
\"sizes\": [{
203+
\"flash_bytes\": $flash_bytes,
204+
\"flash_percentage\": $flash_percentage,
205+
\"ram_bytes\": $ram_bytes,
206+
\"ram_percentage\": $ram_percentage
207+
}]
208+
}," >> "$sizes_file"
209+
fi
210+
174211
elif [ -f "$ide_path/arduino-builder" ]; then
175212
echo "Building $sketchname with arduino-builder and FQBN=$currfqbn"
176213
echo "Build path = $build_dir"
@@ -204,6 +241,7 @@ function build_sketch(){ # build_sketch <ide_path> <user_path> <path-to-ino> [ex
204241
# $xtra_opts "${sketchdir}/${sketchname}.ino"
205242
fi
206243
done
244+
207245
unset fqbn
208246
unset xtra_opts
209247
unset options
@@ -277,6 +315,10 @@ function build_sketches(){ # build_sketches <ide_path> <user_path> <target> <pat
277315
shift
278316
chunk_max=$1
279317
;;
318+
-l )
319+
shift
320+
log_compilation=$1
321+
;;
280322
* )
281323
break
282324
;;
@@ -340,8 +382,19 @@ function build_sketches(){ # build_sketches <ide_path> <user_path> <target> <pat
340382
echo "Start Sketch: $start_num"
341383
echo "End Sketch : $end_index"
342384

385+
sizes_file="$GITHUB_WORKSPACE/cli_compile_$chunk_index.json"
386+
if [ $log_compilation ]; then
387+
#echo board,target and start of sketches to sizes_file json
388+
echo "{ \"board\": \"$fqbn\",
389+
\"target\": \"$target\",
390+
\"sketches\": [" >> "$sizes_file"
391+
fi
392+
343393
local sketchnum=0
344-
args+=" -ai $ide_path -au $user_path"
394+
args+=" -ai $ide_path -au $user_path -i $chunk_index"
395+
if [ $log_compilation ]; then
396+
args+=" -l $log_compilation"
397+
fi
345398
for sketch in $sketches; do
346399
local sketchdir=$(dirname $sketch)
347400
local sketchdirname=$(basename $sketchdir)
@@ -358,6 +411,18 @@ function build_sketches(){ # build_sketches <ide_path> <user_path> <target> <pat
358411
return $result
359412
fi
360413
done
414+
415+
if [ $log_compilation ]; then
416+
#remove last comma from json
417+
if [ $i -eq $(($len - 1)) ]; then
418+
sed -i '$ s/.$//' "$sizes_file"
419+
fi
420+
#echo end of sketches sizes_file json
421+
echo "]" >> "$sizes_file"
422+
#echo end of board sizes_file json
423+
echo "}," >> "$sizes_file"
424+
fi
425+
361426
return 0
362427
}
363428

@@ -389,4 +454,3 @@ case "$cmd" in
389454
echo "$USAGE"
390455
exit 2
391456
esac
392-

.github/workflows/lib.yml

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -121,16 +121,21 @@ jobs:
121121
git add ${{ env.RESULT_LIBRARY_TEST_FILE }}
122122
git commit -m "Generated External Libraries Test Results"
123123
git push origin HEAD:gh-pages
124-
125-
event_file:
126-
name: "Event File"
127-
if: |
128-
contains(github.event.pull_request.labels.*.name, 'lib_test')
129-
needs: compile-sketch
124+
125+
#Upload PR number as artifact
126+
upload-pr-number:
127+
name: Upload PR number
128+
if: github.event_name == 'pull_request'
130129
runs-on: ubuntu-latest
131130
steps:
132-
- name: Upload
133-
uses: actions/upload-artifact@v4
134-
with:
135-
name: Event File
136-
path: ${{github.event_path}}
131+
- name: Save the PR number in an artifact
132+
shell: bash
133+
env:
134+
PR_NUM: ${{ github.event.number }}
135+
run: echo $PR_NUM > pr_num.txt
136+
- name: Upload PR number
137+
uses: actions/upload-artifact@v4
138+
with:
139+
name: pr_number
140+
path: ./pr_num.txt
141+
overwrite: true
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
name: Report Pre-commit Check Status
2+
3+
on:
4+
pull_request_target:
5+
types: [opened, reopened, synchronize, labeled, unlabeled]
6+
7+
permissions:
8+
statuses: write
9+
10+
jobs:
11+
report-run:
12+
name: Check if the PR has run the pre-commit checks
13+
runs-on: ubuntu-latest
14+
steps:
15+
- name: Report pending
16+
uses: conda/actions/set-commit-status@v24.2.0
17+
with:
18+
context: "Pre-commit checks"
19+
state: pending
20+
description: The pre-commit checks need to be successful before merging
21+
22+
- name: Wait for pre-commit checks to complete
23+
uses: lucasssvaz/wait-on-workflow@v1
24+
if: |
25+
contains(github.event.pull_request.labels.*.name, 'Status: Pending Merge')
26+
id: wait-on-workflow
27+
with:
28+
timeout: 10
29+
interval: 30
30+
workflow: pre-commit.yml
31+
sha: ${{ github.event.pull_request.head.sha || github.sha }}
32+
33+
- name: Report success
34+
uses: conda/actions/set-commit-status@v24.2.0
35+
if: |
36+
contains(github.event.pull_request.labels.*.name, 'Status: Pending Merge') &&
37+
steps.wait-on-workflow.outputs.conclusion == 'success'
38+
with:
39+
context: "Pre-commit checks"
40+
state: success
41+
description: All pre-commit checks passed

.github/workflows/pre-commit.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
name: Pre-commit check
1+
name: Pre-commit hooks
22

33
on:
44
pull_request:
5-
types: [opened, reopened, synchronize, labeled]
5+
types: [opened, reopened, synchronize, labeled, unlabeled]
66

77
jobs:
88
lint:
99
if: |
1010
contains(github.event.pull_request.labels.*.name, 'Status: Pending Merge')
11-
name: Checking if any fixes are needed
11+
name: Check if fixes are needed
1212
runs-on: ubuntu-latest
1313
steps:
1414
- name: Checkout latest commit

.github/workflows/publishlib.yml

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ env:
1111
# It's convenient to set variables for values used multiple times in the workflow
1212
SKETCHES_REPORTS_PATH: artifacts/libraries-report
1313
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
14-
PR_EVENT_PATH: artifacts/Event File/event.json
1514

1615
jobs:
1716
lib-test-results:
@@ -25,17 +24,33 @@ jobs:
2524
- name: Download and Extract Artifacts
2625
run: |
2726
mkdir -p artifacts && cd artifacts
27+
mkdir -p libraries-report
28+
mkdir -p workflows
2829
artifacts_url=${{ github.event.workflow_run.artifacts_url }}
2930
gh api "$artifacts_url" -q '.artifacts[] | [.name, .archive_download_url] | @tsv' | while read artifact
3031
do
3132
IFS=$'\t' read name url <<< "$artifact"
3233
gh api $url > "$name.zip"
33-
unzip -d "$name" "$name.zip"
34+
unzip -j "$name.zip" -d "temp_$name"
35+
if [[ "$name" == "pr_num" ]]; then
36+
mv "temp_$name"/* workflows
37+
else
38+
mv "temp_$name"/* libraries-report
39+
fi
40+
rm -r "temp_$name"
3441
done
42+
echo "Contents of parent directory:"
43+
ls -R ..
44+
45+
- name: Read the pr_num file
46+
id: pr_num_reader
47+
uses: juliangruber/read-file-action@v1
48+
with:
49+
path: ./artifacts/workflows/pr_num.txt
3550

3651
- name: Report results
37-
uses: P-R-O-C-H-Y/report-size-deltas@main
52+
uses: P-R-O-C-H-Y/report-size-deltas@libs
3853
with:
3954
sketches-reports-source: ${{ env.SKETCHES_REPORTS_PATH }}
4055
github-token: ${{ env.GITHUB_TOKEN }}
41-
pr-event-path: ${{ env.PR_EVENT_PATH }}
56+
pr-number: "${{ steps.pr_num_reader.outputs.content }}"

0 commit comments

Comments
 (0)