CyberShadow / Digger

A tool to build D and bisect old D versions
Other
57 stars 9 forks source link

digger fails to build D on windows #96

Open Moth-Tolias opened 1 year ago

Moth-Tolias commented 1 year ago

when attempting to build, digger fails with the following error [some sections removed for brevity]:

...
digger: Running: "make" -f win32.mak import DMD=C:\Users\Su\Documents\src\dlang\work\build\bin\dmd.exe HOST_DMD=C:\Users\Su\Documents\src\dlang\work\dl\dmd-2.079.0\dmd2/windows/bin\dmd.exe ^"MODEL=32^"
cd ..\dmd/druntime && make -f win32.mak  "DMD_DIR=..\dmd"  "BUILD=release"  "OS=windows"  "DMD=C:\Users\Su\Documents\src\dlang\work\build\bin\dmd.exe"  "CC=dmc"  "MAKE=make"  "HOST_DMD=C:\Users\Su\Documents\src\dlang\work\dl\dmd-2.079.0\dmd2/windows/bin\dmd.exe"  "DOCDIR=doc"  "IMPDIR=import"  "DFLAGS=-m32omf -conf= -O -release -preview=dip1000 -preview=fieldwise -preview=dtorfields -inline -w -Isrc -Iimport"  "UDFLAGS=-m32omf -conf= -O -release -preview=dip1000 -preview=fieldwise -w -Isrc -Iimport"  "UTFLAGS=-version=CoreUnittest -unittest -checkaction=context"  "CFLAGS="  "DRUNTIME_BASE=druntime"  "DRUNTIME=lib\druntime.lib"  "DOCFMT=" import
"make" -f mak/WINDOWS copy DMD="C:\Users\Su\Documents\src\dlang\work\build\bin\dmd.exe" HOST_DMD="C:\Users\Su\Documents\src\dlang\work\dl\dmd-2.079.0\dmd2/windows/bin\dmd.exe" MODEL=32 IMPDIR="import"
if not exist ..\generated md ..\generated
if not exist ..\generated\windows md ..\generated\windows
if exist "../../release-build/dmd-2.079.0/windows/bin/dmd.exe" (echo @"../../release-build/dmd-2.079.0/windows/bin/dmd.exe" %* >..\generated\windows\host_dmd.bat)
if not ""  == "" ("\dmd2\Windows\bin\dmd.exe" --version >nul 2>&1 && echo @"\dmd2\Windows\bin\dmd.exe" %* >..\generated\windows\host_dmd.bat)
if not ""  == "" (""  --version >nul 2>&1 && echo @"" %* >..\generated\windows\host_dmd.bat)
if not "C:\Users\Su\Documents\src\dlang\work\dl\dmd-2.079.0\dmd2/windows/bin\dmd.exe" == "" ("C:\Users\Su\Documents\src\dlang\work\dl\dmd-2.079.0\dmd2/windows/bin\dmd.exe" --version >nul 2>&1 && echo @"C:\Users\Su\Documents\src\dlang\work\dl\dmd-2.079.0\dmd2/windows/bin\dmd.exe" %* >..\generated\windows\host_dmd.bat)
..\generated\windows\host_dmd.bat -of=..\generated\windows\copyimports.exe -m32 mak\copyimports.d
creating import\object.d
...
creating import\etc\linux\memoryerror.d

xcopy /s /e /h /i ..\dmd/druntime/import import
Invalid number of parameters

--- errorlevel 4
digger: Not caching druntime dependency build failure.
digger: Clearing temporary cache

