Giter VIP home page Giter VIP logo

ci-arduino's Introduction

Arduino CI Scripts

This repo contains various scripts and tools related to running continuous integration (CI) checks on Arduino Library Repos. The operations include:

  • checking formatting using clang-format,
  • generating documentation from source comments using Doxygen, and
  • building each example in the library for selected targets.

There is an associated guide available here: https://learn.adafruit.com/the-well-automated-arduino-library/

Adding GitHub Actions to Repo

To run these continuous integration checks on each push, pull-request or repository dispatch using GitHub actions:

  • Create a folder named .github/worflows in the root of the repo.
  • Copy example_actions.yml into the above directory and rename it githubci.yml.
  • Edit githubci.yml and change PRETTYNAME to the library repo name. Optionally, delete or comment out steps (using the # character), you don't want to include.
  • Here's an example: Adafruit_BME280_Library

Controlling Test Behavior

The build_platform.py script is used to test each .ino example in the repo for selected build platforms. The ALL_PLATFORMS dictionary contains a listing of all available platforms and selected platform groups. By default, main_platforms is used. To select a specific platform or group, replace main_platforms in githubci.yml with the group or platform name.

Additionally, UF2 files of the compiled sketches can be generated for supported platforms.

Fine tuning test selection

The script behavior can be controlled using special filenames:

  • .PLATFORM_ID.test.skip - Skip the specified platform. All others are tested.
  • .PLATFORM_ID.test.only - Test the specified platform. All others are skipped.
  • .PLATFORM_ID.generate - Generate UF2 of sketch for specified platform (if supported).

These are just empty files placed in an example folder. Replace PLATFORM_ID in the name with the key from ALL_PLATFORMS. metro_m0 from the following line in build_platform.py, for example:

"metro_m0" : ["adafruit:samd:adafruit_metro_m0", "0x68ed2b88", None],

You can use several .PLATFORM_ID.test.skip or .PLATFORM_ID.test.only to exclude or include multiple platforms. For example:

  • To skip testing on ESP8266, add a file named .esp8266.test.skip
  • To test only the Arduino UNO, add a file named .uno.test.only
  • To skip all and test nothing, add a file named .none.test.only
  • To generate UF2s for PyPortal, add a file named .pyportal.generate

Dependencies

Any library dependencies included in the library.properties are automatically installed before the tests are started. To install additional dependencies (e.g., those required for some examples but not the library itself) using arduino-cli, you could add additional steps to the githubci.yml file. For example:

- name: Set configuration
  run: arduino-cli config set library.enable_unsafe_install true 

- name: Install test dependencies
  run: arduino-cli lib install --git-url https://github.com/arduino-libraries/Servo --git-url https://github.com/arduino-libraries/Ethernet

Note: you'll only need to enable the enable_unsafe_install option if you want to identify libraries using urls. This isn't necessary when using the library name.

Formatting Check with Clang

The run-clang-format.py script is used to run clang-format and check file formatting. See the guide for details on installing clang-format to run formatting locally. Even a single extra white space can cause the CI to fail on formatting. You can typically just let clang do its thing and edit files in place using:

clang-format -i File_To_Format.cpp

Documentation with Doxygen

The doxy_gen_and_deploy.sh script uses Doxygen to generate and deploy documentation for the library. Any issues, like missing documentation, will cause the CI to fail. See the guide for details on installing and running Doxygen locally. The guide also has some tips on basic usage of Doxygen markup within your code.

ci-arduino's People

Contributors

benoitanastay avatar bkpepe avatar blitzcitydiy avatar brentru avatar caternuson avatar cewbdex avatar chatelao avatar computerscienceiscool avatar deanm1278 avatar dhalbert avatar eringerli avatar evaherrada avatar frazar avatar hathach avatar jepler avatar jxltom avatar kattni avatar ladyada avatar makermelissa avatar mattheuslee avatar nkaaf avatar paintyourdragon avatar per1234 avatar platisd avatar prototypicalpro avatar siddacious avatar tdicola avatar toddtreece avatar tyeth avatar zjwhitehead avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ci-arduino's Issues

Consider hooking custom post checks when deciding pass rules

  • Arduino board: any

  • Arduino IDE version (found in Arduino -> About Arduino menu): 1.8.10

  • List the steps to reproduce the problem below (if possible attach a sketch or
    copy the sketch code in too):

With an on going project approaching the limit of memory use on the board the build could pass, but at runtime the project could fail due to memory corruption via stack or heap growth.

But if the runtime memory use is roughly known, one could predict what is the upper limit of the accepted statically allocated RAM before the code fails on target.

As a consequence, it would be nice if it were possible to hook some project specific script to be passed the build output (log and artefacts) to make these extra checks and fail the build, if that script returns a non 0 return code.

Recently broken/outdated?

I have been using this repo for a long while.
It used to work rather well: build from 02-Dec-2022. However, if I now re-run that same build it gives me and error: re-run same build from 11-Jan-2023. I have not changed anything on my side in the meantime.

I see the following error-messages:

Collecting adafruit-nrfutil
  Downloading adafruit-nrfutil-0.5.3.post16.tar.gz (49 kB)
    ERROR: Command errored out with exit status 1:
     command: /usr/bin/python -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-tFGJYj/adafruit-nrfutil/setup.py'"'"'; __file__='"'"'/tmp/pip-install-tFGJYj/adafruit-nrfutil/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-mI_iWG
         cwd: /tmp/pip-install-tFGJYj/adafruit-nrfutil/
    Complete output (5 lines):
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-install-tFGJYj/adafruit-nrfutil/setup.py", line 90, in <module>
        with open(os.path.join(here, 'README.md'), encoding='utf-8') as f:
    TypeError: 'encoding' is an invalid keyword argument for this function
    ----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. pip 21.0 will drop support for Python 2.7 in January 2021. More details about Python 2 support in pip can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support pip 21.0 will remove support for this functionality.

Later I then get:

fork/exec {runtime.tools.python3.path}/python3: no such file or directory

I will investigate further later, but I would appreciate any help in the meantime.

doxy_gen_and_deploy.sh assumes it run on Travis

Although the script attempts to support both Travis and GitHub actions, in some parts it still assumes it runs on Travis. For instance, line 81:

git config user.email "[email protected]"

and line 168:

git commit -m "Deploy code docs to GitHub Pages Travis build: ${TRAVIS_BUILD_NUMBER}" -m "Commit: ${TRAVIS_COMMIT}"

This results in commits like this one:

commit 57834c85e08e3dd436743a59b72f2d888dafd2c5
Author: Doxygen CI <[email protected]>
Date:   Thu Apr 23 17:51:50 2020 +0000

    Deploy code docs to GitHub Pages Travis build:
    
    Commit:

Fault Detection of 'arduino-library' topic due to bash script error

The execution of my workflow was successful, but I saw the warning
"Warning: arduino-library is not found in this repo topic. Please add this tag in the About repo". I double checked my repo topics, but "arduino-library" is in there.

In the line above the warning, there is a bash error "ci/actions_install.sh: line 40: {: command not found".

I try to find the reason for this error and request a pull request after finding out the problem.

Workflow Source: https://github.com/nkaaf/Arduino-List/blob/638a66afd49261b5cf2b9fd690d9808c05a242c2/.github/workflows/githubci.yml
Workflow execution: https://github.com/nkaaf/Arduino-List/actions/runs/7781242146/job/21215312938

esp8266-2.5.0-beta1 has a number of breaking changes

The esp8266-2.5.0-beta1 BSP broke the ESP8266 test in a number of ways:

  • Menu items have changed names, so MAIN_PLATFORMS arduino cli settings in install.sh for esp8266 are now broken:
    • FlashSize -> eesz
    • CPUFrequency -> xtal
  • Adafruit_Test_Library seems to be unacceptable now (not sure why, if other builds are fine) (see below)
  • signing.py no longer executable (see below)
Invalid library found in /home/halbert/arduino_ide/libraries/Adafruit_Test_Library: no headers files (.h) found in /home/halbert/arduino_ide/libraries/Adafruit_Test_Library
Invalid library found in /home/halbert/arduino_ide/libraries/Adafruit_Test_Library: no headers files (.h) found in /home/halbert/arduino_ide/libraries/Adafruit_Test_Library
Verifying...
fork/exec /home/halbert/.arduino15/packages/esp8266/hardware/esp8266/2.5.0-beta1/tools/signing.py: permission denied

For your consideration: Enabling unit tests on Travis CI using a different CI script

Purpose

Why To enable Arduino library developers to accept contributions more easily, and increase the amount of GitHub collaboration
What A cross-platform framework for compilation-verification and unit-testing Arduino libraries
How By mocking out the Arduino hardware (and providing automation scripts that can run both locally and remotely), maintainers can enforce tests on code without requiring hardware present

Context: this repo doesn't provide for unit testing, and PlatformIO isn't Free Software. But install.sh inspired me to write my own alternative CI system called arduino_ci that accomplishes both, and it seems appropriate to submit my work for your consideration.

Live Demonstrations

Adafruit FONA library

This pull request against the FONA library shows arduino_ci as a drop-in replacement for travis-ci-arduino. It includes an example of mocking out a hardware device (in this case, a modem) to perform what would otherwise be a hardware-in-the-loop test.

In other words, the fake serial device allows us to see whether expected hardware responses produce the appropriate behavior in the library.

Adafruit WS2801 library

This pull request against the WS2801 library shows arduino_ci running in a parallel TravisCI job with travis-ci-arduino, to show that the run times are roughly equivalent.

Additionally, the unit test runner uses memory address sanitization to isolate memory access issues. This stack trace in an arduino_ci build job shows the source of a bug for which I've submitted the corresponding fix

Capability not present in travis-ci-arduino

  • Unit testing capabilities give Travis CI the ability to validate the logic as part of the pull request process.
  • Testing configuration is provided by a set of YAML files (all optional -- default behavior is identical to install.sh). This opens the possibility of parallelized testing by launching several different jobs with their own configuration.
  • Ability to specify custom boards for download and mocking. This is of particular interest to manufacturers of boards :)

