translator/platform/test/test_windows.py::TestMakefile::()::test_manifest
self = <rpython.translator.platform.test.test_windows.TestMakefile object at 0x000002385fe1dd00>
def test_manifest(self):
class Translation():
icon = None
manifest = os.path.join(os.path.dirname(__file__),
'data', 'python.manifest')
class Config():
translation = Translation()
tmpdir = udir.join('test_manifest').ensure(dir=1)
cfile = tmpdir.join('pypy_main.c')
cfile.write('''
#include <stdio.h>
__declspec(dllexport) int pypy_main_startup(int argc, wchar_t* argv[])
{
int x = 10;
int y = x * 2;
printf("%d\\n", y);
return 0;
}
''')
mk = self.platform.gen_makefile([cfile],
ExternalCompilationInfo(),
path=tmpdir,
shared=True,
config = Config(),
)
mk.write()
> self.platform.execute_makefile(mk)
translator\platform\test\test_windows.py:102:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
translator\platform\windows.py:570: in execute_makefile
self._handle_error(returncode, stdout, stderr, path.join('make'))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <MsvcPlatform cc=cl.exe>, returncode = 2
stdout = "\techo typedef unsigned short ARGV_T; int pypy_main_startup(int, ARGV_T*[]); int wmain(int argc, ARGV_T* argv[]) { re...est\\usession-main-3280\\test_manifest\\vc140.pdb'; if multiple CL.EXE write to the same .PDB file, please use /FS\r\n"
stderr = '\techo typedef unsigned short ARGV_T; int pypy_main_startup(int, ARGV_T*[]); int wmain(int argc, ARGV_T* argv[]) { re...file, please use /FS\r\njom: d:\\systemtemp\\pytest\\usession-main-3280\\test_manifest\\Makefile [wmain.obj] Error 2\n'
outname = local('d:\\systemtemp\\pytest\\usession-main-3280\\test_manifest\\make')
def _handle_error(self, returncode, stdout, stderr, outname):
if returncode != 0:
# Microsoft compilers write compilation errors to stdout
stderr = stdout + stderr
errorfile = outname.new(ext='errors')
errorfile.write(stderr, mode='wb')
if self.log_errors:
stderrlines = stderr.splitlines()
for line in stderrlines:
log.Error(line)
# ^^^ don't use ERROR, because it might actually be fine.
# Also, ERROR confuses lib-python/conftest.py.
> raise CompilationError(stdout, stderr)
E CompilationError: CompilationError(err="""
E echo typedef unsigned short ARGV_T; int pypy_main_startup(int, ARGV_T*[]); int wmain(int argc, ARGV_T* argv[]) { return pypy_main_startup(argc, argv); } > main.c
E echo #define WIN32_LEAN_AND_MEAN > wmain.c.tmp
E echo #include "stdlib.h" >> wmain.c.tmp
E cl.exe /nologo /MD /O2 /FS /Zi /Fopypy_main.obj /c pypy_main.c
E pypy_main.c
E cl.exe /nologo /MD /O2 /FS /Zi /Fomain.obj /c main.c
E main.c
E echo #include "windows.h" >> wmain.c.tmp
E link.exe /dll /nologo /debug /LARGEADDRESSAWARE /STACK:3145728 /MANIFEST:EMBED /opt:noicf /out:libpypy_main.dll kernel32.lib pypy_main.obj
E Creating library libpypy_main.lib and object libpypy_main.exp
E echo int pypy_main_startup(int, wchar_t*[]); >> wmain.c.tmp
E echo int WINAPI wWinMain( >> wmain.c.tmp
E echo HINSTANCE hInstance, /* handle to current instance */ >> wmain.c.tmp
E echo HINSTANCE hPrevInstance, /* handle to previous instance */ >> wmain.c.tmp
E echo LPWSTR lpCmdLine, /* pointer to command line */ >> wmain.c.tmp
E echo int nCmdShow /* show state of window */ >> wmain.c.tmp
E echo ) >> wmain.c.tmp
E echo { return pypy_main_startup(__argc, __wargv); } >> wmain.c.tmp
E move wmain.c.tmp wmain.c
E 1 file(s) moved.
E link.exe /DEBUG /LARGEADDRESSAWARE /STACK:3145728 main.obj libpypy_main.lib /MANIFEST:EMBED /MANIFESTINPUT:pypy.manifest /out:pypy_main.exe
E Microsoft (R) Incremental Linker Version 14.41.34123.0
E Copyright (C) Microsoft Corporation. All rights reserved.
E
E cl.exe /nologo /MD /O2 /FS /Zi /Fowmain.obj /c wmain.c
E wmain.c
E wmain.c: fatal error C1041: cannot open program database 'd:\systemtemp\pytest\usession-main-3280\test_manifest\vc140.pdb'; if multiple CL.EXE write to the same .PDB file, please use /FS
E jom: d:\systemtemp\pytest\usession-main-3280\test_manifest\Makefile [wmain.obj] Error 2
E """)
translator\platform\windows.py:315: CompilationError
---------- Captured stderr call ----------
[platform:execute] jom.exe in d:\systemtemp\pytest\usession-main-3280\test_manifest
[platform:Error] echo typedef unsigned short ARGV_T; int pypy_main_startup(int, ARGV_T*[]); int wmain(int argc, ARGV_T* argv[]) { return pypy_main_startup(argc, argv); } > main.c
[platform:Error] echo #define WIN32_LEAN_AND_MEAN > wmain.c.tmp
[platform:Error] echo #include "stdlib.h" >> wmain.c.tmp
[platform:Error] cl.exe /nologo /MD /O2 /FS /Zi /Fopypy_main.obj /c pypy_main.c
[platform:Error] pypy_main.c
[platform:Error] cl.exe /nologo /MD /O2 /FS /Zi /Fomain.obj /c main.c
[platform:Error] main.c
[platform:Error] echo #include "windows.h" >> wmain.c.tmp
[platform:Error] link.exe /dll /nologo /debug /LARGEADDRESSAWARE /STACK:3145728 /MANIFEST:EMBED /opt:noicf /out:libpypy_main.dll kernel32.lib pypy_main.obj
[platform:Error] Creating library libpypy_main.lib and object libpypy_main.exp
[platform:Error] echo int pypy_main_startup(int, wchar_t*[]); >> wmain.c.tmp
[platform:Error] echo int WINAPI wWinMain( >> wmain.c.tmp
[platform:Error] echo HINSTANCE hInstance, /* handle to current instance */ >> wmain.c.tmp
[platform:Error] echo HINSTANCE hPrevInstance, /* handle to previous instance */ >> wmain.c.tmp
[platform:Error] echo LPWSTR lpCmdLine, /* pointer to command line */ >> wmain.c.tmp
[platform:Error] echo int nCmdShow /* show state of window */ >> wmain.c.tmp
[platform:Error] echo ) >> wmain.c.tmp
[platform:Error] echo { return pypy_main_startup(__argc, __wargv); } >> wmain.c.tmp
[platform:Error] move wmain.c.tmp wmain.c
[platform:Error] 1 file(s) moved.
[platform:Error] link.exe /DEBUG /LARGEADDRESSAWARE /STACK:3145728 main.obj libpypy_main.lib /MANIFEST:EMBED /MANIFESTINPUT:pypy.manifest /out:pypy_main.exe
[platform:Error] Microsoft (R) Incremental Linker Version 14.41.34123.0
[platform:Error] Copyright (C) Microsoft Corporation. All rights reserved.
[platform:Error]
[platform:Error] cl.exe /nologo /MD /O2 /FS /Zi /Fowmain.obj /c wmain.c
[platform:Error] wmain.c
[platform:Error] wmain.c: fatal error C1041: cannot open program database 'd:\systemtemp\pytest\usession-main-3280\test_manifest\vc140.pdb'; if multiple CL.EXE write to the same .PDB file, please use /FS
[platform:Error] jom: d:\systemtemp\pytest\usession-main-3280\test_manifest\Makefile [wmain.obj] Error 2
(somefailed=True in translator/platform/test)
builder: rpython-win-x86-64 build #403
test: translator/platform/test/test_windows/py/TestMakefile/()/test_manifest