www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Trouble Compiling DMD, Druntime, Phobos on Windows

reply "Meta" <jared771 gmail.com> writes:
I'm using Windows 7 x64, but compiling 32-bit DMD. DMD compiles 
fine, but the linker warns about a "Warning 9: Unknown Option : 
LA". After that, when trying to compile Druntime, DMD chokes with 
this error:

"Assertion Failure: 'impl' on line 4930 in file 'mtype.c'".

I looked in the file, but all I could find on line 4930 was:

int TypeAArray::isZeroInit(Loc loc)
{
     return true;
}

So I'm not really sure what's going on here, though I obviously 
did something wrong compiling DMD.
Feb 13 2014
next sibling parent reply Nick Sabalausky <SeeWebsiteToContactMe semitwist.com> writes:
On 2/13/2014 8:09 PM, Meta wrote:
 I'm using Windows 7 x64, but compiling 32-bit DMD. DMD compiles fine,
 but the linker warns about a "Warning 9: Unknown Option : LA". After
 that, when trying to compile Druntime, DMD chokes with this error:
Sounds like you're using an outdated OPTLINK. The /LA flag was added relatively recently and the newer DMD buildscripts use it. Try updating your copy of DMC, maybe a newer one will have the up-to-date OPTLINK. Or just replace your DMC's OPTLINK with the one that comes with DMD 2.064.2: http://downloads.dlang.org/releases/2013/dmd.2.064.2.zip
 "Assertion Failure: 'impl' on line 4930 in file 'mtype.c'".

 I looked in the file, but all I could find on line 4930 was:

 int TypeAArray::isZeroInit(Loc loc)
 {
      return true;
 }
Not sure what's up with that one, but I don't have any familiarity with mtype. Maybe it's just fallout from the earlier error?
Feb 13 2014
parent "Meta" <jared771 gmail.com> writes:
On Friday, 14 February 2014 at 01:58:13 UTC, Nick Sabalausky 
wrote:
 On 2/13/2014 8:09 PM, Meta wrote:
 I'm using Windows 7 x64, but compiling 32-bit DMD. DMD 
 compiles fine,
 but the linker warns about a "Warning 9: Unknown Option : LA". 
 After
 that, when trying to compile Druntime, DMD chokes with this 
 error:
Sounds like you're using an outdated OPTLINK. The /LA flag was added relatively recently and the newer DMD buildscripts use it. Try updating your copy of DMC, maybe a newer one will have the up-to-date OPTLINK. Or just replace your DMC's OPTLINK with the one that comes with DMD 2.064.2: http://downloads.dlang.org/releases/2013/dmd.2.064.2.zip
 "Assertion Failure: 'impl' on line 4930 in file 'mtype.c'".

 I looked in the file, but all I could find on line 4930 was:

 int TypeAArray::isZeroInit(Loc loc)
 {
     return true;
 }
Not sure what's up with that one, but I don't have any familiarity with mtype. Maybe it's just fallout from the earlier error?
Ah, yes, there's a rogue outdated OPTLINK hiding out somewhere in my path. That should fix it, I think.
Feb 13 2014
prev sibling parent reply "Stanislav Blinov" <stanislav.blinov gmail.com> writes:
On Friday, 14 February 2014 at 01:09:42 UTC, Meta wrote:
 I'm using Windows 7 x64, but compiling 32-bit DMD. DMD compiles 
 fine, but the linker warns about a "Warning 9: Unknown Option : 
 LA". After that, when trying to compile Druntime, DMD chokes 
 with this error:

 "Assertion Failure: 'impl' on line 4930 in file 'mtype.c'".

 I looked in the file, but all I could find on line 4930 was:

 int TypeAArray::isZeroInit(Loc loc)
 {
     return true;
 }

 So I'm not really sure what's going on here, though I obviously 
 did something wrong compiling DMD.