Question: will this project be deprecated in favor of PlatformIO?

I'm trying to set up a template for Continuous Integration of Arduino library code (both compilation and unit tests), using Travis CI.

A Google search led me to travis-ci-arduino as one of the best examples of how to do the "does it compile" test on Travis. However, it looks like PlatformIO is what Travis recommends for this:
https://docs.travis-ci.com/user/integration/platformio/#Examples

Are there advantages to using this method instead of PlatformIO?

doxygen generation fails when the github repository is private

This is common during initial development for a library but the current script (doxy_gen_and_deploy.sh) assumes that the github repository is public, and only applies the GH_REPO_TOKEN when commiting the changes back to the branch missing it on the initial checkout which causes the following error:
fatal: could not read Username for 'https://github.com': No such device or address ##[error]Process completed with exit code 128.

CI is grabbing ESP32 pre-releases

So the issue is that ci-arduino which is used for continuous integration for my ESP32 libraries is failing because it is grabbing the latest alpha2 pre-release of ESP32 board. This in return causes the library CI to fail as there are bugs/changes in that release which won't let me compile my library.

How can I force it to use a specific board version?

Increase Warning Level from compilation

It would be nice to see all warnings in the compilation log. Something like "compiler.warning_level=all":

set the maximal compiler warning level

echo -n "SET BUILD PREFERENCES: "
DEPENDENCY_OUTPUT=$(arduino --pref "compiler.warning_level=all" --save-prefs 2>&1)
if [ $? -ne 0 ]; then echo -e "\xe2\x9c\x96"; else echo -e "\xe2\x9c\x93"; fi

