Building opensource third parties in Teamcity

Hi,
I'm trying to build open source thirdparties and some of them fail to build in TeamCity. it is Google V8 and openssl
V8 seems to fail because it does not create proper solution file when it runs under TeamCity. creating solution involves GYP building framework and python usage. The same procedure work well when ran on build agent from VS2012 command line.
The command as following:
cd v8
call "%%VS110COMNTOOLS%%..\..\VC\vcvarsall.bat" x86_amd64
third_party\python_26\python.exe build\gyp_v8 -Dtarget_arch=x64 -Dcomponent=shared_library
it completes successfuly but the solution (mysteriously) does not contain x64 configurations in solution/projects. and the same works great from VS command prompt. I'm wondering if it have something to to with python/gyp or it is some rare TC issue?

The second problem, with OpenSSL, it runs fine in VS command prompt, fails in TC. It employs perl to configure its build system. The command as following:
call "%%VS110COMNTOOLS%%..\..\VC\vcvarsall.bat" x86_amd64
perl Configure VC-WIN64A
ms\do_win64a.bat
nmake /d /f ms\ntdll.mak

it runs fine util it reaches the make file and the fails with asm file compilation (complaining about the assembler file which should end with END statement, and it really does). as mentioned above, wirks in VS command prompt. Worth to mention I'm trying to create x64 configurations.
Now the questions are, whats the problem? it is my fault? is there any solution/workaround? should I communicate these problems to these projects maintainers? is it TC problem?

Thanks!

5 comments
Comment actions Permalink

Hi

TeamCity build agent is 32-bit process, so it starts 32-bit child processes by default.
To execute these commands in 64-bit environment you'll need to run %windir%\sysnative\cmd.exe /c build.bat command.
This is how it's configured in TeamCity command-line build runner:
Capture.PNG

0
Comment actions Permalink

Looks reasonable and should work, but it didnt.
So I've checked again the V8 build from command line - failed! Great! Spent some time trying to understand what is the problem here. Finally, I've figured it out. Back then it worked from command line, but failed in TC, which is ok, since the runner should be invoked as x64, as Michael mentioned. So why Machael's solution did not do the trick? Google V8 guys ruined the build system. As simple as that. Switching back from tag to trunk solved this problem.
So the last mistery here is OpenSSL which still does not work even with Michael's solution.

0
Comment actions Permalink

Hello,

I would try to follow our notes on investigating issues when running builds in TeamCity.
Other then that: no idea on the root cuase of the error...

0
Comment actions Permalink

Yegor, this is the first thing I did, back then.
The root cause is, of course, has nothing to do with TC.
Apparently, it is known perl problem.
http://www.mentby.com/Group/openssl-users/cant-redirect-console-log-during-windows-build.html


I rest my case :)
0

Please sign in to leave a comment.