Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft: Windows: Add clang-cl CI job #12946

Closed
wants to merge 2 commits into from
Closed

Draft: Windows: Add clang-cl CI job #12946

wants to merge 2 commits into from

Conversation

sunjayBhatia
Copy link
Member

@sunjayBhatia sunjayBhatia commented Sep 2, 2020

Draft PR for now to demonstrate and iterate on Windows clang-cl build in CI


Commit Message: Windows: Add clang-cl CI job
Risk Level: Low
Testing: N/A
Docs Changes: N/A
Release Notes: N/A

@sunjayBhatia
Copy link
Member Author

@envoyproxy/windows-dev

@sunjayBhatia sunjayBhatia changed the title Draft: Windows: Add clang-cl job Draft: Windows: Add clang-cl CI job Sep 2, 2020
@sunjayBhatia
Copy link
Member Author

current clang-cl build failure:

FAILED: lib/libcurl.lib 
cmd.exe /C "cd . && "C:\Program Files\LLVM\bin\llvm-lib.exe" /nologo /machine:x64 /nologo /SUBSYSTEM:CONSOLE /MACHINE:X64 /DEFAULTLIB:libcmt.lib /OPT:ICF /OPT:REF /machine:x64 /MANIFEST:NO /out:lib\libcurl.lib lib\CMakeFiles\libcurl.dir\file.c.obj lib\CMakeFiles\libcurl.dir\timeval.c.obj lib\CMakeFiles\libcurl.dir\base64.c.obj lib\CMakeFiles\libcurl.dir\hostip.c.obj lib\CMakeFiles\libcurl.dir\progress.c.obj lib\CMakeFiles\libcurl.dir\formdata.c.obj lib\CMakeFiles\libcurl.dir\cookie.c.obj lib\CMakeFiles\libcurl.dir\http.c.obj lib\CMakeFiles\libcurl.dir\sendf.c.obj lib\CMakeFiles\libcurl.dir\ftp.c.obj lib\CMakeFiles\libcurl.dir\url.c.obj lib\CMakeFiles\libcurl.dir\dict.c.obj lib\CMakeFiles\libcurl.dir\if2ip.c.obj lib\CMakeFiles\libcurl.dir\speedcheck.c.obj lib\CMakeFiles\libcurl.dir\ldap.c.obj lib\CMakeFiles\libcurl.dir\version.c.obj lib\CMakeFiles\libcurl.dir\getenv.c.obj lib\CMakeFiles\libcurl.dir\escape.c.obj lib\CMakeFiles\libcurl.dir\mprintf.c.obj lib\CMakeFiles\libcurl.dir\telnet.c.obj lib\CMakeFiles\libcurl.dir\netrc.c.obj lib\CMakeFiles\libcurl.dir\getinfo.c.obj lib\CMakeFiles\libcurl.dir\transfer.c.obj lib\CMakeFiles\libcurl.dir\strcase.c.obj lib\CMakeFiles\libcurl.dir\easy.c.obj lib\CMakeFiles\libcurl.dir\security.c.obj lib\CMakeFiles\libcurl.dir\curl_fnmatch.c.obj lib\CMakeFiles\libcurl.dir\fileinfo.c.obj lib\CMakeFiles\libcurl.dir\ftplistparser.c.obj lib\CMakeFiles\libcurl.dir\wildcard.c.obj lib\CMakeFiles\libcurl.dir\krb5.c.obj lib\CMakeFiles\libcurl.dir\memdebug.c.obj lib\CMakeFiles\libcurl.dir\http_chunks.c.obj lib\CMakeFiles\libcurl.dir\strtok.c.obj lib\CMakeFiles\libcurl.dir\connect.c.obj lib\CMakeFiles\libcurl.dir\llist.c.obj lib\CMakeFiles\libcurl.dir\hash.c.obj lib\CMakeFiles\libcurl.dir\multi.c.obj lib\CMakeFiles\libcurl.dir\content_encoding.c.obj lib\CMakeFiles\libcurl.dir\share.c.obj lib\CMakeFiles\libcurl.dir\http_digest.c.obj lib\CMakeFiles\libcurl.dir\md4.c.obj lib\CMakeFiles\libcurl.dir\md5.c.obj lib\CMakeFiles\libcurl.dir\http_negotiate.c.obj lib\CMakeFiles\libcurl.dir\inet_pton.c.obj lib\CMakeFiles\libcurl.dir\strtoofft.c.obj lib\CMakeFiles\libcurl.dir\strerror.c.obj lib\CMakeFiles\libcurl.dir\amigaos.c.obj lib\CMakeFiles\libcurl.dir\hostasyn.c.obj lib\CMakeFiles\libcurl.dir\hostip4.c.obj lib\CMakeFiles\libcurl.dir\hostip6.c.obj lib\CMakeFiles\libcurl.dir\hostsyn.c.obj lib\CMakeFiles\libcurl.dir\inet_ntop.c.obj lib\CMakeFiles\libcurl.dir\parsedate.c.obj lib\CMakeFiles\libcurl.dir\select.c.obj lib\CMakeFiles\libcurl.dir\tftp.c.obj lib\CMakeFiles\libcurl.dir\splay.c.obj lib\CMakeFiles\libcurl.dir\strdup.c.obj lib\CMakeFiles\libcurl.dir\socks.c.obj lib\CMakeFiles\libcurl.dir\curl_addrinfo.c.obj lib\CMakeFiles\libcurl.dir\socks_gssapi.c.obj lib\CMakeFiles\libcurl.dir\socks_sspi.c.obj lib\CMakeFiles\libcurl.dir\curl_sspi.c.obj lib\CMakeFiles\libcurl.dir\slist.c.obj lib\CMakeFiles\libcurl.dir\nonblock.c.obj lib\CMakeFiles\libcurl.dir\curl_memrchr.c.obj lib\CMakeFiles\libcurl.dir\imap.c.obj lib\CMakeFiles\libcurl.dir\pop3.c.obj lib\CMakeFiles\libcurl.dir\smtp.c.obj lib\CMakeFiles\libcurl.dir\pingpong.c.obj lib\CMakeFiles\libcurl.dir\rtsp.c.obj lib\CMakeFiles\libcurl.dir\curl_threads.c.obj lib\CMakeFiles\libcurl.dir\warnless.c.obj lib\CMakeFiles\libcurl.dir\hmac.c.obj lib\CMakeFiles\libcurl.dir\curl_rtmp.c.obj lib\CMakeFiles\libcurl.dir\openldap.c.obj lib\CMakeFiles\libcurl.dir\curl_gethostname.c.obj lib\CMakeFiles\libcurl.dir\gopher.c.obj lib\CMakeFiles\libcurl.dir\idn_win32.c.obj lib\CMakeFiles\libcurl.dir\http_proxy.c.obj lib\CMakeFiles\libcurl.dir\non-ascii.c.obj lib\CMakeFiles\libcurl.dir\asyn-ares.c.obj lib\CMakeFiles\libcurl.dir\asyn-thread.c.obj lib\CMakeFiles\libcurl.dir\curl_gssapi.c.obj lib\CMakeFiles\libcurl.dir\http_ntlm.c.obj lib\CMakeFiles\libcurl.dir\curl_ntlm_wb.c.obj lib\CMakeFiles\libcurl.dir\curl_ntlm_core.c.obj lib\CMakeFiles\libcurl.dir\curl_sasl.c.obj lib\CMakeFiles\libcurl.dir\rand.c.obj lib\CMakeFiles\libcurl.dir\curl_multibyte.c.obj lib\CMakeFiles\libcurl.dir\hostcheck.c.obj lib\CMakeFiles\libcurl.dir\conncache.c.obj lib\CMakeFiles\libcurl.dir\dotdot.c.obj lib\CMakeFiles\libcurl.dir\x509asn1.c.obj lib\CMakeFiles\libcurl.dir\http2.c.obj lib\CMakeFiles\libcurl.dir\smb.c.obj lib\CMakeFiles\libcurl.dir\curl_endian.c.obj lib\CMakeFiles\libcurl.dir\curl_des.c.obj lib\CMakeFiles\libcurl.dir\system_win32.c.obj lib\CMakeFiles\libcurl.dir\mime.c.obj lib\CMakeFiles\libcurl.dir\sha256.c.obj lib\CMakeFiles\libcurl.dir\setopt.c.obj lib\CMakeFiles\libcurl.dir\curl_path.c.obj lib\CMakeFiles\libcurl.dir\curl_ctype.c.obj lib\CMakeFiles\libcurl.dir\curl_range.c.obj lib\CMakeFiles\libcurl.dir\psl.c.obj lib\CMakeFiles\libcurl.dir\doh.c.obj lib\CMakeFiles\libcurl.dir\urlapi.c.obj lib\CMakeFiles\libcurl.dir\curl_get_line.c.obj lib\CMakeFiles\libcurl.dir\altsvc.c.obj lib\CMakeFiles\libcurl.dir\socketpair.c.obj lib\CMakeFiles\libcurl.dir\rename.c.obj lib\CMakeFiles\libcurl.dir\vauth\vauth.c.obj lib\CMakeFiles\libcurl.dir\vauth\cleartext.c.obj lib\CMakeFiles\libcurl.dir\vauth\cram.c.obj lib\CMakeFiles\libcurl.dir\vauth\digest.c.obj lib\CMakeFiles\libcurl.dir\vauth\digest_sspi.c.obj lib\CMakeFiles\libcurl.dir\vauth\krb5_gssapi.c.obj lib\CMakeFiles\libcurl.dir\vauth\krb5_sspi.c.obj lib\CMakeFiles\libcurl.dir\vauth\ntlm.c.obj lib\CMakeFiles\libcurl.dir\vauth\ntlm_sspi.c.obj lib\CMakeFiles\libcurl.dir\vauth\oauth2.c.obj lib\CMakeFiles\libcurl.dir\vauth\spnego_gssapi.c.obj lib\CMakeFiles\libcurl.dir\vauth\spnego_sspi.c.obj lib\CMakeFiles\libcurl.dir\vtls\openssl.c.obj lib\CMakeFiles\libcurl.dir\vtls\gtls.c.obj lib\CMakeFiles\libcurl.dir\vtls\vtls.c.obj lib\CMakeFiles\libcurl.dir\vtls\nss.c.obj lib\CMakeFiles\libcurl.dir\vtls\mbedtls_threadlock.c.obj lib\CMakeFiles\libcurl.dir\vtls\wolfssl.c.obj lib\CMakeFiles\libcurl.dir\vtls\schannel.c.obj lib\CMakeFiles\libcurl.dir\vtls\schannel_verify.c.obj lib\CMakeFiles\libcurl.dir\vtls\sectransp.c.obj lib\CMakeFiles\libcurl.dir\vtls\gskit.c.obj lib\CMakeFiles\libcurl.dir\vtls\mbedtls.c.obj lib\CMakeFiles\libcurl.dir\vtls\mesalink.c.obj lib\CMakeFiles\libcurl.dir\vtls\bearssl.c.obj lib\CMakeFiles\libcurl.dir\vquic\ngtcp2.c.obj lib\CMakeFiles\libcurl.dir\vquic\quiche.c.obj lib\CMakeFiles\libcurl.dir\vssh\libssh2.c.obj lib\CMakeFiles\libcurl.dir\vssh\libssh.c.obj lib\CMakeFiles\libcurl.dir\vssh\wolfssh.c.obj lib\CMakeFiles\libcurl.dir\libcurl.rc.res  && cd ."
/SUBSYSTEM:CONSOLE: no such file or directory

