Thread overview
[dub] Release build fails with 2.067.0
Apr 14, 2015
Chris
Apr 15, 2015
Chris
Apr 15, 2015
John Colvin
Apr 15, 2015
Chris
Apr 15, 2015
John Colvin
April 14, 2015
Sorry, I forgot the title the first time around!

I get the following message from dub when using "--build=release":

Linking...
.dub/build/myprogram-release-linux.posix-x86_64-dmd_2067-C1A5273464ACE9961E3F3BA6AC04084B/abairtts.o:(.data._D65TypeInfo_xC3std5range10interfaces18__T10InputRangeTiZ10InputRange6__initZ+0x10):
undefined reference to
`_D64TypeInfo_C3std5range10interfaces18__T10InputRangeTiZ10InputRange6__initZ'
collect2: error: ld returned 1 exit status
--- errorlevel 1

DUB version 0.9.23, built on Apr  3 2015
dmd 2.067.0

Also, if I set the flags manually (dlfags[1]), they are ignored
and dub build in debug mode.

[1] now -boundscheck=off, instead of -noboundscheck
April 15, 2015
On Tuesday, 14 April 2015 at 15:58:18 UTC, Chris wrote:
> Sorry, I forgot the title the first time around!
>
> I get the following message from dub when using "--build=release":
>
> Linking...
> .dub/build/myprogram-release-linux.posix-x86_64-dmd_2067-C1A5273464ACE9961E3F3BA6AC04084B/abairtts.o:(.data._D65TypeInfo_xC3std5range10interfaces18__T10InputRangeTiZ10InputRange6__initZ+0x10):
> undefined reference to
> `_D64TypeInfo_C3std5range10interfaces18__T10InputRangeTiZ10InputRange6__initZ'
> collect2: error: ld returned 1 exit status
> --- errorlevel 1
>
> DUB version 0.9.23, built on Apr  3 2015
> dmd 2.067.0
>
> Also, if I set the flags manually (dlfags[1]), they are ignored
> and dub build in debug mode.
>
> [1] now -boundscheck=off, instead of -noboundscheck

Update:

I tried to compile the code with a script and I still have the same problem:

dmd -release -boundscheck=off -O -inline
(or any combination of these)

When I use

dmd file1.d, file2.d ...

it also fails. Only when I use

dmd -debug file1.d file2.d ...

does it work. Isn't that weird.

I've made sure that the latest version of dmd is now installed system wide (Ubuntu) and not just locally with dvm (which is a cool tool). I have no clue what causes this problem.

April 15, 2015
On Wednesday, 15 April 2015 at 10:11:17 UTC, Chris wrote:
> On Tuesday, 14 April 2015 at 15:58:18 UTC, Chris wrote:
>> Sorry, I forgot the title the first time around!
>>
>> I get the following message from dub when using "--build=release":
>>
>> Linking...
>> .dub/build/myprogram-release-linux.posix-x86_64-dmd_2067-C1A5273464ACE9961E3F3BA6AC04084B/abairtts.o:(.data._D65TypeInfo_xC3std5range10interfaces18__T10InputRangeTiZ10InputRange6__initZ+0x10):
>> undefined reference to
>> `_D64TypeInfo_C3std5range10interfaces18__T10InputRangeTiZ10InputRange6__initZ'
>> collect2: error: ld returned 1 exit status
>> --- errorlevel 1
>>
>> DUB version 0.9.23, built on Apr  3 2015
>> dmd 2.067.0
>>
>> Also, if I set the flags manually (dlfags[1]), they are ignored
>> and dub build in debug mode.
>>
>> [1] now -boundscheck=off, instead of -noboundscheck
>
> Update:
>
> I tried to compile the code with a script and I still have the same problem:
>
> dmd -release -boundscheck=off -O -inline
> (or any combination of these)
>
> When I use
>
> dmd file1.d, file2.d ...
>
> it also fails. Only when I use
>
> dmd -debug file1.d file2.d ...
>
> does it work. Isn't that weird.
>
> I've made sure that the latest version of dmd is now installed system wide (Ubuntu) and not just locally with dvm (which is a cool tool). I have no clue what causes this problem.

How about with -allinst?
April 15, 2015
On Wednesday, 15 April 2015 at 10:26:55 UTC, John Colvin wrote:
> On Wednesday, 15 April 2015 at 10:11:17 UTC, Chris wrote:
>> On Tuesday, 14 April 2015 at 15:58:18 UTC, Chris wrote:
>>> Sorry, I forgot the title the first time around!
>>>
>>> I get the following message from dub when using "--build=release":
>>>
>>> Linking...
>>> .dub/build/myprogram-release-linux.posix-x86_64-dmd_2067-C1A5273464ACE9961E3F3BA6AC04084B/abairtts.o:(.data._D65TypeInfo_xC3std5range10interfaces18__T10InputRangeTiZ10InputRange6__initZ+0x10):
>>> undefined reference to
>>> `_D64TypeInfo_C3std5range10interfaces18__T10InputRangeTiZ10InputRange6__initZ'
>>> collect2: error: ld returned 1 exit status
>>> --- errorlevel 1
>>>
>>> DUB version 0.9.23, built on Apr  3 2015
>>> dmd 2.067.0
>>>
>>> Also, if I set the flags manually (dlfags[1]), they are ignored
>>> and dub build in debug mode.
>>>
>>> [1] now -boundscheck=off, instead of -noboundscheck
>>
>> Update:
>>
>> I tried to compile the code with a script and I still have the same problem:
>>
>> dmd -release -boundscheck=off -O -inline
>> (or any combination of these)
>>
>> When I use
>>
>> dmd file1.d, file2.d ...
>>
>> it also fails. Only when I use
>>
>> dmd -debug file1.d file2.d ...
>>
>> does it work. Isn't that weird.
>>
>> I've made sure that the latest version of dmd is now installed system wide (Ubuntu) and not just locally with dvm (which is a cool tool). I have no clue what causes this problem.
>
> How about with -allinst?

