MacPorts 2.11.0: oddly named workdirs

Joshua Root jmr at macports.org
Mon Jul 14 11:09:45 UTC 2025


On 14/7/2025 20:40, Chris Jones wrote:
> Yes, but how then do we tell macports to use this when configuring the 
> build? The problem is the new path with the random string finds its way 
> into all the compilation options which is why cache is sensitive to it. 
> e.g.
> 
> [4/5838] /opt/local/bin/ccache /usr/bin/clang++ -D__STDC_CONSTANT_MACROS 
> -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/opt/local/var/macports/ 
> build/rootHGGlRz/work/build/interpreter/llvm-project/llvm/lib/Demangle - 
> I/opt/local/var/macports/build/rootHGGlRz/work/root-6-36-02/interpreter/ 
> llvm-project/llvm/lib/Demangle -I/opt/local/var/macports/build/ 
> rootHGGlRz/work/build/interpreter/llvm-project/llvm/include -I/opt/ 
> local/var/macports/build/rootHGGlRz/work/root-6-36-02/interpreter/llvm- 
> project/llvm/include -pipe -I/opt/local/libexec/openssl3/include -Os - 
> DNDEBUG -I/opt/local/libexec/openssl3/include -isystem/opt/local/include 
> -stdlib=libc++ -isysroot/Library/Developer/CommandLineTools/SDKs/ 
> MacOSX.sdk -Wc++11-narrowing -Wsign-compare -Wsometimes-uninitialized - 
> Wconditional-uninitialized -Wheader-guard -Warray-bounds -Wcomment - 
> Wtautological-compare -Wstrncat-size -Wloop-analysis -Wbool-conversion - 
> m64 -pipe -W -Wall -Woverloaded-virtual -fsigned-char -fno-common - 
> Qunused-arguments -pthread -stdlib=libc++  -fPIC -fno-semantic- 
> interposition -fvisibility-inlines-hidden -Werror=date-time - 
> Werror=unguarded-availability-new -w -fdiagnostics-color -O3 -DNDEBUG - 
> std=c++17 -arch arm64 -isysroot /Library/Developer/CommandLineTools/ 
> SDKs/MacOSX.sdk -mmacosx-version-min=15.0 -fvisibility=hidden - 
> fvisibility-inlines-hidden  -fno-exceptions -funwind-tables -MD -MT 
> interpreter/llvm-project/llvm/lib/Demangle/CMakeFiles/LLVMDemangle.dir/ 
> MicrosoftDemangleNodes.cpp.o -MF interpreter/llvm-project/llvm/lib/ 
> Demangle/CMakeFiles/LLVMDemangle.dir/MicrosoftDemangleNodes.cpp.o.d -o 
> interpreter/llvm-project/llvm/lib/Demangle/CMakeFiles/LLVMDemangle.dir/ 
> MicrosoftDemangleNodes.cpp.o -c /opt/local/var/macports/build/ 
> rootHGGlRz/work/root-6-36-02/interpreter/llvm-project/llvm/lib/Demangle/ 
> MicrosoftDemangleNodes.cpp
> 
> All the paths like /opt/local/var/macports/build/rootHGGlRz need to go 
> back to something predictable and stable for each port build for the 
> ccache option to be useful again.
This means that ccache was already effectively unable to cache results 
for (unchanged) files across version updates, right? It looks like the 
solution according to the ccache docs is to pass relative paths to the 
compiler. I don't know how to make LLVM's build system do that.

There are some environment variables that might work around the issue: 
<https://ccache.dev/manual/latest.html#_configuration_options>

The trouble with predictable work dir names is that it's basically 
impossible for them to be both short and guaranteed to be unique. It 
might be possible for them to be somewhat "sticky" (likely to stay the 
same for the same port), though that would require some state to survive 
a clean, which we don't currently have a way of doing.

- Josh


More information about the macports-dev mailing list