[ccache] use_relative_paths_in_depfile not called in preprocessor mode

Joel Rosdahl joel at rosdahl.net
Sat Dec 30 19:52:49 UTC 2017


Hi Venkat,

> cache hit(preprocessed) puts the .d file from the workspace as-is into the
> cache, thus, if such a compilation resulted in absolute paths in the .d
> file(in workspace), then, the cache will also contain .d files with
> absolute paths, resulting in troubles later on(from another users
workspace)
> [...]

Thanks for noting this!

I had a look at it and I think that the

put_file_in_cache(output_dep, cached_dep);


call in from_cache is just a mistake in commit 38301c0d – it should have
been removed when I added the corresponding call in to_cache. So currently
on a preprocessed hit, the .d file that already exists in the cache (with
absolute paths adjusted to relative) will be overwritten with a new version
(potentially with absolute paths).

Thus I think that the proper fix looks like this:

--- a/ccache.c
+++ b/ccache.c
@@ -1964,11 +1964,6 @@ from_cache(enum fromcache_call_mode mode, bool
put_object_in_manifest)
                update_mtime(cached_dwo);
        }

-       if (generating_dependencies && mode == FROMCACHE_CPP_MODE
-           && !conf->read_only && !conf->read_only_direct) {
-               put_file_in_cache(output_dep, cached_dep);
-       }
-
        send_cached_stderr();

        if (put_object_in_manifest) {


What do you think?

-- Joel


On 6 October 2017 at 15:50, Karanam Suryanarayana Rao Venkata Krishna via
ccache <ccache at lists.samba.org> wrote:

> Hello,
> cache hit(preprocessed) puts the .d file from the workspace as-is into the
> cache, thus, if such a compilation resulted in absolute paths in the .d
> file(in workspace), then, the cache will also contain .d files with
> absolute paths, resulting in troubles later on(from another users
> workspace)
>
> I mean, https://github.com/ccache/ccache/blob/3.3-maint/ccache.c#L1969
> should precede a function call use_relative_paths_in_depfile(output_dep);
> just the way it is on
> https://github.com/ccache/ccache/blob/3.3-maint/ccache.c#L1307
>
> Please comment.
>
> best regards,
> Venkat.
> _______________________________________________
> ccache mailing list
> ccache at lists.samba.org
> https://lists.samba.org/mailman/listinfo/ccache
>


More information about the ccache mailing list