Unable to install ESP8266* libraries

The script is supposed to install the espboard but when I try to use the related library it fails.
Do you have any idea of how I can do that?

I tried: arduino --install-library "ESP8266WebServer" without success.

Dox not building when using src folder

For libraries that put code in a src folder, ex:
https://github.com/adafruit/Adafruit_VL53L1X
the doxygen output is not generated if using default configurations for everything. There is output, but it is empty:
https://adafruit.github.io/Adafruit_VL53L1X/html/index.html

This happens because the default workflow calls doxygen without any additional command line arguments:
https://github.com/adafruit/Adafruit_VL53L1X/blob/6353b69c1de9ed9de0a2187745074d1cdee4071c/.github/workflows/githubci.yml#L33
so it ends up looking for source in the root repo folder.

Two possible fixes?

OPTION 1
Per repo fix of .github/workflows/githubci.yml to add src (or whatever) to specify folder. Ex:

      run: bash ci/doxy_gen_and_deploy.sh src

This works since the script has a check for this:

if [ ! -z $1 ]
then
# Print out doxygen warnings in red, use specified path (for when everything is in src)
( cat $DOXYFILE; echo "INPUT=${BUILD_DIR}/$1" ) | ${BUILD_DIR}/doxygen - 2>&1 | tee foo.txt > >(while read line; do echo -e "\e[01;31m$line\e[0m" >&2; done)
else
# Print out doxygen warnings in red, use default path
${BUILD_DIR}/doxygen $DOXYFILE 2>&1 | tee foo.txt > >(while read line; do echo -e "\e[01;31m$line\e[0m" >&2; done)
fi

