cpr icon indicating copy to clipboard operation
cpr copied to clipboard

Compilation failure of cpr 1.12.0 on aarch64

Open stephanlachnit opened this issue 3 months ago • 4 comments

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

  1. Get access to an arm machine
  2. git clone https://gitlab.desy.de/constellation/constellation.git && cd constellation
  3. meson setup build -Dsatellite_mattermost=true
  4. meson 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

stephanlachnit avatar Oct 08 '25 11:10 stephanlachnit

This only seems to happen using static libraries, so this might as well be a bug in the Meson build files, investigating

stephanlachnit avatar Oct 09 '25 10:10 stephanlachnit

@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.

COM8 avatar Oct 09 '25 10:10 COM8

Logs for shared build which do not fail: https://github.com/flathub-infra/vorarbeiter/actions/runs/18372505318/job/52338896935

stephanlachnit avatar Oct 09 '25 10:10 stephanlachnit

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

stephanlachnit avatar Oct 09 '25 10:10 stephanlachnit