Conversation
6a08af0 to
678674c
Compare
|
The Rocky Linux build is also broken in The Ubuntu build runs into a false positive warning. @stv0g Could we disable |
|
I would be okay with this. |
|
Any change we can keep compatibility with C++17 for compilation on OPAL-RT targets? Also see my recent PR for the std::filesystem replacement. |
|
The main features of C++20 I'm interested in are:
The concept and template-related features are nice for generic code but also mostly cause better compile-time validation and more useful error messages. |
|
I'd also like to use the new features of C++20. So kets find a way we can make this work with the OPAL-RT targets. The OPAL-RTLinux OS ships with a GCC v8.3 if I am not mistaken. Hence we either need to install another more recent toolchain or use Nix to build everything. Ideally, I would like to build everything with Nix. However there some local dependencies (headers and static libraries on which we rely. Do you know a way to package those local files into a Nix derivation? There is |
|
I think |
|
There exists a single The user can then provide the file, and add it to the store manually: nix-store --add-fixed sha256 rtlab-XXXX.rpmThat way we would still guarantee purity as the hash of the |
|
Shouldn't we keep a CI target that tests C++17 compatibility, or do you want to drop this? If yes, we would need to ask all users to test this on their setups, no? I don't think the advantages merit breaking some people's setups. |
|
C++20 support was introduced in GCC versions 9 to 11. GCC 11 is almost feature-complete with some exceptions regarding C++ modules. https://gcc.gnu.org/projects/cxx-status.html#cxx20 GCC 11 was first featured in Debian Bullseye, released in 2021 and for Rocky Linux 9 in 2022. So C++20 support has been in our slowest moving supported distros for more than 3 years now. Debian Buster which didn't feature all of C++20 is more than a year beyond its LTS EOL. I think it's pretty safe to assume that systems older than that will probably have issues beyond villas-node compilation when compiling recent software and some of our dependencies. We are targeting Linux, not some embedded devices with custom toolchains stuck on an old compiler version. If you still insist on installing villas node on an old probably EOL system, you'll have to build a more recent toolchain first and then compile VILLASnode using that. |
|
I agree with @pjungkamp on this. For the OPAL-RT targets, I figured out a way to work around the older compiler by using nix. Installing a separate tool chain should probably work there as well. |
|
@pjungkamp Could you approve #954? After this we rebase this one to fix the RockyLinux build error. |
|
So just to make sure: You want to drop C++17 support? Let's then change the title of the PR to make it more obvious. Have you checked if we need to change anything in the documentation? |
Signed-off-by: Philipp Jungkamp <philipp.jungkamp@rwth-aachen.de>
Signed-off-by: Philipp Jungkamp <philipp.jungkamp@rwth-aachen.de>
Signed-off-by: Philipp Jungkamp <philipp.jungkamp@rwth-aachen.de>
…nd rocky Signed-off-by: Philipp Jungkamp <philipp.jungkamp@rwth-aachen.de>
Well, we are actually targeting some embedded device with a custom toolchain stuck on an old compiler: MIOB It's based on Yocto Gatesgarth that uses clang 11.1/gcc 10.2. |
constevalconsteval
Signed-off-by: Philipp Jungkamp <philipp.jungkamp@rwth-aachen.de>
Signed-off-by: Philipp Jungkamp <philipp.jungkamp@rwth-aachen.de>
Signed-off-by: Philipp Jungkamp <philipp.jungkamp@rwth-aachen.de>
Yocto 3.2 (Gatesgarth) has been EOL for 4 years now, it was already EOL when you pushed the initial Yocto layer in 2022. The oldest non-EOL Yocto is 4.0 LTS (kirkstone) which ships with GCC 11. Is there anyone maintaining MIOB? Are you updating VILLASnode and nothing else?
The OPAL-RT targets were addressed by @stv0g and the current (non-legacy) Raspberry Pi OS supporting all Raspberry Pis is based on Debian Bookworm and thus includes GCC 11. |
|
We cannot update to a newer Yocto release because the Yocto version is tied to the Vivado version of the project and Xilinx makes it near impossible to migrate a project to a new version. But I think GCC 10.2 also supports most C++ 20 features, so maybe we still can drop C++17 support. I would like to have a CI test for GCC 10.2 though. Unfortunately, the MIOB SDK does not seem to be up to date... Also Raspbian Legacy uses bulleye, which also uses GCC 10.2. I'm not sure if anyone is using the legacy version - I would hope not - but sounds like there are some hardware incompatibilties with bookworm. |
|
@n-eiling I wanted to check out MIOB to get a better understanding. Is there any documentation on how to build the Yocto image? I've been staring at the repo for a while now, but I can't figure out how. |
|
here are some hints: https://docs.yoctoproject.org/gatesgarth/brief-yoctoprojectqs/brief-yoctoprojectqs.html Thinking about it, it's probably not feasible to run yocto in the CI, as it requires too much time and disk space. Using the SDK may be possible, but I haven't tried building VILLASnode with it before. |
|
Do we have some documentation on how to build the Yocto / Petalinux image? I would argue that we need some minimal documentation to build a system image in order to provide support for those platforms. CI would be ideal, but I can understand that this might be too demanding. In this state, I am suspecting that the build is probably already long broken and putting more effort in maintaining it isn't worth it. |
|
Well, it worked in February. There haven't been major changes to the code related to FPGAs and the CI runs using C++17, so I don't see any reason it should not still work. I think just because we did a bad job keeping compatibility in the past should not be a reason to now break stuff, or do you disagree? I think for any breaking change we should make sure
I think this PR fulfills 3. As I said, I'm not sure about 2. (depends on the state of MIOB and the use of Raspbian Legacy). I don't think this PR fulfills 1. Just my two cents. Feel free to ignore if you don't share my desire for more long-term stability. |
|
Hi @n-eiling,
Could you please provide some instructions for testing your use case? Otherwise we will have a very hard time actually ensuring this. |
|
I mean, I'm not using MIOB anymore and I have no way of testing on a MIOB. Thats why I tagged @fuentesgrau. There are instructions on the yocto website on how to build a yocto distribution. If anyone at ACS could just rebuild and upload the latest SDK it should also be easy to just use that for a CI. I'd be willing to set the CI up. |
|
I've now merged this change, as I dont want to further slow-down @pjungkamp progress on his refactoring and cleanup work, which I value higher than the support of older Yocto versions. I am supportive an adding Yocto support again, if we see the interest of any of the users (@fuentesgrau). |
This is based on and includes #955.