OPTION 2
If no path specified (current default), then alter doxy_gen_and_deploy.sh script to automatically check for existence of src folder and, if found, set that as INPUT= location.

fatal error: WiFiUDP.h: No such file or directory

I constantly get fatal error: WiFiUDP.h: No such file or directory when I try to compile my sketch using this.

fatal error: WiFiUDP.h: No such file or directory
compilation terminated.
Error compiling.

Here is my .travis.yml, and here is the full log.

build_main_platforms and build_cplay_platforms commands not found

While pushing a PR to Travis. It fails with the following errors:
$ build_cplay_platforms
build_cplay_platforms: command not found
The command "build_cplay_platforms" exited with 127.
$ build_main_platforms
build_main_platforms: command not found
The command "build_main_platforms" exited with 127.

I noticed this on another PR that had failed for the same reason. Since this repo is the source of those commands, it seemed appropriate to file this here.

Not working with Arduino IDE version 2.x

It looks like the format for downloading is https://downloads.arduino.cc/arduino-$ARDUINO_IDE_VERSION-linux64.tar.xz, where it appears that since version 2.0.0 there is only https://downloads.arduino.cc/arduino-ide/$ARDUINO_IDE_VERSION_Linux_64bit.zip. I guess that needs an additional check.

running build-platform locally deleted a bunch of stuff

I was trying to test #127 locally and it deleted the whole git repo where I was working. Nothing was lost as I didn't have any un-pushed work, but, OUCH.

I'm guessing it was because one step was arduino-cli uninstall "Adafruit Floppy", the library I was working inside of at the time.

jepler@eric:~/src/Adafruit_Floppy$ python3 ci/build_platform.py  feather_m4_express_tinyusb
build dir: /home/jepler/src/Adafruit_Floppy

########################################
INSTALLING ARDUINO BOARDS
########################################
arduino-cli core update-index --additional-urls https://adafruit.github.io/arduino-board-index/package_adafruit_index.json,http://arduino.esp8266.com/stable/package_esp8266com_index.json,https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_dev_index.json,https://sandeepmistry.github.io/arduino-nRF5/package_nRF5_boards_index.json,https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json,http://drazzy.com/package_drazzy.com_index.json > /dev/null

Installing Adafruit BusIO
arduino-cli lib install "Adafruit BusIO" > /dev/null
Installing SdFat - Adafruit Fork
arduino-cli lib install "SdFat - Adafruit Fork" > /dev/null
arduino-cli lib uninstall "Adafruit Floppy"
Uninstalling [email protected]...


