platformio-core icon indicating copy to clipboard operation
platformio-core copied to clipboard

FYI - Build speed optimization - ccache massively speeds up build time

Open zackees opened this issue 1 year ago • 65 comments

Hi there, I'm making an emscripten docker file for platformio for a web compile of FastLED.

I've been grinding on build speed for the last week. I want to report that one of the biggest wins was slapping on ccache in front of the compiler.

As many have mentioned before, PlatformIO has a tendency to rebuild everything whenever order of deps/defines changes, which makes sense. ccache is a great way to mitigate that effect.

Today I discovered auto clean and disabling it. This makes it even faster. However I'm not sure what the failure condition is going to be with disabling auto-clean.

This compiler project is kind of a special case. Users pretty much just compile against FastLED. So my use case is how much can I pre-warm the ccache in release/debug/quick modes, stash that as a docker image layer. Then when a file is sent it just compiles then link against fastled. Right now I'm still dealing with linking against a bunch of object files. I've tried to combine this into a giant lib but no luck so far.

zackees avatar Nov 12 '24 05:11 zackees

By the way, a super fast cloud compiler for platformio would be amazing. There is so much caching that can be done between all these different projects. There is also the benefit that the user doesn't have to install a giant framework to get something to compile.

In my case, I have a tool called fastled-wasm that just zips up a sketch (which is tiny) and the backed compiles it all in 4 seconds then sends it back. My 4 second compile is on a super weak cloud server at $7 a month.

Platformio, if it did this, could just install the necessary tools to upload the hex/bin to the actual device, and not do the 1.6GB download for RP2350 or the ESP32S3 for the framework dependencies.

Anyway, probably outside the scope of what PlatformIO wants to do. So I just wanted to share the result of the benefits that I'm seeing.

zackees avatar Nov 12 '24 05:11 zackees

Platformio has a build cache but for small files, I'm not convinced that it's any faster than just recompiling the objects anyway - which it does completely too much.

I'm intrigued by "slapping on ccache". Did you modify scons directly to do this? I once tried the trick of making a front-end wrapper for g++ and friends that called ccache with argv[] but pio build outsmarts that by not running, e.g. xtensa-esp32-elf-g++ from the $PATH (as it has to be clever about calling xtensa-esp32- or xtensa-esp32s3- or riscv-) and instead reaches directly into /.platformio/packages/toolchain- and calls them from there. I wasn't thrilled about replacing those tools with front-ends to ccache.

Since this thing wants to check dependencies in Python, it's often slower than just building the stupid code.

Have you successfully built a maintainable configuration that calls distcc and/or ccache?

As you learned when building nightdriverled, platformio fetches and builds 39 nearly identical copies of most object when building, so those hour-long builds (which almost nobody but us maintainers do) are worth some pain to help.

robertlipe avatar Nov 30 '24 22:11 robertlipe

So, and how is bad https://docs.platformio.org/en/latest/projectconf/sections/platformio/options/directory/build_cache_dir.html ?

ivankravets avatar Dec 04 '24 11:12 ivankravets

@robertlipe I tried ccache with Platformio a while ago. There is a speed gain even when Platformios cache function is active. Since now and than unexplainable strange compiler and/or linker error occurred i trashed this approach to integrate in my fork. You can try (the not anymore maintained) branch https://github.com/Jason2866/platform-espressif32/tree/ccache

The commit where ccache is enabled https://github.com/Jason2866/platform-espressif32/commit/8cdf1e31438c927229f95a1f58962da79ee76276

Jason2866 avatar Dec 04 '24 13:12 Jason2866

Platformio has a build cache but for small files, I'm not convinced that it's any faster than just recompiling the objects anyway - which it does completely too much.

I'm intrigued by "slapping on ccache". Did you modify scons directly to do this? I once tried the trick of making a front-end wrapper for g++ and friends that called ccache with argv[] but pio build outsmarts that by not running, e.g. xtensa-esp32-elf-g++ from the $PATH (as it has to be clever about calling xtensa-esp32- or xtensa-esp32s3- or riscv-) and instead reaches directly into /.platformio/packages/toolchain- and calls them from there. I wasn't thrilled about replacing those tools with front-ends to ccache.

Since this thing wants to check dependencies in Python, it's often slower than just building the stupid code.

Have you successfully built a maintainable configuration that calls distcc and/or ccache?

As you learned when building nightdriverled, platformio fetches and builds 39 nearly identical copies of most object when building, so those hour-long builds (which almost nobody but us maintainers do) are worth some pain to help.

What I mean by slap it on I mean I do a swap of environmental variables at "CC", "CXX", and "LINK" with scons so that instead of the "compiler" it's "ccache compiler". I AM doing this for the emscripten compiler instead of something like avr-gcc, but I think it works the same.

This is for a web compiler so it's MUCH more sensitive on CPU speed than a home computer. This web compiler was getting 8 seconds for a simple re-compile of the 8 or so object files for FastLED, and this dropped to less than a second for all 8 as I'm assuming it was hitting the ccache.

@ivankravets I am overriding the build directory, but what I'm doing is deploying client code into a specific directory and trying to use the previous compilation of shared code again. Something about scons is triggering a rebuild. I turned off the auto-clean feature and this massively sped it up and solved the build time problem, but then I started getting weird errors with the linker so I think I would have to do an in-depth manual clean step to be able to use this feature.

I haven't determined whether putting ccache in front of avr-gcc would work, but I strongly suspect it will because ccache is essentially just a kv database mapping pre-processed C/C++ code to object blobs.

The use case this project is pretty optimal, since the code I'm compiling is a user sketch vs FastLED. The ccache is great here because it solves about 90% of the problem. Scons is still over-calculating what needs to be compiled but ccache makes this a non issue. The fast path for a cached file is 30ms vs 1000ms without ccache per object file. FastLED does have some nasty header issues and tends to pull the whole world for each translation unit. So our library is very sensitive to re-compilations and that's not going to change any time soon.

To see how I did it, see our custom build flags file for platformio you can see it here:

https://github.com/FastLED/FastLED/blob/master/src/platforms/wasm/compiler/wasm_compiler_flags.py

Keep in mind we are doing an emscripten build for the upcoming web compile feature for FastLED. It turns out that platformio is extremely compatible in this with the only downside being that platformIO seems to have internal locks that prevent concurrent builds. I've mitigated this so far by using GCC syntax checking to fast fail invalid sketches so only valid C++ makes it to the critical section. And later, I may rip out the platformio build system altogether and just go with a CMake build system instead to unlock concurrent builds

Whats also surprising is how easy it is to use the emscripten compiler. All you have to do is swap out CC/CXX/LINK in the env variables and that's pretty much it. Obviously a lot of code that's platform specific especially with ASM won't compile, but all of the logic code pretty much does as clang is nearly identical to the familiar gcc toolchain behavior.

zackees avatar Dec 05 '24 01:12 zackees

So, and how is bad https://docs.platformio.org/en/latest/projectconf/sections/platformio/options/directory/build_cache_dir.html ?

This does not help with esp32 idf-sdk, BUT(!) this ini modifications caches everything:

[platformio]
build_cache_dir = .pio/cache

[env:main]
build_flags =
   ${env.build_flags}
   -D IDF_CCACHE_ENABLE=1
#board_build.cmake_extra_args = -DCCACHE_ENABLE=ON

Build time 4m30s => 30s. The difference is huge, 9x.

Also tried commented out -DCCACHE_ENABLE=ON instead of IDF_CCACHE_ENABLE. It helped partially, but not too much (1.5x-2x). Without build_cache_dir, ccache does not work.

No idea what happens inside, and whether it will be correct for any situation. Currently, the provided config helps with two cases:

  • platformio.ini changed
  • sdk config changed

Both cause a complete rebuild, but all files are taken from cache.

Note: env "Clean" does not touch the cache. Not sure is it good or bad.

Working example reference: https://github.com/puzrin/reflow_micro/blob/master/firmware/platformio.ini

@ivankravets, what do you think? Can this be used safely? Maybe this can be added to defaults or recommended in the docs?

puzrin avatar Jun 29 '25 12:06 puzrin

thanks for this write up. I'm going to try it

zackees avatar Jun 30 '25 04:06 zackees

Can this be used safely?

@valeros , is the configuration safe provided above for ESP-IDF?

ivankravets avatar Jun 30 '25 07:06 ivankravets

Hi @puzrin, why put the PlatformIO cache inside the .pio folder? It won't work because the cache gets deleted along with the build files when you clean the project or change configuration files, so everything has to be rebuilt from scratch.

valeros avatar Jun 30 '25 12:06 valeros

@valeros, I had no time to investigate deeply - need to keep focus on my own project. The posted combination was discovered by accident with ChatGPT/Claude :). I published it as a constructive and simple starting point, available "right now" without asking devs for "new features". Because the esp-idf rebuild time is a real pain. If you have ideas on how to improve, just post your variant. If you are busy, we can keep that info for future records.

puzrin avatar Jun 30 '25 12:06 puzrin

@puzrin you can use the PlatformIO cache the same way as ccache, just place the cache in a persistent folder (for example near the .pio folder).

valeros avatar Jun 30 '25 12:06 valeros

@puzrin you can use the PlatformIO cache the same way as ccache, just place the cache in a persistent folder (for example near the .pio folder).

I don't understand your point. What problem do you try to solve? The posted config works. My point is "probably, it can be improved, but I don't know how". My personal opinion, I don't understand why ccache in IDF requires pio's build_cache_dir - those cache layers seems independant.

puzrin avatar Jun 30 '25 13:06 puzrin

