[Buildroot] [PATCH v2] infra/ccache: avoid color diagnostics with GCC older than v4.9
Yann E. MORIN
yann.morin.1998 at free.fr
Sun Feb 12 17:21:48 UTC 2017
Carlos, All,
On 2017-02-12 12:55 -0200, Carlos Santos spake thusly:
> > From: "Yann E. MORIN" <yann.morin.1998 at free.fr>
> > To: "Carlos Santos" <casantos at datacom.ind.br>
> > Cc: buildroot at buildroot.org, "Thomas Petazzoni" <thomas.petazzoni at free-electrons.com>, arnout at mind.be,
> > gustavo at zacarias.com.ar
> > Sent: Sunday, February 12, 2017 12:14:25 PM
> > Subject: Re: [PATCH v2] infra/ccache: avoid color diagnostics with GCC older than v4.9
>
> > Carlos, All,
> >
> > On 2017-02-12 09:33 -0200, Carlos Santos spake thusly:
> >> Ensure that the GCC_COLORS environment variable is empty when calling
> >> ccache. When GCC_COLORS is set, ccache passes '-fdiagnostics-color' to
> >> GCC but this flag requires GCC v4.9 or later. Older versions complain
> >> about the unrecognized command line option.
> >
> > So, while fixing my own patch about the issue [0], I noticed that I was
> > not even able to make it fail in the first place...
> >
> > I'm using this defconfig, which uses a gcc-4.7:
> >
> > BR2_x86_i686=y
> > BR2_CCACHE=y
> > BR2_TOOLCHAIN_EXTERNAL=y
> >
> > and Thomas reported he was also unable to reproduce the failure with:
> >
> > BR2_sh=y
> > BR2_sh4a=y
> > BR2_CCACHE=y
> > BR2_TOOLCHAIN_EXTERNAL=y
> > BR2_INIT_NONE=y
> > BR2_SYSTEM_BIN_SH_NONE=y
> > # BR2_PACKAGE_BUSYBOX is not set
> > BR2_PACKAGE_DEVMEM2=y
> > # BR2_TARGET_ROOTFS_TAR is not set
> >
> > which also uses gcc-4.7.
> >
> > Can you provide a reliable way to reproduce the issue, please?
>
> What does "echo $GCC_COLORS" say? And remember that you must not
> redirect the output to a file or pipe.
The GCC_COLORS are the default as dopcumented in the man page for gcc-5.
$ cat defconfig
BR2_x86_i686=y
BR2_CCACHE=y
BR2_TOOLCHAIN_EXTERNAL=y
BR2_PACKAGE_LIBCEC=y
$ export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
$ make BR2_DEFCONFIG=$(pwd)/defconfig defconfig
$ make busybox libcec
And the build does not fail... :-/
So I did a few other tentative:
$ rm -rf ~/.buildroot-ccache/*/
$ echo log_file = /home/ymorin/meh >> ~/.buildroot-ccache/ccache.conf
$ touch meh.c
$ ./host/usr/bin/i686-pc-linux-gnu-gcc -c -o meh.o meh.c
$ ~/meh
[2017-02-12T18:19:31.365731 7668 ] === CCACHE 3.3.3 STARTED =========================================
[2017-02-12T18:19:31.365731 7668 ] Config: (environment) base_dir = /home/ymorin/dev/buildroot/O
[2017-02-12T18:19:31.365731 7668 ] Config: (default) cache_dir = /home/ymorin/.buildroot-ccache
[2017-02-12T18:19:31.365731 7668 ] Config: (default) cache_dir_levels = 2
[2017-02-12T18:19:31.365731 7668 ] Config: (default) compiler =
[2017-02-12T18:19:31.365731 7668 ] Config: (default) compiler_check = mtime
[2017-02-12T18:19:31.365731 7668 ] Config: (default) compression = false
[2017-02-12T18:19:31.365731 7668 ] Config: (default) compression_level = 6
[2017-02-12T18:19:31.365731 7668 ] Config: (default) cpp_extension =
[2017-02-12T18:19:31.365731 7668 ] Config: (default) direct_mode = true
[2017-02-12T18:19:31.365731 7668 ] Config: (default) disable = false
[2017-02-12T18:19:31.365731 7668 ] Config: (default) extra_files_to_hash =
[2017-02-12T18:19:31.365731 7668 ] Config: (default) hard_link = false
[2017-02-12T18:19:31.365731 7668 ] Config: (default) hash_dir = true
[2017-02-12T18:19:31.365731 7668 ] Config: (default) ignore_headers_in_manifest =
[2017-02-12T18:19:31.365731 7668 ] Config: (default) keep_comments_cpp = false
[2017-02-12T18:19:31.365731 7668 ] Config: (default) limit_multiple = 0.8
[2017-02-12T18:19:31.365731 7668 ] Config: (/home/ymorin/.buildroot-ccache/ccache.conf) log_file = /home/ymorin/meh
[2017-02-12T18:19:31.365731 7668 ] Config: (default) max_files = 0
[2017-02-12T18:19:31.365731 7668 ] Config: (/home/ymorin/.buildroot-ccache/ccache.conf) max_size = 5.0G
[2017-02-12T18:19:31.365731 7668 ] Config: (default) path =
[2017-02-12T18:19:31.365731 7668 ] Config: (default) prefix_command =
[2017-02-12T18:19:31.365731 7668 ] Config: (default) prefix_command_cpp =
[2017-02-12T18:19:31.365731 7668 ] Config: (default) read_only = false
[2017-02-12T18:19:31.365731 7668 ] Config: (default) read_only_direct = false
[2017-02-12T18:19:31.365731 7668 ] Config: (default) recache = false
[2017-02-12T18:19:31.365731 7668 ] Config: (default) run_second_cpp = true
[2017-02-12T18:19:31.365731 7668 ] Config: (default) sloppiness =
[2017-02-12T18:19:31.365731 7668 ] Config: (default) stats = true
[2017-02-12T18:19:31.365731 7668 ] Config: (default) temporary_dir =
[2017-02-12T18:19:31.365731 7668 ] Config: (default) umask =
[2017-02-12T18:19:31.365731 7668 ] Config: (default) unify = false
[2017-02-12T18:19:31.365999 7668 ] Command line: /home/ymorin/dev/buildroot/O/host/usr/bin/ccache /home/ymorin/dev/buildroot/O/host/opt/ext-toolchain/bin/i686-pc-linux-gnu-gcc --sysroot /home/ymorin/dev/buildroot/O/host/usr/i686-buildroot-linux-gnu/sysroot -march=i686 -c -o meh.o meh.c
[2017-02-12T18:19:31.366080 7668 ] Hostname: gourin
[2017-02-12T18:19:31.366157 7668 ] Working directory: /home/ymorin/dev/buildroot/O
[2017-02-12T18:19:31.366280 7668 ] Automatically enabling colors
[2017-02-12T18:19:31.366312 7668 ] Source file: meh.c
[2017-02-12T18:19:31.366331 7668 ] Object file: meh.o
[2017-02-12T18:19:31.366367 7668 ] Trying direct lookup
[2017-02-12T18:19:31.366441 7668 ] Looking for object file hash in /home/ymorin/.buildroot-ccache/e/2/095355fd431a7dfa30fcd2c18aa6c7-359.manifest
[2017-02-12T18:19:31.366468 7668 ] No such manifest file
[2017-02-12T18:19:31.366486 7668 ] Did not find object file hash in manifest
[2017-02-12T18:19:31.366695 7668 ] Running preprocessor
[2017-02-12T18:19:31.366720 7668 ] Executing /home/ymorin/dev/buildroot/O/host/opt/ext-toolchain/bin/i686-pc-linux-gnu-gcc --sysroot host/usr/i686-buildroot-linux-gnu/sysroot -march=i686 -fdiagnostics-color -E meh.c
[2017-02-12T18:19:31.368786 7668 ] Preprocessor gave exit status 1
[2017-02-12T18:19:31.368834 7668 ] Failed; falling back to running the real compiler
[2017-02-12T18:19:31.368847 7668 ] Executing /home/ymorin/dev/buildroot/O/host/opt/ext-toolchain/bin/i686-pc-linux-gnu-gcc --sysroot /home/ymorin/dev/buildroot/O/host/usr/i686-buildroot-linux-gnu/sysroot -march=i686 -c -o meh.o meh.c
[2017-02-12T18:19:31.368943 7668 ] lockfile_acquire: symlink /home/ymorin/.buildroot-ccache/c/stats.lock: No such file or directory
[2017-02-12T18:19:31.369031 7668 ] Acquired lock /home/ymorin/.buildroot-ccache/c/stats.lock
[2017-02-12T18:19:31.369147 7668 ] Releasing lock /home/ymorin/.buildroot-ccache/c/stats.lock
[2017-02-12T18:19:31.369163 7668 ] Unlink /home/ymorin/.buildroot-ccache/c/stats.lock
[2017-02-12T18:19:31.369189 7668 ] Result: preprocessor error
Hope you can make something out of this.
BTW, I never trusted ccache; it only ever brought me more headaches on
which I spent more time than it ever saved me...
Regards,
Yann E. MORIN.
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
More information about the buildroot
mailing list