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