diff options
author | V3n3RiX <venerix@redcorelinux.org> | 2020-04-12 03:41:30 +0100 |
---|---|---|
committer | V3n3RiX <venerix@redcorelinux.org> | 2020-04-12 03:41:30 +0100 |
commit | 623ee73d661e5ed8475cb264511f683407d87365 (patch) | |
tree | 993eb27c93ec7a2d2d19550300d888fc1fed9e69 /dev-util/ccache/files | |
parent | ceeeb463cc1eef97fd62eaee8bf2196ba04bc384 (diff) |
gentoo Easter resync : 12.04.2020
Diffstat (limited to 'dev-util/ccache/files')
-rw-r--r-- | dev-util/ccache/files/ccache-3.7.8-dev-null.patch | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/dev-util/ccache/files/ccache-3.7.8-dev-null.patch b/dev-util/ccache/files/ccache-3.7.8-dev-null.patch new file mode 100644 index 000000000000..389f9e3a1e2b --- /dev/null +++ b/dev-util/ccache/files/ccache-3.7.8-dev-null.patch @@ -0,0 +1,57 @@ +https://bugs.gentoo.org/712080 + +From 9a794689a8ba47e79c96d6c370976448b756973c Mon Sep 17 00:00:00 2001 +From: Joel Rosdahl <joel@rosdahl.net> +Date: Sun, 22 Mar 2020 14:30:23 +0100 +Subject: [PATCH] Disable hard link mode when the output object file is + /dev/null +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +When hard link mode is enabled, ccache ≥3.6 unlinks the output file +before writing to it as a workaround for a bug in Clang (#331). This +unfortunately means that /dev/null will be removed when building as root +(don’t do that, BTW) with hard link mode enabled and /dev/null as the +the output file. A similar problem exists if the dependency file is +/dev/null, regardless of hard link mode. + +Fix this by not unlinking the output file if it’s /dev/null and by not +copying files to /dev/null at all. (There is no need to handle other +non-regular output files since /dev/null is the only allowed non-regular +output file.) + +Fixes #564. +--- + src/ccache.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/src/ccache.c b/src/ccache.c +index 6e9da51..b9bafac 100644 +--- a/src/ccache.c ++++ b/src/ccache.c +@@ -1299,6 +1299,11 @@ move_file_to_cache_same_fs(const char *source, const char *dest) + static void + do_copy_or_link_file_from_cache(const char *source, const char *dest, bool copy) + { ++ if (str_eq(dest, "/dev/null")) { ++ cc_log("Skipping copy from %s to %s", source, dest); ++ return; ++ } ++ + int ret; + bool do_link = !copy && conf->hard_link && !file_is_compressed(source); + if (do_link) { +@@ -1432,7 +1437,8 @@ to_cache(struct args *args, struct hash *depend_mode_hash) + args_add(args, "-o"); + args_add(args, output_obj); + +- if (conf->hard_link) { ++ if (conf->hard_link && !str_eq(output_obj, "/dev/null")) { ++ // This is a workaround for https://bugs.llvm.org/show_bug.cgi?id=39782. + x_unlink(output_obj); + } + +-- +2.26.0 + |