@wrowe
Copy link
Contributor

wrowe commented Sep 8, 2020

Just to document the failure, which is well-understood, the command;

"C:\Program Files\LLVM\bin\llvm-lib.exe" /nologo /machine:x64 /nologo /SUBSYSTEM:CONSOLE /MACHINE:X64 /DEFAULTLIB:libcmt.lib /OPT:ICF /OPT:REF /machine:x64 /MANIFEST:NO /out:lib\libcurl.lib lib\CMakeFiles\libcurl.dir\file.c.obj lib\CMakeFiles\libcurl.dir\timeval.c.obj lib\CMakeFiles\libcurl.dir\base64.c.obj lib\CMakeFiles\libcurl.dir\hostip.c.obj lib\CMakeFiles\libcurl.dir\progress.c.obj lib\CMakeFiles\libcurl.dir\formdata.c.obj lib\CMakeFiles\libcurl.dir\cookie.c.obj lib\CMakeFiles\libcurl.dir\http.c.obj lib\CMakeFiles\libcurl.dir\sendf.c.obj lib\CMakeFiles\libcurl.dir\ftp.c.obj lib\CMakeFiles\libcurl.dir\url.c.obj lib\CMakeFiles\libcurl.dir\dict.c.obj lib\CMakeFiles\libcurl.dir\if2ip.c.obj lib\CMakeFiles\libcurl.dir\speedcheck.c.obj lib\CMakeFiles\libcurl.dir\ldap.c.obj lib\CMakeFiles\libcurl.dir\version.c.obj lib\CMakeFiles\libcurl.dir\getenv.c.obj lib\CMakeFiles\libcurl.dir\escape.c.obj lib\CMakeFiles\libcurl.dir\mprintf.c.obj lib\CMakeFiles\libcurl.dir\telnet.c.obj lib\CMakeFiles\libcurl.dir\netrc.c.obj lib\CMakeFiles\libcurl.dir\getinfo.c.obj lib\CMakeFiles\libcurl.dir\transfer.c.obj lib\CMakeFiles\libcurl.dir\strcase.c.obj lib\CMakeFiles\libcurl.dir\easy.c.obj lib\CMakeFiles\libcurl.dir\security.c.obj lib\CMakeFiles\libcurl.dir\curl_fnmatch.c.obj lib\CMakeFiles\libcurl.dir\fileinfo.c.obj lib\CMakeFiles\libcurl.dir\ftplistparser.c.obj lib\CMakeFiles\libcurl.dir\wildcard.c.obj lib\CMakeFiles\libcurl.dir\krb5.c.obj lib\CMakeFiles\libcurl.dir\memdebug.c.obj lib\CMakeFiles\libcurl.dir\http_chunks.c.obj lib\CMakeFiles\libcurl.dir\strtok.c.obj lib\CMakeFiles\libcurl.dir\connect.c.obj lib\CMakeFiles\libcurl.dir\llist.c.obj lib\CMakeFiles\libcurl.dir\hash.c.obj lib\CMakeFiles\libcurl.dir\multi.c.obj lib\CMakeFiles\libcurl.dir\content_encoding.c.obj lib\CMakeFiles\libcurl.dir\share.c.obj lib\CMakeFiles\libcurl.dir\http_digest.c.obj lib\CMakeFiles\libcurl.dir\md4.c.obj lib\CMakeFiles\libcurl.dir\md5.c.obj lib\CMakeFiles\libcurl.dir\http_negotiate.c.obj lib\CMakeFiles\libcurl.dir\inet_pton.c.obj lib\CMakeFiles\libcurl.dir\strtoofft.c.obj lib\CMakeFiles\libcurl.dir\strerror.c.obj lib\CMakeFiles\libcurl.dir\amigaos.c.obj lib\CMakeFiles\libcurl.dir\hostasyn.c.obj lib\CMakeFiles\libcurl.dir\hostip4.c.obj lib\CMakeFiles\libcurl.dir\hostip6.c.obj lib\CMakeFiles\libcurl.dir\hostsyn.c.obj lib\CMakeFiles\libcurl.dir\inet_ntop.c.obj lib\CMakeFiles\libcurl.dir\parsedate.c.obj lib\CMakeFiles\libcurl.dir\select.c.obj lib\CMakeFiles\libcurl.dir\tftp.c.obj lib\CMakeFiles\libcurl.dir\splay.c.obj lib\CMakeFiles\libcurl.dir\strdup.c.obj lib\CMakeFiles\libcurl.dir\socks.c.obj lib\CMakeFiles\libcurl.dir\curl_addrinfo.c.obj lib\CMakeFiles\libcurl.dir\socks_gssapi.c.obj lib\CMakeFiles\libcurl.dir\socks_sspi.c.obj lib\CMakeFiles\libcurl.dir\curl_sspi.c.obj lib\CMakeFiles\libcurl.dir\slist.c.obj lib\CMakeFiles\libcurl.dir\nonblock.c.obj lib\CMakeFiles\libcurl.dir\curl_memrchr.c.obj lib\CMakeFiles\libcurl.dir\imap.c.obj lib\CMakeFiles\libcurl.dir\pop3.c.obj lib\CMakeFiles\libcurl.dir\smtp.c.obj lib\CMakeFiles\libcurl.dir\pingpong.c.obj lib\CMakeFiles\libcurl.dir\rtsp.c.obj lib\CMakeFiles\libcurl.dir\curl_threads.c.obj lib\CMakeFiles\libcurl.dir\warnless.c.obj lib\CMakeFiles\libcurl.dir\hmac.c.obj lib\CMakeFiles\libcurl.dir\curl_rtmp.c.obj lib\CMakeFiles\libcurl.dir\openldap.c.obj lib\CMakeFiles\libcurl.dir\curl_gethostname.c.obj lib\CMakeFiles\libcurl.dir\gopher.c.obj lib\CMakeFiles\libcurl.dir\idn_win32.c.obj lib\CMakeFiles\libcurl.dir\http_proxy.c.obj lib\CMakeFiles\libcurl.dir\non-ascii.c.obj lib\CMakeFiles\libcurl.dir\asyn-ares.c.obj lib\CMakeFiles\libcurl.dir\asyn-thread.c.obj lib\CMakeFiles\libcurl.dir\curl_gssapi.c.obj lib\CMakeFiles\libcurl.dir\http_ntlm.c.obj lib\CMakeFiles\libcurl.dir\curl_ntlm_wb.c.obj lib\CMakeFiles\libcurl.dir\curl_ntlm_core.c.obj lib\CMakeFiles\libcurl.dir\curl_sasl.c.obj lib\CMakeFiles\libcurl.dir\rand.c.obj lib\CMakeFiles\libcurl.dir\curl_multibyte.c.obj lib\CMakeFiles\libcurl.dir\hostcheck.c.obj lib\CMakeFiles\libcurl.dir\conncache.c.obj lib\CMakeFiles\libcurl.dir\dotdot.c.obj lib\CMakeFiles\libcurl.dir\x509asn1.c.obj lib\CMakeFiles\libcurl.dir\http2.c.obj lib\CMakeFiles\libcurl.dir\smb.c.obj lib\CMakeFiles\libcurl.dir\curl_endian.c.obj lib\CMakeFiles\libcurl.dir\curl_des.c.obj lib\CMakeFiles\libcurl.dir\system_win32.c.obj lib\CMakeFiles\libcurl.dir\mime.c.obj lib\CMakeFiles\libcurl.dir\sha256.c.obj lib\CMakeFiles\libcurl.dir\setopt.c.obj lib\CMakeFiles\libcurl.dir\curl_path.c.obj lib\CMakeFiles\libcurl.dir\curl_ctype.c.obj lib\CMakeFiles\libcurl.dir\curl_range.c.obj lib\CMakeFiles\libcurl.dir\psl.c.obj lib\CMakeFiles\libcurl.dir\doh.c.obj lib\CMakeFiles\libcurl.dir\urlapi.c.obj lib\CMakeFiles\libcurl.dir\curl_get_line.c.obj lib\CMakeFiles\libcurl.dir\altsvc.c.obj lib\CMakeFiles\libcurl.dir\socketpair.c.obj lib\CMakeFiles\libcurl.dir\rename.c.obj lib\CMakeFiles\libcurl.dir\vauth\vauth.c.obj lib\CMakeFiles\libcurl.dir\vauth\cleartext.c.obj lib\CMakeFiles\libcurl.dir\vauth\cram.c.obj lib\CMakeFiles\libcurl.dir\vauth\digest.c.obj lib\CMakeFiles\libcurl.dir\vauth\digest_sspi.c.obj lib\CMakeFiles\libcurl.dir\vauth\krb5_gssapi.c.obj lib\CMakeFiles\libcurl.dir\vauth\krb5_sspi.c.obj lib\CMakeFiles\libcurl.dir\vauth\ntlm.c.obj lib\CMakeFiles\libcurl.dir\vauth\ntlm_sspi.c.obj lib\CMakeFiles\libcurl.dir\vauth\oauth2.c.obj lib\CMakeFiles\libcurl.dir\vauth\spnego_gssapi.c.obj lib\CMakeFiles\libcurl.dir\vauth\spnego_sspi.c.obj lib\CMakeFiles\libcurl.dir\vtls\openssl.c.obj lib\CMakeFiles\libcurl.dir\vtls\gtls.c.obj lib\CMakeFiles\libcurl.dir\vtls\vtls.c.obj lib\CMakeFiles\libcurl.dir\vtls\nss.c.obj lib\CMakeFiles\libcurl.dir\vtls\mbedtls_threadlock.c.obj lib\CMakeFiles\libcurl.dir\vtls\wolfssl.c.obj lib\CMakeFiles\libcurl.dir\vtls\schannel.c.obj lib\CMakeFiles\libcurl.dir\vtls\schannel_verify.c.obj lib\CMakeFiles\libcurl.dir\vtls\sectransp.c.obj lib\CMakeFiles\libcurl.dir\vtls\gskit.c.obj lib\CMakeFiles\libcurl.dir\vtls\mbedtls.c.obj lib\CMakeFiles\libcurl.dir\vtls\mesalink.c.obj lib\CMakeFiles\libcurl.dir\vtls\bearssl.c.obj lib\CMakeFiles\libcurl.dir\vquic\ngtcp2.c.obj lib\CMakeFiles\libcurl.dir\vquic\quiche.c.obj lib\CMakeFiles\libcurl.dir\vssh\libssh2.c.obj lib\CMakeFiles\libcurl.dir\vssh\libssh.c.obj lib\CMakeFiles\libcurl.dir\vssh\wolfssh.c.obj lib\CMakeFiles\libcurl.dir\libcurl.rc.res