A new release of Arduino CLI is available: 0.21.0 → 0.21.1
https://arduino.github.io/arduino-cli/latest/installation/#latest-packages
Libraries installed:  ['/home/jepler/Arduino/libraries/Adafruit_ImageReader_Library', '/home/jepler/Arduino/libraries/Adafruit_SSD1306', '/home/jepler/Arduino/libraries/FlashStorage', '/home/jepler/Arduino/libraries/Adafruit_Unified_Sensor', '/home/jepler/Arduino/libraries/readme.txt', '/home/jepler/Arduino/libraries/Adafruit_seesawPeripheral', '/home/jepler/Arduino/libraries/SdFat_-_Adafruit_Fork', '/home/jepler/Arduino/libraries/Adafruit_WavePlayer_Library', '/home/jepler/Arduino/libraries/Adafruit_BusIO', '/home/jepler/Arduino/libraries/Adafruit_Arcada_Library', '/home/jepler/Arduino/libraries/Adafruit_GFX_Library', '/home/jepler/Arduino/libraries/Adafruit_NeoPixel', '/home/jepler/Arduino/libraries/Adafruit_Floppy', '/home/jepler/Arduino/libraries/arduino-CAN', '/home/jepler/Arduino/libraries/Adafruit_LED_Backpack_Library', '/home/jepler/Arduino/libraries/Adafruit_LIS3DH', '/home/jepler/Arduino/libraries/Servo', '/home/jepler/Arduino/libraries/CircularBuffer', '/home/jepler/Arduino/libraries/Adafruit_PixelDust', '/home/jepler/Arduino/libraries/Adafruit_SPIFlash', '/home/jepler/Arduino/libraries/Adafruit_Circuit_Playground', '/home/jepler/Arduino/libraries/Adafruit_ILI9341', '/home/jepler/Arduino/libraries/Adafruit_LIS3MDL', '/home/jepler/Arduino/libraries/Adafruit_Protomatter', '/home/jepler/Arduino/libraries/Adafruit_TouchScreen', '/home/jepler/Arduino/libraries/Adafruit_SleepyDog_Library', '/home/jepler/Arduino/libraries/Adafruit_Zero_DMA_Library', '/home/jepler/Arduino/libraries/Adafruit_STMPE610', '/home/jepler/Arduino/libraries/Adafruit_SSD1351_library', '/home/jepler/Arduino/libraries/Adafruit_ADT7410_Library', '/home/jepler/Arduino/libraries/Adafruit_OV7670', '/home/jepler/Arduino/libraries/SdFat', '/home/jepler/Arduino/libraries/Adafruit_MSA301', '/home/jepler/Arduino/libraries/TinyWireM', '/home/jepler/Arduino/libraries/Adafruit_seesaw_Library', '/home/jepler/Arduino/libraries/ArduinoJson', '/home/jepler/Arduino/libraries/Adafruit_SHARP_Memory_Display', '/home/jepler/Arduino/libraries/Adafruit_ST7735_and_ST7789_Library', '/home/jepler/Arduino/libraries/Adafruit_BMP280_Library', '/home/jepler/Arduino/libraries/Adafruit_FreeTouch_Library', '/home/jepler/Arduino/libraries/Adafruit_APDS9960_Library', '/home/jepler/Arduino/libraries/Adafruit_MLX90640', '/home/jepler/Arduino/libraries/Adafruit_GPS_Library', '/home/jepler/Arduino/libraries/Adafruit_ZeroTimer_Library', '/home/jepler/Arduino/libraries/Adafruit_InternalFlash', '/home/jepler/Arduino/libraries/Adafruit_TinyUSB_Library', '/home/jepler/Arduino/libraries/Adafruit_SHT31_Library', '/home/jepler/Arduino/libraries/NeoGPS', '/home/jepler/Arduino/libraries/Adafruit_EPD', '/home/jepler/Arduino/libraries/Adafruit_Zero_PDM_Library', '/home/jepler/Arduino/libraries/SD', '/home/jepler/Arduino/libraries/Adafruit_ZeroCAN', '/home/jepler/Arduino/libraries/Adafruit_HX8357_Library', '/home/jepler/Arduino/libraries/Adafruit_Arcada_GifDecoder', '/home/jepler/Arduino/libraries/Adafruit_Zero_FFT_Library', '/home/jepler/Arduino/libraries/Audio_-_Adafruit_Fork', '/home/jepler/Arduino/libraries/Arduino_MP3', '/home/jepler/Arduino/libraries/Adafruit_LSM6DS', '/home/jepler/Arduino/libraries/Adafruit_SSD1331_OLED_Driver_Library_for_Arduino', '/home/jepler/Arduino/libraries/MIDI_Library', '/home/jepler/Arduino/libraries/RTClib', '/home/jepler/Arduino/libraries/WaveHC']
################################################################################
SWITCHING TO adafruit:samd:adafruit_feather_m4:speed=120,usbstack=tinyusb
sh: 0: getcwd() failed: No such file or directory
Installing adafruit:samd ✓
sh: 0: getcwd() failed: No such file or directory
adafruit:samd        1.7.10    1.7.10 Adafruit SAMD (32-bits ARM Cortex-M0+ and Cortex-M4) Boards
################################################################################
Traceback (most recent call last):
  File "/home/jepler/src/Adafruit_Floppy/ci/build_platform.py", line 517, in <module>
  File "/home/jepler/src/Adafruit_Floppy/ci/build_platform.py", line 396, in test_examples_in_folder
FileNotFoundError: [Errno 2] No such file or directory: '/home/jepler/src/Adafruit_Floppy/examples'
jepler@eric:~/src/Adafruit_Floppy$ ls examples
ls: cannot access 'examples': No such file or directory
jepler@eric:~/src/Adafruit_Floppy$ ls -al
total 0

Travis CI today

Since earlier today our specific project, MarlinFirmware, has been experiencing a sudden "outage" with Travis CI as it tries to download and install u8glib. Have you also seen this, and do you know what might be causing it?

  Downloading library: U8glib Downloaded 1,153kb of 1,153kb.
  Verifying archive integrity...