This did the trick, thanks a million! But why would I have to do this now (it wasn't necessary with 2.066)?

Also, if you run

dub --build=profile

you'll get

src/phobos/std/getopt.d(438): Warning: statement is not reachable
src/phobos/std/getopt.d(577): Warning: statement is not reachable

The plot thickens ... :-)
April 15, 2015
On Wednesday, 15 April 2015 at 10:31:01 UTC, Chris wrote:
> On Wednesday, 15 April 2015 at 10:26:55 UTC, John Colvin wrote:
>> On Wednesday, 15 April 2015 at 10:11:17 UTC, Chris wrote:
>>> On Tuesday, 14 April 2015 at 15:58:18 UTC, Chris wrote:
>>>> Sorry, I forgot the title the first time around!
>>>>
>>>> I get the following message from dub when using "--build=release":
>>>>
>>>> Linking...
>>>> .dub/build/myprogram-release-linux.posix-x86_64-dmd_2067-C1A5273464ACE9961E3F3BA6AC04084B/abairtts.o:(.data._D65TypeInfo_xC3std5range10interfaces18__T10InputRangeTiZ10InputRange6__initZ+0x10):
>>>> undefined reference to
>>>> `_D64TypeInfo_C3std5range10interfaces18__T10InputRangeTiZ10InputRange6__initZ'
>>>> collect2: error: ld returned 1 exit status
>>>> --- errorlevel 1
>>>>
>>>> DUB version 0.9.23, built on Apr  3 2015
>>>> dmd 2.067.0
>>>>
>>>> Also, if I set the flags manually (dlfags[1]), they are ignored
>>>> and dub build in debug mode.
>>>>
>>>> [1] now -boundscheck=off, instead of -noboundscheck
>>>
>>> Update:
>>>
>>> I tried to compile the code with a script and I still have the same problem:
>>>
>>> dmd -release -boundscheck=off -O -inline
>>> (or any combination of these)
>>>
>>> When I use
>>>
>>> dmd file1.d, file2.d ...
>>>
>>> it also fails. Only when I use
>>>
>>> dmd -debug file1.d file2.d ...
>>>
>>> does it work. Isn't that weird.
>>>
>>> I've made sure that the latest version of dmd is now installed system wide (Ubuntu) and not just locally with dvm (which is a cool tool). I have no clue what causes this problem.
>>
>> How about with -allinst?
>
> This did the trick, thanks a million! But why would I have to do this now (it wasn't necessary with 2.066)?
>
> Also, if you run
>
> dub --build=profile
>
> you'll get
>
> src/phobos/std/getopt.d(438): Warning: statement is not reachable
> src/phobos/std/getopt.d(577): Warning: statement is not reachable
>
> The plot thickens ... :-)

Not a clue, sorry. If you can get minimal test cases for these (e.g. with dustmite), bug reports would be good.