[Fontconfig] Status about fontconfig CVS regarding cache handling

Frederic Crozat fcrozat at mandriva.com
Thu Feb 16 05:04:21 PST 2006

Le jeudi 16 février 2006 à 01:27 -0500, Patrick Lam a écrit :
> Frederic Crozat wrote:
> > Le jeudi 09 février 2006 à 13:39 -0500, Patrick Lam a écrit :
> > 
> >>Frederic Crozat wrote:
> >>
> >>>But old fonts.cache-2 file in the file system (not
> >>>in /var/cache/fontconfig) is not removed when running fc-cache and
> >>>running fc-cache several times still update cache
> >>>in /var/cache/fontconfig.
> > 
> > Hmm, I thought the problem would be fixed by patch from Takashi
> > preferring /var/cache/fontconfig files instead of the one in directory
> > but it still isn't. 
> The code removes the fonts.cache-2 file in the directory and then the 
> hashed cache file, and I've confirmed this behaviour.  I've committed an 
> additional patch which makes it not bail if it sees a fonts.cache-2 and 
> fails to remove it; this is sort of inconvenient, but fontconfig can 
> live with it.

Well, I've just tested here with today CVS snapshot
and /usr/share/fonts/ttf/big5/fonts.cache-2 is never removed, when
running fc-cache or fc-cache -f :( (and /usr is not read-only).

I've checked fc-cache.c code a little more :

FcDirCacheUnlink is only called when FcDirCacheValid is false.
Unfortunately, in my case, cache in /var/cache/fontconfig is always
valid, so FcDirCacheValid returns always TRUE and therefore
FcDirCacheUnlink is not called and doesn't remove the old cache
in /usr/share/fonts/ttf/big5/.

And this "bug" seems even documented in FcDirCacheValid : 
* Also, this can be fooled if the original location has a stale
 * cache, and the hashed location has an up-to-date cache.  Oh well,
 * sucks to be you in that case! */

I think we should try to really nail that bug, otherwise people will end
with unstable cache behaviour. Maybe adding a "--remove-obsolete-cache"
option to fc-cache to remove fonts.cache-2 outside /var/cache/fontconfig
would be a solution (and it could remove fonts.cache-1 too if we want ;)

> Here's a bug that probably already exists in 2.3.2 but is only important 
> now: if you mount /usr as read-only, then fc-cache skips generating 
> caches in /var since it thinks it doesn't have access to /usr and won't 
> be able to generate caches.
> > Running fc-cache several times still generate recreate cache
> > in /var/cache/fontconfig.
> > 
> > I guess there is still some side effect somewhere..
> I can't trigger this part of the bug.  For me it erases the 
> fonts.cache-2 file, or triggers the bug I mentioned above.

I hope my hints helped you understanding my problem (and your fix for
the /usr read-only bug didn't fix my bug..).

PS : be careful when replying, your initial reply wasn't sent to the
Frederic Crozat <fcrozat at mandriva.com>

More information about the Fontconfig mailing list