is an invocation of AR (static library creation), dispatched to the lib.exe command, which will not accept LINK arguments such as /SUBSYSTEM:CONSOLE /MACHINE:X64 /DEFAULTLIB:libcmt.lib /OPT:ICF /OPT:REF /machine:x64 /MANIFEST:NO - these make no sense to lib.exe.

Once we figure out why these arguments are added for static AR invocations in the clang-cl step, we'll be one step closer to a functional clang-cl build.

@wrowe
Copy link
Contributor

wrowe commented Sep 8, 2020

Note this issue may be local to libcurl's CMakeLists.txt configuration and have nothing at all to do with bazel's rules_foreign_cc or the envoy build itself, it would not be the first issue we have had to hack around on that schema.

@wrowe
Copy link
Contributor

wrowe commented Sep 9, 2020

I can confirm the curl CMakeLists.txt logic is doing some inappropriate things. Presently correlating this to my use of cmake for httpd builds, and jumping forwards to curl 7.72.0 so we don't spend cycles on an already archaic release.

@wrowe
Copy link
Contributor

wrowe commented Sep 16, 2020

This PR development is also blocked on merging #13066 due to gcc compilation issues to be resolved.

sunjayBhatia and others added 2 commits September 16, 2020 14:52
Signed-off-by: Sunjay Bhatia <[email protected]>
Signed-off-by: William A Rowe Jr <[email protected]>
@wrowe
Copy link
Contributor

wrowe commented Sep 20, 2020

This is presently blocked on local effort and changes to flow through from #13133

/wait

@wrowe
Copy link
Contributor

wrowe commented Sep 21, 2020

/retest

@repokitteh-read-only
Copy link

Retrying Azure Pipelines, to retry CircleCI checks, use /retest-circle.
Retried failed jobs in: envoy-presubmit

🐱

Caused by: a #12946 (comment) was created by @wrowe.

see: more, trace.

@sunjayBhatia
Copy link
Member Author

superceded by #13133, closing

@sunjayBhatia sunjayBhatia deleted the windows-clang-cl-ci branch September 30, 2020 14:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants