compnerd / swift-build

Alternate Swift Builds
232 stars 53 forks source link

Problems building for Windows x64 using Visual Studio 17.11.0 #808

Open glenrgordon opened 3 weeks ago

glenrgordon commented 3 weeks ago

Trying to build Swift for windows for the first time. 30+ years as Windows developer, brand new to Swift. I'm using the commands: repo sync S:\SourceCache\swift\utils\build.cmd -WindowsSDKs x64 -DebugInfo -SkipPackaging -EnableCaching No problems till I get to building the basic module. Looks to me that Clang can't parse something from the complex header file but I can't figure out what or why. Output follows. Any help in at least understanding what might be going wrong would be great. Am wanting to contribute to Swift on Windows, but obviously need to be able to build first. Let me know if there's other info that I can provide to help diagnose what I must be doing wrong.

Thanks

[3932/6491] Building swift module Basic

FAILED: tools/swift/SwiftCompilerSources/Basic.o S:/b/5/tools/swift/SwiftCompilerSources/Basic.o 

C:\Windows\system32\cmd.exe /C "cd /D S:\SourceCache\swift\SwiftCompilerSources && S:\b\toolchains\swift-5.10.1-RELEASE-windows10\LocalApp\Programs\Swift\Toolchains\5.10.1+Asserts\usr\bin\swiftc.exe -c -o S:/b/5/tools/swift/SwiftCompilerSources/Basic.o -sdk S:/b/toolchains/swift-5.10.1-RELEASE-windows10/LocalApp/Programs/Swift/Platforms/5.10.1/Windows.platform/Developer/SDKs/Windows.sdk -target x86_64-unknown-windows-msvc -module-name Basic -emit-module -emit-module-path S:/b/5/tools/swift/SwiftCompilerSources/Basic.swiftmodule -parse-as-library S:/SourceCache/swift/SwiftCompilerSources/Sources/Basic/SourceLoc.swift S:/SourceCache/swift/SwiftCompilerSources/Sources/Basic/StringParser.swift S:/SourceCache/swift/SwiftCompilerSources/Sources/Basic/Utils.swift -wmo -color-diagnostics -Xfrontend -validate-tbd-against-ir=none -Xfrontend -disable-target-os-checking -Xcc -std=c++17 -Xcc -DCOMPILED_WITH_SWIFT -Xcc -DSWIFT_TARGET -Xcc -UIBOutlet -Xcc -UIBAction -Xcc -UIBInspectable -cxx-interoperability-mode=default -O -cross-module-optimization -Xcc -UNDEBUG -Xcc -DPURE_BRIDGING_MODE -Xfrontend -disable-legacy-type-info -static -Xllvm -sil-disable-pass=loadable-address -Xcc -D_ALLOW_COMPILER_AND_STL_VERSION_MISMATCH -Xcc -I -Xcc S:/SourceCache/llvm-project/llvm/include -Xcc -I -Xcc S:/b/5/include -Xcc -I -Xcc S:/SourceCache/llvm-project/llvm/../clang/include -Xcc -I -Xcc S:/b/5/tools/clang/include -Xcc -I -Xcc S:/SourceCache/swift/include -Xcc -I -Xcc S:/b/5/tools/swift/SwiftCompilerSources/../include -I S:/b/5/tools/swift/SwiftCompilerSources"
<module-includes>:1:10: note: in file included from <module-includes>:1:

#include "ccomplex"

         ^

C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include/ccomplex:11:10: note: in file included from C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include/ccomplex:11:

#include <complex>

         ^

C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\complex:13:10: note: in file included from C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\complex:13:

#include <sstream>

         ^

C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\sstream:10:10: note: in file included from C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\sstream:10:

#include <istream>

         ^

C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\istream:10:10: note: in file included from C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\istream:10:

#include <ostream>

         ^

C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\ostream:10:10: note: in file included from C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\ostream:10:

#include <ios>

         ^

C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\ios:10:10: note: in file included from C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\ios:10:

#include <xlocnum>

         ^

C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\xlocnum:15:10: note: in file included from C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\xlocnum:15:

#include <iterator>

         ^

C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\iterator:11:10: note: in file included from C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\iterator:11:

#include <xutility>

         ^

C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\xutility:11:10: note: in file included from C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\xutility:11:

#include <__msvc_iter_core.hpp>

         ^

C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\__msvc_iter_core.hpp:10:10: note: in file included from C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\__msvc_iter_core.hpp:10:

#include <utility>

         ^

C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\utility:11:10: note: in file included from C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\utility:11:

#include <type_traits>

         ^

C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\type_traits:131:5: error: static assertion failed: Calling declval is ill-formed, see N4950 [declval]/2.

    static_assert(false, "Calling declval is ill-formed, see N4950 [declval]/2.");

    ^

<module-includes>:1:10: note: in file included from <module-includes>:1:

#include "ccomplex"

         ^

C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include/ccomplex:11:10: note: in file included from C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include/ccomplex:11:

#include <complex>

         ^

C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\complex:13:10: note: in file included from C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\complex:13:

#include <sstream>

         ^

C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\sstream:10:10: note: in file included from C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\sstream:10:

#include <istream>

         ^

C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\istream:10:10: note: in file included from C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\istream:10:

#include <ostream>

         ^

C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\ostream:10:10: note: in file included from C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\ostream:10:

#include <ios>

         ^

C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\ios:10:10: note: in file included from C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\ios:10:

#include <xlocnum>

         ^

C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\xlocnum:16:10: note: in file included from C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\xlocnum:16:

#include <streambuf>

         ^

C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\streambuf:10:10: note: in file included from C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\streambuf:10:

#include <xiosbase>

         ^

C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\xiosbase:11:10: note: in file included from C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\xiosbase:11:

#include <system_error>

         ^

C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\system_error:13:10: note: in file included from C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\system_error:13:

#include <stdexcept>

         ^

C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\stdexcept:11:10: note: in file included from C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\stdexcept:11:

#include <xstring>

         ^

C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\xstring:16:10: note: in file included from C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\xstring:16:

#include <xpolymorphic_allocator.h>

         ^

C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\xpolymorphic_allocator.h:10:10: note: in file included from C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\xpolymorphic_allocator.h:10:

#include <tuple>

         ^

