Thread overview
dmd host compiler
Jul 05, 2019
Martin Krejcirik
Jul 05, 2019
Martin Krejcirik
Jul 05, 2019
kinke
Jul 05, 2019
Patrick Schluter
Jul 05, 2019
Jonathan Marler
Jul 05, 2019
Patrick Schluter
Jul 05, 2019
Jonathan Marler
Jul 05, 2019
user6789
Jul 05, 2019
Seb
July 05, 2019
What dmd I need to compile recent dmd from source ? I'm getting all kinds of errors. Versions pre 2.081 worked fine with my 2.073. I'm trying 2.085 and 2.087 but no success.

dmd/sapply.d(30): Deprecation: Using super as a type is deprecated. Use typeof(super) instead
dmd/sapply.d(53): Error: function `dmd.sapply.PostorderStatementVisitor.visit` conflicts with alias dmd.sapply.PostorderStatementVisitor.visit at dmd/sapply.d(30)

July 05, 2019
Allright, I managed to compile 2.085 using 2.085 so the real queastion is, what is the minimum version requirement for host compiler.
July 05, 2019
On Friday, 5 July 2019 at 16:36:11 UTC, Martin Krejcirik wrote:
> what is the minimum version requirement for host compiler.

I think it's currently v2.076. I don't know where that is documented.
July 05, 2019
On Friday, 5 July 2019 at 16:36:11 UTC, Martin Krejcirik wrote:
> Allright, I managed to compile 2.085 using 2.085 so the real queastion is, what is the minimum version requirement for host compiler.

I Had the same experience on Linux. It was not possible to build dmd with a predecessing version between version 2.074 and version 2.08?. I had to download a binary of higher version to build the newer  compiler or else I would have been stuck on 2.073. It's a rather annoying as we have really strange rules in place that normally do not allow to install binaries from Internet.
July 05, 2019
On Friday, 5 July 2019 at 17:11:37 UTC, Patrick Schluter wrote:
> On Friday, 5 July 2019 at 16:36:11 UTC, Martin Krejcirik wrote:
>> Allright, I managed to compile 2.085 using 2.085 so the real queastion is, what is the minimum version requirement for host compiler.
>
> I Had the same experience on Linux. It was not possible to build dmd with a predecessing version between version 2.074 and version 2.08?. I had to download a binary of higher version to build the newer  compiler or else I would have been stuck on 2.073. It's a rather annoying as we have really strange rules in place that normally do not allow to install binaries from Internet.

Another option would be to use 2.074 to compile 2.075, then use that to compile 2.076, and so on...of course using the release versions is arbitrary, and may not be granular enough and will likely be too granular in most cases.

One really cool thing about D though is that now DMD is completely in D, if you compile it with the `build.d` script it only takes about 20 seconds to compile the whole thing.  The Makefile still takes longer because it's using many invocations of the compiler though.

July 05, 2019
On Friday, 5 July 2019 at 17:36:36 UTC, Jonathan Marler wrote:
> On Friday, 5 July 2019 at 17:11:37 UTC, Patrick Schluter wrote:
>> On Friday, 5 July 2019 at 16:36:11 UTC, Martin Krejcirik wrote:
>>> Allright, I managed to compile 2.085 using 2.085 so the real queastion is, what is the minimum version requirement for host compiler.
>>
>> I Had the same experience on Linux. It was not possible to build dmd with a predecessing version between version 2.074 and version 2.08?. I had to download a binary of higher version to build the newer  compiler or else I would have been stuck on 2.073. It's a rather annoying as we have really strange rules in place that normally do not allow to install binaries from Internet.
>
> Another option would be to use 2.074 to compile 2.075, then use that to compile 2.076, and so on...of course using the release versions is arbitrary, and may not be granular enough and will likely be too granular in most cases.
>
> One really cool thing about D though is that now DMD is completely in D, if you compile it with the `build.d` script it only takes about 20 seconds to compile the whole thing.  The Makefile still takes longer because it's using many invocations of the compiler though.

That was the issue this process works until 2.78.2 (sorry the numbers were off in my first message [1]).
It requires at least 2.79.1 to build anything after 2.78.2 on. This means there is a gap in the "build chain".


[1]: https://forum.dlang.org/thread/zuehgfyovxxwgebfyokq@forum.dlang.org
July 05, 2019
On Friday, 5 July 2019 at 15:17:01 UTC, Martin Krejcirik wrote:
> What dmd I need to compile recent dmd from source ? I'm getting all kinds of errors. Versions pre 2.081 worked fine with my 2.073. I'm trying 2.085 and 2.087 but no success.
>
> dmd/sapply.d(30): Deprecation: Using super as a type is deprecated. Use typeof(super) instead
> dmd/sapply.d(53): Error: function `dmd.sapply.PostorderStatementVisitor.visit` conflicts with alias dmd.sapply.PostorderStatementVisitor.visit at dmd/sapply.d(30)

The easiest solution for this is to set AUTO_BOOTSTRAP=1 when building DMD as this will automatically download a working bootstrap compiler. 2.079 at the moment.
July 05, 2019
On Friday, 5 July 2019 at 17:36:36 UTC, Jonathan Marler wrote:
> On Friday, 5 July 2019 at 17:11:37 UTC, Patrick Schluter wrote:
>> [...]
>
> Another option would be to use 2.074 to compile 2.075, then use that to compile 2.076, and so on...of course using the release versions is arbitrary, and may not be granular enough and will likely be too granular in most cases.
>
> One really cool thing about D though is that now DMD is completely in D, if you compile it with the `build.d` script it only takes about 20 seconds to compile the whole thing.  The Makefile still takes longer because it's using many invocations of the compiler though.

Wait I remembered wrong.  The Makefile takes about 20 seconds to build.  The `build.d` script takes about 7 seconds to build.  Just confirmed it on my machine.
July 05, 2019
On Friday, 5 July 2019 at 18:56:50 UTC, Jonathan Marler wrote:
> On Friday, 5 July 2019 at 17:36:36 UTC, Jonathan Marler wrote:
>> On Friday, 5 July 2019 at 17:11:37 UTC, Patrick Schluter wrote:
>>> [...]
>>
>> Another option would be to use 2.074 to compile 2.075, then use that to compile 2.076, and so on...of course using the release versions is arbitrary, and may not be granular enough and will likely be too granular in most cases.
>>
>> One really cool thing about D though is that now DMD is completely in D, if you compile it with the `build.d` script it only takes about 20 seconds to compile the whole thing.  The Makefile still takes longer because it's using many invocations of the compiler though.
>
> Wait I remembered wrong.  The Makefile takes about 20 seconds to build.  The `build.d` script takes about 7 seconds to build.
>  Just confirmed it on my machine.

The firs time, otherwise it takes more 2 to 3 seconds because most of the times the objects are cached.