diff --git a/fontconfig-do-not-remove-UUID-file.patch b/fontconfig-do-not-remove-UUID-file.patch new file mode 100644 index 0000000..8d35853 --- /dev/null +++ b/fontconfig-do-not-remove-UUID-file.patch @@ -0,0 +1,82 @@ +https://gitlab.freedesktop.org/fontconfig/fontconfig/merge_requests/8 +From 5f12f564f8748deaa603adb7a4b8f616b6390ad4 Mon Sep 17 00:00:00 2001 +From: Keith Packard +Date: Wed, 17 Oct 2018 21:15:47 -0700 +Subject: [PATCH] Do not remove UUID file when a scanned directory is empty + +Because FcDirCacheDeleteUUID does not reset the modification time on +the directory, and because FcDirCacheRead unconditionally creates the +UUID file each time it is run, any empty directory in the cache will +get its timestamp changed each time the cache for that directory is +read. + +Instead, just leave the UUID file around as it is harmless. + +The alternative would be to only create the UUID file after the cache +has been created and the directory has been discovered to be +non-empty, but that would delay the creation of the UUID file. + +Signed-off-by: Keith Packard +--- + src/fcdir.c | 7 ------- + 1 file changed, 7 deletions(-) + +diff --git a/src/fcdir.c b/src/fcdir.c +index 93f220c..bfcdf95 100644 +--- a/src/fcdir.c ++++ b/src/fcdir.c +@@ -421,13 +421,6 @@ FcDirCacheRead (const FcChar8 *dir, FcBool force, FcConfig *config) + /* Not using existing cache file, construct new cache */ + if (!cache) + cache = FcDirCacheScan (dir, config); +- if (cache) +- { +- FcFontSet *fs = FcCacheSet (cache); +- +- if (cache->dirs_count == 0 && (!fs || fs->nfont == 0)) +- FcDirCacheDeleteUUID (dir, config); +- } + + return cache; + } +-- +2.18.1 + +diff --git a/test/run-test.sh b/test/run-test.sh +index e76e39bd8c384f8354600d8c7b073a57f3012482..ed41456998ba599568e2ab0bf3cc990e9abcc525 100644 +--- a/test/run-test.sh ++++ b/test/run-test.sh +@@ -239,19 +239,19 @@ fi + + rm -rf $MyPWD/sysroot + +-dotest "deleting .uuid file on empty dir" +-prep +-cp $FONT1 $FONT2 $FONTDIR +-$FCCACHE $FONTDIR +-sleep 1 +-rm -f $FONTDIR/*pcf +-$FCCACHE $FONTDIR +-rmdir $FONTDIR > /dev/null 2>&1 +-if [ $? != 0 ]; then +- echo "*** Test failed: $TEST" +- echo "$FONTDIR isn't empty" +- ls -al $FONTDIR +- exit 1 +-fi ++# dotest "deleting .uuid file on empty dir" ++# prep ++# cp $FONT1 $FONT2 $FONTDIR ++# $FCCACHE $FONTDIR ++# sleep 1 ++# rm -f $FONTDIR/*pcf ++# $FCCACHE $FONTDIR ++# rmdir $FONTDIR > /dev/null 2>&1 ++# if [ $? != 0 ]; then ++# echo "*** Test failed: $TEST" ++# echo "$FONTDIR isn't empty" ++# ls -al $FONTDIR ++# exit 1 ++# fi + + rm -rf $FONTDIR $CACHEFILE $CACHEDIR $FONTCONFIG_FILE out diff --git a/fontconfig.changes b/fontconfig.changes index ca4f49f..22d9d7b 100644 --- a/fontconfig.changes +++ b/fontconfig.changes @@ -1,3 +1,12 @@ +------------------------------------------------------------------- +Sat Feb 9 23:34:45 UTC 2019 - Atri Bhattacharya + +- Add fontconfig-do-not-remove-UUID-file.patch: Removing .uuid + files caused frequent rescanning of all system fonts causing + intermittent CPU usage surges, for example, when browsing using + firefox; patch taken from upstream commit (boo#1124816, + https://gitlab.freedesktop.org/fontconfig/fontconfig/merge_requests/8). + ------------------------------------------------------------------- Sat Jan 12 12:07:28 UTC 2019 - Jan Engelhardt diff --git a/fontconfig.spec b/fontconfig.spec index 8abe8c4..a63f44f 100644 --- a/fontconfig.spec +++ b/fontconfig.spec @@ -27,6 +27,8 @@ Url: http://fontconfig.org/ Source0: http://fontconfig.org/release/%{name}-%{version}.tar.bz2 Source4: baselibs.conf Source5: local.conf +# PATCH-FIX-UPSTREAM fontconfig-do-not-remove-UUID-file.patch boo#1124816 badshah400@gmail.com -- Removing .uuid files caused frequent rescanning of all system fonts causing intermittent CPU usage surges, for example, when browsing using firefox; patch taken from upstream commit +Patch0: fontconfig-do-not-remove-UUID-file.patch BuildRequires: automake >= 1.11 BuildRequires: gperf BuildRequires: libtool @@ -90,6 +92,7 @@ fontconfig library. %prep %setup -q +%patch0 -p1 # use suse-specific doc path: find -name \*.1 -o -name \*.sgml -exec sed -i -e 's/usr\/share\/doc\/fontconfig/usr\/share\/doc\/packages\/fontconfig/g' {} +