From da7efc789e7ee3870c6745549e9a9b0dd1e5a3c4 Mon Sep 17 00:00:00 2001 From: Links2004 Date: Fri, 5 Jan 2024 14:57:05 +0100 Subject: [PATCH] update github actions to arduino-cli for build tests --- .github/workflows/main.yml | 54 +++++++++++++------------------------- src/SocketIOclient.h | 2 +- src/WebSockets.cpp | 2 +- travis/common.sh | 26 +++++++++++++++++- 4 files changed, 45 insertions(+), 39 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 279fe85..0724e14 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -37,13 +37,13 @@ jobs: echo -en "matrix=" >> $GITHUB_OUTPUT echo -en "[" >> $GITHUB_OUTPUT - get_sketches_json_matrix arduino $GITHUB_WORKSPACE/examples/esp8266_pico esp8266 1.8.19 esp8266com:esp8266:generic:xtal=80,vt=flash,exception=disabled,stacksmash=disabled,ssl=all,mmu=3232,non32xfer=fast,ResetMethod=nodemcu,CrystalFreq=26,FlashFreq=80,FlashMode=qio,eesz=4M2M,led=2,sdk=nonosdk_190703,ip=lm2f,dbg=Serial1,lvl=SSL,wipe=none,baud=115200 >> $GITHUB_OUTPUT + get_sketches_json_matrix arduino $GITHUB_WORKSPACE/examples/esp8266_pico esp8266 0.35.0 esp8266:esp8266:generic:xtal=80,vt=flash,exception=disabled,stacksmash=disabled,ssl=all,mmu=3232,non32xfer=fast,ResetMethod=nodemcu,CrystalFreq=26,FlashFreq=80,FlashMode=qio,eesz=4M2M,led=2,sdk=nonosdk_190703,ip=lm2f,dbg=Serial1,lvl=SSL,wipe=none,baud=115200 >> $GITHUB_OUTPUT echo -en "," >> $GITHUB_OUTPUT - get_sketches_json_matrix arduino $GITHUB_WORKSPACE/examples/esp8266_pico esp8266 1.8.19 esp8266com:esp8266:generic:xtal=80,vt=flash,exception=disabled,stacksmash=disabled,ssl=all,mmu=3232,non32xfer=fast,ResetMethod=nodemcu,CrystalFreq=26,FlashFreq=80,FlashMode=qio,eesz=4M2M,led=2,sdk=nonosdk_190703,ip=lm2f,dbg=Disabled,lvl=None____,wipe=none,baud=115200 >> $GITHUB_OUTPUT + get_sketches_json_matrix arduino $GITHUB_WORKSPACE/examples/esp8266_pico esp8266 0.35.0 esp8266:esp8266:generic:xtal=80,vt=flash,exception=disabled,stacksmash=disabled,ssl=all,mmu=3232,non32xfer=fast,ResetMethod=nodemcu,CrystalFreq=26,FlashFreq=80,FlashMode=qio,eesz=4M2M,led=2,sdk=nonosdk_190703,ip=lm2f,dbg=Disabled,lvl=None____,wipe=none,baud=115200 >> $GITHUB_OUTPUT echo -en "," >> $GITHUB_OUTPUT - get_sketches_json_matrix arduino $GITHUB_WORKSPACE/examples/esp32 esp32 1.8.19 espressif:esp32:esp32:FlashFreq=80 >> $GITHUB_OUTPUT + get_sketches_json_matrix arduino $GITHUB_WORKSPACE/examples/esp32 esp32 0.35.0 esp32:esp32:esp32:FlashFreq=80 >> $GITHUB_OUTPUT echo -en "]" >> $GITHUB_OUTPUT echo >> $GITHUB_OUTPUT @@ -55,9 +55,10 @@ jobs: strategy: fail-fast: false matrix: - IDE_VERSION: [1.8.19] + IDE_VERSION: [0.35.0] env: IDE_VERSION: ${{ matrix.IDE_VERSION }} + ARDUINO_DIRECTORIES_DATA: /home/runner/arduino_ide steps: - uses: actions/checkout@v2 @@ -74,14 +75,15 @@ jobs: path: | /home/runner/arduino_ide /home/runner/Arduino - key: ${{ runner.os }}-${{ steps.get-date.outputs.date }}-${{ matrix.IDE_VERSION }} + key: ${{ runner.os }}-${{ steps.get-date.outputs.date }}-${{ matrix.IDE_VERSION }}-cli - name: download IDE if: steps.cache_all.outputs.cache-hit != 'true' run: | - wget http://downloads.arduino.cc/arduino-$IDE_VERSION-linux64.tar.xz -q - tar xf arduino-$IDE_VERSION-linux64.tar.xz - mv arduino-$IDE_VERSION $HOME/arduino_ide + wget https://github.com/arduino/arduino-cli/releases/download/v$IDE_VERSION/arduino-cli$IDE_VERSION_Linux_64bit.tar.gz -q + tar xf arduino-cli_$IDE_VERSION_Linux_64bit.tar.gz + mkdir -p $ARDUINO_DIRECTORIES_DATA + mv arduino-cli $ARDUINO_DIRECTORIES_DATA/ - name: download ArduinoJson if: steps.cache_all.outputs.cache-hit != 'true' @@ -91,17 +93,12 @@ jobs: unzip 6.x.zip mv ArduinoJson-6.x $HOME/Arduino/libraries/ArduinoJson - - name: download esp8266 + - name: download cores if: steps.cache_all.outputs.cache-hit != 'true' run: | + export PATH="$ARDUINO_DIRECTORIES_DATA:$PATH" source $GITHUB_WORKSPACE/travis/common.sh - get_core esp8266 - - - name: download esp32 - if: steps.cache_all.outputs.cache-hit != 'true' - run: | - source $GITHUB_WORKSPACE/travis/common.sh - get_core esp32 + get_core_cli build: needs: [prepare_ide, prepare_example_json] @@ -115,6 +112,7 @@ jobs: BOARD: ${{ matrix.board }} IDE_VERSION: ${{ matrix.ideversion }} SKETCH: ${{ matrix.sketch }} + ARDUINO_DIRECTORIES_DATA: /home/runner/arduino_ide # Steps represent a sequence of tasks that will be executed as part of the job steps: @@ -136,7 +134,7 @@ jobs: path: | /home/runner/arduino_ide /home/runner/Arduino - key: ${{ runner.os }}-${{ steps.get-date.outputs.date }}-${{ matrix.ideversion }} + key: ${{ runner.os }}-${{ steps.get-date.outputs.date }}-${{ matrix.ideversion }}-cli - name: install python serial if: matrix.cpu == 'esp32' @@ -145,32 +143,16 @@ jobs: sudo pip install pyserial # sudo apt install python-is-python3 - - name: start DISPLAY - run: | - /sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_1.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :1 -ac -screen 0 1280x1024x16 - export DISPLAY=:1.0 - sleep 3 - - name: test IDE run: | - export PATH="$HOME/arduino_ide:$PATH" - which arduino + export PATH="$ARDUINO_DIRECTORIES_DATA:$PATH" + which arduino-cli - name: copy code run: | mkdir -p $HOME/Arduino/libraries/ cp -r $GITHUB_WORKSPACE $HOME/Arduino/libraries/arduinoWebSockets - - name: config IDE - run: | - set +x - export DISPLAY=:1.0 - export PATH="$HOME/arduino_ide:$PATH" - arduino --board $BOARD --save-prefs - arduino --pref update.check=false --pref build.verbose=false --pref cache.enable=true --pref compiler.cache_core=true --pref compiler.warning_level=default --save-prefs - arduino --get-pref sketchbook.path - arduino --get-pref - - name: build example timeout-minutes: 20 run: | @@ -179,7 +161,7 @@ jobs: export PATH="$HOME/arduino_ide:$PATH" source $GITHUB_WORKSPACE/travis/common.sh cd $GITHUB_WORKSPACE - build_sketch arduino $SKETCH + build_sketch_cli "$SKETCH" "$BOARD" done: needs: [prepare_ide, prepare_example_json, build, check_version_files] diff --git a/src/SocketIOclient.h b/src/SocketIOclient.h index dd78f81..d607401 100644 --- a/src/SocketIOclient.h +++ b/src/SocketIOclient.h @@ -61,7 +61,7 @@ class SocketIOclient : protected WebSocketsClient { #endif #endif bool isConnected(void); - + void onEvent(SocketIOclientEvent cbEvent); void disconnect(void); diff --git a/src/WebSockets.cpp b/src/WebSockets.cpp index 22352fc..694aec2 100644 --- a/src/WebSockets.cpp +++ b/src/WebSockets.cpp @@ -571,7 +571,7 @@ String WebSockets::acceptKey(String & clientKey) { */ String WebSockets::base64_encode(uint8_t * data, size_t length) { size_t size = ((length * 1.6f) + 1); - size = std::max(size, (size_t) 5); //minimum buffer size + size = std::max(size, (size_t)5); // minimum buffer size char * buffer = (char *)malloc(size); if(buffer) { base64_encodestate _state; diff --git a/travis/common.sh b/travis/common.sh index 2754bdc..3b2d345 100644 --- a/travis/common.sh +++ b/travis/common.sh @@ -29,6 +29,22 @@ function build_sketches() done } +function build_sketch_cli() +{ + local sketch=$1 + local board=$2 + arduino-cli --log --log-level info compile -b "$board" "$sketch" + if [ $result -ne 0 ]; then + echo "Build failed ($sketch) build verbose..." + arduino-cli --log --log-level debug compile -b "$board" "$sketch" + result=$? + fi + if [ $result -ne 0 ]; then + echo "Build failed ($1) $sketch" + return $result + fi +} + function build_sketch() { local arduino=$1 @@ -88,11 +104,19 @@ function get_sketches_json_matrix() done } +function get_core_cli() { + arduino-cli core update-index --additional-urls https://arduino.esp8266.com/stable/package_esp8266com_index.json,https://espressif.github.io/arduino-esp32/package_esp32_index.json,https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json + arduino-cli core install esp8266:esp8266 + arduino-cli core install esp32:esp32 + arduino-cli core install arduino:mbed_rp2040 +} + function get_core() { echo Setup core for $1 - cd $HOME/arduino_ide/hardware + mkdir -p $HOME/arduino_ide/packages/hardware + cd $HOME/arduino_ide/packages/hardware if [ "$1" = "esp8266" ] ; then mkdir esp8266com