Hi!
What’s the right way to specify a script path inside a library?
Actually I have in this way but changing the ENV
will brake the link.
extra_scripts =
pre:.pio\libdeps\esp32dev\esp8266-react\scripts\build_interface.py
Thanks in advance.
Hi!
What’s the right way to specify a script path inside a library?
Actually I have in this way but changing the ENV
will brake the link.
extra_scripts =
pre:.pio\libdeps\esp32dev\esp8266-react\scripts\build_interface.py
Thanks in advance.
Just give yor library a library.json
with an extraScripst
field (docs)
Thanks for your answer.
The library is not mine I’m just using it.
Also on moment the library doesn’t have a library.json file.
Well then better fork it, because that’s the cleanest way of adding the script. Or, put the project in your local project, that’s the second way. If you have to to add it to the library, you can use some environment variables to make path more dynamically correct, namely
So something like
extra_scripts =
pre:$PROJECT_LIBDEPS_DIR\$PIOENV\esp8266-react\scripts\build_interface.py
For some reason pre:$PROJECT_LIBDEPS_DIR\$PIOENV\esp8266-react\scripts\build_interface.py
doesn’t works but the path is right as you can see below.
Hm, I will have to try this out in a more minimal way… Or maybe variable expansion is not available in this option
Ok, thanks!
Adding "extraScript": "scripts/build_interface.py"
to library.json
how I can prevent the script execution inside of platformio.ini
?
I’m asking because the script is needed just in the first build or after some change in the interface.
Hi!
Can someone help me with the question above about library.json?
Best regards.
@maxgerhardt can you help me please?
Prevents the script being called when doing intellisense inits
Actually I could not get that working with also other variants like pre:{platformio.libdeps_dir}\uno\ArduinoJson\scripts\build_interface.py
. It’s either not expanding variables like I thought it was or something else is missing. You could open an issue at Issues · platformio/platformio-core · GitHub
Problem is, ESP8266-React is a PlatformIO project, not a library. It has stuff in lib/
. Meaning if you treat it like a library, it won’t build the sources in lib/
at all… GitHub - rjwats/esp8266-react: A framework for ESP8266 & ESP32 microcontrollers with a React UI
Hi @maxgerhardt !
Thanks for your answer!
Sorry, I was not clear enough.
The library is not mine but on moment of my first post I was using a fork where I have restructured the framework to work as a library. For this reason I was using this path: .pio\libdeps\esp32dev\esp8266-react\scripts\build_interface.py
In platformio.ini
I have this line: lib_deps= https://github.com/FernandoGarcia/esp8266-react.git#make_library_2.0.x
After your answer I have added a draft for library.json in my fork for this reason I was asking about extraScript
in library.json
.
extraScript
parameter works fine but PIO is rebuilding the interface during each compilation of my code.
Hm then some more custom extra logic is needed with regards to checking if any of the files changed that would trigger a website rebuild. You could use the hashes of the files and store that on disk in e.g. .pio/build/<environment>/website_hash.txt
and read that and compare it to the current hash of the files, and only then rebuild (or do nothing).
Thanks for your help!
The issue is open.
I will try find a solution based in the information that you gave me.
Best regards.
Hi @maxgerhardt !
@ivankravets have pushed a commit to fix the issue #4220 and now your suggestion is working.
extra_scripts =
pre:$PROJECT_LIBDEPS_DIR\$PIOENV\esp8266-react\scripts\build_interface.py
About extraScript
in library.json
, now I think the easiest way to control the build process is using extra_script
in ini
file and comment out after the first build.
The best solution could be PIO support the script execution control using build flags but I think it should be a feature request.
Thanks for you help!
Best regards.