icecc / icecream

Distributed compiler with a central scheduler to share build load
GNU General Public License v2.0
1.58k stars 248 forks source link

Using clang++-13 and PCH (precompiled headers) causes errors, and files are silently re-compiled locally #618

Open jimis opened 1 year ago

jimis commented 1 year ago

I managed to catch the debug log on a remote host, by running iceccd -vvv, and the compiler seems to not find the PCH files:

iceccd[19691]: [19691] 2023-04-18 14:08:27: remote compile for file /home/builder/qt6-build-aarch64/qtbase/src/corelib/Core_autogen/mocs_compilation.cpp
iceccd[19691]: [19691] 2023-04-18 14:08:27: remote compile arguments: --sysroot=/home/builder/sysroot-RPiOS-11 -DBACKTRACE_HEADER="execinfo.h" -DCore_EXPORTS -DPCRE2_CODE_UNIT_WIDTH=16 -DQT_ASCII_CAST_WARNINGS -DQT_BUILDING_QT -DQT_BUILD_CORE_LIB -DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_UP_TO=0x050000 -DQT_EXPLICIT_QFILE_CONSTRUCTION_FROM_PATH -DQT_LEAN_HEADERS=1 -DQT_MOC_COMPAT -DQT_NO_AS_CONST -DQT_NO_CAST_TO_ASCII -DQT_NO_FOREACH -DQT_NO_JAVA_STYLE_ITERATORS -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_NO_QEXCHANGE -DQT_NO_USING_NAMESPACE -DQT_TYPESAFE_FLAGS -DQT_USE_QSTRINGBUILDER -DQT_WARN_DEPRECATED_UP_TO=0x070000 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -O1 -target aarch64-linux-gnu --sysroot /home/builder/sysroot-RPiOS-11 -g -fPIC -fvisibility=hidden -fvisibility-inlines-hidden -Wall -Wextra -pthread -std=c++17 -Winvalid-pch -Xclang -include-pch -Xclang /home/builder/qt6-build-aarch64/qtbase/src/corelib/CMakeFiles/Core.dir/cmake_pch.hxx.pch -Xclang -include -Xclang /home/builder/qt6-build-aarch64/qtbase/src/corelib/CMakeFiles/Core.dir/cmake_pch.hxx -c
iceccd[19692]: [19692] 2023-04-18 14:08:27: Compile job memory limit set to 2057 megabytes
iceccd[19692]: [19692] 2023-04-18 14:08:27: final arguments: -x c++ -Xclang -main-file-name -Xclang /home/builder/qt6-build-aarch64/qtbase/src/corelib/Core_autogen/mocs_compilation.cpp -Xclang -fdebug-compilation-dir -Xclang /home/builder/qt6-build-aarch64 --sysroot=/home/builder/sysroot-RPiOS-11 -DBACKTRACE_HEADER="execinfo.h" -DCore_EXPORTS -DPCRE2_CODE_UNIT_WIDTH=16 -DQT_ASCII_CAST_WARNINGS -DQT_BUILDING_QT -DQT_BUILD_CORE_LIB -DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_UP_TO=0x050000 -DQT_EXPLICIT_QFILE_CONSTRUCTION_FROM_PATH -DQT_LEAN_HEADERS=1 -DQT_MOC_COMPAT -DQT_NO_AS_CONST -DQT_NO_CAST_TO_ASCII -DQT_NO_FOREACH -DQT_NO_JAVA_STYLE_ITERATORS -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_NO_QEXCHANGE -DQT_NO_USING_NAMESPACE -DQT_TYPESAFE_FLAGS -DQT_USE_QSTRINGBUILDER -DQT_WARN_DEPRECATED_UP_TO=0x070000 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -O1 -target aarch64-linux-gnu --sysroot /home/builder/sysroot-RPiOS-11 -g -fPIC -fvisibility=hidden -fvisibility-inlines-hidden -Wall -Wextra -pthread -std=c++17 -Winvalid-pch -Xclang -include-pch -Xclang /home/builder/qt6-build-aarch64/qtbase/src/corelib/CMakeFiles/Core.dir/cmake_pch.hxx.pch -Xclang -include -Xclang /home/builder/qt6-build-aarch64/qtbase/src/corelib/CMakeFiles/Core.dir/cmake_pch.hxx -c - -o icecc-222871_98bfa45b.o -no-canonical-prefixes
iceccd[19691]: [19691] 2023-04-18 14:08:27: <parent, waiting>
iceccd[19691]: [19691] 2023-04-18 14:08:27: compiler produced stderr output:
iceccd[19691]: error: unable to read PCH file /home/builder/qt6-build-aarch64/qtbase/src/corelib/CMakeFiles/Core.dir/cmake_pch.hxx.pch: 'No such file or directory'
iceccd[19691]: fatal error: PCH file '/home/builder/qt6-build-aarch64/qtbase/src/corelib/CMakeFiles/Core.dir/cmake_pch.hxx.pch' not found: module file not found
iceccd[19691]: 2 errors generated.

Maybe icecc does not transfer the precompiled files?

EDIT: I should note that I'm doing a cross-compilation.