I mean there is no need to use an additional caching mechanism (IDF_CCACHE_ENABLE, CCACHE_ENABLE=ON, etc.) if you are already using the PlatformIO cache, it works the same way:

[platformio]
build_cache_dir = .cache

[env:main]
build_flags =
   ${env.build_flags}

; Disabled
;   -D IDF_CCACHE_ENABLE=1
; board_build.cmake_extra_args = -DCCACHE_ENABLE=ON

Then run your project two times, the first is the clean build from scratch, clean the project, then run again.

valeros avatar Jun 30 '25 13:06 valeros

You are right. My mistake was placing the cache in the .pio folder. With your snippet, the secondary rebuild is approximately as fast as mine.

I think. It's worth clarifying the docs https://docs.platformio.org/en/latest/projectconf/sections/platformio/options/directory/build_cache_dir.html.

  • Add a concrete value .cache to the example, instead of an empty one.
  • Add a note, the cache should be outside of the .pio folder
  • (?) Promote using this option, especially for esp-idf.

In my opinion, the issue can be considered resolved (although I'm not an author).

/cc @zackees

puzrin avatar Jun 30 '25 14:06 puzrin

I'm running it right now. The first pass is without ccache and just using .pio_cache

zackees avatar Jun 30 '25 21:06 zackees

Haven't achieved ccache yet on all my builders. I've been stuck moving to the pi batch builder.

The build logs from FastLED paint a clear picture on why the CCACHE speedup works: Platformio wants to rebuild source files.

profile_compile_uno_legacy.md

Build link: https://github.com/FastLED/FastLED/actions/runs/15987776560/job/45095359830

zackees avatar Jul 01 '25 20:07 zackees

The following pattern is repeated throughout the build:

Bunch of platform/library cpp's get re-compiled.

Sometimes the previous build is used and you get only the source file rebuild. Sometimes the rebuild is the whole thing.

The rebuild always follows the LDF saying something so I think the issue is the LDF. But I could be wrong.

******************************
* Running command in cwd: /home/runner/work/FastLED/FastLED
*     pio ci --board uno --lib=src --keep-build-dir --build-dir=.build/uno examples/FxDemoReel100/*ino
******************************
 0.20 Resolving uno dependencies...
 0.21 Already up-to-date.
 0.21 Project has been successfully updated!
 0.22 Processing uno (platform: atmelavr; board: uno; framework: arduino)
 0.22 --------------------------------------------------------------------------------
 0.46 Verbose mode can be enabled via `-v, --verbose` option
 0.47 CONFIGURATION: https://docs.platformio.org/page/boards/atmelavr/uno.html
 0.47 PLATFORM: Atmel AVR (5.1.0) > Arduino Uno
 0.47 HARDWARE: ATMEGA328P 16MHz, 2KB RAM, 31.50KB Flash
 0.47 DEBUG: Current (avr-stub) External (avr-stub, simavr)
 0.47 PACKAGES:
 0.47  - framework-arduino-avr @ 5.2.0
 0.47  - toolchain-atmelavr @ 1.70300.191015 (7.3.0)
 0.47 Converting FxDemoReel100.ino
 0.49 LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
 0.49 LDF Modes: Finder ~ chain, Compatibility ~ soft
 0.51 Found 6 compatible libraries
 0.51 Scanning dependencies...
 0.76 Dependency Graph
 0.76 |-- src
 0.79 Building in release mode
 0.85 Compiling .pio/build/uno/src/FxDemoReel100.ino.cpp.o
 0.86 Compiling .pio/build/uno/lib51c/SoftwareSerial/SoftwareSerial.cpp.o
 0.86 Compiling .pio/build/uno/lib716/SPI/SPI.cpp.o
 0.90 Compiling .pio/build/uno/libe7c/src/FastLED.cpp.o
 0.91 Archiving .pio/build/uno/lib716/libSPI.a
 0.92 Indexing .pio/build/uno/lib716/libSPI.a
 0.92 Compiling .pio/build/uno/libe7c/src/bitswap.cpp.o
 0.93 Compiling .pio/build/uno/libe7c/src/cled_controller.cpp.o
 0.93 Archiving .pio/build/uno/lib51c/libSoftwareSerial.a
 0.93 Indexing .pio/build/uno/lib51c/libSoftwareSerial.a
 0.94 Compiling .pio/build/uno/libe7c/src/colorpalettes.cpp.o
 0.95 Compiling .pio/build/uno/libe7c/src/crgb.cpp.o
 1.01 Compiling .pio/build/uno/libe7c/src/fastled_compile.hpp.cpp.o
 1.02 Compiling .pio/build/uno/libe7c/src/fl/allocator.cpp.o
 1.02 Compiling .pio/build/uno/libe7c/src/fl/audio.cpp.o
 1.04 Compiling .pio/build/uno/libe7c/src/fl/audio_reactive.cpp.o
 1.04 Compiling .pio/build/uno/libe7c/src/fl/blur.cpp.o
 1.06 Compiling .pio/build/uno/libe7c/src/fl/bytestreammemory.cpp.o
 1.07 Compiling .pio/build/uno/libe7c/src/fl/colorutils.cpp.o
 1.08 Compiling .pio/build/uno/libe7c/src/fl/corkscrew.cpp.o
 1.09 Compiling .pio/build/uno/libe7c/src/fl/crgb_hsv16.cpp.o
 1.09 Compiling .pio/build/uno/libe7c/src/fl/downscale.cpp.o
 1.11 Compiling .pio/build/uno/libe7c/src/fl/ease.cpp.o
 1.12 Compiling .pio/build/uno/libe7c/src/fl/engine_events.cpp.o
 1.13 Compiling .pio/build/uno/libe7c/src/fl/fft.cpp.o
 1.14 Compiling .pio/build/uno/libe7c/src/fl/fft_impl.cpp.o
 1.15 Compiling .pio/build/uno/libe7c/src/fl/file_system.cpp.o
 1.16 Compiling .pio/build/uno/libe7c/src/fl/fill.cpp.o
 1.17 Compiling .pio/build/uno/libe7c/src/fl/gamma.cpp.o
 1.18 Compiling .pio/build/uno/libe7c/src/fl/gradient.cpp.o
 1.19 Compiling .pio/build/uno/libe7c/src/fl/hsv16.cpp.o
 1.20 Compiling .pio/build/uno/libe7c/src/fl/io.cpp.o
 1.21 Compiling .pio/build/uno/libe7c/src/fl/istream.cpp.o
 1.22 Compiling .pio/build/uno/libe7c/src/fl/json.cpp.o
 1.23 Compiling .pio/build/uno/libe7c/src/fl/json_console.cpp.o
 1.24 Compiling .pio/build/uno/libe7c/src/fl/leds.cpp.o
 1.25 Compiling .pio/build/uno/libe7c/src/fl/line_simplification.cpp.o
 1.25 Compiling .pio/build/uno/libe7c/src/fl/noise_woryley.cpp.o
 1.27 Compiling .pio/build/uno/libe7c/src/fl/ostream.cpp.o
 1.27 Compiling .pio/build/uno/libe7c/src/fl/ptr.cpp.o
 1.29 Compiling .pio/build/uno/libe7c/src/fl/random.cpp.o
 1.29 Compiling .pio/build/uno/libe7c/src/fl/raster_sparse.cpp.o
 1.31 Compiling .pio/build/uno/libe7c/src/fl/rectangular_draw_buffer.cpp.o
 1.31 Compiling .pio/build/uno/libe7c/src/fl/screenmap.cpp.o
 1.33 Compiling .pio/build/uno/libe7c/src/fl/sin32.cpp.o
 1.33 Compiling .pio/build/uno/libe7c/src/fl/splat.cpp.o
 1.35 Compiling .pio/build/uno/libe7c/src/fl/str.cpp.o
 1.35 Compiling .pio/build/uno/libe7c/src/fl/str_ui.cpp.o
 1.36 Compiling .pio/build/uno/libe7c/src/fl/strstream.cpp.o
 1.37 Compiling .pio/build/uno/libe7c/src/fl/stub_main.cpp.o
 1.38 Compiling .pio/build/uno/libe7c/src/fl/tile2x2.cpp.o
 1.39 Compiling .pio/build/uno/libe7c/src/fl/time_alpha.cpp.o
 1.40 Compiling .pio/build/uno/libe7c/src/fl/transform.cpp.o
 1.41 Compiling .pio/build/uno/libe7c/src/fl/type_traits.cpp.o
 1.42 Compiling .pio/build/uno/libe7c/src/fl/ui.cpp.o
 1.43 Compiling .pio/build/uno/libe7c/src/fl/upscale.cpp.o
 1.44 Compiling .pio/build/uno/libe7c/src/fl/wave_simulation.cpp.o
 1.45 Compiling .pio/build/uno/libe7c/src/fl/wave_simulation_real.cpp.o
 1.46 Compiling .pio/build/uno/libe7c/src/fl/xmap.cpp.o
 1.47 Compiling .pio/build/uno/libe7c/src/fl/xymap.cpp.o
 1.48 Compiling .pio/build/uno/libe7c/src/fl/xypath.cpp.o
 1.49 Compiling .pio/build/uno/libe7c/src/fl/xypath_impls.cpp.o
 1.50 Compiling .pio/build/uno/libe7c/src/fl/xypath_renderer.cpp.o
 1.51 Compiling .pio/build/uno/libe7c/src/fx/2d/blend.cpp.o
 1.53 Compiling .pio/build/uno/libe7c/src/fx/2d/noisepalette.cpp.o
 1.54 Compiling .pio/build/uno/libe7c/src/fx/2d/scale_up.cpp.o
 1.55 Compiling .pio/build/uno/libe7c/src/fx/2d/wave.cpp.o
 1.56 Compiling .pio/build/uno/libe7c/src/fx/detail/fx_layer.cpp.o
 1.57 Compiling .pio/build/uno/libe7c/src/fx/frame.cpp.o
 1.58 Compiling .pio/build/uno/libe7c/src/fx/fx_engine.cpp.o
 1.59 Compiling .pio/build/uno/libe7c/src/fx/time.cpp.o
 1.60 Compiling .pio/build/uno/libe7c/src/fx/video.cpp.o
 1.61 Compiling .pio/build/uno/libe7c/src/fx/video/frame_interpolator.cpp.o
 1.61 Compiling .pio/build/uno/libe7c/src/fx/video/frame_tracker.cpp.o
 1.62 Compiling .pio/build/uno/libe7c/src/fx/video/pixel_stream.cpp.o
 1.62 Compiling .pio/build/uno/libe7c/src/fx/video/video_impl.cpp.o
 1.63 Compiling .pio/build/uno/libe7c/src/hsv2rgb.cpp.o
 1.64 Compiling .pio/build/uno/libe7c/src/lib8tion.cpp.o
 1.65 Compiling .pio/build/uno/libe7c/src/noise.cpp.o
 1.66 Compiling .pio/build/uno/libe7c/src/platforms.cpp.o
 1.67 Compiling .pio/build/uno/libe7c/src/platforms/arm/k20/clockless_objectfled.cpp.o
 1.67 Compiling .pio/build/uno/libe7c/src/platforms/avr/avr_millis_timer_source.cpp.o
 1.68 Compiling .pio/build/uno/libe7c/src/platforms/compile_test.cpp.o
 1.69 Compiling .pio/build/uno/libe7c/src/platforms/esp/32/clockless_i2s_esp32s3.cpp.o
 1.70 Compiling .pio/build/uno/libe7c/src/platforms/esp/32/i2s/i2s_esp32dev.cpp.o
 1.70 Compiling .pio/build/uno/libe7c/src/platforms/esp/32/rmt_4/idf4_rmt.cpp.o
 1.71 Compiling .pio/build/uno/libe7c/src/platforms/esp/32/rmt_4/idf4_rmt_impl.cpp.o
 1.72 Compiling .pio/build/uno/libe7c/src/platforms/esp/32/rmt_5/idf5_rmt.cpp.o
 1.73 Compiling .pio/build/uno/libe7c/src/platforms/esp/32/rmt_5/strip_rmt.cpp.o
 1.74 Compiling .pio/build/uno/libe7c/src/platforms/esp/32/spi_ws2812/strip_spi.cpp.o
 1.74 Compiling .pio/build/uno/libe7c/src/platforms/shared/ui/json/audio.cpp.o
 1.75 Compiling .pio/build/uno/libe7c/src/platforms/shared/ui/json/button.cpp.o
 1.76 Compiling .pio/build/uno/libe7c/src/platforms/shared/ui/json/checkbox.cpp.o
 1.76 Compiling .pio/build/uno/libe7c/src/platforms/shared/ui/json/description.cpp.o
 1.77 Compiling .pio/build/uno/libe7c/src/platforms/shared/ui/json/dropdown.cpp.o
 1.78 Compiling .pio/build/uno/libe7c/src/platforms/shared/ui/json/help.cpp.o
 1.78 Compiling .pio/build/uno/libe7c/src/platforms/shared/ui/json/number_field.cpp.o
 1.79 Compiling .pio/build/uno/libe7c/src/platforms/shared/ui/json/slider.cpp.o
 1.80 Compiling .pio/build/uno/libe7c/src/platforms/shared/ui/json/title.cpp.o
 1.80 Compiling .pio/build/uno/libe7c/src/platforms/shared/ui/json/ui.cpp.o
 1.81 Compiling .pio/build/uno/libe7c/src/platforms/shared/ui/json/ui_internal.cpp.o
 1.82 Compiling .pio/build/uno/libe7c/src/platforms/shared/ui/json/ui_manager.cpp.o
 1.83 Compiling .pio/build/uno/libe7c/src/platforms/stub/led_sysdefs_stub.cpp.o
 1.83 Compiling .pio/build/uno/libe7c/src/platforms/wasm/active_strip_data.cpp.o
 1.84 Compiling .pio/build/uno/libe7c/src/platforms/wasm/compiler/Arduino.cpp.o
 1.85 Compiling .pio/build/uno/libe7c/src/platforms/wasm/engine_listener.cpp.o
 1.85 Compiling .pio/build/uno/libe7c/src/platforms/wasm/fastspi_wasm.cpp.o
 1.86 Compiling .pio/build/uno/libe7c/src/platforms/wasm/fs_wasm.cpp.o
 1.87 Compiling .pio/build/uno/libe7c/src/platforms/wasm/js.cpp.o
 1.88 Compiling .pio/build/uno/libe7c/src/platforms/wasm/js_bindings.cpp.o
 1.89 Compiling .pio/build/uno/libe7c/src/platforms/wasm/timer.cpp.o
 1.89 Compiling .pio/build/uno/libe7c/src/platforms/wasm/ui.cpp.o
 1.90 Compiling .pio/build/uno/libe7c/src/power_mgt.cpp.o
 1.91 Compiling .pio/build/uno/libe7c/src/rgbw.cpp.o
 1.92 Compiling .pio/build/uno/libe7c/src/sensors/button.cpp.o
 1.92 Compiling .pio/build/uno/libe7c/src/sensors/digital_pin.cpp.o
 1.93 Compiling .pio/build/uno/libe7c/src/sensors/pir.cpp.o
 1.94 Compiling .pio/build/uno/libe7c/src/simplex.cpp.o
 1.95 Compiling .pio/build/uno/libe7c/src/third_party/cq_kernel/cq_kernel.cpp.o
 1.95 Compiling .pio/build/uno/libe7c/src/third_party/cq_kernel/kiss_fft.cpp.o
 1.96 Compiling .pio/build/uno/libe7c/src/third_party/cq_kernel/kiss_fftr.cpp.o
 1.97 Compiling .pio/build/uno/libe7c/src/third_party/espressif/led_strip/src/led_strip_api.c.o
 1.98 Compiling .pio/build/uno/libe7c/src/third_party/espressif/led_strip/src/led_strip_rmt_dev.c.o
 1.98 Compiling .pio/build/uno/libe7c/src/third_party/espressif/led_strip/src/led_strip_rmt_encoder.c.o
 2.00 Compiling .pio/build/uno/libe7c/src/third_party/espressif/led_strip/src/led_strip_spi_dev.c.o
 2.00 Compiling .pio/build/uno/libe7c/src/third_party/object_fled/src/OjectFLED.cpp.o
 2.01 Compiling .pio/build/uno/libe7c/src/transpose8x1_noinline.cpp.o
 2.02 Compiling .pio/build/uno/libe7c/src/wiring.cpp.o
 2.03 Archiving .pio/build/uno/libFrameworkArduinoVariant.a
 2.03 Indexing .pio/build/uno/libFrameworkArduinoVariant.a
 2.03 Compiling .pio/build/uno/FrameworkArduino/CDC.cpp.o
 2.04 Compiling .pio/build/uno/FrameworkArduino/HardwareSerial.cpp.o
 2.05 Compiling .pio/build/uno/FrameworkArduino/HardwareSerial0.cpp.o
 2.07 Compiling .pio/build/uno/FrameworkArduino/HardwareSerial1.cpp.o
 2.09 Compiling .pio/build/uno/FrameworkArduino/HardwareSerial2.cpp.o
 2.10 Compiling .pio/build/uno/FrameworkArduino/HardwareSerial3.cpp.o
 2.11 Compiling .pio/build/uno/FrameworkArduino/IPAddress.cpp.o
 2.13 Compiling .pio/build/uno/FrameworkArduino/PluggableUSB.cpp.o
 2.14 Compiling .pio/build/uno/FrameworkArduino/Print.cpp.o
 2.17 Compiling .pio/build/uno/FrameworkArduino/Stream.cpp.o
 2.18 Compiling .pio/build/uno/FrameworkArduino/Tone.cpp.o
 2.20 Compiling .pio/build/uno/FrameworkArduino/USBCore.cpp.o
 2.23 Compiling .pio/build/uno/FrameworkArduino/WInterrupts.c.o
 2.23 Compiling .pio/build/uno/FrameworkArduino/WMath.cpp.o
 2.24 Compiling .pio/build/uno/FrameworkArduino/WString.cpp.o
 2.26 Compiling .pio/build/uno/FrameworkArduino/abi.cpp.o
 2.27 Compiling .pio/build/uno/FrameworkArduino/hooks.c.o
 2.29 Compiling .pio/build/uno/FrameworkArduino/main.cpp.o
 2.29 Compiling .pio/build/uno/FrameworkArduino/new.cpp.o
 2.32 Compiling .pio/build/uno/FrameworkArduino/wiring.c.o
 2.33 Compiling .pio/build/uno/FrameworkArduino/wiring_analog.c.o
 2.36 Compiling .pio/build/uno/FrameworkArduino/wiring_digital.c.o
 2.37 Compiling .pio/build/uno/FrameworkArduino/wiring_pulse.S.o
 2.37 Compiling .pio/build/uno/FrameworkArduino/wiring_pulse.c.o
 2.39 Compiling .pio/build/uno/FrameworkArduino/wiring_shift.c.o
 2.42 Archiving .pio/build/uno/libFrameworkArduino.a
 2.42 Indexing .pio/build/uno/libFrameworkArduino.a
 4.70 Archiving .pio/build/uno/libe7c/libsrc.a
 4.72 Indexing .pio/build/uno/libe7c/libsrc.a
 4.74 Linking .pio/build/uno/firmware.elf
 5.07 Checking size .pio/build/uno/firmware.elf
 5.07 Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
 5.07 RAM:   [===       ]  26.0% (used 532 bytes from 2048 bytes)
 5.07 Flash: [===       ]  29.4% (used 9488 bytes from 32256 bytes)
 5.07 Building .pio/build/uno/firmware.hex
 5.17 ========================= [SUCCESS] Took 4.96 seconds =========================
*** Finished building example examples/FxDemoReel100 for board uno ***

*** Building examples/FxTwinkleFox for board uno ***
*** Building example examples/FxTwinkleFox for board uno ***
Copying examples/FxTwinkleFox/FxTwinkleFox.ino to .build/uno/src/FxTwinkleFox.ino


******************************
* Running command in cwd: /home/runner/work/FastLED/FastLED
*     pio ci --board uno --lib=src --keep-build-dir --build-dir=.build/uno examples/FxTwinkleFox/*ino
******************************
 0.20 Resolving uno dependencies...
 0.21 Already up-to-date.
 0.21 Project has been successfully updated!
 0.22 Processing uno (platform: atmelavr; board: uno; framework: arduino)
 0.22 --------------------------------------------------------------------------------
 0.47 Verbose mode can be enabled via `-v, --verbose` option
 0.47 CONFIGURATION: https://docs.platformio.org/page/boards/atmelavr/uno.html
 0.47 PLATFORM: Atmel AVR (5.1.0) > Arduino Uno
 0.47 HARDWARE: ATMEGA328P 16MHz, 2KB RAM, 31.50KB Flash
 0.47 DEBUG: Current (avr-stub) External (avr-stub, simavr)
 0.47 PACKAGES:
 0.47  - framework-arduino-avr @ 5.2.0
 0.47  - toolchain-atmelavr @ 1.70300.191015 (7.3.0)
 0.48 Converting FxTwinkleFox.ino
 0.49 LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
 0.49 LDF Modes: Finder ~ chain, Compatibility ~ soft
 0.51 Found 6 compatible libraries
 0.51 Scanning dependencies...
 0.76 Dependency Graph
 0.76 |-- src
 0.79 Building in release mode
 0.86 Compiling .pio/build/uno/src/FxTwinkleFox.ino.cpp.o
 0.86 Compiling .pio/build/uno/lib51c/SoftwareSerial/SoftwareSerial.cpp.o
 0.87 Compiling .pio/build/uno/lib716/SPI/SPI.cpp.o
 0.90 Compiling .pio/build/uno/libe7c/src/FastLED.cpp.o
 0.91 In file included from /home/runner/work/FastLED/FastLED/.build/uno/src/FxTwinkleFox.ino:2:0:
 0.91 lib/src/fx/1d/twinklefox.h:39:1: warning: multi-line comment [-Wcomment]
 0.91  //     / \\
 0.91  ^
 0.91 Archiving .pio/build/uno/lib716/libSPI.a
 0.92 Indexing .pio/build/uno/lib716/libSPI.a
 0.92 Compiling .pio/build/uno/libe7c/src/bitswap.cpp.o
 0.93 Compiling .pio/build/uno/libe7c/src/cled_controller.cpp.o
 0.94 Archiving .pio/build/uno/lib51c/libSoftwareSerial.a
 0.94 Indexing .pio/build/uno/lib51c/libSoftwareSerial.a
 0.94 Compiling .pio/build/uno/libe7c/src/colorpalettes.cpp.o
 0.95 Compiling .pio/build/uno/libe7c/src/crgb.cpp.o
 1.01 Compiling .pio/build/uno/libe7c/src/fastled_compile.hpp.cpp.o
 1.02 Compiling .pio/build/uno/libe7c/src/fl/allocator.cpp.o
 1.02 Compiling .pio/build/uno/libe7c/src/fl/audio.cpp.o
 1.03 Compiling .pio/build/uno/libe7c/src/fl/audio_reactive.cpp.o
 1.04 Compiling .pio/build/uno/libe7c/src/fl/blur.cpp.o
 1.05 Compiling .pio/build/uno/libe7c/src/fl/bytestreammemory.cpp.o
 1.06 Compiling .pio/build/uno/libe7c/src/fl/colorutils.cpp.o
 1.07 Compiling .pio/build/uno/libe7c/src/fl/corkscrew.cpp.o
 1.08 Compiling .pio/build/uno/libe7c/src/fl/crgb_hsv16.cpp.o
 1.09 Compiling .pio/build/uno/libe7c/src/fl/downscale.cpp.o
 1.11 Compiling .pio/build/uno/libe7c/src/fl/ease.cpp.o
 1.11 Compiling .pio/build/uno/libe7c/src/fl/engine_events.cpp.o
 1.13 Compiling .pio/build/uno/libe7c/src/fl/fft.cpp.o
 1.14 Compiling .pio/build/uno/libe7c/src/fl/fft_impl.cpp.o
 1.15 Compiling .pio/build/uno/libe7c/src/fl/file_system.cpp.o
 1.16 Compiling .pio/build/uno/libe7c/src/fl/fill.cpp.o
 1.17 Compiling .pio/build/uno/libe7c/src/fl/gamma.cpp.o
 1.17 Compiling .pio/build/uno/libe7c/src/fl/gradient.cpp.o
 1.18 Compiling .pio/build/uno/libe7c/src/fl/hsv16.cpp.o
 1.19 Compiling .pio/build/uno/libe7c/src/fl/io.cpp.o
 1.20 Compiling .pio/build/uno/libe7c/src/fl/istream.cpp.o
 1.21 Compiling .pio/build/uno/libe7c/src/fl/json.cpp.o
 1.22 Compiling .pio/build/uno/libe7c/src/fl/json_console.cpp.o
 1.23 Compiling .pio/build/uno/libe7c/src/fl/leds.cpp.o
 1.25 Compiling .pio/build/uno/libe7c/src/fl/line_simplification.cpp.o
 1.25 Compiling .pio/build/uno/libe7c/src/fl/noise_woryley.cpp.o
 1.26 Compiling .pio/build/uno/libe7c/src/fl/ostream.cpp.o
 1.27 Compiling .pio/build/uno/libe7c/src/fl/ptr.cpp.o
 1.28 Compiling .pio/build/uno/libe7c/src/fl/random.cpp.o
 1.29 Compiling .pio/build/uno/libe7c/src/fl/raster_sparse.cpp.o
 1.30 Compiling .pio/build/uno/libe7c/src/fl/rectangular_draw_buffer.cpp.o
 1.31 Compiling .pio/build/uno/libe7c/src/fl/screenmap.cpp.o
 1.32 Compiling .pio/build/uno/libe7c/src/fl/sin32.cpp.o
 1.33 Compiling .pio/build/uno/libe7c/src/fl/splat.cpp.o
 1.34 Compiling .pio/build/uno/libe7c/src/fl/str.cpp.o
 1.35 Compiling .pio/build/uno/libe7c/src/fl/str_ui.cpp.o
 1.36 Compiling .pio/build/uno/libe7c/src/fl/strstream.cpp.o
 1.38 Compiling .pio/build/uno/libe7c/src/fl/stub_main.cpp.o
 1.39 Compiling .pio/build/uno/libe7c/src/fl/tile2x2.cpp.o
 1.40 Compiling .pio/build/uno/libe7c/src/fl/time_alpha.cpp.o
 1.41 Compiling .pio/build/uno/libe7c/src/fl/transform.cpp.o
 1.43 Compiling .pio/build/uno/libe7c/src/fl/type_traits.cpp.o
 1.43 Compiling .pio/build/uno/libe7c/src/fl/ui.cpp.o
 1.45 Compiling .pio/build/uno/libe7c/src/fl/upscale.cpp.o
 1.45 Compiling .pio/build/uno/libe7c/src/fl/wave_simulation.cpp.o
 1.47 Compiling .pio/build/uno/libe7c/src/fl/wave_simulation_real.cpp.o
 1.47 Compiling .pio/build/uno/libe7c/src/fl/xmap.cpp.o
 1.49 Compiling .pio/build/uno/libe7c/src/fl/xymap.cpp.o
 1.50 Compiling .pio/build/uno/libe7c/src/fl/xypath.cpp.o
 1.51 Compiling .pio/build/uno/libe7c/src/fl/xypath_impls.cpp.o
 1.52 Compiling .pio/build/uno/libe7c/src/fl/xypath_renderer.cpp.o
 1.53 Compiling .pio/build/uno/libe7c/src/fx/2d/blend.cpp.o
 1.54 Compiling .pio/build/uno/libe7c/src/fx/2d/noisepalette.cpp.o
 1.56 Compiling .pio/build/uno/libe7c/src/fx/2d/scale_up.cpp.o
 1.57 Compiling .pio/build/uno/libe7c/src/fx/2d/wave.cpp.o
 1.57 Compiling .pio/build/uno/libe7c/src/fx/detail/fx_layer.cpp.o
 1.58 Compiling .pio/build/uno/libe7c/src/fx/frame.cpp.o
 1.59 Compiling .pio/build/uno/libe7c/src/fx/fx_engine.cpp.o
 1.59 Compiling .pio/build/uno/libe7c/src/fx/time.cpp.o
 1.60 Compiling .pio/build/uno/libe7c/src/fx/video.cpp.o
 1.61 Compiling .pio/build/uno/libe7c/src/fx/video/frame_interpolator.cpp.o
 1.61 Compiling .pio/build/uno/libe7c/src/fx/video/frame_tracker.cpp.o
 1.62 Compiling .pio/build/uno/libe7c/src/fx/video/pixel_stream.cpp.o
 1.63 Compiling .pio/build/uno/libe7c/src/fx/video/video_impl.cpp.o
 1.64 Compiling .pio/build/uno/libe7c/src/hsv2rgb.cpp.o
 1.65 Compiling .pio/build/uno/libe7c/src/lib8tion.cpp.o
 1.65 Compiling .pio/build/uno/libe7c/src/noise.cpp.o
 1.66 Compiling .pio/build/uno/libe7c/src/platforms.cpp.o
 1.67 Compiling .pio/build/uno/libe7c/src/platforms/arm/k20/clockless_objectfled.cpp.o
 1.68 Compiling .pio/build/uno/libe7c/src/platforms/avr/avr_millis_timer_source.cpp.o
 1.69 Compiling .pio/build/uno/libe7c/src/platforms/compile_test.cpp.o
 1.70 Compiling .pio/build/uno/libe7c/src/platforms/esp/32/clockless_i2s_esp32s3.cpp.o
 1.70 Compiling .pio/build/uno/libe7c/src/platforms/esp/32/i2s/i2s_esp32dev.cpp.o
 1.71 Compiling .pio/build/uno/libe7c/src/platforms/esp/32/rmt_4/idf4_rmt.cpp.o
 1.72 Compiling .pio/build/uno/libe7c/src/platforms/esp/32/rmt_4/idf4_rmt_impl.cpp.o
 1.73 Compiling .pio/build/uno/libe7c/src/platforms/esp/32/rmt_5/idf5_rmt.cpp.o
 1.73 Compiling .pio/build/uno/libe7c/src/platforms/esp/32/rmt_5/strip_rmt.cpp.o
 1.74 Compiling .pio/build/uno/libe7c/src/platforms/esp/32/spi_ws2812/strip_spi.cpp.o
 1.75 Compiling .pio/build/uno/libe7c/src/platforms/shared/ui/json/audio.cpp.o
 1.75 Compiling .pio/build/uno/libe7c/src/platforms/shared/ui/json/button.cpp.o
 1.76 Compiling .pio/build/uno/libe7c/src/platforms/shared/ui/json/checkbox.cpp.o
 1.77 Compiling .pio/build/uno/libe7c/src/platforms/shared/ui/json/description.cpp.o
 1.78 Compiling .pio/build/uno/libe7c/src/platforms/shared/ui/json/dropdown.cpp.o
 1.78 Compiling .pio/build/uno/libe7c/src/platforms/shared/ui/json/help.cpp.o
 1.79 Compiling .pio/build/uno/libe7c/src/platforms/shared/ui/json/number_field.cpp.o
 1.80 Compiling .pio/build/uno/libe7c/src/platforms/shared/ui/json/slider.cpp.o
 1.80 Compiling .pio/build/uno/libe7c/src/platforms/shared/ui/json/title.cpp.o
 1.81 Compiling .pio/build/uno/libe7c/src/platforms/shared/ui/json/ui.cpp.o
 1.82 Compiling .pio/build/uno/libe7c/src/platforms/shared/ui/json/ui_internal.cpp.o
 1.82 Compiling .pio/build/uno/libe7c/src/platforms/shared/ui/json/ui_manager.cpp.o
 1.83 Compiling .pio/build/uno/libe7c/src/platforms/stub/led_sysdefs_stub.cpp.o
 1.84 Compiling .pio/build/uno/libe7c/src/platforms/wasm/active_strip_data.cpp.o
 1.85 Compiling .pio/build/uno/libe7c/src/platforms/wasm/compiler/Arduino.cpp.o
 1.85 Compiling .pio/build/uno/libe7c/src/platforms/wasm/engine_listener.cpp.o
 1.86 Compiling .pio/build/uno/libe7c/src/platforms/wasm/fastspi_wasm.cpp.o
 1.87 Compiling .pio/build/uno/libe7c/src/platforms/wasm/fs_wasm.cpp.o
 1.87 Compiling .pio/build/uno/libe7c/src/platforms/wasm/js.cpp.o
 1.88 Compiling .pio/build/uno/libe7c/src/platforms/wasm/js_bindings.cpp.o
 1.89 Compiling .pio/build/uno/libe7c/src/platforms/wasm/timer.cpp.o
 1.90 Compiling .pio/build/uno/libe7c/src/platforms/wasm/ui.cpp.o
 1.90 Compiling .pio/build/uno/libe7c/src/power_mgt.cpp.o
 1.91 Compiling .pio/build/uno/libe7c/src/rgbw.cpp.o
 1.92 Compiling .pio/build/uno/libe7c/src/sensors/button.cpp.o
 1.93 Compiling .pio/build/uno/libe7c/src/sensors/digital_pin.cpp.o
 1.94 Compiling .pio/build/uno/libe7c/src/sensors/pir.cpp.o
 1.94 Compiling .pio/build/uno/libe7c/src/simplex.cpp.o
 1.95 Compiling .pio/build/uno/libe7c/src/third_party/cq_kernel/cq_kernel.cpp.o
 1.96 Compiling .pio/build/uno/libe7c/src/third_party/cq_kernel/kiss_fft.cpp.o
 1.97 Compiling .pio/build/uno/libe7c/src/third_party/cq_kernel/kiss_fftr.cpp.o
 1.98 Compiling .pio/build/uno/libe7c/src/third_party/espressif/led_strip/src/led_strip_api.c.o
 1.98 Compiling .pio/build/uno/libe7c/src/third_party/espressif/led_strip/src/led_strip_rmt_dev.c.o
 1.99 Compiling .pio/build/uno/libe7c/src/third_party/espressif/led_strip/src/led_strip_rmt_encoder.c.o
 2.00 Compiling .pio/build/uno/libe7c/src/third_party/espressif/led_strip/src/led_strip_spi_dev.c.o
 2.00 Compiling .pio/build/uno/libe7c/src/third_party/object_fled/src/OjectFLED.cpp.o
 2.01 Compiling .pio/build/uno/libe7c/src/transpose8x1_noinline.cpp.o
 2.02 Compiling .pio/build/uno/libe7c/src/wiring.cpp.o
 2.02 Archiving .pio/build/uno/libFrameworkArduinoVariant.a
 2.03 Indexing .pio/build/uno/libFrameworkArduinoVariant.a
 2.04 Compiling .pio/build/uno/FrameworkArduino/CDC.cpp.o
 2.05 Compiling .pio/build/uno/FrameworkArduino/HardwareSerial.cpp.o
 2.05 Compiling .pio/build/uno/FrameworkArduino/HardwareSerial0.cpp.o
 2.07 Compiling .pio/build/uno/FrameworkArduino/HardwareSerial1.cpp.o
 2.10 Compiling .pio/build/uno/FrameworkArduino/HardwareSerial2.cpp.o
 2.11 Compiling .pio/build/uno/FrameworkArduino/HardwareSerial3.cpp.o
 2.11 Compiling .pio/build/uno/FrameworkArduino/IPAddress.cpp.o
 2.15 Compiling .pio/build/uno/FrameworkArduino/PluggableUSB.cpp.o
 2.15 Compiling .pio/build/uno/FrameworkArduino/Print.cpp.o
 2.16 Compiling .pio/build/uno/FrameworkArduino/Stream.cpp.o
 2.19 Compiling .pio/build/uno/FrameworkArduino/Tone.cpp.o
 2.23 Compiling .pio/build/uno/FrameworkArduino/USBCore.cpp.o
 2.23 Compiling .pio/build/uno/FrameworkArduino/WInterrupts.c.o
 2.24 Compiling .pio/build/uno/FrameworkArduino/WMath.cpp.o
 2.26 Compiling .pio/build/uno/FrameworkArduino/WString.cpp.o
 2.27 Compiling .pio/build/uno/FrameworkArduino/abi.cpp.o
 2.27 Compiling .pio/build/uno/FrameworkArduino/hooks.c.o
 2.29 Compiling .pio/build/uno/FrameworkArduino/main.cpp.o
 2.30 Compiling .pio/build/uno/FrameworkArduino/new.cpp.o
 2.33 Compiling .pio/build/uno/FrameworkArduino/wiring.c.o
 2.34 Compiling .pio/build/uno/FrameworkArduino/wiring_analog.c.o
 2.36 Compiling .pio/build/uno/FrameworkArduino/wiring_digital.c.o
 2.37 Compiling .pio/build/uno/FrameworkArduino/wiring_pulse.S.o
 2.39 Compiling .pio/build/uno/FrameworkArduino/wiring_pulse.c.o
 2.39 Compiling .pio/build/uno/FrameworkArduino/wiring_shift.c.o
 2.42 Archiving .pio/build/uno/libFrameworkArduino.a
 2.42 Indexing .pio/build/uno/libFrameworkArduino.a
 4.69 Archiving .pio/build/uno/libe7c/libsrc.a
 4.71 Indexing .pio/build/uno/libe7c/libsrc.a
 4.73 Linking .pio/build/uno/firmware.elf
 5.04 Checking size .pio/build/uno/firmware.elf
 5.04 Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
 5.04 RAM:   [====      ]  38.5% (used 788 bytes from 2048 bytes)
 5.04 Flash: [===       ]  25.0% (used 8074 bytes from 32256 bytes)
 5.04 Building .pio/build/uno/firmware.hex
 5.14 ========================= [SUCCESS] Took 4.92 seconds =========================
*** Finished building example examples/FxTwinkleFox for board uno ***

*** Building examples/FxFire2012 for board uno ***
*** Building example examples/FxFire2012 for board uno ***
Copying examples/FxFire2012/FxFire2012.ino to .build/uno/src/FxFire2012.ino


******************************
* Running command in cwd: /home/runner/work/FastLED/FastLED
*     pio ci --board uno --lib=src --keep-build-dir --build-dir=.build/uno examples/FxFire2012/*ino
******************************
 0.20 Resolving uno dependencies...
 0.21 Already up-to-date.
 0.21 Project has been successfully updated!
 0.21 Processing uno (platform: atmelavr; board: uno; framework: arduino)
 0.21 --------------------------------------------------------------------------------
 0.46 Verbose mode can be enabled via `-v, --verbose` option
 0.47 CONFIGURATION: https://docs.platformio.org/page/boards/atmelavr/uno.html
 0.47 PLATFORM: Atmel AVR (5.1.0) > Arduino Uno
 0.47 HARDWARE: ATMEGA328P 16MHz, 2KB RAM, 31.50KB Flash
 0.47 DEBUG: Current (avr-stub) External (avr-stub, simavr)
 0.47 PACKAGES:
 0.47  - framework-arduino-avr @ 5.2.0
 0.47  - toolchain-atmelavr @ 1.70300.191015 (7.3.0)
 0.47 Converting FxFire2012.ino
 0.49 LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
 0.49 LDF Modes: Finder ~ chain, Compatibility ~ soft
 0.51 Found 6 compatible libraries
 0.51 Scanning dependencies...
 0.76 Dependency Graph
 0.76 |-- src
 0.79 Building in release mode
 0.86 Compiling .pio/build/uno/src/FxFire2012.ino.cpp.o
 1.32 Linking .pio/build/uno/firmware.elf
 1.63 Checking size .pio/build/uno/firmware.elf
 1.63 Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
 1.63 RAM:   [===       ]  26.4% (used 540 bytes from 2048 bytes)
 1.63 Flash: [===       ]  26.5% (used 8546 bytes from 32256 bytes)
 1.63 Building .pio/build/uno/firmware.hex
 1.73 ========================= [SUCCESS] Took 1.52 seconds =========================
*** Finished building example examples/FxFire2012 for board uno ***

*** Building examples/FxNoisePlusPalette for board uno ***
*** Building example examples/FxNoisePlusPalette for board uno ***
Copying examples/FxNoisePlusPalette/FxNoisePlusPalette.ino to .build/uno/src/FxNoisePlusPalette.ino


******************************
* Running command in cwd: /home/runner/work/FastLED/FastLED
*     pio ci --board uno --lib=src --keep-build-dir --build-dir=.build/uno examples/FxNoisePlusPalette/*ino
******************************
 0.20 Resolving uno dependencies...
 0.20 Already up-to-date.
 0.20 Project has been successfully updated!
 0.21 Processing uno (platform: atmelavr; board: uno; framework: arduino)
 0.21 --------------------------------------------------------------------------------
 0.46 Verbose mode can be enabled via `-v, --verbose` option
 0.47 CONFIGURATION: https://docs.platformio.org/page/boards/atmelavr/uno.html
 0.47 PLATFORM: Atmel AVR (5.1.0) > Arduino Uno
 0.47 HARDWARE: ATMEGA328P 16MHz, 2KB RAM, 31.50KB Flash
 0.47 DEBUG: Current (avr-stub) External (avr-stub, simavr)
 0.47 PACKAGES:
 0.47  - framework-arduino-avr @ 5.2.0
 0.47  - toolchain-atmelavr @ 1.70300.191015 (7.3.0)
 0.47 Converting FxNoisePlusPalette.ino
 0.47 /home/runner/work/FastLED/FastLED/.build/uno/src/FxNoisePlusPalette.ino:36:0: warning: "GRID_SERPENTINE" redefined
 0.47  #define GRID_SERPENTINE 1
 0.47 
 0.47 /home/runner/work/FastLED/FastLED/.build/uno/src/FxNoisePlusPalette.ino:34:0: note: this is the location of the previous definition
 0.47  #define GRID_SERPENTINE 0
 0.47 
 0.48 LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
 0.48 LDF Modes: Finder ~ chain, Compatibility ~ soft
 0.51 Found 6 compatible libraries
 0.51 Scanning dependencies...
 0.75 Dependency Graph
 0.75 |-- src
 0.78 Building in release mode
 0.85 Compiling .pio/build/uno/src/FxNoisePlusPalette.ino.cpp.o
 1.22 Linking .pio/build/uno/firmware.elf
 1.25 Checking size .pio/build/uno/firmware.elf
 1.25 Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
 1.25 RAM:   [          ]   0.4% (used 9 bytes from 2048 bytes)
 1.25 Flash: [          ]   1.4% (used 444 bytes from 32256 bytes)
 1.25 Building .pio/build/uno/firmware.hex
 1.35 ========================= [SUCCESS] Took 1.14 seconds =========================
*** Finished building example examples/FxNoisePlusPalette for board uno ***

*** Building examples/FxPacifica for board uno ***
*** Building example examples/FxPacifica for board uno ***
Copying examples/FxPacifica/defs.h to .build/uno/src/defs.h
Copying examples/FxPacifica/FxPacifica.ino to .build/uno/src/FxPacifica.ino


******************************
* Running command in cwd: /home/runner/work/FastLED/FastLED
*     pio ci --board uno --lib=src --keep-build-dir --build-dir=.build/uno examples/FxPacifica/*ino
******************************
 0.20 Resolving uno dependencies...
 0.21 Already up-to-date.
 0.21 Project has been successfully updated!
 0.21 Processing uno (platform: atmelavr; board: uno; framework: arduino)
 0.21 --------------------------------------------------------------------------------
 0.47 Verbose mode can be enabled via `-v, --verbose` option
 0.47 CONFIGURATION: https://docs.platformio.org/page/boards/atmelavr/uno.html
 0.47 PLATFORM: Atmel AVR (5.1.0) > Arduino Uno
 0.47 HARDWARE: ATMEGA328P 16MHz, 2KB RAM, 31.50KB Flash
 0.47 DEBUG: Current (avr-stub) External (avr-stub, simavr)
 0.47 PACKAGES:
 0.47  - framework-arduino-avr @ 5.2.0
 0.47  - toolchain-atmelavr @ 1.70300.191015 (7.3.0)
 0.48 Converting FxPacifica.ino
 0.49 LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
 0.49 LDF Modes: Finder ~ chain, Compatibility ~ soft
 0.52 Found 6 compatible libraries
 0.52 Scanning dependencies...
 0.76 Dependency Graph
 0.76 |-- src
 0.79 Building in release mode
 0.85 Compiling .pio/build/uno/src/FxPacifica.ino.cpp.o
 0.86 Compiling .pio/build/uno/lib51c/SoftwareSerial/SoftwareSerial.cpp.o
 0.86 Compiling .pio/build/uno/lib716/SPI/SPI.cpp.o
 0.90 Compiling .pio/build/uno/libe7c/src/FastLED.cpp.o
 0.91 Archiving .pio/build/uno/lib716/libSPI.a
 0.91 Indexing .pio/build/uno/lib716/libSPI.a
 0.92 Compiling .pio/build/uno/libe7c/src/bitswap.cpp.o
 0.93 Compiling .pio/build/uno/libe7c/src/cled_controller.cpp.o
 0.93 Archiving .pio/build/uno/lib51c/libSoftwareSerial.a
 0.94 Indexing .pio/build/uno/lib51c/libSoftwareSerial.a
 0.94 Compiling .pio/build/uno/libe7c/src/colorpalettes.cpp.o
 0.95 Compiling .pio/build/uno/libe7c/src/crgb.cpp.o
 1.00 Compiling .pio/build/uno/libe7c/src/fastled_compile.hpp.cpp.o
 1.01 Compiling .pio/build/uno/libe7c/src/fl/allocator.cpp.o
 1.02 Compiling .pio/build/uno/libe7c/src/fl/audio.cpp.o
 1.03 Compiling .pio/build/uno/libe7c/src/fl/audio_reactive.cpp.o
 1.04 Compiling .pio/build/uno/libe7c/src/fl/blur.cpp.o
 1.05 Compiling .pio/build/uno/libe7c/src/fl/bytestreammemory.cpp.o
 1.07 Compiling .pio/build/uno/libe7c/src/fl/colorutils.cpp.o
 1.07 Compiling .pio/build/uno/libe7c/src/fl/corkscrew.cpp.o
 1.09 Compiling .pio/build/uno/libe7c/src/fl/crgb_hsv16.cpp.o
 1.09 Compiling .pio/build/uno/libe7c/src/fl/downscale.cpp.o
 1.11 Compiling .pio/build/uno/libe7c/src/fl/ease.cpp.o
 1.11 Compiling .pio/build/uno/libe7c/src/fl/engine_events.cpp.o
 1.13 Compiling .pio/build/uno/libe7c/src/fl/fft.cpp.o
 1.13 Compiling .pio/build/uno/libe7c/src/fl/fft_impl.cpp.o
 1.15 Compiling .pio/build/uno/libe7c/src/fl/file_system.cpp.o
 1.15 Compiling .pio/build/uno/libe7c/src/fl/fill.cpp.o
 1.17 Compiling .pio/build/uno/libe7c/src/fl/gamma.cpp.o
 1.17 Compiling .pio/build/uno/libe7c/src/fl/gradient.cpp.o
 1.18 Compiling .pio/build/uno/libe7c/src/fl/hsv16.cpp.o
 1.19 Compiling .pio/build/uno/libe7c/src/fl/io.cpp.o
 1.20 Compiling .pio/build/uno/libe7c/src/fl/istream.cpp.o
 1.21 Compiling .pio/build/uno/libe7c/src/fl/json.cpp.o
 1.22 Compiling .pio/build/uno/libe7c/src/fl/json_console.cpp.o
 1.23 Compiling .pio/build/uno/libe7c/src/fl/leds.cpp.o
 1.24 Compiling .pio/build/uno/libe7c/src/fl/line_simplification.cpp.o
 1.25 Compiling .pio/build/uno/libe7c/src/fl/noise_woryley.cpp.o
 1.26 Compiling .pio/build/uno/libe7c/src/fl/ostream.cpp.o
 1.27 Compiling .pio/build/uno/libe7c/src/fl/ptr.cpp.o
 1.28 Compiling .pio/build/uno/libe7c/src/fl/random.cpp.o
 1.29 Compiling .pio/build/uno/libe7c/src/fl/raster_sparse.cpp.o
 1.30 Compiling .pio/build/uno/libe7c/src/fl/rectangular_draw_buffer.cpp.o
 1.31 Compiling .pio/build/uno/libe7c/src/fl/screenmap.cpp.o
 1.32 Compiling .pio/build/uno/libe7c/src/fl/sin32.cpp.o
 1.33 Compiling .pio/build/uno/libe7c/src/fl/splat.cpp.o
 1.34 Compiling .pio/build/uno/libe7c/src/fl/str.cpp.o
 1.35 Compiling .pio/build/uno/libe7c/src/fl/str_ui.cpp.o
 1.36 Compiling .pio/build/uno/libe7c/src/fl/strstream.cpp.o
 1.37 Compiling .pio/build/uno/libe7c/src/fl/stub_main.cpp.o
 1.38 Compiling .pio/build/uno/libe7c/src/fl/tile2x2.cpp.o
 1.39 Compiling .pio/build/uno/libe7c/src/fl/time_alpha.cpp.o
 1.40 Compiling .pio/build/uno/libe7c/src/fl/transform.cpp.o
 1.41 Compiling .pio/build/uno/libe7c/src/fl/type_traits.cpp.o
 1.42 Compiling .pio/build/uno/libe7c/src/fl/ui.cpp.o
 1.42 Compiling .pio/build/uno/libe7c/src/fl/upscale.cpp.o
 1.43 Compiling .pio/build/uno/libe7c/src/fl/wave_simulation.cpp.o
 1.44 Compiling .pio/build/uno/libe7c/src/fl/wave_simulation_real.cpp.o
 1.44 Compiling .pio/build/uno/libe7c/src/fl/xmap.cpp.o
 1.45 Compiling .pio/build/uno/libe7c/src/fl/xymap.cpp.o
 1.46 Compiling .pio/build/uno/libe7c/src/fl/xypath.cpp.o
 1.47 Compiling .pio/build/uno/libe7c/src/fl/xypath_impls.cpp.o
 1.47 Compiling .pio/build/uno/libe7c/src/fl/xypath_renderer.cpp.o
 1.48 Compiling .pio/build/uno/libe7c/src/fx/2d/blend.cpp.o
 1.49 Compiling .pio/build/uno/libe7c/src/fx/2d/noisepalette.cpp.o
 1.50 Compiling .pio/build/uno/libe7c/src/fx/2d/scale_up.cpp.o
 1.51 Compiling .pio/build/uno/libe7c/src/fx/2d/wave.cpp.o
 1.51 Compiling .pio/build/uno/libe7c/src/fx/detail/fx_layer.cpp.o
 1.52 Compiling .pio/build/uno/libe7c/src/fx/frame.cpp.o
 1.53 Compiling .pio/build/uno/libe7c/src/fx/fx_engine.cpp.o
 1.53 Compiling .pio/build/uno/libe7c/src/fx/time.cpp.o
 1.54 Compiling .pio/build/uno/libe7c/src/fx/video.cpp.o
 1.55 Compiling .pio/build/uno/libe7c/src/fx/video/frame_interpolator.cpp.o
 1.55 Compiling .pio/build/uno/libe7c/src/fx/video/frame_tracker.cpp.o
 1.56 Compiling .pio/build/uno/libe7c/src/fx/video/pixel_stream.cpp.o
 1.57 Compiling .pio/build/uno/libe7c/src/fx/video/video_impl.cpp.o
 1.58 Compiling .pio/build/uno/libe7c/src/hsv2rgb.cpp.o
 1.59 Compiling .pio/build/uno/libe7c/src/lib8tion.cpp.o
 1.59 Compiling .pio/build/uno/libe7c/src/noise.cpp.o
 1.60 Compiling .pio/build/uno/libe7c/src/platforms.cpp.o
 1.61 Compiling .pio/build/uno/libe7c/src/platforms/arm/k20/clockless_objectfled.cpp.o
 1.62 Compiling .pio/build/uno/libe7c/src/platforms/avr/avr_millis_timer_source.cpp.o
 1.63 Compiling .pio/build/uno/libe7c/src/platforms/compile_test.cpp.o
 1.64 Compiling .pio/build/uno/libe7c/src/platforms/esp/32/clockless_i2s_esp32s3.cpp.o
 1.64 Compiling .pio/build/uno/libe7c/src/platforms/esp/32/i2s/i2s_esp32dev.cpp.o
 1.65 Compiling .pio/build/uno/libe7c/src/platforms/esp/32/rmt_4/idf4_rmt.cpp.o
 1.66 Compiling .pio/build/uno/libe7c/src/platforms/esp/32/rmt_4/idf4_rmt_impl.cpp.o
 1.67 Compiling .pio/build/uno/libe7c/src/platforms/esp/32/rmt_5/idf5_rmt.cpp.o
 1.67 Compiling .pio/build/uno/libe7c/src/platforms/esp/32/rmt_5/strip_rmt.cpp.o
 1.68 Compiling .pio/build/uno/libe7c/src/platforms/esp/32/spi_ws2812/strip_spi.cpp.o
 1.69 Compiling .pio/build/uno/libe7c/src/platforms/shared/ui/json/audio.cpp.o
 1.70 Compiling .pio/build/uno/libe7c/src/platforms/shared/ui/json/button.cpp.o
 1.70 Compiling .pio/build/uno/libe7c/src/platforms/shared/ui/json/checkbox.cpp.o
 1.71 Compiling .pio/build/uno/libe7c/src/platforms/shared/ui/json/description.cpp.o
 1.72 Compiling .pio/build/uno/libe7c/src/platforms/shared/ui/json/dropdown.cpp.o
 1.72 Compiling .pio/build/uno/libe7c/src/platforms/shared/ui/json/help.cpp.o
 1.73 Compiling .pio/build/uno/libe7c/src/platforms/shared/ui/json/number_field.cpp.o
 1.74 Compiling .pio/build/uno/libe7c/src/platforms/shared/ui/json/slider.cpp.o
 1.74 Compiling .pio/build/uno/libe7c/src/platforms/shared/ui/json/title.cpp.o
 1.75 Compiling .pio/build/uno/libe7c/src/platforms/shared/ui/json/ui.cpp.o
 1.76 Compiling .pio/build/uno/libe7c/src/platforms/shared/ui/json/ui_internal.cpp.o
 1.77 Compiling .pio/build/uno/libe7c/src/platforms/shared/ui/json/ui_manager.cpp.o
 1.78 Compiling .pio/build/uno/libe7c/src/platforms/stub/led_sysdefs_stub.cpp.o
 1.78 Compiling .pio/build/uno/libe7c/src/platforms/wasm/active_strip_data.cpp.o
 1.79 Compiling .pio/build/uno/libe7c/src/platforms/wasm/compiler/Arduino.cpp.o
 1.80 Compiling .pio/build/uno/libe7c/src/platforms/wasm/engine_listener.cpp.o
 1.81 Compiling .pio/build/uno/libe7c/src/platforms/wasm/fastspi_wasm.cpp.o
 1.81 Compiling .pio/build/uno/libe7c/src/platforms/wasm/fs_wasm.cpp.o
 1.82 Compiling .pio/build/uno/libe7c/src/platforms/wasm/js.cpp.o
 1.83 Compiling .pio/build/uno/libe7c/src/platforms/wasm/js_bindings.cpp.o
 1.83 Compiling .pio/build/uno/libe7c/src/platforms/wasm/timer.cpp.o
 1.84 Compiling .pio/build/uno/libe7c/src/platforms/wasm/ui.cpp.o
 1.85 Compiling .pio/build/uno/libe7c/src/power_mgt.cpp.o
 1.86 Compiling .pio/build/uno/libe7c/src/rgbw.cpp.o
 1.87 Compiling .pio/build/uno/libe7c/src/sensors/button.cpp.o
 1.88 Compiling .pio/build/uno/libe7c/src/sensors/digital_pin.cpp.o
 1.89 Compiling .pio/build/uno/libe7c/src/sensors/pir.cpp.o
 1.90 Compiling .pio/build/uno/libe7c/src/simplex.cpp.o
 1.90 Compiling .pio/build/uno/libe7c/src/third_party/cq_kernel/cq_kernel.cpp.o
 1.91 Compiling .pio/build/uno/libe7c/src/third_party/cq_kernel/kiss_fft.cpp.o
 1.91 Compiling .pio/build/uno/libe7c/src/third_party/cq_kernel/kiss_fftr.cpp.o
 1.93 Compiling .pio/build/uno/libe7c/src/third_party/espressif/led_strip/src/led_strip_api.c.o
 1.93 Compiling .pio/build/uno/libe7c/src/third_party/espressif/led_strip/src/led_strip_rmt_dev.c.o
 1.94 Compiling .pio/build/uno/libe7c/src/third_party/espressif/led_strip/src/led_strip_rmt_encoder.c.o
 1.95 Compiling .pio/build/uno/libe7c/src/third_party/espressif/led_strip/src/led_strip_spi_dev.c.o
 1.95 Compiling .pio/build/uno/libe7c/src/third_party/object_fled/src/OjectFLED.cpp.o
 1.96 Compiling .pio/build/uno/libe7c/src/transpose8x1_noinline.cpp.o
 1.97 Compiling .pio/build/uno/libe7c/src/wiring.cpp.o
 1.98 Archiving .pio/build/uno/libFrameworkArduinoVariant.a
 1.99 Indexing .pio/build/uno/libFrameworkArduinoVariant.a
 1.99 Compiling .pio/build/uno/FrameworkArduino/CDC.cpp.o
 1.99 Compiling .pio/build/uno/FrameworkArduino/HardwareSerial.cpp.o
 2.00 Compiling .pio/build/uno/FrameworkArduino/HardwareSerial0.cpp.o
 2.02 Compiling .pio/build/uno/FrameworkArduino/HardwareSerial1.cpp.o
 2.05 Compiling .pio/build/uno/FrameworkArduino/HardwareSerial2.cpp.o
 2.06 Compiling .pio/build/uno/FrameworkArduino/HardwareSerial3.cpp.o
 2.06 Compiling .pio/build/uno/FrameworkArduino/IPAddress.cpp.o
 2.09 Compiling .pio/build/uno/FrameworkArduino/PluggableUSB.cpp.o
 2.10 Compiling .pio/build/uno/FrameworkArduino/Print.cpp.o
 2.12 Compiling .pio/build/uno/FrameworkArduino/Stream.cpp.o
 2.13 Compiling .pio/build/uno/FrameworkArduino/Tone.cpp.o
 2.17 Compiling .pio/build/uno/FrameworkArduino/USBCore.cpp.o
 2.18 Compiling .pio/build/uno/FrameworkArduino/WInterrupts.c.o
 2.18 Compiling .pio/build/uno/FrameworkArduino/WMath.cpp.o
 2.21 Compiling .pio/build/uno/FrameworkArduino/WString.cpp.o
 2.21 Compiling .pio/build/uno/FrameworkArduino/abi.cpp.o
 2.22 Compiling .pio/build/uno/FrameworkArduino/hooks.c.o
 2.24 Compiling .pio/build/uno/FrameworkArduino/main.cpp.o
 2.25 Compiling .pio/build/uno/FrameworkArduino/new.cpp.o
 2.28 Compiling .pio/build/uno/FrameworkArduino/wiring.c.o
 2.28 Compiling .pio/build/uno/FrameworkArduino/wiring_analog.c.o
 2.31 Compiling .pio/build/uno/FrameworkArduino/wiring_digital.c.o
 2.32 Compiling .pio/build/uno/FrameworkArduino/wiring_pulse.S.o
 2.34 Compiling .pio/build/uno/FrameworkArduino/wiring_pulse.c.o
 2.34 Compiling .pio/build/uno/FrameworkArduino/wiring_shift.c.o
 2.37 Archiving .pio/build/uno/libFrameworkArduino.a
 2.37 Indexing .pio/build/uno/libFrameworkArduino.a
 4.66 Archiving .pio/build/uno/libe7c/libsrc.a
 4.68 Indexing .pio/build/uno/libe7c/libsrc.a
 4.70 Linking .pio/build/uno/firmware.elf
 4.79 Checking size .pio/build/uno/firmware.elf
 4.79 Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
 4.79 RAM:   [          ]   1.3% (used 26 bytes from 2048 bytes)
 4.79 Flash: [          ]   1.6% (used 520 bytes from 32256 bytes)
 4.79 Building .pio/build/uno/firmware.hex
 4.89 ========================= [SUCCESS] Took 4.68 seconds =========================
*** Finished building example examples/FxPacifica for board uno ***

*** Building examples/FxEngine for board uno ***
*** Building example examples/FxEngine for board uno ***
Copying examples/FxEngine/FxEngine.ino to .build/uno/src/FxEngine.ino

zackees avatar Jul 01 '25 20:07 zackees

I have a script written which analyses the first compile and stores all Infos LDF generates. In second run LDF is switched off and all compiled files in .pio/build/<env> are used without the time consuming LDF run. The only time consuming step is the Linker process now. BUT this LDF cache logic is ONLY working and possible with LDF mode chain. Needs setting Platformio Core setting --disable-auto-clean too keep files in folder .pio since the setting lib_ldf_mode is automatically changed to off from chain for second run. The script (no explanations no support!!) is here https://github.com/Jason2866/Tasmota/blob/ldf_clean_up/pio-tools/ldf_cache.py

Jason2866 avatar Jul 01 '25 22:07 Jason2866

I weird - and yes i've thought about doing the exact same thing.

@ivankravets are you using Cursor IDE or Windsurf IDE yet?

These are one of those problems a background agent with max mode could just solve with the info we've provided so far.

zackees avatar Jul 01 '25 23:07 zackees

@Jason2866

I'm seeing esp32s3 rebuild constantly. This isn't true for avr.

I'm starting to really suspect espressif has a date macro sneaking in that's invalidating the headers. When was the last time a header include was audited for a time based macro sneaking in? It's like every single time a build esp32s3 I trigger a rebuild. I'm using the latest esp-idf.

Everything is constantly being rebuilt every time I invoke the platformio compiler against an example.

zackees avatar Jul 02 '25 07:07 zackees

@zackees IDF =! Arduino the have totally different build ways. You can compare Arduino only. Imho for IDF projects only using espressif VSC extension is a better idea, it is way more faster regarding compile times. The LDF from Platformio is a mess, faulty and slow. And it is dumb. Why doing the time consuming work at every compile run. Not needed when a intelligent smart cache solution would be used. Overall Platformio engine is not state of the art anymore.

Jason2866 avatar Jul 02 '25 08:07 Jason2866

@zackees IDF =! Arduino the have totally different build ways. You can compare Arduino only. Imho for IDF projects only using espressif VSC extension is a better idea, it is way more faster regarding compile times. The LDF from Platformio is a mess, faulty and slow. And it is dumb. Why doing the time consuming work at every compile run. Not needed when a intelligent smart cache solution would be used. Overall Platformio engine is not state of the art anymore.

The entire FastLED build pipeline is built on top of platformio. Show me another command line tool that can build every product on the market.

zackees avatar Jul 02 '25 13:07 zackees

I'm seeing esp32s3 rebuild constantly.

Could you try comparing pio run -v outputs between build iterations? If you have volatile flags (e.g., macros), they could be causing a full project rebuild. For example: -D CURRENT_TIME=$UNIX_TIME.

ivankravets avatar Jul 02 '25 15:07 ivankravets

The entire FastLED build pipeline is built on top of platformio. Show me another command line tool that can build every product on the market.

Don't get me wrong i like Platformio and yes that's the big nice thing. But there is no relevant development done the last months. The buggy slow LDF is still there, which needs a complete refactor. This was promised long time ago. I do not see complete rebuilds every compile run. The time consuming part is only LDF.

Jason2866 avatar Jul 02 '25 16:07 Jason2866

But there is no relevant development done the last months.

The 6.x branch is currently in bug-fix mode. We are actively working on version 7.0 internally and do not plan to refactor LDF in the 6.x series.

ivankravets avatar Jul 02 '25 17:07 ivankravets

That are good news, planned release date for 7.x?

Jason2866 avatar Jul 02 '25 17:07 Jason2866

I'm seeing esp32s3 rebuild constantly.

Could you try comparing pio run -v outputs between build iterations? If you have volatile flags (e.g., macros), they could be causing a full project rebuild. For example: -D CURRENT_TIME=$UNIX_TIME.

pio run on project directories runs great, i just tried it on teensy.

I think the problem is that i'm using pio ci and specifying project flags via the runtime. I suspect this is like modifying the platformio.ini - it's going to trigger a build. So I'm putting everything under unit test and I'm going to go low level:

  • board definition -> platformio.ini file -> strip comments and white space -> fingerprint-> re-initialize on fingerprint change
  • Then selectively apply disable auto clean.
  • I might have to pull out libfastled and other archives and symlink them and do -I back to the library.

zackees avatar Jul 02 '25 20:07 zackees

See https://docs.platformio.org/en/latest/core/userguide/cmd_ci.html#cmdoption-pio-ci-keep-build-dir

Please note that pio ci is not intended for the incremental builds.

ivankravets avatar Jul 03 '25 06:07 ivankravets

disabling auto clean - this results in a huge speed up. Uno rebuilds in 3 seconds.

zackees avatar Jul 03 '25 07:07 zackees

@Jason2866 a big part of the slow down with the esp platforms is that the official link to the platform files is pointing at an absolutely gigantic repo.

Have you ever created an orphan branch with no history but all the files?

I think this would go very fast.

zackees avatar Jul 03 '25 20:07 zackees