- Notifications
You must be signed in to change notification settings - Fork 7.8k
IDF master#5336
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
IDF master #5336
Uh oh!
There was an error while loading. Please reload this page.
Conversation
me-no-dev commented Jun 28, 2021
@valeros@ivankravets guys, toolchain has to be updated yet again :) Please think of a way that we can specify the necessary version in the pltformio build files. Toolchains are very much version dependent now. |
Jason2866 commented Jun 28, 2021
@me-no-dev platformio could support directly the toolchains from espressif github (for testing stage version) if the would include a package.json. |
me-no-dev commented Jun 29, 2021
@Jason2866 thanks for reminding me about this :) but it's not that straightforward to implement it on our end, because it's not us packing and compiling the toolchain. Files and binaries are signed and should not be unpacked and repacked by us (also makes little sense), but I will ask my colleagues to implement this for future versions. Is there a clear tutorial on what needs to be added? What should that json contain? |
Jason2866 commented Jun 29, 2021 • edited
Loading Uh oh!
There was an error while loading. Please reload this page.
edited
Uh oh!
There was an error while loading. Please reload this page.
@me-no-dev thx for talking to your colleagues about this. I opened a features request a while ago for this and it was closed. I think i couldnt explain the needs why clearly enough. |
me-no-dev commented Jun 29, 2021
thanks @Jason2866 :) @valeros, @ivankravets could you please clarify what would be the proper values for ESP32x toolchains? {"description": "xtensa-gcc",//what would be the value for each ESP32 chip? C3 is RISCV"name": "toolchain-xtensa",//goes with the one above"system": [ "windows_amd64" ],//what are the options here?"url": "https://github.com/espressif/crosstool-NG", "version": "5.100300.210606"//how should we format the version? } |
ivankravets commented Jun 29, 2021
Hi there,
It could potentially work for a "framework" type of package which is platform agnostic but will not work for a toolchain that should be precompiled for different architectures.
You can keep official packages without PlatformIO Trusted Package Registry is a paid product for enterprises and is a part of our business model. We will contact the Espressif company and you will be able to publish packages directly from |
Jason2866 commented Jun 29, 2021
@ivankravets imho best way to publish directly from espressif to platformio registry |
Jason2866 commented Jun 29, 2021
For completness: Example package.json for the "old" riscv toolchain for platform |
igrr commented Jun 29, 2021
@me-no-dev I'll take a look at the linker error, it is unexpected. I think the underlying issue is that CI in this repository relies on feature/idf-master branch of https://github.com/platformio/platform-espressif32 (
What do you think about updating to the tip of release/v4.3 IDF branch rather than master at this point? That should work with platformio's feature/idf-v4.3 branch here: https://github.com/platformio/platform-espressif32/tree/feature/idf-v4.3. Or is there something from IDF master branch that is necessary that is not present on release/v4.3? |
me-no-dev commented Jun 29, 2021
@igrr in all cases it will not fix the issue next time the toolchain needs to be updated (previous IDF versions get updates also). To switch to 4.3 will require unknown amount of changes here and in the lib builder, which is far more than updating the toolchain. I think the greater goal would be to somehow automate toolchain update and note the required version in the PIO build scripts. Sticking to 4.4 will also allow seamless addition of S3 support. |
me-no-dev commented Jun 29, 2021
@ivankravets I had a look at the PIO TPR and it seems that it's a storage solution. We do not need storage, our toolchains are available online already. Maybe I am not getting something? |
ivankravets commented Jun 29, 2021
@me-no-dev PlatformIO does not support untrusted package sources or 3rd party archives. It strictly works only with PlatformIO Trusted Package Registry where we guarantee package authenticity. Enterprises manage their packages in our registry and keep control of package distribution. We already contacted the Espressif company and you will receive full control of already published Espressif packages soon. |
me-no-dev commented Jun 29, 2021
@ivankravets this is PR CI build. It is not merged changes. If I am not able to specify the toolchain in the build files, but add the new version to your TPR, wouldn't that mean that all dev channel users will get that new version? Even though changes are not merged? Maybe we could specify toolchain path on the command line? But really the best case would be to be able to just specify the version in the build script :) |
Jason2866 commented Jun 29, 2021 • edited
Loading Uh oh!
There was an error while loading. Please reload this page.
edited
Uh oh!
There was an error while loading. Please reload this page.
If the build chain is uploaded in platformio registry everyone can use it from platformio by specifying with the owner/version number. Uploading a package to registry is not depending on "something". So i think you can specify with small changes in your build script the toolchain you want / need. |
me-no-dev commented Jun 29, 2021
@Jason2866 what would b the default toolchain if not specified? |
me-no-dev commented Jun 30, 2021
thanks for the extensive explanation @Jason2866 I'm starting to get things now. Let's say that we fork {"name": "arduinoespressif32", "title": "Espressif 32", "description": "Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications.", "homepage": "https://espressif.com/", "license": "Apache-2.0", "keywords": [ "dev-platform", "Wi-Fi", "Bluetooth", "Xtensa", "LX6", "riscv" ], "engines":{"platformio": "^5" }, "repository":{"type": "git", "url": "https://github.com/espressif/platform-arduinoespressif32.git" }, "version": "3.2.0", "frameworks":{"arduino":{"package": "framework-arduinoespressif32", "script": "builder/frameworks/arduino.py" } }, "packages":{"toolchain-riscv32":{"type": "toolchain", "optional": true, "owner": "espressif", "version": "~1.80400.1234" }, "toolchain-xtensa32":{"type": "toolchain", "optional": true, "owner": "espressif", "version": "~2.80400.1234" }, "toolchain-xtensa32s2":{"type": "toolchain", "optional": true, "owner": "espressif", "version": "~1.80400.1234" }, "framework-arduinoespressif32":{"type": "framework", "optional": true, "owner": "espressif", "version": "https://github.com/espressif/arduino-esp32.git" }, "tool-esptoolpy":{"type": "uploader", "owner": "platformio", "version": "~1.30100.0" }, "tool-mkspiffs":{"type": "uploader", "optional": true, "owner": "platformio", "version": "~2.230.0" } } }With that anyone can build projects with the following example config: [env:esp32dev]platform = https://github.com/espressif/platform-arduinoespressif32.git framework = arduino board = esp32dev monitor_speed = 115200Then let's say that we have a branch called
@Jason2866 does that sound any good? |
Jason2866 commented Jun 30, 2021 • edited
Loading Uh oh!
There was an error while loading. Please reload this page.
edited
Uh oh!
There was an error while loading. Please reload this page.
@me-no-dev great you are considering to do a complete working platfomio setup!
No, only the valid
Always needed / correct
Correct too, to do in your forked and namend branch of
100% correct
100% correct too
Only needed when changes in toolchain or needed tools referenced in
Yes, sounds good. If you try one time you will see it is easier than then whole explanations :-)
Yes, this is possible (and that what i suggested before) WHEN in this tarball is a valid |
Jason2866 commented Jun 30, 2021
The default toolchain is the referenced one in |
ivankravets commented Jul 1, 2021
@me-no-dev you don't need to fork the original ESP32 dev-platform for PlatformIO. The steps are very simple:
P.S: We are in progress with creating |
Jason2866 commented Jul 14, 2021
@ivankravets@me-no-dev Any news? We would like to use the new toolchains with Platformio. |
Jason2866 commented Jul 15, 2021
Thx @me-no-dev@ivankravets@valeros |
…5404) Until this commit, Kconfig options (e.g. CONFIG_TINYUSB_ENABLED) were used in conditions preceding idf_component_register to determine which components need to be added to `arduino` component requirements. However the Kconfig options aren't known at the early expansion stage, when the component CMakeLists.txt files are expanded the first time and requirements are evaluated. So all the conditions evaluated as if the options were not set. This commit changes the logic to only add these components as dependencies when the Kconfig options are known. Dependencies become "weak", which means that if one of the components isn't included into the build for some reason, it is not added as a dependency. This may happen, for example, if the component is not present in the `components` directory or is excluded by setting `COMPONENTS` variable in the project CMakeLists.txt file. This also ensures that if the component is not present, it will not be added as a dependency, and this will allow the build to proceed. Follow-up to #5391. Closes#5319.
* Update PlatformIO CI build script - Switch to the latest toolchains 8.4.0 for ESP32, ESP32S2, ESP32C3 - Use PlatformIO from master branch for better robustness * Update package.json for PlatformIO
esp-dsp: master 801c6dd
esp-face: master 420fc7e
esp-rainmaker: f1b82c7
esp32-camera: master 7c5d8b2
esp_littlefs: master b58f00c