-
Notifications
You must be signed in to change notification settings - Fork 7.6k
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
IDF master #5336
Conversation
@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. |
@me-no-dev platformio could support directly the toolchains from espressif github (for testing stage version) if the would include a package.json. |
@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? |
@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. |
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?
} |
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 |
@ivankravets imho best way to publish directly from espressif to platformio registry |
For completness: Example package.json for the "old" riscv toolchain for platform
|
@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? |
@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. |
@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? |
@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. |
@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 :) |
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. |
@Jason2866 what would b the default toolchain if not specified? |
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 = 115200 Then let's say that we have a branch called
@Jason2866 does that sound any good? |
@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 |
The default toolchain is the referenced one in |
@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 |
@ivankravets @me-no-dev Any news? We would like to use the new toolchains with Platformio. |
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