Compilation failure of cpr 1.12.0 on aarch64
Description
Since updating to 1.12.0, we got a build failure on aarch64 (arm):
../subprojects/cpr-1.12.0/include/cpr/session.h:55:7: error: type ‘struct Session’ violates the C++ One Definition Rule [-Werror=odr]
55 | class Session : public std::enable_shared_from_this<Session> {
| ^
../subprojects/cpr-1.12.0/include/cpr/session.h:55:7: note: a different type is defined in another translation unit
55 | class Session : public std::enable_shared_from_this<Session> {
| ^
../subprojects/cpr-1.12.0/include/cpr/session.h:255:13: note: the first difference of corresponding definitions is field ‘content_’
255 | Content content_{std::monostate{}};
| ^
../subprojects/cpr-1.12.0/include/cpr/session.h:255:13: note: a field of same name but different type is defined in another translation unit
255 | Content content_{std::monostate{}};
| ^
../subprojects/cpr-1.12.0/include/cpr/session.h:55:7: note: type ‘struct Content’ itself violates the C++ One Definition Rule
55 | class Session : public std::enable_shared_from_this<Session> {
| ^
This does not happen on x86.
Example/How to Reproduce
- Get access to an arm machine
git clone https://gitlab.desy.de/constellation/constellation.git && cd constellationmeson setup build -Dsatellite_mattermost=truemeson compile -C build
Possible Fix
No response
Where did you get it from?
Other (specify in "Additional Context/Your Environment")
Additional Context/Your Environment
- OS: Flatpak runtime (Linux) on aarch64
- Version: 1.12.0 (via Meson WrapDB)
- Build log: https://github.com/flathub-infra/vorarbeiter/actions/runs/18342359596/job/52240744126
This only seems to happen using static libraries, so this might as well be a bug in the Meson build files, investigating
@stephanlachnit thanks for reporting! I can not reproduce this in my flatpak aarch64 build here: https://github.com/COM8/aps-ui/pull/1
Not sure if you can the the CI log, but the flatpak itself builds with cpr1.12.0.
I will also try starting a static build to see what happens.
Logs for shared build which do not fail: https://github.com/flathub-infra/vorarbeiter/actions/runs/18372505318/job/52338896935
What I don't get is that all of the types that Content can be are just assembled from the standard library and do not sit behind any flags, so I don't get how this can cause a violation of ODR