Are you by chance trying to compile dirty druntime tree? (i.e. you've compiled it before?). If so, make clean first. I had an error along the lines of what you're describing after a recent pull, but I'm not 100% sure it's the same one.
Feb 13 2014
parent reply "Meta" <jared771 gmail.com> writes:
It seems that while pointing to the correct link got rid of the 
linker warning, I still can't compile druntime.

On Friday, 14 February 2014 at 02:50:04 UTC, Stanislav Blinov 
wrote:
 Are you by chance trying to compile dirty druntime tree? (i.e. 
 you've compiled it before?). If so, make clean first. I had an 
 error along the lines of what you're describing after a recent 
 pull, but I'm not 100% sure it's the same one.
It had been compiled before, so I went one further, deleting and re-cloning druntime. However, it still dies with the same assertion failure. Here's the relevant output before it dies: dmd -lib -oflib\druntime.lib -Xfdruntime.json -m32 -O -release -inline -w -Isrc -Iimport src\object_.d src\core\atomic.d src\core\bitop.d src\core\cpuid.d src\core\demangle.d src\core\exception.d src\core\math.d src\core\memory.d src\core\runtime.d src\core\simd.d src\core\thread.d src\core\time.d src\core\vararg.d src\core\internal\hash.d src\core\internal\convert.d src\core\stdc\config.d src\core\stdc\ctype.d src\core\stdc\errno.d src\core\stdc\math.d src\core\stdc\signal.d src\core\stdc\stdarg.d src\core\stdc\stdio.d src\core\stdc\stdlib.d src\core\stdc\stdint.d src\core\stdc\stddef.d src\core\stdc\string.d src\core\stdc\time.d src\core\stdc\wchar_.d src\core\sync\barrier.d src\core\sync\condition.d src\core\sync\config.d src\core\sync\exception.d src\core\sync\mutex.d src\core\sync\rwmutex.d src\core\sync\semaphore.d src\core\sys\freebsd\execinfo.d src\core\sys\freebsd\sys\event.d src\core\sys\posix\signal.d src\core\sys\posix\dirent.d src\core\sys\posix\sys\resource.d src\core\sys\posix\sys\select.d src\core\sys\posix\sys\socket.d src\core\sys\posix\sys\stat.d src\core\sys\posix\sys\wait.d src\core\sys\posix\netdb.d src\core\sys\posix\sys\ioctl.d src\core\sys\posix\sys\utsname.d src\core\sys\posix\netinet\in_.d src\core\sys\windows\dbghelp.d src\core\sys\windows\dll.d src\core\sys\windows\stacktrace.d src\core\sys\windows\threadaux.d src\core\sys\windows\windows.d src\gc\gc.d src\gc\os.d src\gc\bits.d src\gc\stats.d src\gc\proxy.d src\rt\aApply.d src\rt\aApplyR.d src\rt\aaA.d src\rt\adi.d src\rt\alloca.d src\rt\arrayassign.d src\rt\arraybyte.d src\rt\arraycast.d src\rt\arraycat.d src\rt\arraydouble.d src\rt\arrayfloat.d src\rt\arrayint.d src\rt\arrayreal.d src\rt\arrayshort.d src\rt\cast_.d src\rt\cmath2.d src\rt\cover.d src\rt\critical_.d src\rt\deh.d src\rt\deh_win32.d src\rt\deh_win64_posix.d src\rt\dmain2.d src\rt\invariant.d src\rt\lifetime.d src\rt\llmath.d src\rt\memory.d src\rt\memset.d src\rt\minfo.d src\rt\monitor_.d src\rt\obj.d src\rt\qsort.d src\rt\sections.d src\rt\sections_freebsd.d src\rt\sections_linux.d src\rt\sections_osx.d src\rt\sections_solaris.d src\rt\sections_win32.d src\rt\sections_win64.d src\rt\switch_.d src\rt\tlsgc.d src\rt\trace.d src\rt\util\array.d src\rt\util\container.d src\rt\util\hash.d src\rt\util\string.d src\rt\util\utf.d src\rt\typeinfo\ti_AC.d src\rt\typeinfo\ti_Acdouble.d src\rt\typeinfo\ti_Acfloat.d src\rt\typeinfo\ti_Acreal.d src\rt\typeinfo\ti_Adouble.d src\rt\typeinfo\ti_Afloat.d src\rt\typeinfo\ti_Ag.d src\rt\typeinfo\ti_Aint.d src\rt\typeinfo\ti_Along.d src\rt\typeinfo\ti_Areal.d src\rt\typeinfo\ti_Ashort.d src\rt\typeinfo\ti_byte.d src\rt\typeinfo\ti_C.d src\rt\typeinfo\ti_cdouble.d src\rt\typeinfo\ti_cfloat.d src\rt\typeinfo\ti_char.d src\rt\typeinfo\ti_creal.d src\rt\typeinfo\ti_dchar.d src\rt\typeinfo\ti_delegate.d src\rt\typeinfo\ti_double.d src\rt\typeinfo\ti_float.d src\rt\typeinfo\ti_idouble.d src\rt\typeinfo\ti_ifloat.d src\rt\typeinfo\ti_int.d src\rt\typeinfo\ti_ireal.d src\rt\typeinfo\ti_long.d src\rt\typeinfo\ti_ptr.d src\rt\typeinfo\ti_real.d src\rt\typeinfo\ti_short.d src\rt\typeinfo\ti_ubyte.d src\rt\typeinfo\ti_uint.d src\rt\typeinfo\ti_ulong.d src\rt\typeinfo\ti_ushort.d src\rt\typeinfo\ti_void.d src\rt\typeinfo\ti_wchar.d src\etc\linux\memoryerror.d errno_c.obj src\rt\minit.obj Assertion failure: 'impl' on line 4930 in file 'mtype.c' abnormal program termination --- errorlevel 1
Feb 15 2014
parent reply "Stanislav Blinov" <stanislav.blinov gmail.com> writes:
On Saturday, 15 February 2014 at 19:24:23 UTC, Meta wrote:
 It seems that while pointing to the correct link got rid of the 
 linker warning, I still can't compile druntime.

 On Friday, 14 February 2014 at 02:50:04 UTC, Stanislav Blinov 
 wrote:
 Are you by chance trying to compile dirty druntime tree?
It had been compiled before, so I went one further, deleting and re-cloning druntime. However, it still dies with the same assertion failure. Here's the relevant output before it dies:
What about dmd itself? Have you rebuilt it from scratch too?
Feb 15 2014
parent reply "Meta" <jared771 gmail.com> writes:
On Saturday, 15 February 2014 at 22:05:00 UTC, Stanislav Blinov 
wrote:
 On Saturday, 15 February 2014 at 19:24:23 UTC, Meta wrote:
 It seems that while pointing to the correct link got rid of 
 the linker warning, I still can't compile druntime.

 On Friday, 14 February 2014 at 02:50:04 UTC, Stanislav Blinov 
 wrote:
 Are you by chance trying to compile dirty druntime tree?
It had been compiled before, so I went one further, deleting and re-cloning druntime. However, it still dies with the same assertion failure. Here's the relevant output before it dies:
What about dmd itself? Have you rebuilt it from scratch too?
Yes, DMD builds fine, and I tried to build druntime from a fresh DMD compile.
Feb 15 2014
parent reply "Stanislav Blinov" <stanislav.blinov gmail.com> writes:
On Saturday, 15 February 2014 at 23:04:26 UTC, Meta wrote:

 What about dmd itself? Have you rebuilt it from scratch too?
Yes, DMD builds fine, and I tried to build druntime from a fresh DMD compile.
That is bizarre. Which git commits are you using for dmd and druntime?
Feb 15 2014
parent reply "Meta" <jared771 gmail.com> writes:
On Saturday, 15 February 2014 at 23:37:40 UTC, Stanislav Blinov 
wrote:
 On Saturday, 15 February 2014 at 23:04:26 UTC, Meta wrote:

 What about dmd itself? Have you rebuilt it from scratch too?
Yes, DMD builds fine, and I tried to build druntime from a fresh DMD compile.
That is bizarre. Which git commits are you using for dmd and druntime?
Whatever's currently in master for both DMD and druntime.
Feb 15 2014
parent reply "Stanislav Blinov" <stanislav.blinov gmail.com> writes:
On Sunday, 16 February 2014 at 01:34:53 UTC, Meta wrote:

 That is bizarre. Which git commits are you using for dmd and 
 druntime?
Whatever's currently in master for both DMD and druntime.
win32.mak for druntime uses whatever dmd is in your PATH. My guess is on your machine it's not the same as dmd that's built in git working copy, i.e. it tries to use your installed dmd. I've just dusted off my Win7 VM, made pulls for dmd and druntime and built both, though I had to edit druntime's win32.mak so that DMD variable points to the dmd executable I've built.
Feb 15 2014
parent reply "Meta" <jared771 gmail.com> writes:
On Sunday, 16 February 2014 at 03:11:00 UTC, Stanislav Blinov 
wrote:
 On Sunday, 16 February 2014 at 01:34:53 UTC, Meta wrote:

 That is bizarre. Which git commits are you using for dmd and 
 druntime?
Whatever's currently in master for both DMD and druntime.
win32.mak for druntime uses whatever dmd is in your PATH. My guess is on your machine it's not the same as dmd that's built in git working copy, i.e. it tries to use your installed dmd. I've just dusted off my Win7 VM, made pulls for dmd and druntime and built both, though I had to edit druntime's win32.mak so that DMD variable points to the dmd executable I've built.
Ah, finally. That was it. Thanks for the tip.
Feb 15 2014
parent "Stanislav Blinov" <stanislav.blinov gmail.com> writes:
On Sunday, 16 February 2014 at 03:16:20 UTC, Meta wrote:
 On Sunday, 16 February 2014 at 03:11:00 UTC, Stanislav Blinov 
 wrote:
 win32.mak for druntime uses whatever dmd is in your PATH.
Ah, finally. That was it. Thanks for the tip.
Heh. Sorry that took so long. I knew the error looked familiar but you got me puzzled when a clean rebuild didn't help. In the end that was one more reason to install VirtualBox to revive my Windows VM which I've been putting off for a while now :)
Feb 15 2014