- java.lang.Exception: CRC doesn't match. File is corrupted.
    at cc.arduino.contributions.DownloadableContributionsDownloader.download(DownloadableContributionsDownloader.java:77)
    at cc.arduino.contributions.libraries.LibraryInstaller.install(LibraryInstaller.java:97)
    at processing.app.Base.<init>(Base.java:414)
    at processing.app.Base.guardedMain(Base.java:222)
    at processing.app.Base.main(Base.java:135)
-  The command "arduino --install-library "U8glib"" failed and exited with 255 during .

https://travis-ci.org/MarlinFirmware/Marlin/builds/161188040

Allow Arduino Version as a parameter

To provide some regression testing, a compilation with a new and an old version should be possible to recognize fails due to dependency changes.

gh-pages gets pushed to from branches

@ladyada What I've noticed is that gh-pages will get pushed to from branches other than master. I don't think this is really desired, so I can try to add a check to see if the branch is master or main before pushing to gh-pages but I wanted to check with you before starting on it in case it wasn't something you felt like needs fixing or not something you wanted me to fix.

Include/exclude tested sources

I have private repository full of various .ino files, but only one folder (./src) is valid for testing. Or let's say I'd like to add ./test to have all the tests implemented there.
How do I exclude other files? Or how do I set build root?

Sorry for using GitHub for a FAQ.

Testing examples of my library for ESP8266 fails.

Since some time testing for ESP8266 fails for me with the following debug output:

----------------------------- DEBUG OUTPUT -----------------------------

Picked up JAVA_TOOL_OPTIONS: 

Set log4j store directory /home/travis/.arduino15

Loading configuration...

Initializing packages...

Preparing boards...

Verifying...

fork/exec /bin/xtensa-lx106-elf-g++: no such file or directory

------------------------------------------------------------------------

I didn't change anything in my .travis.yml.
But the error is always the same. Testing against ESP32 and nRF52 works fine.

Anybody has an idea?

Use hourly Arduino IDE and esp8266 from git

Is it possible to use hourly Arduino IDE and esp8266 from git with this? Reason I am asking is that building using this fails, while building locally on the latest versions of the aforementioned packages succeeds.

Ensuring the CI process is documented for Adafruit Learning System guide authors

Per @ladyada request tag:

The Arduino-CI repo changed significantly from when the user guide was done with some new yml files, etc. The original guide was requested by you to help Learn authors know about .platform.test.only files. Earlier this year things had changed enough that the guide was out of date and when Melissa was having Qualia PR issues I compared things and noticed the discrepancies which I updated.

Here is the current guide page, updated 10/3/23 to align with the right yml file for author reference (it is hoped). https://learn.adafruit.com/admin/guides/3445/editor/23085

I am hoping to get some a repo maintainer to ensure I had captured the pertinent data and to double check the instructions in the README.md were also up to date. This may help folks going forward in getting the right .test.only file in future guides.

Sample with local library includes (#include "sample.h") fail with "multiple definition of" warning and linker error

If a sample has a local include (#include "sample.h" with "sample.cpp") the build will fail like:
https://travis-ci.org/chatelao/MiniPirate/builds/73565839

The relevant error text:
/home/travis/arduino_ide/libraries/Adafruit_Test_Library/sample.h:xxx: multiple definition of `yyy(char)'

Workaround:
Remove the creation of the "ln -s .../libraries" from the script

=> No clue how to solve this permanently or if this is a problem at all for the Adafruit samples (if they contain only one ".ino" file and global "#include <sample.h>" include.

Github build will break soon, fails on Ubuntu 20.04

Currently the actions_install.sh script fails due to unmet llvm requirements in Ubuntu 20.04
image

The example_actions.yml as well as many other libraries specifies runs-on: ubuntu-latest

image

Github indicates the transition to 20.04 for ubuntu-latest is already happening which means more builds will start breaking soon.

Potential fix

changing in actions_install.sh to use libllvm8=1:8.0.1-9 -V seems to work but needs further testing. Also its not backwards compatible with 18.04 so further work will be required to update the script to handle both versions.
image

Bonus: For now pinning the example config to ubuntu-18.04 is probably worth it...

Strange behaviour when installing multiple libraries

When you have multiple dependencies in your project, you have to install them in seperate commands, otherwise it will not work

works:

  • arduino --install-library "Adafruit Unified Sensor"
  • arduino --install-library "Adafruit GFX Library"

doesn't work:

  • arduino --install-library "Adafruit Unified Sensor","Adafruit GFX Library"

It seems to be an issue with the script and not arduino itself, because usually a list of libraries is accepted.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.