View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0004874 | DarkRadiant | Compilation/Build | public | 26.07.2018 07:02 | 08.11.2020 18:41 |
Reporter | coldtobi | Assigned To | greebo | ||
Priority | normal | Severity | normal | Reproducibility | N/A |
Status | closed | Resolution | fixed | ||
Platform | Linux | OS | Debian | ||
Product Version | 2.6.0 | ||||
Target Version | 2.7.0 | Fixed in Version | 2.7.0 | ||
Summary | 0004874: Compile error with gcc-7 (and gcc-8) | ||||
Description | Reported in Debian as bug #897734, https://bugs.debian.org/897734 - see there for the complete thread. I'm not sure if the patch provided at the Debian BTS is suitable for you, I did not test if that breaks earlier gcc versions but I guess that is likely; I'll attach it nevertheless. Summary / Analysis copied from the Debian BTS: In the new libstdc++-8-dev, the standard header <filesystem> from C++17 is available, whereas earlier libstdc++'s only had <experimental/filesystem>. DarkRadiant's build system thinks it can use either the <filesystem> or <experimental/filesystem> header, but only the experimental version will work because of two reasons: 1) to use <filesystem>, g++ requires -std=c++17 or gnu++17, which the build system doesn't set 2) the headers actually have different APIs (e.g. there is add_perms in [1], but not in [2]) | ||||
Tags | No tags attached. | ||||
Attached Files | 03_c++17_filesystem.patch (1,262 bytes)
Description: Resolve FTBFS with GCC 8 We can't use the regular C++17 <filesystem> header, because the code is written against the pre-C++17 header <experimental/filesystem>. Author: Juhani Numminen <juhaninumminen0@gmail.com> Bug-Debian: https://bugs.debian.org/897734 Last-Update: 2018-05-24 --- a/configure.ac +++ b/configure.ac @@ -159,15 +159,6 @@ # By default, we rely on boost.filesystem, unless we have the C++17 libs use_boost_filesystem=yes -# Check for the regular C++17 <filesystem> header -AC_CHECK_HEADER([filesystem], [found_std_filesystem=yes], [found_std_filesystem=no]) - -# if no <filesystem> is present, check for the pre-C++17 header <experimental/filesystem> -if test "$found_std_filesystem" = "yes" -then - AC_DEFINE([HAVE_STD_FILESYSTEM], [1], [Define this to indicate that the <filesystem> header is available for inclusion.]) - use_boost_filesystem=no -else AC_CHECK_HEADER([experimental/filesystem], [found_experimental_filesystem=yes], [found_experimental_filesystem=no]) if test "$found_experimental_filesystem" = "yes" @@ -176,7 +167,6 @@ header is available for inclusion.]) use_boost_filesystem=no fi -fi FILESYSTEM_LIBS='' | ||||
I'll try to make this compatible with GCC-8 | |
With commit 5e40dc70 (plus predecessors) I adjusted the ./configure script to detect a C++17-compliant compiler. This automake macro automatically provides the --std=c++17 flag to GCC if it has to. Plus, I added the correct C++17 call to std::filesystem::permissions. I successfully tested this revision both in Windows and Debian Testing, so I'll set this issue to resolved. Thanks for the thorough investigation and report! |
|
Date Modified | Username | Field | Change |
---|---|---|---|
26.07.2018 07:02 | coldtobi | New Issue | |
26.07.2018 07:02 | coldtobi | File Added: 03_c++17_filesystem.patch | |
21.08.2018 17:44 | greebo | Status | new => acknowledged |
28.08.2018 13:24 | greebo | Note Added: 0010743 | |
28.08.2018 13:24 | greebo | Status | acknowledged => confirmed |
31.08.2018 10:00 | greebo | Assigned To | => greebo |
31.08.2018 10:00 | greebo | Status | confirmed => assigned |
31.08.2018 10:04 | greebo | Note Added: 0010744 | |
31.08.2018 10:04 | greebo | Status | assigned => resolved |
31.08.2018 10:04 | greebo | Fixed in Version | => 2.7.0 |
31.08.2018 10:04 | greebo | Resolution | open => fixed |
31.08.2018 10:04 | greebo | Target Version | => 2.7.0 |
10.09.2018 06:31 | greebo | Description Updated | |
08.11.2020 18:41 | greebo | Status | resolved => closed |