Thread overview | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
|
December 09, 2016 Installing ldc breaks gdc | ||||
---|---|---|---|---|
| ||||
Hello, everyone. So I have found that installing ldc will break gdc. The setup: I have a VM running a 64bit Ubuntu 16.04, as you can see from the output of uname -a: Linux ubuntu-xenial 4.4.0-51-generic #72-Ubuntu SMP Thu Nov 24 18:29:54 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux I have installed: dmd --version: DMD64 D Compiler v2.072.0 gdc --version: gdc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609 With this setup, in /usr/include we can find dmd/ /usr/include/dmd |-- druntime | `-- import | |-- core | |-- etc As far as I can tell(guess), both dmd and gdc are using this one. I installed ldc2 (using apt-get install ldc): ldc2 --version: LDC - the LLVM D compiler (0.17.1): based on DMD v2.068.2 and LLVM 3.8.0 Default target: x86_64-pc-linux-gnu After installing ldc2, in /usr/include a new folder, d/, was created /usr/include/d |-- core |-- etc |-- ldc `-- std And now, the issue: After the steps above, when I try to compile something using gdc, it fails with the following error: /usr/include/d/core/stdc/stdarg.d:48:5: error: undefined identifier _va_list_tag alias __va_list = __va_list_tag; ^ Based on my previous assumtion (both dmd and gdc use /usr/include/dmd/) and the error above, I am inclined to believe that after installing ldc, gdc is using /usr/include/d/ and it breaks. Maybe we should consider having a separate folder in /usr/include/ for each compiler? Cheers, Eduard |
December 09, 2016 Re: Installing ldc breaks gdc | ||||
---|---|---|---|---|
| ||||
Posted in reply to Eduard Staniloiu | Am Fri, 09 Dec 2016 15:59:07 +0000 schrieb Eduard Staniloiu <edi33416@gmail.com>: > Hello, everyone. > > So I have found that installing ldc will break gdc. > > The setup: > > I have a VM running a 64bit Ubuntu 16.04, as you can see from the output of uname -a: > > Linux ubuntu-xenial 4.4.0-51-generic #72-Ubuntu SMP Thu Nov 24 > 18:29:54 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux > > I have installed: > dmd --version: DMD64 D Compiler v2.072.0 > gdc --version: gdc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 > 20160609 > > With this setup, in /usr/include we can find dmd/ > /usr/include/dmd > |-- druntime > | `-- import > | |-- core > | |-- etc > > As far as I can tell(guess), both dmd and gdc are using this one. > > I installed ldc2 (using apt-get install ldc): > ldc2 --version: LDC - the LLVM D compiler (0.17.1): > based on DMD v2.068.2 and LLVM 3.8.0 > Default target: x86_64-pc-linux-gnu > > After installing ldc2, in /usr/include a new folder, d/, was > created > /usr/include/d > |-- core > |-- etc > |-- ldc > `-- std > > And now, the issue: > After the steps above, when I try to compile something using gdc, > it fails with the following error: > > /usr/include/d/core/stdc/stdarg.d:48:5: error: undefined > identifier _va_list_tag > alias __va_list = __va_list_tag; > ^ > > Based on my previous assumtion (both dmd and gdc use /usr/include/dmd/) and the error above, I am inclined to believe that after installing ldc, gdc is using /usr/include/d/ and it breaks. > > Maybe we should consider having a separate folder in /usr/include/ for each compiler? > > Cheers, > Eduard > Archlinux uses /usr/include/dlang/[dmd|gdc|ldc]. Maybe debian/ubuntu should do that as well or maybe we could even change the path in upstream GDC. |
December 09, 2016 Re: Installing ldc breaks gdc | ||||
---|---|---|---|---|
| ||||
Posted in reply to Eduard Staniloiu | Dne 9.12.2016 v 16:59 Eduard Staniloiu via Digitalmars-d napsal(a): > Hello, everyone. > > ... > > Based on my previous assumtion (both dmd and gdc use /usr/include/dmd/) and the error above, I am inclined to believe that after installing ldc, gdc is using /usr/include/d/ and it breaks. > > Maybe we should consider having a separate folder in /usr/include/ for each compiler? > > Cheers, > Eduard > No thats all wrong, dmd a gdc could not use same include directory that is not possible. GDC use /usr/lib/gcc/x86_64-linux-gnu/5/include/d/ LDC use /usr/include/d/ and dmd use: /usr/include/dmd You probably have some misconfiguration issue |
December 09, 2016 Re: Installing ldc breaks gdc | ||||
---|---|---|---|---|
| ||||
Posted in reply to Daniel Kozak | Hi! This issue should be fixed since LDC 1:1.1.0-2, which Xenial doesn't have. Ideally, fetch a newer version from Debian or a PPA to solve this issue. Cheers, Matthias |
December 09, 2016 Re: Installing ldc breaks gdc | ||||
---|---|---|---|---|
| ||||
Posted in reply to Matthias Klumpp | On 9 December 2016 at 18:53, Matthias Klumpp via Digitalmars-d <digitalmars-d@puremagic.com> wrote:
> Hi!
>
> This issue should be fixed since LDC 1:1.1.0-2, which Xenial doesn't have. Ideally, fetch a newer version from Debian or a PPA to solve this issue.
>
> Cheers,
> Matthias
>
Thanks
|
December 09, 2016 Re: Installing ldc breaks gdc | ||||
---|---|---|---|---|
| ||||
On 9 December 2016 at 18:34, Daniel Kozak via Digitalmars-d <digitalmars-d@puremagic.com> wrote:
>
>
> Dne 9.12.2016 v 16:59 Eduard Staniloiu via Digitalmars-d napsal(a):
>>
>> Hello, everyone.
>>
>> ...
>>
>> Based on my previous assumtion (both dmd and gdc use /usr/include/dmd/)
>> and the error above, I am inclined to believe that after installing ldc, gdc
>> is using /usr/include/d/ and it breaks.
>>
>> Maybe we should consider having a separate folder in /usr/include/ for each compiler?
>>
>> Cheers,
>> Eduard
>>
> No thats all wrong, dmd a gdc could not use same include directory that is not possible. GDC use
>
> /usr/lib/gcc/x86_64-linux-gnu/5/include/d/
>
> LDC use
>
> /usr/include/d/
>
> and dmd use:
>
> /usr/include/dmd
>
> You probably have some misconfiguration issue
>
No, the /usr/include/d is considered a system includes directory. Any distribution package headers should be installed there, not ldc-specific header. :-)
Regards
Iain
|
December 10, 2016 Re: Installing ldc breaks gdc | ||||
---|---|---|---|---|
| ||||
Ok, thats your opinion :P
Dne 9.12.2016 v 23:04 Iain Buclaw via Digitalmars-d napsal(a):
> On 9 December 2016 at 18:34, Daniel Kozak via Digitalmars-d
> <digitalmars-d@puremagic.com> wrote:
>>
>> Dne 9.12.2016 v 16:59 Eduard Staniloiu via Digitalmars-d napsal(a):
>>> Hello, everyone.
>>>
>>> ...
>>>
>>> Based on my previous assumtion (both dmd and gdc use /usr/include/dmd/)
>>> and the error above, I am inclined to believe that after installing ldc, gdc
>>> is using /usr/include/d/ and it breaks.
>>>
>>> Maybe we should consider having a separate folder in /usr/include/ for
>>> each compiler?
>>>
>>> Cheers,
>>> Eduard
>>>
>> No thats all wrong, dmd a gdc could not use same include directory that is
>> not possible. GDC use
>>
>> /usr/lib/gcc/x86_64-linux-gnu/5/include/d/
>>
>> LDC use
>>
>> /usr/include/d/
>>
>> and dmd use:
>>
>> /usr/include/dmd
>>
>> You probably have some misconfiguration issue
>>
> No, the /usr/include/d is considered a system includes directory. Any
> distribution package headers should be installed there, not
> ldc-specific header. :-)
>
> Regards
> Iain
|
December 10, 2016 Re: Installing ldc breaks gdc | ||||
---|---|---|---|---|
| ||||
Posted in reply to Daniel Kozak | On Friday, 9 December 2016 at 17:34:35 UTC, Daniel Kozak wrote: > > On Friday, 9 December 2016 at 17:34:35 UTC, Daniel Kozak wrote: > No thats all wrong, dmd a gdc could not use same include directory that is not possible. GDC use > > /usr/lib/gcc/x86_64-linux-gnu/5/include/d/ Yes and no.. as you can see from the verbose output binary /usr/lib/gcc/x86_64-linux-gnu/5/cc1d version v2.067.1 parse gcd_bench importall gcd_bench import object (/usr/lib/gcc/x86_64-linux-gnu/5/include/d/object.d) import std.algorithm (/usr/include/d/std/algorithm/package.d) import std.algorithm.comparison (/usr/include/d/std/algorithm/comparison.d) import std.functional (/usr/include/d/std/functional.d) . . import std.stdiobase (/usr/include/d/std/stdiobase.d) /usr/include/d/core/stdc/stdarg.d:48:5: error: undefined identifier __va_list_tag alias __va_list = __va_list_tag; ^ import core.stdc.errno (/usr/include/d/core/stdc/errno.d) > LDC use > > /usr/include/d/ binary /usr/bin/ldc2 version 0.17.1 (DMD v2.068.2, LLVM 3.8.0) config /etc/ldc2.conf contents of /etc/ldc2.conf: default: { // 'switches' holds array of string that are appends to the command line // arguments before they are parsed. switches = [ "-I/usr/include/d/ldc", "-I/usr/include/d", "-L-L/usr/lib", "-defaultlib=phobos2-ldc,druntime-ldc", "-debuglib=phobos2-ldc-debug,druntime-ldc-debug" ]; }; > and dmd use: > > /usr/include/dmd binary dmd version v2.072.0 config /etc/dmd.conf contents of /etc/dmd.conf: [Environment32] DFLAGS=-I/usr/include/dmd/phobos -I/usr/include/dmd/druntime/import -L-L/usr/lib/i386-linux-gnu -L--export-dynamic [Environment64] DFLAGS=-I/usr/include/dmd/phobos -I/usr/include/dmd/druntime/import -L-L/usr/lib/x86_64-linux-gnu -L--export-dynamic > You probably have some misconfiguration issue Everything is default, since they all have been installed with apt-get install |
December 13, 2016 Re: Installing ldc breaks gdc | ||||
---|---|---|---|---|
| ||||
Posted in reply to Matthias Klumpp | On Friday, 9 December 2016 at 17:53:30 UTC, Matthias Klumpp wrote:
> Hi!
>
> This issue should be fixed since LDC 1:1.1.0-2, which Xenial doesn't have.
> Ideally, fetch a newer version from Debian or a PPA to solve this issue.
>
> Cheers,
> Matthias
Hi!
Thank you for your answer.
For future readers, this indeed has solved the problem.
Just add the ppa:
sudo add-apt-repository ppa:d-language-packagers/ppa
And install the new version:
sudo apt-get update; sudo apt-get install ldc
Cheers,
Eduard
|
December 14, 2016 Re: Installing ldc breaks gdc | ||||
---|---|---|---|---|
| ||||
Posted in reply to Matthias Klumpp | On Friday, 9 December 2016 at 17:53:30 UTC, Matthias Klumpp wrote:
> This issue should be fixed since LDC 1:1.1.0-2, which Xenial doesn't have.
> Ideally, fetch a newer version from Debian or a PPA to solve this issue.
Is there any chance of getting a fix in Xenial itself (whether by an update to 1.1.0 or via an updated 1.0.0 package)? It's pretty worrying if two LTS packages clash in this way.
BTW what source is the LDC 1:1.1.0-2 package built from? Is it using one of the LDC beta releases? AFAIK LDC 1.1.0 has not yet been released.
|
Copyright © 1999-2021 by the D Language Foundation