object.Exception@C:\Users\Su\AppData\Local\dub\packages\ae-0.0.3227\ae\sys\d\manager.d(898): Command ["make", "-f", "win32.mak", "import", "DMD=C:\\Users\\Su\\Documents\\src\\dlang\\work\\build\\bin\\dmd.exe", "HOST_DMD=C:\\Users\\Su\\Documents\\src\\dlang\\work\\dl\\dmd-2.079.0\\dmd2/windows/bin\\dmd.exe", "MODEL=32"] failed with status 4
----------------
0x00007FF7EE3A51D3 in std.exception.bailOut!(object.Exception).bailOut at C:\D\dmd2\windows\bin\..\..\src\phobos\std\exception.d(518)
0x00007FF7EE3A50D9 in std.exception.enforce!().enforce!bool.enforce at C:\D\dmd2\windows\bin\..\..\src\phobos\std\exception.d(439)
0x00007FF7EE615719 in ae.sys.d.manager.DManager.Component.run at C:\D\dmd2\windows\bin\..\..\src\phobos\std\exception.d(436)
0x00007FF7EE61BB8E in ae.sys.d.manager.DManager.Druntime.runMake at C:\Users\Su\AppData\Local\dub\packages\ae-0.0.3227\ae\sys\d\manager.d(1467)
0x00007FF7EE61B05F in ae.sys.d.manager.DManager.Druntime.performBuild at C:\Users\Su\AppData\Local\dub\packages\ae-0.0.3227\ae\sys\d\manager.d(1418)
0x00007FF7EE6123BB in ae.sys.d.manager.DManager.Component.needBuild at C:\Users\Su\AppData\Local\dub\packages\ae-0.0.3227\ae\sys\d\manager.d(552)
0x00007FF7EE612D99 in ae.sys.d.manager.DManager.Component.needInstalled at C:\Users\Su\AppData\Local\dub\packages\ae-0.0.3227\ae\sys\d\manager.d(702)
0x00007FF7EE624172 in ae.sys.d.manager.DManager.build at C:\Users\Su\AppData\Local\dub\packages\ae-0.0.3227\ae\sys\d\manager.d(2284)
0x00007FF7EE5830B5 in custom.runBuild at C:\Users\Su\AppData\Local\dub\packages\digger-3.0.8\digger\custom.d(64)
0x00007FF7EE583D04 in custom.buildCustom at C:\Users\Su\AppData\Local\dub\packages\digger-3.0.8\digger\custom.d(135)
0x00007FF7EE584316 in digger.Digger.build at C:\Users\Su\AppData\Local\dub\packages\digger-3.0.8\digger\digger.d(72)
0x00007FF7EE6DCFE3 in ae.utils.funopt.funopt!(build, FunOptConfig(null), usageFun).funopt at C:\Users\Su\AppData\Local\dub\packages\ae-0.0.3227\ae\utils\funopt.d(308)
0x00007FF7EE6DA5A5 in ae.utils.funopt.funoptDispatch!(digger.Digger, FunOptConfig(null), usageFun).funoptDispatch.fun at C:\Users\Su\AppData\Local\dub\packages\ae-0.0.3227\ae\utils\funopt.d(844)
0x00007FF7EE7043D0 in ae.utils.funopt.funoptDispatch!(digger.Digger, FunOptConfig(null), usageFun).funoptDispatch.funopt!(fun, FunOptConfig([config.stopOnFirstNonOption]), myUsageFun).funopt at C:\Users\Su\AppData\Local\dub\packages\ae-0.0.3227\ae\utils\funopt.d(308)
0x00007FF7EE6DA390 in ae.utils.funopt.funoptDispatch!(digger.Digger, FunOptConfig(null), usageFun).funoptDispatch at C:\Users\Su\AppData\Local\dub\packages\ae-0.0.3227\ae\utils\funopt.d(858)
0x00007FF7EE585891 in digger.digger at C:\Users\Su\AppData\Local\dub\packages\digger-3.0.8\digger\digger.d(275)
0x00007FF7EE5861A5 in digger.main!(digger).main.run at C:\Users\Su\AppData\Local\dub\packages\ae-0.0.3227\ae\utils\main.d(36)
0x00007FF7EE5874C2 in digger.main!(digger).main.runCatchingException!(std.getopt.GetOptException, "Usage error").runCatchingException at C:\Users\Su\AppData\Local\dub\packages\ae-0.0.3227\ae\utils\main.d(47)
0x00007FF7EE58616E in D main at C:\Users\Su\AppData\Local\dub\packages\ae-0.0.3227\ae\utils\main.d(70)
0x00007FF7EE7F9213 in void rt.dmain2._d_run_main2(char[][], ulong, extern (C) int function(char[][])*).runAll().__lambda2()
0x00007FF7EE7F900F in void rt.dmain2._d_run_main2(char[][], ulong, extern (C) int function(char[][])*).tryExec(scope void delegate())
0x00007FF7EE7F912F in void rt.dmain2._d_run_main2(char[][], ulong, extern (C) int function(char[][])*).runAll()
0x00007FF7EE7F900F in void rt.dmain2._d_run_main2(char[][], ulong, extern (C) int function(char[][])*).tryExec(scope void delegate())
0x00007FF7EE7F8DE0 in d_run_main2
0x00007FF7EE7BADA9 in d_run_main
0x00007FF7EE5861E2 in digger._d_cmain!().main at C:\D\dmd2\windows\bin\..\..\src\druntime\import\core\internal\entrypoint.d(29)
0x00007FF7EE8D5C68 in __scrt_common_main_seh at D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl(288)
0x00007FFB2A321412 in BaseThreadInitThunk
0x00007FFB2C0A5504 in RtlUserThreadStart
Error Program exited with code 1

it appears that something [make?] is calling xcopy with invalid arguments.

Moth-Tolias commented 1 year ago

seems like this is the result of an incorrectly configured makefile in the outdated, archived version of druntime at https://github.com/dlang/druntime... fixing it in the downloaded repo and running digger rebuild just results in another error later down the line however - perhaps digger needs to be adjusted to take the dmd/druntime merge into account?

CyberShadow commented 1 year ago

Yes and also there is a bug in the DMD or Druntime makefiles, which attempt to provide backwards compatibility but fail to do so in this case.