Description
Describe the bug
Since #58699, I get LLVM module import errors, apparently because of the recent inclusion of those LLVM modules, 5768aeb:
cd /data/data/com.termux/files/home/swift/SwiftCompilerSources && /data/data/com.termux/files/home/build/Ninja-Release/swift-android-aarch64/bootstrapping0/bin/swiftc -c -o /data/data/com.termux/files/home/build/Ninja-Release/swift-android-aarch64/bootstrapping1/SwiftCompilerSources/Basic.o -target aarch64-unknown-linux-android -module-name Basic -emit-module -emit-module-path /data/data/com.termux/files/home/build/Ninja-Release/swift-android-aarch64/bootstrapping1/SwiftCompilerSources/Basic.swiftmodule -parse-as-library /data/data/com.termux/files/home/swift/SwiftCompilerSources/Sources/Basic/SourceLoc.swift /data/data/com.termux/files/home/swift/SwiftCompilerSources/Sources/Basic/Utils.swift -wmo -Xfrontend -validate-tbd-against-ir=none -Xfrontend -enable-experimental-cxx-interop -Xcc -UIBOutlet -Xcc -UIBAction -Xcc -UIBInspectable -Xfrontend -disable-implicit-string-processing-module-import -O -cross-module-optimization -Xcc -I -Xcc /data/data/com.termux/files/home/llvm-project/llvm/include -Xcc -I -Xcc /data/data/com.termux/files/home/build/Ninja-Release/llvm-android-aarch64/include -Xcc -I -Xcc /data/data/com.termux/files/home/swift/include -Xcc -I -Xcc /data/data/com.termux/files/home/build/Ninja-Release/swift-android-aarch64/SwiftCompilerSources/../include -I /data/data/com.termux/files/home/build/Ninja-Release/swift-android-aarch64/bootstrapping1/SwiftCompilerSources
<unknown>:0: warning: unable to perform implicit import of "_Concurrency" module: no such module found
/data/data/com.termux/files/home/swift/include/swift/AST/ASTBridging.h:16:10: note: while building module 'BasicBridging' imported from /data/data/com.termux/files/home/swift/include/swift/AST/ASTBridging.h:16:
#include "swift/Basic/BasicBridging.h"
^
/data/data/com.termux/files/home/swift/include/swift/Basic/Debug.h:15:10: note: while building module 'LLVM_Utils' imported from /data/data/com.termux/files/home/swift/include/swift/Basic/Debug.h:15:
#include "llvm/Support/Compiler.h"
^
<module-includes>:125:10: note: in file included from <module-includes>:125:
#include "Support/Caching.h"
^
/data/data/com.termux/files/home/llvm-project/llvm/include/llvm/Support/Caching.h:19:10: note: in file included from /data/data/com.termux/files/home/llvm-project/llvm/include/llvm/Support/Caching.h:19:
#include "llvm/Support/thread.h"
^
/data/data/com.termux/files/home/llvm-project/llvm/include/llvm/Support/thread.h:55:30: error: missing '#include <bits/pthread_types.h>'; 'pthread_t' must be declared before it is used
using native_handle_type = pthread_t;
^
/data/data/com.termux/files/usr/include/bits/pthread_types.h:104:14: note: declaration here is not visible
typedef long pthread_t;
^
/data/data/com.termux/files/home/swift/include/swift/AST/ASTBridging.h:16:10: note: while building module 'BasicBridging' imported from /data/data/com.termux/files/home/swift/include/swift/AST/ASTBridging.h:16:
#include "swift/Basic/BasicBridging.h"
^
<module-includes>:2:10: note: in file included from <module-includes>:2:
#include "Basic/BasicBridging.h"
^
/data/data/com.termux/files/home/swift/include/swift/Basic/BasicBridging.h:17:10: note: in file included from /data/data/com.termux/files/home/swift/include/swift/Basic/BasicBridging.h:17:
#include "swift/Basic/SourceLoc.h"
^
/data/data/com.termux/files/home/swift/include/swift/Basic/SourceLoc.h:20:10: note: in file included from /data/data/com.termux/files/home/swift/include/swift/Basic/SourceLoc.h:20:
#include "swift/Basic/Debug.h"
^
/data/data/com.termux/files/home/swift/include/swift/Basic/Debug.h:15:10: error: could not build module 'LLVM_Utils'
#include "llvm/Support/Compiler.h"
^
<module-includes>:1:10: note: in file included from <module-includes>:1:
#include "AST/ASTBridging.h"
^
/data/data/com.termux/files/home/swift/include/swift/AST/ASTBridging.h:16:10: error: could not build module 'BasicBridging'
#include "swift/Basic/BasicBridging.h"
^
/data/data/com.termux/files/home/swift/include/swift/Localization/LocalizationFormat.h:25:10: note: while building module 'LLVM_Bitstream' imported from /data/data/com.termux/files/home/swift/include/swift/Localization/LocalizationFormat.h:25:
#include "llvm/Bitstream/BitstreamReader.h"
^
<module-includes>:1:10: note: in file included from <module-includes>:1:
#include "Bitstream/BitCodes.h"
^
/data/data/com.termux/files/home/llvm-project/llvm/include/llvm/Bitstream/BitCodes.h:20:10: error: could not build module 'LLVM_Utils'
#include "llvm/ADT/SmallVector.h"
^
/data/data/com.termux/files/home/swift/SwiftCompilerSources/Sources/Basic/SourceLoc.swift:13:8: error: could not build C module 'ASTBridging'
import ASTBridging
^
ninja: build stopped: subcommand failed.
I tried adding an #include <bits/pthread_types.h>
in llvm-project/llvm/include/llvm/Support/thread.h
or in SwiftGlibc.h
: neither made a difference, with the same note /data/data/com.termux/files/usr/include/bits/pthread_types.h:104:14: note: declaration here is not visible
. Why isn't it visible? Who knows.
Steps To Reproduce
Steps to reproduce the behavior:
- Bootstrapping the Swift compiler on Linux with libc++ may reproduce this issue I'm seeing natively on Android.
Expected behavior
For libswift to keep building as before.
Environment
- OS: Android 12 AArch64 in the Termux app, using its Swift 5.6.2 package to build the early swift-driver
Additional context
@3405691582 reported similar issues on OpenBSD, likely because it also uses libc++, llvm/llvm-project#56362. OTOH, this change appears to work on macOS with libc++? Reverting #58699 fixed this issue with the July 6 source snapshot, but after subsequent C++ interop pulls for libswift, only turning bootstrapping the compiler off with --bootstrapping=off
works around the problem with the latest July 25 source snapshot.
@egorzhdan, let me know if there's anything I should try.