From: Marius Bakke <mbakke@fastmail.com>
To: "Ludovic Courtès" <ludo@gnu.org>,
"Maxim Cournoyer" <maxim.cournoyer@gmail.com>
Cc: reza.housseini@gmx.ch, 30756@debbugs.gnu.org,
Reza Housseini <reza.housseini@gmail.com>
Subject: bug#30756: GCC >= 6 '-isystem' and C_INCLUDE_PATH behavior changed, breaking
Date: Mon, 03 Feb 2020 22:03:54 +0100 [thread overview]
Message-ID: <87blqfmlhh.fsf@devup.no> (raw)
In-Reply-To: <87blqg2gg5.fsf@gnu.org>
[-- Attachment #1: Type: text/plain, Size: 2082 bytes --]
Ludovic Courtès <ludo@gnu.org> writes:
> The attached patch does three things:
>
> 1. Fix the order of inputs computed by (@@ (guix build-system gnu)
> lower) so that implicit inputs come last. In particular, this
> ensures that libc headers and kernel headers come last. All user
> libraries passed as ‘inputs’ appear before libc, so they can
> #include_next a libc header.
>
> 2. Add “include/c++” to the list of directories of
> ‘CPLUS_INCLUDE_PATH’. This is a not-so-elegant hack; the main
> purpose here is to make sure the gcc/libstdc++ include directory
> appears twice in the search path, so that this chain of include
> works as expected:
>
> <cstdlib> (GCC): #include_next <stdlib.h>
> → <stdlib.h> (GCC): #include_next <stdlib.h>
> → <stdlib.h> (libc)
>
> 3. Switch back to ‘C_INCLUDE_PATH’ & co. instead of ‘CPATH’ (yay!).
>
> I’ve tested it with “guix build coreutils”, which involved building GMP
> with its C++ bindings, making it a rather good test. However, more
> testing is needed.
>
> There’s potential for breakage in all the places where we’ve manually
> fiddled with C{,PLUS}_INCLUDE_PATH. I guess we’ll have to review all of
> them.
>
> Since it fixes a rather serious issue for C/C++ developers (they’d
> rather not see warnings about system headers) but also for packaging
> (‘-Werror’ breaks for warnings that shouldn’t be there in the first
> place), I’d like to propose merging it in this ‘core-updates’ cycle.
> But let’s face it: it’ll keep us busy for a bit. :-)
>
> Thoughts?
The patch looks great to me. Love how simple your solution was. The
#include_next issue be confusing and frustrating even for seasoned Guix
developers, so I'm all for getting it in ASAP.
Can you check whether (gnu packages cross-base) can be adjusted in the
same vein? I.e. go back to CROSS_C_INCLUDE_PATH & co, and dropping the
'treat-glibc-as-system-header' phase from "cross-gcc-arguments".
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]
next prev parent reply other threads:[~2020-02-03 21:05 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-09 12:10 bug#30756: gcc7 doesn't find stdlib.h julien lepiller
2018-03-09 12:42 ` Ludovic Courtès
2018-05-04 9:46 ` Giel van Schijndel
2018-05-04 12:43 ` Ludovic Courtès
2018-05-04 14:30 ` Giel van Schijndel
2018-05-04 15:07 ` Giel van Schijndel
2018-05-04 15:28 ` Ludovic Courtès
2018-05-04 16:03 ` Giel van Schijndel
2018-05-04 16:41 ` Mark H Weaver
2018-05-04 17:14 ` Mark H Weaver
2018-05-04 20:39 ` Ludovic Courtès
2018-05-04 21:36 ` Mark H Weaver
2018-05-07 10:12 ` Ludovic Courtès
2018-05-07 23:32 ` Mark H Weaver
2018-05-08 13:21 ` Ludovic Courtès
2019-10-22 16:26 ` bug#30756: GCC >= 6 '-isystem' and C_INCLUDE_PATH behavior changed, breaking #include_next Carl Dong
2019-12-14 14:23 ` bug#30756: Use {C,CPLUS,OBJC}_INCLUDE_PATH instead of CPATH Mark Wielaard
2020-01-17 10:23 ` bug#30756: GCC >= 6 '-isystem' and C_INCLUDE_PATH behavior changed, breaking Reza Housseini
2020-01-19 21:16 ` Ludovic Courtès
2020-01-20 3:25 ` Maxim Cournoyer
2020-01-20 8:56 ` Ludovic Courtès
2020-01-22 3:04 ` Maxim Cournoyer
2020-01-23 20:45 ` Ludovic Courtès
2020-02-03 9:00 ` Ludovic Courtès
2020-02-03 21:03 ` Marius Bakke [this message]
2020-02-04 11:28 ` Ludovic Courtès
2020-02-06 17:49 ` Ludovic Courtès
2020-02-07 3:39 ` Maxim Cournoyer
2020-02-07 11:00 ` Ludovic Courtès
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87blqfmlhh.fsf@devup.no \
--to=mbakke@fastmail.com \
--cc=30756@debbugs.gnu.org \
--cc=ludo@gnu.org \
--cc=maxim.cournoyer@gmail.com \
--cc=reza.housseini@gmail.com \
--cc=reza.housseini@gmx.ch \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.