C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\tuple:957:9: error: static assertion failed: get<T>(tuple<Types...>&) requires T to occur exactly once in Types. (N4971 [tuple.elem]/5)

        static_assert(false, "get<T>(tuple<Types...>&) "

        ^

<module-includes>:1:10: note: in file included from <module-includes>:1:

#include "ccomplex"

         ^

C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include/ccomplex:11:10: note: in file included from C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include/ccomplex:11:

#include <complex>

         ^

C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\complex:13:10: note: in file included from C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\complex:13:

#include <sstream>

         ^

C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\sstream:10:10: note: in file included from C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\sstream:10:

#include <istream>

         ^

C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\istream:10:10: note: in file included from C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\istream:10:

#include <ostream>

         ^

C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\ostream:10:10: note: in file included from C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\ostream:10:

#include <ios>

         ^

C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\ios:10:10: note: in file included from C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\ios:10:

#include <xlocnum>

         ^

C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\xlocnum:16:10: note: in file included from C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\xlocnum:16:

#include <streambuf>

         ^

C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\streambuf:10:10: note: in file included from C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\streambuf:10:

#include <xiosbase>

         ^

C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\xiosbase:11:10: note: in file included from C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\xiosbase:11:

#include <system_error>

         ^

C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\system_error:13:10: note: in file included from C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\system_error:13:

#include <stdexcept>

         ^

C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\stdexcept:11:10: note: in file included from C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\stdexcept:11:

#include <xstring>

         ^

C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\xstring:16:10: note: in file included from C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\xstring:16:

#include <xpolymorphic_allocator.h>

         ^

C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\xpolymorphic_allocator.h:10:10: note: in file included from C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\xpolymorphic_allocator.h:10:

#include <tuple>

         ^

C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\tuple:969:9: error: static assertion failed: get<T>(const tuple<Types...>&) requires T to occur exactly once in Types. (N4971 [tuple.elem]/5)

        static_assert(false, "get<T>(const tuple<Types...>&) "
compnerd commented 3 weeks ago

It seems that the error message that you are trying to search for might be one of:

C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\type_traits:131:5: error: static assertion failed: Calling declval is ill-formed, see N4950 [declval]/2.
    static_assert(false, "Calling declval is ill-formed, see N4950 [declval]/2.");
    ^
C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\tuple:957:9: error: static assertion failed: get<T>(tuple<Types...>&) requires T to occur exactly once in Types. (N4971 [tuple.elem]/5)
        static_assert(false, "get<T>(tuple<Types...>&) "
        ^
C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\include\tuple:969:9: error: static assertion failed: get<T>(const tuple<Types...>&) requires T to occur exactly once in Types. (N4971 [tuple.elem]/5)
        static_assert(false, "get<T>(const tuple<Types...>&) "

All of these cases seem to indicate an issue where the C++ standard library is unhappy about some path through the standard library.

compnerd commented 3 weeks ago

I think that was recently introduced in 17.11.0. A temporary workaround might be to use 17.10.0 (though we will need to figure out what is going on here).

compnerd commented 3 weeks ago

I think that this might be a bug in the older clang that we use for bootstrapping. It seems to work with the newer compiler. However, that uncovers another bug in build.ps1 :(

glenrgordon commented 3 weeks ago

Thanks for the quick responses. You just saved me a bunch of time. I’ll get back to this next weekend and see if I get further. Is there a way to use the Clang standard library headers when compiling and bypass those provided by Visual C++, or will that open up a different kettle of fish.

From: Saleem Abdulrasool @.> Sent: Sunday, August 18, 2024 7:56 PM To: compnerd/swift-build @.> Cc: glenrgordon @.>; Author @.> Subject: Re: [compnerd/swift-build] Problems building for Windows x64 using Visual Studio 17.11.0 (Issue #808)

I think that this might be a bug in the older clang that we use for bootstrapping. It seems to work with the newer compiler. However, that uncovers another bug in build.ps1 :(

— Reply to this email directly, view it on GitHub https://github.com/compnerd/swift-build/issues/808#issuecomment-2295481125 , or unsubscribe https://github.com/notifications/unsubscribe-auth/AEMY6EPWPG6BZRO6YKEADPLZSE7DZAVCNFSM6AAAAABMWZADA6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDEOJVGQ4DCMJSGU . You are receiving this because you authored the thread. https://github.com/notifications/beacon/AEMY6EK4GJGMUSWGIXPRSBLZSE7DZA5CNFSM6AAAAABMWZADA6WGG33NNVSW45C7OR4XAZNMJFZXG5LFINXW23LFNZ2KUY3PNVWWK3TUL5UWJTUI2JBSK.gif Message ID: @. @.> >

compnerd commented 3 weeks ago

No, not currently; we build the compiler against the windows system libraries and compilers. The problem is that the SwiftCompilerSources is Swift code which falls back to the integrated clang.

hjyamauchi commented 3 weeks ago

Could it help if a 6.0 toolchain like this is used as the pinned (bootstrap) toolchain?

compnerd commented 3 weeks ago

@hjyamauchi we cannot pin the toolchain to 6.0 as the 5.10 toolchain is the agreed upon bootstrap toolchain for the project.

hjyamauchi commented 3 weeks ago

@compnerd Would it make sense to need to pin the VS version like the Swiftlang CIs then?

compnerd commented 3 weeks ago

Well, I'd rather not pin the VS version for main - that needs to be fixed.

hyp commented 3 weeks ago

fix (pending deployment): https://github.com/swiftlang/llvm-project/pull/9153