What happens?
Per discussion duckdb/duckdb#19149, figuring out how to use sccache with duckdb-python builds was quite frustrating. I mentioned it also here: #59.
Problem
The issue is that "ccache" or "sccache" are detected and prepending in the compiler command twice: first by duckdb-python compiler_launcher.cmake and then by external/duckdb/CMakeLists.txt.
If someone has sccache installed and tries to build, compilation will fail due to the duplicate sccache's. It'll fail due to duplicate sccache's in the command: sccache sccache c++ .... ccache tolerates: ccache ccache clang++ ... altho that's not ideal.
I wrestled this a bit when setting up sccache in GHA's. Took me a while to land on the hacky workaround:
export CMAKE_C_COMPILER_LAUNCHER=""
export CMAKE_CXX_COMPILER_LAUNCHER=""
Solution
The fix appears to be to just remove / comment out compiler_launcher.cmake's detection... it's unnecessary since the external CMakeLists.txt does the same detection. Or, perhaps more cleanly, modify the duckdb CMakeLists.txt to add a flag that suppresses detection.
To Reproduce
Reproduction is fairly straightforward:
- install sccache
- make sure it's in the PATH (and make sure ccache is not)
- Clean build dir
- launch a build with
uv sync --no-build-isolation -v --reinstall
* it helps to set build.tool-args = ["-v", "-d", "stats"] in [tool.scikit-build] to see the exact compile commands.
OS:
Windows & Linux
DuckDB Package Version:
1.5.x
Python Version:
3.13/ all
Full Name:
Paul T
Affiliation:
Iqmo
What is the latest build you tested with? If possible, we recommend testing with the latest nightly build.
I have tested with a source build
Did you include all relevant data sets for reproducing the issue?
Yes
Did you include all code required to reproduce the issue?
Did you include all relevant configuration to reproduce the issue?
What happens?
Per discussion duckdb/duckdb#19149, figuring out how to use sccache with duckdb-python builds was quite frustrating. I mentioned it also here: #59.
Problem
The issue is that "ccache" or "sccache" are detected and prepending in the compiler command twice: first by duckdb-python
compiler_launcher.cmakeand then byexternal/duckdb/CMakeLists.txt.If someone has sccache installed and tries to build, compilation will fail due to the duplicate sccache's. It'll fail due to duplicate sccache's in the command:
sccache sccache c++ .... ccache tolerates:ccache ccache clang++ ...altho that's not ideal.I wrestled this a bit when setting up sccache in GHA's. Took me a while to land on the hacky workaround:
Solution
The fix appears to be to just remove / comment out
compiler_launcher.cmake's detection... it's unnecessary since the external CMakeLists.txt does the same detection. Or, perhaps more cleanly, modify the duckdb CMakeLists.txt to add a flag that suppresses detection.To Reproduce
Reproduction is fairly straightforward:
uv sync --no-build-isolation -v --reinstall* it helps to set
build.tool-args = ["-v", "-d", "stats"]in[tool.scikit-build]to see the exact compile commands.OS:
Windows & Linux
DuckDB Package Version:
1.5.x
Python Version:
3.13/ all
Full Name:
Paul T
Affiliation:
Iqmo
What is the latest build you tested with? If possible, we recommend testing with the latest nightly build.
I have tested with a source build
Did you include all relevant data sets for reproducing the issue?
Yes
Did you include all code required to reproduce the issue?
Did you include all relevant configuration to reproduce the issue?