diff --git a/fontconfig-test-delay.patch b/fontconfig-test-delay.patch new file mode 100644 index 0000000..4a0ef1e --- /dev/null +++ b/fontconfig-test-delay.patch @@ -0,0 +1,79 @@ +From 0ddacad43d7fce4668914a4695898902d1006965 Mon Sep 17 00:00:00 2001 +From: Keith Packard +Date: Mon, 29 Oct 2018 16:36:11 -0700 +Subject: [PATCH] Add delays to test-bz106632, check UptoDate separately + +On a file system with one-second time stamps, extra delays are needed +between cache modification operations to ensure that fontconfig isn't +fooled. + +And, when the timestamps are checked correctly, we need to make sure +that FcConfigUptoDate returns false whenever we change a font +directory, so separate that out from the call to reinitialize the core +config. + +Signed-off-by: Keith Packard +--- + test/test-bz106632.c | 24 ++++++++++++++++++------ + 1 file changed, 18 insertions(+), 6 deletions(-) + +diff --git a/test/test-bz106632.c b/test/test-bz106632.c +index c2edd72..87a5ec0 100644 +--- a/test/test-bz106632.c ++++ b/test/test-bz106632.c +@@ -186,7 +186,7 @@ main (void) + mkdir_p (cachedir); + + fprintf (stderr, "D: Copying %s to %s\n", FONTFILE, fontdir); +- snprintf (cmd, 512, "cp -a %s %s", FONTFILE, fontdir); ++ snprintf (cmd, 512, "sleep 1; cp -a %s %s; sleep 1", FONTFILE, fontdir); + system (cmd); + + fprintf (stderr, "D: Loading a config\n"); +@@ -215,15 +215,21 @@ main (void) + goto bail; + } + fprintf (stderr, "D: Removing %s\n", fontdir); +- snprintf (cmd, 512, "rm -f %s%s*; sleep 1", fontdir, FC_DIR_SEPARATOR_S); ++ snprintf (cmd, 512, "sleep 1; rm -f %s%s*; sleep 1", fontdir, FC_DIR_SEPARATOR_S); + system (cmd); + fprintf (stderr, "D: Reinitializing\n"); +- if (!FcConfigUptoDate (config) || !FcInitReinitialize ()) ++ if (FcConfigUptoDate(config)) + { +- fprintf (stderr, "E: Unable to reinitialize\n"); ++ fprintf (stderr, "E: Config reports up-to-date\n"); + ret = 2; + goto bail; + } ++ if (!FcInitReinitialize ()) ++ { ++ fprintf (stderr, "E: Unable to reinitialize\n"); ++ ret = 3; ++ goto bail; ++ } + if (FcConfigGetCurrent () == config) + { + fprintf (stderr, "E: config wasn't reloaded\n"); +@@ -254,10 +260,16 @@ main (void) + goto bail; + } + fprintf (stderr, "D: Copying %s to %s\n", FONTFILE, fontdir); +- snprintf (cmd, 512, "cp -a %s %s; sleep 1", FONTFILE, fontdir); ++ snprintf (cmd, 512, "sleep 1; cp -a %s %s; sleep 1", FONTFILE, fontdir); + system (cmd); + fprintf (stderr, "D: Reinitializing\n"); +- if (!FcConfigUptoDate (config) || !FcInitReinitialize ()) ++ if (FcConfigUptoDate(config)) ++ { ++ fprintf (stderr, "E: Config up-to-date after addition\n"); ++ ret = 3; ++ goto bail; ++ } ++ if (!FcInitReinitialize ()) + { + fprintf (stderr, "E: Unable to reinitialize\n"); + ret = 2; +-- +2.19.1 + diff --git a/fontconfig.spec b/fontconfig.spec index 9b8ce17..95117a7 100644 --- a/fontconfig.spec +++ b/fontconfig.spec @@ -21,6 +21,7 @@ Patch0: %{name}-sleep-less.patch Patch1: %{name}-required-freetype-version.patch Patch2: %{name}-stop-cleanup-uuid.patch Patch3: %{name}-use-rachana.patch +Patch4: %{name}-test-delay.patch BuildRequires: expat-devel BuildRequires: freetype-devel >= %{freetype_version}