aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSarah Morgensen <iskarian@mgsn.dev>2021-06-18 17:52:05 -0700
committerLudovic Courtès <ludo@gnu.org>2021-07-11 18:17:31 +0200
commit6f12880a76a6c91058718d15845f8b9d9b529a5a (patch)
tree099a2b83d254c93ba850dbfa1782ea0ec752b59c
parent9b4c3c675c05870e5983c21ce4ff944e0b0bc2fa (diff)
downloadguix-6f12880a76a6c91058718d15845f8b9d9b529a5a.tar.gz
guix-6f12880a76a6c91058718d15845f8b9d9b529a5a.zip
gnu: fontconfig: Use (locally) deterministic caching
Make fontconfig use directory contents rather than modification time to determine cache validity (by pretending that mtime is broken). * gnu/packages/patches/fontconfig-cache-ignore-mtime.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it. * gnu/packages/fontutils.scm (fontconfig)[source]: Use it. [arguments]: Unset SOURCE_DATE_EPOCH for tests. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
-rw-r--r--gnu/local.mk1
-rw-r--r--gnu/packages/fontutils.scm7
-rw-r--r--gnu/packages/patches/fontconfig-cache-ignore-mtime.patch15
3 files changed, 22 insertions, 1 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index 901fc7c4ba..bc9a34fd8e 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1019,6 +1019,7 @@ dist_patch_DATA = \
%D%/packages/patches/fifo-map-remove-catch.hpp.patch \
%D%/packages/patches/findutils-localstatedir.patch \
%D%/packages/patches/flann-cmake-3.11.patch \
+ %D%/packages/patches/fontconfig-cache-ignore-mtime.patch \
%D%/packages/patches/foobillard++-pkg-config.patch \
%D%/packages/patches/foomatic-filters-CVE-2015-8327.patch \
%D%/packages/patches/foomatic-filters-CVE-2015-8560.patch \
diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm
index dbce5beba8..0ee51a792e 100644
--- a/gnu/packages/fontutils.scm
+++ b/gnu/packages/fontutils.scm
@@ -14,6 +14,7 @@
;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2020, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr>
+;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -331,7 +332,8 @@ Font Format (WOFF).")
"https://www.freedesktop.org/software/"
"fontconfig/release/fontconfig-" version ".tar.xz"))
(sha256 (base32
- "1850q4k80yxma5g3yxkvyv8i5a3xqzswwml8gjy3jmywx8qqd5pa"))))
+ "1850q4k80yxma5g3yxkvyv8i5a3xqzswwml8gjy3jmywx8qqd5pa"))
+ (patches (search-patches "fontconfig-cache-ignore-mtime.patch"))))
(build-system gnu-build-system)
;; In Requires or Requires.private of fontconfig.pc.
(propagated-inputs `(("expat" ,expat)
@@ -362,6 +364,9 @@ Font Format (WOFF).")
(modify-phases %standard-phases
(add-before 'check 'skip-problematic-tests
(lambda _
+ ;; SOURCE_DATE_EPOCH doesn't make sense when ignoring mtime
+ (unsetenv "SOURCE_DATE_EPOCH")
+
(substitute* "test/run-test.sh"
;; The crbug1004254 test attempts to fetch fonts from the
;; network.
diff --git a/gnu/packages/patches/fontconfig-cache-ignore-mtime.patch b/gnu/packages/patches/fontconfig-cache-ignore-mtime.patch
new file mode 100644
index 0000000000..b6e942ee10
--- /dev/null
+++ b/gnu/packages/patches/fontconfig-cache-ignore-mtime.patch
@@ -0,0 +1,15 @@
+Pretend that stat's mtime is broken, so that the fontconfig cache does not
+depend upon modification time to determine if a cache is stale.
+
+diff --git a/src/fcstat.c b/src/fcstat.c
+index 5a2bd7c..d603a96 100644
+--- a/src/fcstat.c
++++ b/src/fcstat.c
+@@ -431,6 +431,7 @@ FcIsFsMmapSafe (int fd)
+ FcBool
+ FcIsFsMtimeBroken (const FcChar8 *dir)
+ {
++ return FcTrue;
+ int fd = FcOpen ((const char *) dir, O_RDONLY);
+
+ if (fd != -1)