Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 565994 - ebuilds using cmake do not use ccache
Summary: ebuilds using cmake do not use ccache
Status: RESOLVED INVALID
Alias: None
Product: Portage Development
Classification: Unclassified
Component: Core - Ebuild Support (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Portage team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-11-16 22:25 UTC by Martin Walch
Modified: 2017-03-04 00:12 UTC (History)
1 user (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
/var/tmp/portage/app-doc/doxygen-1.8.11-r2/temp/build.log (build.log,439.14 KB, text/plain)
2016-10-22 12:52 UTC, Martin Walch
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Martin Walch 2015-11-16 22:25:11 UTC
With ccache installed and FEATURES="ccache" many ebuilds make use of ccache, but none of the cmake based configurations automatically picks up ccache, probably for all versions of cmake >=3.1.0. This means in particular that KDE related builds are not cached, but other projects that use cmake (e. g. wesnoth) are affected, too.
Comment 1 Zac Medico gentoo-dev 2015-11-16 23:48:23 UTC
If you look at the symlinks inside the /usr/lib64/ccache/bin/ directory, do you see the name of the compiler which shows up in the build log of a cmake package?
Comment 2 Martin Walch 2015-11-17 03:51:11 UTC
Yes. For example I see doxygen using /usr/bin/x86_64-pc-linux-gnu-g++ and

$ ls /usr/lib64/ccache/bin -1
c++
cc
clang
clang++
g++
gcc
x86_64-pc-linux-gnu-c++
x86_64-pc-linux-gnu-clang
x86_64-pc-linux-gnu-clang++
x86_64-pc-linux-gnu-g++
x86_64-pc-linux-gnu-gcc

Does ccache work for you with cmake?

In that case I should attach some emerge --info:

Portage 2.2.20.1 (python 2.7.10-final-0, default/linux/amd64/13.0/desktop/plasma, gcc-4.9.3, glibc-2.21-r1, 4.1.12-gentoo x86_64)
=================================================================
System uname: Linux-4.1.12-gentoo-x86_64-Intel-R-_Core-TM-2_Quad_CPU_Q8400_@_2.66GHz-with-gentoo-2.2
KiB Mem:     8049352 total,     64852 free
KiB Swap:    8388052 total,   8290236 free
Timestamp of repository gentoo: Mon, 16 Nov 2015 02:15:01 +0000
sh bash 4.3_p39
ld GNU ld (Gentoo 2.25.1 p1.1) 2.25.1
distcc 3.2rc1 x86_64-pc-linux-gnu [disabled]
ccache version 3.2.4 [enabled]
app-shells/bash:          4.3_p39::gentoo
dev-java/java-config:     2.2.0::gentoo
dev-lang/perl:            5.20.2::gentoo
dev-lang/python:          2.7.10::gentoo, 3.4.3::gentoo
dev-util/ccache:          3.2.4::gentoo
dev-util/cmake:           3.3.1-r1::gentoo
dev-util/pkgconfig:       0.28-r3::gentoo
sys-apps/baselayout:      2.2::gentoo
sys-apps/openrc:          0.17::gentoo
sys-apps/sandbox:         2.6-r1::gentoo
sys-devel/autoconf:       2.13::gentoo, 2.69::gentoo
sys-devel/automake:       1.11.6-r1::gentoo, 1.13.4::gentoo, 1.14.1::gentoo, 1.15::gentoo
sys-devel/binutils:       2.25.1-r1::gentoo
sys-devel/gcc:            4.9.3::gentoo
sys-devel/gcc-config:     1.7.3::gentoo
sys-devel/libtool:        2.4.6::gentoo
sys-devel/make:           4.1-r1::gentoo
sys-kernel/linux-headers: 3.18::gentoo (virtual/os-headers)
sys-libs/glibc:           2.21-r1::gentoo
Repositories:

gentoo
    location: /usr/portage
    sync-type: rsync
    sync-uri: rsync://rsync6.de.gentoo.org/gentoo-portage
    priority: -1000

gamerlay
    location: /var/lib/layman/gamerlay
    masters: gentoo
    priority: 0

java
    location: /var/lib/layman/java
    masters: gentoo
    priority: 1

x11
    location: /var/lib/layman/x11
    masters: gentoo
    priority: 2

kde
    location: /var/lib/layman/kde
    masters: gentoo
    priority: 3

qt
    location: /var/lib/layman/qt
    masters: gentoo
    priority: 4

worldforge-overlay
    location: /usr/local/portage/worldforge
    masters: gentoo
    priority: 5

x-portage
    location: /usr/local/portage
    masters: gentoo
    priority: 6

ACCEPT_KEYWORDS="amd64"
ACCEPT_LICENSE="@FREE dom4j GPL-2-with-MySQL-FLOSS-exception icu JasPer2.0 JDOM wxWinFDL-3 freedist unRAR intel-ucode sun-concurrent-util"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-march=native -O2 -fgcse-after-reload -pipe -fpredictive-commoning -ftree-partial-pre -fgcse-sm -fgcse-las --param=max-gcse-memory=1073741824"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/lib64/libreoffice/program/sofficerc /usr/share/config /usr/share/gnupg/qualified.txt /var/bind /var/lib/hsqldb"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/dconf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/php/apache2-php5.6/ext-active/ /etc/php/cgi-php5.6/ext-active/ /etc/php/cli-php5.6/ext-active/ /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c"
CXXFLAGS="-march=native -O2 -fgcse-after-reload -pipe -fpredictive-commoning -ftree-partial-pre -fgcse-sm -fgcse-las --param=max-gcse-memory=1073741824"
DISTDIR="/usr/portage/distfiles"
FCFLAGS="-march=native -O2 -fgcse-after-reload -pipe -fpredictive-commoning -ftree-partial-pre -fgcse-sm -fgcse-las --param=max-gcse-memory=1073741824"
FEATURES="assume-digests binpkg-logs ccache config-protect-if-modified distlocks ebuild-locks fixlafiles merge-sync metadata-transfer multilib-strict news nostrip parallel-fetch preserve-libs protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-march=native -O2 -fgcse-after-reload -pipe -fpredictive-commoning -ftree-partial-pre -fgcse-sm -fgcse-las --param=max-gcse-memory=1073741824"
GENTOO_MIRRORS="ftp://ftp.snt.utwente.nl/pub/os/linux/gentoo ftp://mirror.switch.ch/mirror/gentoo/"
LANG="de_DE.utf-8"
LC_ALL="de_DE.utf-8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
MAKEOPTS="-j5"
PKGDIR="/usr/portage/packages"
PORTAGE_COMPRESS="xz"
PORTAGE_COMPRESS_FLAGS="-6 -e"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
PORTAGE_TMPDIR="/var/tmp"
USE="64bit X Xaw3d a52 aac aacs aalib accessibility acl acpi ads agg allegro alsa amd64 amr apache2 attica autoipd bash-completion bazaar bdplus berkdb bindist bittorrent blender blender-game bluray branding bzip2 cairo caps ccache cdda cdr cdrom cegui cjk cli clucene consolekit cracklib crypt cups curl cvs cxx daap dbus deblob declarative default-font designer-plugin desktopglobe devil dga dhcpcd dirac display-manager djvu dlz doc dri dts dvd dvdnav dvdr emacs embedded emboss encode exif extended-solver fam farstream fbcon ffmpeg fftw firefox fits flac fltk fortran g3dvl gbm gcj gdbm gflags ggi gimp git glamor gmm gmp gopher gpg gpm gpu grub gstreamer guile gzip hybrid-auth i18n icons iconv icq icu idn ieee1394 imagemagick import-filter iproute2 ipv6 jabber jack java java6 javascript jingle jpeg jpeg2k kde kdecards kdepim kdm kipi konsole kontact kvm ladspa lastfm latex lcms ldap libcaca libkms libnotify libssh2 libwww lm_sensors lua lzma lzo marble matroska mdnsresponder-compat mercurial minizip mjpeg mmx mmxext mng modemmanager modules mpeg mpfr mpi mplayer mtp mule multilib musepack mysql ncurses networkmanager newnet nls nova nowin nptl nscd nsplugin offensive ogg ogg123 ogre openal opencl openexr opengl openmp openssl opensslcrypt openstreetmap openvg openxml opus osc oscar osmesa otr pae pam pango pcre pdf phonon pkcs11 plasma player plotutils png policykit posix postscript povray ppds ppp prison private-headers python qemu qmi qmimodem qml qt3support qt4 qt5 ramfs rbd readline redland reiser4 reiserfs reviewboard rfc3779 romio rss rtmp samba scanner schroedinger scim sdl sdl-image seccomp semantic-desktop sensord session shm shmvideo smbclient sna sndfile solver songs sound source speex spell spice sse sse2 sse3 sse4.1 sse4_1 ssl ssse3 startup-notification subversion svg systemtap tcpd telepathy test-programs theora threads tidy tiff tk tools truetype udev udisks unicode usb uxa vaapi vc video videos virtfs vorbis vpx wallpapers wav wavpack webm webp widgets wifi wmf x264 xa xattr xcb xcomposite xemacs xerces-c xft xhtml xine xml xorg xosd xprint xrandr xscreensaver xulrunner xv xvid xvmc zeroconf zfs zip zlib" ABI_X86="64" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" APACHE2_MODULES="actions alias auth_basic auth_digest authn_anon authn_dbd authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi dav dav_fs dav_lock dbd deflate dir disk_cache env expires ext_filter file_cache filter headers ident imagemap include info log_config logio mem_cache mime mime_magic negotiation proxy proxy_ajp proxy_balancer proxy_connect proxy_http rewrite setenvif so speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="author braindump flow karbon kexi krita sheets stage words" CAMERAS="ptp2" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="mmx mmxext sse sse2 sse3 sse4_1 ssse3" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ublox ubx" GRUB_PLATFORMS="pc" INPUT_DEVICES="evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LINGUAS="de" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php5-6" PYTHON_SINGLE_TARGET="python2_7" PYTHON_TARGETS="python2_7 python3_4" QEMU_SOFTMMU_TARGETS="x86_64" RUBY_TARGETS="ruby20 ruby21" USERLAND="GNU" VIDEO_CARDS="fbdev i965 intel" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account"
Unset:  CC, CPPFLAGS, CTARGET, CXX, EMERGE_DEFAULT_OPTS, INSTALL_MASK, PORTAGE_BUNZIP2_COMMAND, PORTAGE_RSYNC_EXTRA_OPTS, USE_PYTHON
Comment 3 Michał Górny archtester Gentoo Infrastructure gentoo-dev Security 2016-09-23 06:57:12 UTC
I scarcely use ccache, mostly for LLVM (cmake+ninja) and ccache always worked correctly. If you still experience this, could you attach a build log of an example package that doesn't use ccache? I'm mostly looking for the C/C++ compilers found by CMake.
Comment 4 Martin Walch 2016-10-22 12:52:33 UTC
Created attachment 450992 [details]
/var/tmp/portage/app-doc/doxygen-1.8.11-r2/temp/build.log

(In reply to Michał Górny from comment #3)
> attach a build log
> of an example package that doesn't use ccache?
Comment 5 Michał Górny archtester Gentoo Infrastructure gentoo-dev Security 2016-10-22 12:56:11 UTC
Are the symlinks in /usr/lib*/ccache correct?
Comment 6 Martin Walch 2016-10-22 17:58:09 UTC
(In reply to Michał Górny from comment #5)
> Are the symlinks in /usr/lib*/ccache correct?

I suppose yes (?). It all points to /usr/bin/ccache:

$ ls -l /usr/lib*/ccache/*
/usr/lib/ccache/bin:
total 0
lrwxrwxrwx 1 root root 15 Oct  9 20:20 c++ -> /usr/bin/ccache
lrwxrwxrwx 1 root root 15 Oct  9 20:20 cc -> /usr/bin/ccache
lrwxrwxrwx 1 root root 15 Oct  9 20:20 clang -> /usr/bin/ccache
lrwxrwxrwx 1 root root 15 Oct  9 20:20 clang++ -> /usr/bin/ccache
lrwxrwxrwx 1 root root 15 Oct  9 20:20 g++ -> /usr/bin/ccache
lrwxrwxrwx 1 root root 15 Oct  9 20:20 gcc -> /usr/bin/ccache
lrwxrwxrwx 1 root root 15 Aug 23 11:55 x86_64-pc-linux-gnu-c++ -> /usr/bin/ccache
lrwxrwxrwx 1 root root 15 Aug 23 11:55 x86_64-pc-linux-gnu-clang -> /usr/bin/ccache
lrwxrwxrwx 1 root root 15 Aug 23 11:55 x86_64-pc-linux-gnu-clang++ -> /usr/bin/ccache
lrwxrwxrwx 1 root root 15 Aug 23 11:55 x86_64-pc-linux-gnu-g++ -> /usr/bin/ccache
lrwxrwxrwx 1 root root 15 Aug 23 11:55 x86_64-pc-linux-gnu-gcc -> /usr/bin/ccache

/usr/lib64/ccache/bin:
total 0
lrwxrwxrwx 1 root root 15 Oct  9 20:20 c++ -> /usr/bin/ccache
lrwxrwxrwx 1 root root 15 Oct  9 20:20 cc -> /usr/bin/ccache
lrwxrwxrwx 1 root root 15 Oct  9 20:20 clang -> /usr/bin/ccache
lrwxrwxrwx 1 root root 15 Oct  9 20:20 clang++ -> /usr/bin/ccache
lrwxrwxrwx 1 root root 15 Oct  9 20:20 g++ -> /usr/bin/ccache
lrwxrwxrwx 1 root root 15 Oct  9 20:20 gcc -> /usr/bin/ccache
lrwxrwxrwx 1 root root 15 Aug 23 11:55 x86_64-pc-linux-gnu-c++ -> /usr/bin/ccache
lrwxrwxrwx 1 root root 15 Aug 23 11:55 x86_64-pc-linux-gnu-clang -> /usr/bin/ccache
lrwxrwxrwx 1 root root 15 Aug 23 11:55 x86_64-pc-linux-gnu-clang++ -> /usr/bin/ccache
lrwxrwxrwx 1 root root 15 Aug 23 11:55 x86_64-pc-linux-gnu-g++ -> /usr/bin/ccache
lrwxrwxrwx 1 root root 15 Aug 23 11:55 x86_64-pc-linux-gnu-gcc -> /usr/bin/ccache
Comment 7 Martin Walch 2017-03-04 00:12:31 UTC
Problem solved. The cause is a bit embarrassing: I forgot I had added CMAKE_PREFIX_PATH=/usr to my make.conf as a workaround for some other problem a very long time ago. This setting functioned as an override for the search path order. The setting from the ebuild that comes in via PATH variable was ignored that way.

Sorry for the noise.