-
-
Notifications
You must be signed in to change notification settings - Fork 55
Debian package fails to build with GCC >= 7 due to outdated caf_single
#365
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
Unless others disagree, I suggest we delete caf_single because GCC already provides its own so having one in OpenCoarrays is redundant and creates unnecessary maintenance work. @afanfa, @tob2 , and @vehre, thoughts? @amckinstry, is there a reason for choosing the OpenCoarrays caf_single library over the GCC caf_single library? If no one disagrees, then I'll close this issue and submit a pull request with the deletion. |
Perhaps a bigger question is: "Why is the build system trying to build this?" I just dug through our CMake logic pretty thoroughly, and I see no indication of it even being able to enter the @amckinstry do you have any insight into what dark magic the package manager build system might be doing to trigger this build of As long as @tob2, @vehre, @jerryd and @afanfa don't have any objections, removing this will hopefully fix the issue, although I don't understand why it's getting built in the first place. |
@rouson Ok, I'd be happy to delete caf_single. I'd built it because I thought it was necessary (hadn't tried the GCC internal version). The "dark magic" in the package build system is a local patch I have for Debian to build both shared and static versions of all libraries, rather than shipping just .a archives. Debian uses shared libraries for everything by default, to ensure that important (eg. security) bugs are fixed on an automated system upgrade. We also ship static libraries that may be of higher optimisation, but the programmer would have to deliberately choose to use them, and so hopefully understands the consequences of their actions |
The caf_single.c in OpenCoarrays is unmaintained and to my knowledge a rather old copy of the gcc one. I recommend deleting it. |
@amckinstry can you adjust the debian package build to not build this asset any longer? (i.e. don't build Also, is there anything we can do to ease your package maintainer burdens? Anything that strikes you as a build system anti pattern or just a royal PITA? Building shared libs should be doable with |
caf_single
Thanks, I've disabled using caf_single in Debian (for the next release, Stretch).
This does two things: |
Just to note, with the disabling of caf_single, the problem is fixed in Debian. Leaving this bug open until the buggy code is removed |
We're currently setting the default SOVERSION ${PROJECT_VERSION.MAJOR}.${PROJECT_VERSION.MINOR} If there is a compelling reason to use a manually incremented (i.e., 1, 2, 3, etc.) major SOVERSION then please let us know and we will adopt this convention. Otherwise, we use semantic versioning, so any major changes to the library that cause backwards incompatibilities will cause a major version bump. Off the top of my head I can't think of any other cases where we would generate an ABI incompatible binary... As a side note, compiling for GCC <= 6 will produce an ABI incompatible library with a version compiled for GCC >= 7 due to changes on the GFortran compiler side. |
The SOVERSION is ok. The SONAME needs to be set to libcaf_mpi.so.${PROJECT_VERSION.MAJOR} On GCC/GFortran version: Yes, Debian 9 (stretch) will be using GCC6 ABI; Debian 10 (buster) is expected to be gcc/gfortran 7. Just testing what needs to be fixed for this ... Over the next release (1-2 yrs) I plan to write a symbol versioning patch for OpenCoarrays. |
I was under the impression that CMake did this for you automatically... I'll have to go double check the docs |
(also, note to self and others: Let's keep this open until I've applied a version of your patch to build both static and so/dynamic libs...) |
See #365 This is part of GFortran, duplicating this is extraneous and hard to maintain.
See sourceryinstitute#365 This is part of GFortran, duplicating this is extraneous and hard to maintain.
Defect/bug report
This applies to 1.7.4+, tested today on 1.8.6 on Debian.
Builds fine on GCC 6.3.0, fails on GCC 7.
Detailed bug log:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=853586
This is in building src/single/caf_single.c where the register and deregister methods don't match the signatures in the headers.
Looking at the src/mpi/caf_mpi.c alternative there is conditional code e.g.
but no equivalent code for the caf_single version.
The text was updated successfully, but these errors were encountered: