Subject: bug#30756: gcc7 doesn't find stdlib.h

From: [email-masked] (Ludovic Courtès)
Date: Mon, 07 May 2018 12:12:19 +0200

Giel van Schijndel <[email-masked]> skribis:

> On 04-05-18 14:43, Ludovic Courtès wrote:
>> Hi,
>>
>> Giel van Schijndel <[email-masked]> skribis:
>>
>>> On 09-03-18 13:42, Ludovic Courtès wrote:
>>>> julien lepiller <[email-masked]> skribis:
>>>>
>>>>> I'm trying to build a software that requires gcc>=7.2. Unfortunately,
>>>>> the process crashes and ends with:
>>>>>
>>>>> /gnu/store/a4vwdk8r6p6l2mnffz4yaqlr1z6z6w3r-gcc-7.3.0/include/c++/cstdlib:75:15:
>>>>> fatal error: stdlib.h: No such file or directory.
>>>> On IRC Marius mentioned this bug report:
>>>>
>>>>   https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70129#c3
>>>>
>>>> Note that we use C_INCLUDE_PATH, which is equivalent to ‘-isystem’.
>>> This is biting me too for a C++17 project I'm trying to build.
>> Marius, do you have a link to the exact change in GCC that caused this
>> regression?
>>
>> I find it hard to believe that a fix would necessarily “slow everything
>> down”, as Jakub put it in the report above.
>>
>> Also it seems clear that in Guix we’ll want a solution that’s not
>> CMake-specific.
>
> Obviously, I wasn't suggesting that. I was just suggesting a similar
> approach.
>
>> Giel, does the patch below work for you?
>
> No, just by itself it doesn't. It does add 'CPATH', but doesn't drop
> 'C_INCLUDE_PATH' and 'CPLUS_INCLUDE_PATH'. With this added to my package
> preprocessing succeeds:
>
>>           (add-before 'configure 'fixgcc7
>>             (lambda _
>>               (unsetenv "C_INCLUDE_PATH")
>>               (unsetenv "CPLUS_INCLUDE_PATH")))

I pushed the patch as a stop-gap measure in
91a56b4ab5e714e230c0088fb9f5ce0519efe1a0.

Ludo’.