|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- #!/bin/bash
-
- echo "Installing Python Wheel ..."
- pip install wheel > /dev/null 2>&1
-
- echo "Installing PlatformIO ..."
- pip install -U platformio > /dev/null 2>&1
-
- echo "PlatformIO has been installed"
- echo ""
-
-
- function build_pio_sketch(){ # build_pio_sketch <board> <path-to-ino>
- if [ "$#" -lt 2 ]; then
- echo "ERROR: Illegal number of parameters"
- echo "USAGE: build_pio_sketch <board> <path-to-ino>"
- return 1
- fi
-
- local board="$1"
- local sketch="$2"
- local sketch_dir=$(dirname "$sketch")
- echo ""
- echo "Compiling '"$(basename "$sketch")"' ..."
- python -m platformio ci -l '.' --board "$board" "$sketch_dir" --project-option="board_build.partitions = huge_app.csv"
- }
-
- function count_sketches() # count_sketches <examples-path>
- {
- local examples="$1"
- rm -rf sketches.txt
- if [ ! -d "$examples" ]; then
- touch sketches.txt
- return 0
- fi
- local sketches=$(find $examples -name *.ino)
- local sketchnum=0
- for sketch in $sketches; do
- local sketchdir=$(dirname $sketch)
- local sketchdirname=$(basename $sketchdir)
- local sketchname=$(basename $sketch)
- if [[ "${sketchdirname}.ino" != "$sketchname" ]]; then
- continue
- fi;
- if [[ -f "$sketchdir/.test.skip" ]]; then
- continue
- fi
- echo $sketch >> sketches.txt
- sketchnum=$(($sketchnum + 1))
- done
- return $sketchnum
- }
-
- function build_pio_sketches() # build_pio_sketches <board> <examples-path> <chunk> <total-chunks>
- {
- if [ "$#" -lt 2 ]; then
- echo "ERROR: Illegal number of parameters"
- echo "USAGE: build_pio_sketches <board> <examples-path> [<chunk> <total-chunks>]"
- return 1
- fi
-
- local board=$1
- local examples=$2
- local chunk_idex=$3
- local chunks_num=$4
-
- if [ "$#" -lt 4 ]; then
- chunk_idex="0"
- chunks_num="1"
- fi
-
- if [ "$chunks_num" -le 0 ]; then
- echo "ERROR: Chunks count must be positive number"
- return 1
- fi
- if [ "$chunk_idex" -ge "$chunks_num" ]; then
- echo "ERROR: Chunk index must be less than chunks count"
- return 1
- fi
-
- set +e
- count_sketches "$examples"
- local sketchcount=$?
- set -e
- local sketches=$(cat sketches.txt)
- rm -rf sketches.txt
-
- local chunk_size=$(( $sketchcount / $chunks_num ))
- local all_chunks=$(( $chunks_num * $chunk_size ))
- if [ "$all_chunks" -lt "$sketchcount" ]; then
- chunk_size=$(( $chunk_size + 1 ))
- fi
-
- local start_index=$(( $chunk_idex * $chunk_size ))
- if [ "$sketchcount" -le "$start_index" ]; then
- echo "Skipping job"
- return 0
- fi
-
- local end_index=$(( $(( $chunk_idex + 1 )) * $chunk_size ))
- if [ "$end_index" -gt "$sketchcount" ]; then
- end_index=$sketchcount
- fi
-
- local start_num=$(( $start_index + 1 ))
- echo "Found $sketchcount Sketches";
- echo "Chunk Count : $chunks_num"
- echo "Chunk Size : $chunk_size"
- echo "Start Sketch: $start_num"
- echo "End Sketch : $end_index"
-
- local sketchnum=0
- for sketch in $sketches; do
- local sketchdir=$(dirname $sketch)
- local sketchdirname=$(basename $sketchdir)
- local sketchname=$(basename $sketch)
- if [ "${sketchdirname}.ino" != "$sketchname" ] \
- || [ -f "$sketchdir/.test.skip" ]; then
- continue
- fi
- sketchnum=$(($sketchnum + 1))
- if [ "$sketchnum" -le "$start_index" ] \
- || [ "$sketchnum" -gt "$end_index" ]; then
- continue
- fi
- build_pio_sketch "$board" "$sketch"
- local result=$?
- if [ $result -ne 0 ]; then
- return $result
- fi
- done
- return 0
- }
|