Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 917095

Summary: media-sound/ardour-7.5-r3 fails to compile (lto): file_archive.h:35:18: error: type ‘struct FileArchive’ violates the C++ One Definition Rule [-Werror=odr]
Product: Gentoo Linux Reporter: ppw0
Component: Current packagesAssignee: Professional Audio Applications Maintainers <proaudio>
Status: RESOLVED FIXED    
Severity: normal    
Priority: Normal    
Version: unspecified   
Hardware: All   
OS: Linux   
See Also: https://tracker.ardour.org/view.php?id=9649
Whiteboard:
Package list:
Runtime testing required: ---
Bug Depends on:    
Bug Blocks: 618550    
Attachments: build log
emerge --info

Description ppw0 2023-11-09 22:23:45 UTC
Created attachment 874391 [details]
build log

In a stricter lto environment, media-sound/ardour-7.5-r3 will fail to compile with the following errors:

```
../libs/pbd/pbd/file_archive.h:35:18: error: type ‘struct FileArchive’ violates the C++ One Definition Rule [-Werror=odr]
   35 | class LIBPBD_API FileArchive
      |                  ^
../libs/pbd/pbd/file_archive.h:35:18: note: a different type is defined in another translation unit
   35 | class LIBPBD_API FileArchive
      |                  ^
../libs/pbd/pbd/file_archive.h:167:39: note: the first difference of corresponding definitions is field ‘_current_entry’
  167 |                 struct archive_entry* _current_entry;
      |                                       ^
../libs/pbd/pbd/file_archive.h:167:39: note: a field of same name but different type is defined in another translation unit
  167 |                 struct archive_entry* _current_entry;
      |                                       ^
/usr/include/archive.h:186:8: note: type name ‘archive_entry’ should match type name ‘PBD::archive_entry’
  186 | struct archive_entry;
      |        ^
../libs/pbd/pbd/file_archive.h:167:24: note: the incompatible type is defined here
  167 |                 struct archive_entry* _current_entry;
      |                        ^
lto1: some warnings being treated as errors
lto-wrapper: fatal error: x86_64-pc-linux-gnu-g++ returned 1 exit status
compilation terminated.
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: error: lto-wrapper failed
collect2: error: ld returned 1 exit status

Waf: Leaving directory `/var/tmp/portage/media-sound/ardour-7.5-r3/work/Ardour-7.5.0/build'
Build failed
```

Attaching logs.
Comment 1 ppw0 2023-11-09 22:24:41 UTC
Created attachment 874392 [details]
emerge --info
Comment 2 Larry the Git Cow gentoo-dev 2024-02-29 00:51:38 UTC
The bug has been closed via the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=38655534205d0c3d6ffe696d134c88afb6e01603

commit 38655534205d0c3d6ffe696d134c88afb6e01603
Author:     Eli Schwartz <eschwartz93@gmail.com>
AuthorDate: 2024-02-29 00:46:59 +0000
Commit:     Sam James <sam@gentoo.org>
CommitDate: 2024-02-29 00:51:16 +0000

    media-sound/ardour: mark as LTO-unsafe
    
    See https://tracker.ardour.org/view.php?id=9649 for details.
    
    Closes: https://bugs.gentoo.org/917095
    Signed-off-by: Eli Schwartz <eschwartz93@gmail.com>
    Signed-off-by: Sam James <sam@gentoo.org>

 media-sound/ardour/ardour-8.4.ebuild  | 5 +++++
 media-sound/ardour/ardour-9999.ebuild | 5 +++++
 2 files changed, 10 insertions(+)