Comment 3 for bug 773062

Revision history for this message
Harald Sitter (apachelogger) wrote :

<apachelogger> ScottK: that cmake bug looks like fun btw
<apachelogger> also I do not think it is a cmake issue at all
<apachelogger> or perhaps it is, but only partially
<apachelogger> in particular it is probably falling over the fact that cxx has a cmd and a arg, which generally speaking of course is a bit of a bogus situation
<apachelogger> yeah
<apachelogger> gcc got three args with -d
<apachelogger> cmake does not call either
-*- apachelogger runs cmake with tracing
<apachelogger> /usr/share/cmake-2.8/Modules/Platform/UnixPaths.cmake(32): EXECUTE_PROCESS(COMMAND dpkg-architecture -qDEB_HOST_MULTIARCH OUTPUT_VARIABLE CMAKE_ARCH_TRIPLET OUTPUT_STRIP_TRAILING_WHITESPACE )
<apachelogger> Called from: [4] /usr/share/cmake-2.8/Modules/Platform/UnixPaths.cmake
<apachelogger> [3] /usr/share/cmake-2.8/Modules/Platform/Linux.cmake
<apachelogger> [2] /usr/share/cmake-2.8/Modules/CMakeSystemSpecificInformation.cmake
<apachelogger> [1] /home/me/src/git/libechonest/CMakeLists.txt
<apachelogger> /usr/bin/ccache: invalid option -- 'd'
<apachelogger> 5 bucks that call comes from a patch
<apachelogger> me@osiris:/tmp/cmake-2.8.4+dfsg.1$ grep -ri dpkg-architecture .
<apachelogger> ./debian/patches/ubuntu_multiarch_library_directory.diff:+EXECUTE_PROCESS(COMMAND dpkg-architecture -qDEB_HOST_MULTIARCH OUTPUT_VARIABLE CMAKE_ARCH_TRIPLET OUTPUT_STRIP_TRAILING_WHITESPACE)
<debfx> what's wrong with it?
<apachelogger> well, it causes ccache -dumpmachine to be called
<apachelogger> leading to an eror in ccache
<apachelogger> as obviously the call should be ccache gcc -dumpinfo
<apachelogger> eh
<apachelogger> dumpmachine
<apachelogger> debfx: perhaps the patch was applied differently upstream?
<debfx> how does ccache hook into the buildsystem? does it modify $PATH?
<apachelogger> no
<apachelogger> you set a new CXX and CC env var
<apachelogger> debfx: multiarch is something gcc, that should totally be implemented in cmake upstream
<apachelogger> anyhow
<apachelogger> for some reason dpkg-architecture calls:
<apachelogger> execve("/bin/sh", ["sh", "-c", "${CC:-gcc} -dumpmachine"], [/* 50 vars */]) = 0
<apachelogger> resulting in
<apachelogger> execve("/usr/bin/ccache", ["/usr/bin/ccache", "-dumpmachine"], [/* 50 vars */]) = 0
<apachelogger> which then produces crap outs
<apachelogger> I believe cmake pokes the env around a bit
<apachelogger> I know that it definitely stores CC/CXX as a combo of command + argN
<apachelogger> so if cmake were to set its envrionemnt so that CC only contains the command and no the arg (which is generally sane behaviour I suppose), that would screw over the poor old dpkg-architecture