-
Notifications
You must be signed in to change notification settings - Fork 6.9k
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
GNU Arm Embedded toolchain deprecation #43843
Comments
cc @nashif |
I don't think this makes sense, there is a still a large install base, silicon vendors shipping GNU ARM embedded, etc. I don't think we should remove any "endorsements" or such for it. Should possible bring this up for TSC discussion. |
As far as I am aware, the only reason we were recommending/endorsing the GNU Arm Embedded toolchain until now was that it was available on all three major operating systems (Linux, macOS and Windows) whereas the Zephyr SDK was not -- we had no option but to recommend it for non-Linux users, but that is no longer the case with the new SDK. GNU Arm Embedded is a GNU toolchain distribution, so is the Zephyr SDK but with the custom features to better support Zephyr. With the Zephyr SDK available on all three OSes, there is really no reason to use the GNU Arm Embedded anymore. Also as we start introducing more Zephyr-specific features to the toolchains (zephyrproject-rtos/sdk-ng#350), the users of the GNU Arm Embedded toolchain will not be able to take advantage of the features that would have been available if they were using the Zephyr SDK toolchains. In that sense, it only makes sense to start deprecating third-party GNU toolchain distributions such as the GNU Arm Embedded. p.s. as I noted above, "we are not declaring the GNU Arm Embedded toolchain to be unsupported at this time." The proposal is to no longer endorse/recommend it, and to direct its users towards the Zephyr SDK. |
where ?
but I don't consider this an endorsement, cause it's just an example of a
When making such statement, could you please provide some links to places in the docs where we endorse GNU Arm Embedded ?
Again, where do we do this ? Let's keep the text here neutral, which I already think it is. and then update this part:
by simply removing the Linux system part. Also this can be updated with Zephyr SDK as a possibility on all OS'es. |
Saying something is a "safe bet" sounds like an implied endorsement to me.
I am suggesting to do that where GNU Arm Embedded is mentioned, so I am not sure what you mean by "where do we do this?"
already done in #43008 |
deprecation is a bit too strong and the title of this issue is misleading. only difference now, you do not have to use this toolchain or any other toolchain when build on mac and windows. So the result of all of this should be just a tweak to the documentation where applicable, but not "deprecation". |
I am not suggesting to deprecate third-party non-GNU toolchains such as Arm Compiler, ARC MetaWare, IAR, etc. What I am suggesting is to discourage people from using (i.e. deprecate) the third-party provided GNU toolchains such as the GNU Arm Embedded, ESP-IDF GNU Toolchain, etc. that offer no real benefits over the Zephyr SDK GNU toolchains, and instead recommend people to use the Zephyr SDK whenever possible. The third-party GNU toolchains, including the GNU Arm Embedded toolchain in the foreseeable future, have the configurations and/or patches that are different to/may be incompatible with the Zephyr, leading to various build and run-time issues -- this eventually leads to bad developer experience. The GNU Arm Embedded toolchain has not had major incompatibility issues until now because the Zephyr SDK tried to align with the GNU Arm Embedded as much as possible; but, that is no longer going to be possible as we start implementing more features like those described in zephyrproject-rtos/sdk-ng#350. The ESP-IDF GNU Toolchain is a good example -- it has different patches and build configurations to the Zephyr SDK GNU Toolchains leading to various incompatibilities and build issues: #33876 |
Adding the TSC label to get a better idea of the usage of GCC-based, 3rd-party non-commercial toolchains among the vendors. |
FYI, in case of the ESP-IDF GNU toolchain, we have added the ESP32 support in the Zephyr SDK to replace the ESP-IDF GNU toolchain so that users are no longer greeted by the build failures and broken C/C++ features. Although that is currently not the case for the GNU Arm Embedded, as we start implementing zephyrproject-rtos/sdk-ng#350 in order to support more advanced C/C++ features, we will need to start telling its users "if you want to use this feature, you must use the Zephyr SDK," in which case we might as well just tell them to use the Zephyr SDK in the first place, unless they have a very good reason not to, and avoid using the GNU Arm Embedded. Note that the features described in zephyrproject-rtos/sdk-ng#350 require Zephyr-specific toolchain-level modifications and cannot be supported on third-party GNU toolchains, unless they specifically build their toolchains targeting Zephyr (i.e. |
where in the current documentation this toolchain is being endorsed? |
@nashif See below:
Also, we have been directing many non-Linux users towards the GNU Arm Embedded toolchain on Discord (Slack) and other communication channels. We should be telling users to use the Zephyr SDK now. |
I do not see any endorsements in there, this toolchain is just being listed as a 3rd party among many others.
Also not an endorsement. the documentation is for windows, so this could be changed to point to the zephyr SDK if we adapt the instructions and verify that all works
With the new SDK, let's not default to anything else. The changes above do not count as deprecation, we just tweak our docs for the new reality of having a multi platform SDK, if someone wants to use other compilers, they should still be able to do that just like before. |
I should have stated "implied endorsements" or just "recommendations" (why would anybody pick one thing out of many things if they were not recommending/endorsing it in some way?) And, regardless of the wording in the documentation, as a matter of fact, we have been recommending the GNU Arm Embedded for non-Linux users who are building for ARM targets.
Yes, that is the no. 1 of the proposed changes above.
Yes, as I pointed out multiple times above, I am not suggesting to stop supporting any of the existing toolchains, including the third-party GNU toolchains. What I am proposing is to deprecate or express disapproval of the third-party provided GNU toolchains for the reasons detailed in #43843 (comment) and #43843 (comment) by means of implementing no. 2 and no. 3 of the proposed changes. |
but why? Those are toolchains that are supported for various reasons, not only to bridge the gap on windows and macOS. Why do we need to "deprecate" or change anything about those toolchains being supported by Zephyr. The text in the docs:
does not need to be changed IMO, and should remain as is, I do not think we should change anything here or talk about "deprecation". Maybe I am missing something here, maybe you should submit a PR to show how you want to do the deprecation, that would make it clearer I guess. :) |
Have you read #43843 (comment) and #43843 (comment)?
|
@stephanosio please do not take a snippet out of context.
so this is an example on how users can override what Zephyr does per default. |
This could very well be an example showing how to use Zephyr SDK from a non-standard installation path without registering in the package registry, or using a custom QEMU with the Zephyr SDK. If we really wanted to show an example of a different toolchain usage, a non-GNU toolchain like Arm Compiler or MetaWare would be a better choice. |
When we already has better mechanisms in place for handling and detecting the Zephyr SDK then I see little value is using Zephyr SDK for such example. Especially cause you don't need to set
I'm fine with changing it to a different toolchain, I see no problem in that. I'm mainly pointing out the purpose of the example, and that purpose should be kept, and I don't believe using Zephyr SDK in the example makes sense, but another toolchain could make more sense now than gnu arm embedded. |
Hi @stephanosio, This issue, marked as an RFC, was opened a while ago and did not get any traction. Please confirm the issue is correctly assigned and re-assign it otherwise. Please take a moment to review if the issue is still relevant to the project. If it is, please provide feedback and direction on how to move forward. If it is not, has already been addressed, is a duplicate, or is no longer relevant, please close it with a short comment explaining the reason. Thanks! |
Preface
GNU Arm Embedded toolchain has been a popular choice by many because most Zephyr users are developing for Arm-based SoCs and it has been the go-to toolchain for bare metal Arm development for years; in fact, the Zephyr documentation even endorses this toolchain for non-Linux users to some degree.
Now that the Zephyr SDK toolchains are available for all three major operating systems (i.e. Linux, macOS and Windows), there is no need to use a third-party provided GNU toolchain such as the GNU Arm Embedded, and the Zephyr SDK should become the default and recommended toolchain so as to ensure the best compatibility and developer experience.
Proposed change
Note that we are not declaring the GNU Arm Embedded toolchain to be unsupported at this time; we are simply no longer endorsing it, and instead recommending the Zephyr SDK for building Arm binaries on all operating systems.
Additional context
#43843 (comment)
#43843 (comment)
The text was updated successfully, but these errors were encountered: