gnustep-base failed to build from source in Fedora rawhide/f34 https://koji.fedoraproject.org/koji/taskinfo?taskID=60912816 For details on the mass rebuild see: https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild Please fix gnustep-base at your earliest convenience and set the bug's status to ASSIGNED when you start fixing it. If the bug remains in NEW state for 8 weeks, gnustep-base will be orphaned. Before branching of Fedora 35, gnustep-base will be retired, if it still fails to build. For more details on the FTBFS policy, please visit: https://docs.fedoraproject.org/en-US/fesco/Fails_to_build_from_source_Fails_to_install/
Created attachment 1753722 [details] build.log file build.log too big, will only attach last 32768 bytes
Created attachment 1753723 [details] root.log file root.log too big, will only attach last 32768 bytes
Created attachment 1753724 [details] state.log
This bug appears to have been reported against 'rawhide' during the Fedora 34 development cycle. Changing version to 34.
Dear Maintainer, your package has an open Fails To Build From Source bug for Fedora 34. Action is required from you. If you can fix your package to build, perform a build in koji, and either create an update in bodhi, or close this bug without creating an update, if updating is not appropriate [1]. If you are working on a fix, set the status to ASSIGNED to acknowledge this. If you have already fixed this issue, please close this Bugzilla report. Following the policy for such packages [2], your package will be orphaned if this bug remains in NEW state more than 8 weeks (not sooner than 2021-03-29). A week before the mass branching of Fedora 35 according to the schedule [3], any packages not successfully rebuilt at least on Fedora 33 will be retired regardless of the status of this bug. [1] https://docs.fedoraproject.org/en-US/fesco/Updates_Policy/ [2] https://docs.fedoraproject.org/en-US/fesco/Fails_to_build_from_source_Fails_to_install/ [3] https://fedorapeople.org/groups/schedule/f-35/f-35-key-tasks.html
Just an FYI here. It looks like LTO is at least a triggering event. gnustep-make creates /usr/lib64/GNUstep/Makefiles/config.make which turns on -flto -ffat-lto-objects If I remove -flto -ffat-lto-objects from that file I get a clean build. That may in fact be an indicator of a GCC bug. But it's also the case that the LTO flags are supposed to be filtered out for scenarios like this (extension builders). You may want to look at python and other packages that have similar models (where one package stores compile-time flags for use by another package). There is a standard way that flags are supposed to be filtered for that scenario.
Actually, I think I can conclude LTO is doing the right thing here. The symbol in question is definitely multiply-defined. ./Additions/obj/Additions.obj/GSInsensitiveDictionary.m.o:00000000 D __objc_class_name__GSMutableInsensitiveDictionary ./Additions/obj/subproject.o:00000000 D __objc_class_name__GSMutableInsensitiveDictionary This is a package issue, not a compiler issue.
(In reply to Jeff Law from comment #8) > Actually, I think I can conclude LTO is doing the right thing here. The > symbol in question is definitely multiply-defined. > > ./Additions/obj/Additions.obj/GSInsensitiveDictionary.m.o:00000000 D > __objc_class_name__GSMutableInsensitiveDictionary > ./Additions/obj/subproject.o:00000000 D > __objc_class_name__GSMutableInsensitiveDictionary > > > This is a package issue, not a compiler issue. Thank you Jeff. I don't know how to pass -fcommon flag to the compiler. Would you co-maintain gnustep-* packages?
Sorry, I don't have the time or interest to maintain any gnustep-* packages. Rather than using -fcommon it would be better to fix the source so as not to create a common variable in the first place. For C/C++ that usually means taking the tentative definition out of a header file and ensuring there is one and only one real definition in a .c/.C file. Objective-C may be close enough in behavior that you'd want to make a similar change. Alternatively, if you want to add -fcommon, the usual way is to define _legacy_common_support to 1 in the .spec file. But with this package extracting compile-time flags from gnustep-make, that may not work. I simply don't know.
This package is now compiled in Fedora 34+ When 'LTO flags' + '-fno-common' are inoculated by gnustep-make package, then GCC linker fails with following error: Error: symbol `__objc_class_ref__GSMutableInsensitiveDictionary.lto_priv.1' so 'LTO flags' + '-fno-common' are excluded in 'gnustep-make' buildings. See upstream ticket: https://github.com/gnustep/libs-base/issues/172
This bug appears to have been reported against 'rawhide' during the Fedora 35 development cycle. Changing version to 35.
This message is a reminder that Fedora Linux 35 is nearing its end of life. Fedora will stop maintaining and issuing updates for Fedora Linux 35 on 2022-12-13. It is Fedora's policy to close all bug reports from releases that are no longer maintained. At that time this bug will be closed as EOL if it remains open with a 'version' of '35'. Package Maintainer: If you wish for this bug to remain open because you plan to fix it in a currently maintained version, change the 'version' to a later Fedora Linux version. Thank you for reporting this issue and we are sorry that we were not able to fix it before Fedora Linux 35 is end of life. If you would still like to see this bug fixed and are able to reproduce it against a later version of Fedora Linux, you are encouraged to change the 'version' to a later version prior to this bug being closed.
Fedora Linux 35 entered end-of-life (EOL) status on 2022-12-13. Fedora Linux 35 is no longer maintained, which means that it will not receive any further security or bug fix updates. As a result we are closing this bug. If you can reproduce this bug against a currently maintained version of Fedora Linux please feel free to reopen this bug against that version. Note that the version field may be hidden. Click the "Show advanced fields" button if you do not see the version field. If you are unable to reopen this bug, please file a new report against an active release. Thank you for reporting this bug and we are sorry it could not be fixed.