[Buildroot] redis not building with ccache enabled

Thomas De Schampheleire patrickdepinguin+buildroot at gmail.com
Wed Aug 28 11:16:06 UTC 2013


Hi,

On Wed, Aug 28, 2013 at 12:47 PM, Sagaert Johan <sagaert.johan at skynet.be> wrote:
>
>  Hi
>
> Redis is not building when the ccache build option is enabled.
>
>>>> redis 2.6.11 Configuring
>>>> redis 2.6.11 Building
> PATH="/home/buildroot12git/output/host/bin:/home/buildroot12git/output/host/usr/bin:/home/buildroot12git/output/host/usr/sbin/:/usr/
> local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/buildroot12git/output/host/usr/bin"
> PERLLIB="/home/buildroot12git/output/host/usr/lib/perl" /usr/bin/make -j5
> PATH="/home/buildroot12git/output/host/bin:/home/buildroot12git/output/host/usr/bin:/home/buildroot12git/output/host/usr/sbin/:/usr/
> local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/buildroot12git/output/host/usr/bin"
> AR="/home/buildroot12git/output/host/usr/bin/arm-buildroot-linux-uclibcgnueabi-ar"
> AS="/home/buildroot12git/output/host/usr/bin/arm-buildroot-linux-uclibcgnueabi-as"
> LD="/home/buildroot12git/output/host/usr/bin/arm-buildroot-linux-uclibcgnueabi-ld"
> NM="/home/buildroot12git/output/host/usr/bin/arm-buildroot-linux-uclibcgnueabi-nm"
> CC="/home/buildroot12git/output/host/usr/bin/ccache /home/buildroot12git/output/host/usr/bin/arm-buildroot-linux-uclibcgnueabi-gcc"
> GCC="/home/buildroot12git/output/host/usr/bin/ccache /home/buildroot12git/output/host/usr/bin/arm-buildroot-linux-uclibcgnueabi-gcc"
> CPP="/home/buildroot12git/output/host/usr/bin/arm-buildroot-linux-uclibcgnueabi-cpp"
> CXX="/home/buildroot12git/output/host/usr/bin/ccache /home/buildroot12git/output/host/usr/bin/arm-buildroot-linux-uclibcgnueabi-g++"
> FC="/home/buildroot12git/output/host/usr/bin/arm-buildroot-linux-uclibcgnueabi-gfortran"
> RANLIB="/home/buildroot12git/output/host/usr/bin/arm-buildroot-linux-uclibcgnueabi-ranlib"
> READELF="/home/buildroot12git/output/host/usr/bin/arm-buildroot-linux-uclibcgnueabi-readelf"
> STRIP="/home/buildroot12git/output/host/usr/bin/arm-buildroot-linux-uclibcgnueabi-strip"
> OBJCOPY="/home/buildroot12git/output/host/usr/bin/arm-buildroot-linux-uclibcgnueabi-objcopy"
> OBJDUMP="/home/buildroot12git/output/host/usr/bin/arm-buildroot-linux-uclibcgnueabi-objdump" AR_FOR_BUILD="/usr/bin/ar"
> AS_FOR_BUILD="/usr/bin/as" CC_FOR_BUILD="/home/buildroot12git/output/host/usr/bin/ccache /usr/bin/gcc"
> GCC_FOR_BUILD="/home/buildroot12git/output/host/usr/bin/ccache /usr/bin/gcc"
> CXX_FOR_BUILD="/home/buildroot12git/output/host/usr/bin/ccache /usr/bin/g++" FC_FOR_BUILD="/usr/bin/ld" LD_FOR_BUILD="/usr/bin/ld"
> CPPFLAGS_FOR_BUILD="-I/home/buildroot12git/output/host/usr/include" CFLAGS_FOR_BUILD="-O2
> -I/home/buildroot12git/output/host/usr/include" CXXFLAGS_FOR_BUILD="-O2 -I/home/buildroot12git/output/host/usr/include"
> LDFLAGS_FOR_BUILD="-L/home/buildroot12git/output/host/lib -L/home/buildroot12git/output/host/usr/lib
> -Wl,-rpath,/home/buildroot12git/output/host/usr/lib" FCFLAGS_FOR_BUILD=""
> DEFAULT_ASSEMBLER="/home/buildroot12git/output/host/usr/bin/arm-buildroot-linux-uclibcgnueabi-as"
> DEFAULT_LINKER="/home/buildroot12git/output/host/usr/bin/arm-buildroot-linux-uclibcgnueabi-ld" CPPFLAGS="-D_LARGEFILE_SOURCE
> -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64" CFLAGS="-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -pipe -Os "
> CXXFLAGS="-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -pipe -Os " LDFLAGS="" FCFLAGS=""
> PKG_CONFIG="/home/buildroot12git/output/host/usr/bin/pkg-config" PERLLIB="/home/buildroot12git/output/host/usr/lib/perl"
> STAGING_DIR="/home/buildroot12git/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot"
> PREFIX=/home/buildroot12git/output/target/usr MALLOC=libc  -C /home/buildroot12git/output/build/redis-2.6.11
> make[1]: Entering directory `/home/buildroot12git/output/build/redis-2.6.11'
> cd src && /usr/bin/make all
> make[2]: Entering directory `/home/buildroot12git/output/build/redis-2.6.11/src'
> rm -rf redis-server redis-sentinel redis-cli redis-benchmark redis-check-dump redis-check-aof *.o *.gcda *.gcno *.gcov redis.info
> lcov-html
> (cd ../deps && /usr/bin/make distclean)
> make[3]: Entering directory `/home/buildroot12git/output/build/redis-2.6.11/deps'
> (cd hiredis && /usr/bin/make clean) > /dev/null || true
> (cd linenoise && /usr/bin/make clean) > /dev/null || true
> (cd lua && /usr/bin/make clean) > /dev/null || true
> (cd jemalloc && [ -f Makefile ] && /usr/bin/make distclean) > /dev/null || true
> (rm -f .make-*)
> make[3]: Leaving directory `/home/buildroot12git/output/build/redis-2.6.11/deps'
> (rm -f .make-*)
> echo STD=-std=c99 -pedantic >> .make-settings
> echo WARN=-Wall >> .make-settings
> echo OPT=-O2 >> .make-settings
> echo MALLOC=libc >> .make-settings
> echo CFLAGS=-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -pipe -Os  >> .make-settings
> echo LDFLAGS= >> .make-settings
> echo REDIS_CFLAGS= >> .make-settings
> echo REDIS_LDFLAGS= >> .make-settings
> echo PREV_FINAL_CFLAGS=-std=c99 -pedantic -Wall -O2 -g -rdynamic -ggdb -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
> -D_FILE_OFFSET_BITS=64  -pipe -Os   -I../deps/hiredis -I../deps/linenoise -I../deps/lua/src >> .make-settings
> echo PREV_FINAL_LDFLAGS=  -g -rdynamic -ggdb >> .make-settings
> (cd ../deps && /usr/bin/make CC=/home/buildroot12git/output/host/usr/bin/ccache
> /home/buildroot12git/output/host/usr/bin/arm-buildroot-linux-uclibcgnueabi-gcc hiredis linenoise lua)
> make[3]: Entering directory `/home/buildroot12git/output/build/redis-2.6.11/deps'
> make[3]: Nothing to be done for `/home/buildroot12git/output/host/usr/bin/arm-buildroot-linux-uclibcgnueabi-gcc'.
> (cd hiredis && /usr/bin/make clean) > /dev/null || true
> (cd linenoise && /usr/bin/make clean) > /dev/null || true
> (cd lua && /usr/bin/make clean) > /dev/null || true
> (cd jemalloc && [ -f Makefile ] && /usr/bin/make distclean) > /dev/null || true
> (rm -f .make-*)
> (echo "" > .make-ldflags)
> (echo "-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -pipe -Os " > .make-cflags)
> MAKE hiredis
> cd hiredis && /usr/bin/make static
> MAKE linenoise
> cd linenoise && /usr/bin/make
> MAKE lua
> cd lua/src && /usr/bin/make all CFLAGS="-O2 -Wall -DLUA_ANSI -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -pipe
> -Os " MYLDFLAGS="" AR="/home/buildroot12git/output/host/usr/bin/arm-buildroot-linux-uclibcgnueabi-ar rcu"
> make[4]: Entering directory `/home/buildroot12git/output/build/redis-2.6.11/deps/linenoise'
> /home/buildroot12git/output/host/usr/bin/ccache  -Wall -Os -g -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
> -pipe -Os  -c linenoise.c
> /home/buildroot12git/output/host/usr/bin/ccache: invalid option -- 'W'
> Usage:
>     ccache [options]
>     ccache compiler [compiler options]
>     compiler [compiler options]          (via symbolic link)
>
> Options:
>     -c, --cleanup         delete old files and recalculate size counters
>                           (normally not needed as this is done automatically)
>     -C, --clear           clear the cache completely
>     -F, --max-files=N     set maximum number of files in cache to N (use 0 for
>                           no limit)
>     -M, --max-size=SIZE   set maximum size of cache to SIZE (use 0 for no
>                           limit; available suffixes: G, M and K; default
>                           suffix: G)
>     -s, --show-stats      show statistics summary
>     -z, --zero-stats      zero statistics counters
>
>     -h, --help            print this help text
>     -V, --version         print version and copyright information
>
> See also <http://ccache.samba.org>.
> make[4]: *** [linenoise.o] Error 1
> make[4]: Leaving directory `/home/buildroot12git/output/build/redis-2.6.11/deps/linenoise'
> make[3]: *** [linenoise] Error 2
> make[3]: *** Waiting for unfinished jobs....
> make[4]: Entering directory `/home/buildroot12git/output/build/redis-2.6.11/deps/lua/src'
> /home/buildroot12git/output/host/usr/bin/ccache -O2 -Wall -DLUA_ANSI -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
> -D_FILE_OFFSET_BITS=64  -pipe -Os  -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -c -o lapi.o lapi.c
> /home/buildroot12git/output/host/usr/bin/ccache -O2 -Wall -DLUA_ANSI -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
> -D_FILE_OFFSET_BITS=64  -pipe -Os  -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -c -o lcode.o lcode.c
> /home/buildroot12git/output/host/usr/bin/ccache: invalid option -- 'O'
> Usage:
>     ccache [options]
>     ccache compiler [compiler options]
>     compiler [compiler options]          (via symbolic link)
>
> Options:
>     -c, --cleanup         delete old files and recalculate size counters
>                           (normally not needed as this is done automatically)
>     -C, --clear           clear the cache completely
>     -F, --max-files=N     set maximum number of files in cache to N (use 0 for
>                           no limit)
>     -M, --max-size=SIZE   set maximum size of cache to SIZE (use 0 for no
>                           limit; available suffixes: G, M and K; default
>                           suffix: G)
>     -s, --show-stats      show statistics summary
>     -z, --zero-stats      zero statistics counters
>
>     -h, --help            print this help text
>     -V, --version         print version and copyright information
>
> See also <http://ccache.samba.org>.
> make[4]: *** [lapi.o] Error 1
> make[4]: *** Waiting for unfinished jobs....
> /home/buildroot12git/output/host/usr/bin/ccache: invalid option -- 'O'
> Usage:
>     ccache [options]
>     ccache compiler [compiler options]
>     compiler [compiler options]          (via symbolic link)
>
> Options:
>     -c, --cleanup         delete old files and recalculate size counters
>                           (normally not needed as this is done automatically)
>     -C, --clear           clear the cache completely
>     -F, --max-files=N     set maximum number of files in cache to N (use 0 for
>                           no limit)
>     -M, --max-size=SIZE   set maximum size of cache to SIZE (use 0 for no
>                           limit; available suffixes: G, M and K; default
>                           suffix: G)
>     -s, --show-stats      show statistics summary
>     -z, --zero-stats      zero statistics counters
>
>     -h, --help            print this help text
>     -V, --version         print version and copyright information
>
> See also <http://ccache.samba.org>.
> make[4]: *** [lcode.o] Error 1
> make[4]: Leaving directory `/home/buildroot12git/output/build/redis-2.6.11/deps/lua/src'
> make[3]: *** [lua] Error 2
> make[4]: Entering directory `/home/buildroot12git/output/build/redis-2.6.11/deps/hiredis'
> /home/buildroot12git/output/host/usr/bin/ccache -std=c99 -pedantic -c -O3 -fPIC -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
> -D_FILE_OFFSET_BITS=64  -pipe -Os  -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb  net.c
> /home/buildroot12git/output/host/usr/bin/ccache -std=c99 -pedantic -c -O3 -fPIC -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
> -D_FILE_OFFSET_BITS=64  -pipe -Os  -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb  hiredis.c
> cache directory                     /root/.buildroot-ccache
> cache hit (direct)                446983
> cache hit (preprocessed)           87739
> cache miss                        172208
> called for link                   128003
> called for preprocessing           52918
> multiple source files                420
> compiler produced stdout              27
> compile failed                     29765
> preprocessor error                  9377
> bad compiler arguments              8582
> unsupported source language         5606
> autoconf compile/link             125214
> unsupported compiler option          231
> no input file                      47115
> files in cache                     71908
> cache size                         933.3 Mbytes
> max cache size                       1.0 Gbytes
> /home/buildroot12git/output/host/usr/bin/ccache: invalid option -- 't'
> Usage:
>     ccache [options]
>     ccache compiler [compiler options]
>     compiler [compiler options]          (via symbolic link)
>
> Options:
>     -c, --cleanup         delete old files and recalculate size counters
>                           (normally not needed as this is done automatically)
>     -C, --clear           clear the cache completely
>     -F, --max-files=N     set maximum number of files in cache to N (use 0 for
>                           no limit)
>     -M, --max-size=SIZE   set maximum size of cache to SIZE (use 0 for no
>                           limit; available suffixes: G, M and K; default
>                           suffix: G)
>     -s, --show-stats      show statistics summary
>     -z, --zero-stats      zero statistics counters
>
>     -h, --help            print this help text
>     -V, --version         print version and copyright information
>
> See also <http://ccache.samba.org>.
> cache directory                     /root/.buildroot-ccache
> cache hit (direct)                446983
> cache hit (preprocessed)           87739
> cache miss                        172208
> called for link                   128003
> called for preprocessing           52918
> multiple source files                420
> compiler produced stdout              27
> compile failed                     29765
> preprocessor error                  9377
> bad compiler arguments              8582
> unsupported source language         5606
> autoconf compile/link             125214
> unsupported compiler option          231
> no input file                      47115
> files in cache                     71908
> cache size                         933.3 Mbytes
> max cache size                       1.0 Gbytes
> /home/buildroot12git/output/host/usr/bin/ccache: invalid option -- 't'
> Usage:
>     ccache [options]
>     ccache compiler [compiler options]
>     compiler [compiler options]          (via symbolic link)
>
> Options:
>     -c, --cleanup         delete old files and recalculate size counters
>                           (normally not needed as this is done automatically)
>     -C, --clear           clear the cache completely
>     -F, --max-files=N     set maximum number of files in cache to N (use 0 for
>                           no limit)
>     -M, --max-size=SIZE   set maximum size of cache to SIZE (use 0 for no
>                           limit; available suffixes: G, M and K; default
>                           suffix: G)
>     -s, --show-stats      show statistics summary
>     -z, --zero-stats      zero statistics counters
>
>     -h, --help            print this help text
>     -V, --version         print version and copyright information
>
> See also <http://ccache.samba.org>.
> make[4]: *** [net.o] Error 1
> make[4]: *** Waiting for unfinished jobs....
> make[4]: *** [hiredis.o] Error 1
> make[4]: Leaving directory `/home/buildroot12git/output/build/redis-2.6.11/deps/hiredis'
> make[3]: *** [hiredis] Error 2
> make[3]: Leaving directory `/home/buildroot12git/output/build/redis-2.6.11/deps'
> make[2]: [persist-settings] Error 2 (ignored)
>     CC adlist.o
>     CC anet.o
>     CC ae.o
>     CC dict.o
>     CC redis.o
>     CC sds.o
>     CC zmalloc.o
>     CC lzf_c.o
>     CC lzf_d.o
>     CC pqsort.o
>     CC zipmap.o
>     CC sha1.o
>     CC ziplist.o
>     CC release.o
>     CC networking.o
>     CC util.o
>     CC object.o
>     CC db.o
>     CC replication.o
>     CC rdb.o
>     CC t_string.o
>     CC t_list.o
>     CC t_set.o
>     CC t_zset.o
>     CC t_hash.o
>     CC config.o
>     CC aof.o
>     CC pubsub.o
>     CC multi.o
>     CC debug.o
>     CC sort.o
>     CC intset.o
>     CC syncio.o
>     CC migrate.o
>     CC endianconv.o
>     CC slowlog.o
>     CC scripting.o
>     CC bio.o
>     CC rio.o
>     CC rand.o
>     CC crc64.o
>     CC memtest.o
>     CC bitops.o
>     CC sentinel.o
>     CC redis-cli.o
>     CC redis-benchmark.o
>     CC redis-check-dump.o
>     CC redis-check-aof.o
>     LINK redis-cli
>     LINK redis-server
> arm-buildroot-linux-uclibcgnueabi-gcc: error: ../deps/hiredis/libhiredis.a: No such file or directory
> arm-buildroot-linux-uclibcgnueabi-gcc: error: ../deps/linenoise/linenoise.o: No such file or directory
> arm-buildroot-linux-uclibcgnueabi-gcc: error: ../deps/hiredis/libhiredis.a: No such file or directory
> arm-buildroot-linux-uclibcgnueabi-gcc: error: ../deps/lua/src/liblua.a: No such file or directory
> make[2]: *** [redis-cli] Error 1
> make[2]: *** Waiting for unfinished jobs....
> make[2]: *** [redis-server] Error 1
>     LINK redis-check-dump
>     LINK redis-benchmark
>     LINK redis-check-aof
> arm-buildroot-linux-uclibcgnueabi-gcc: error: ../deps/hiredis/libhiredis.a: No such file or directory
> make[2]: *** [redis-benchmark] Error 1
> make[2]: Leaving directory `/home/buildroot12git/output/build/redis-2.6.11/src'
> make[1]: *** [all] Error 2
> make[1]: Leaving directory `/home/buildroot12git/output/build/redis-2.6.11'
> make: *** [/home/buildroot12git/output/build/redis-2.6.11/.stamp_built] Error 2
>

Thanks for the report. I can reproduce it locally.
The problem seems to be caused by one of the redis patches in buildroot.
Following patch against buildroot fixes the problem:

diff --git a/package/redis/redis-001-uclibc.patch
b/package/redis/redis-001-uclibc.patch
--- a/package/redis/redis-001-uclibc.patch
+++ b/package/redis/redis-001-uclibc.patch
@@ -39,7 +39,7 @@ diff -ur old/src/Makefile new/src/Makefi
        echo PREV_FINAL_CFLAGS=$(FINAL_CFLAGS) >> .make-settings
        echo PREV_FINAL_LDFLAGS=$(FINAL_LDFLAGS) >> .make-settings
 -      -(cd ../deps && $(MAKE) $(DEPENDENCY_TARGETS))
-+      -(cd ../deps && $(MAKE) CC=$(CC) $(DEPENDENCY_TARGETS))
++      -(cd ../deps && $(MAKE) CC="$(CC)" $(DEPENDENCY_TARGETS))

  .PHONY: persist-settings

Can you verify it?

Best regards,
Thomas



More information about the buildroot mailing list