This patch fixes the problem for me (I'm having the exact same problem, where a fresh sid instalation fails with the "cannot write" errors). It seems to me that the code in FcDirCacheProcess() is wrong: since files are being modified in the cache directory, "dir_stat.st_mtime <= file_stat.st_mtime" will often be false for random reasons; even though I don't fully understand what the logic behind the code is, that doesn't sound right. Wouldn't the intention of that function be to return true unless an error happens? Regards,
-- Álvaro Martínez Echevarría ame ATATAT acm.org ``Pero yo que he sentido una vez en mis manos temblar la alegría / ya no podré morir nunca. / Pero yo que he tocado una vez las agudas agujas del pino / ya no podré morir nunca''. [José Hierro, "El muerto"]
--- fontconfig-2.4.1/src/fccache.c.OLD 2006-09-09 16:30:00.000000000 -0700 +++ fontconfig-2.4.1/src/fccache.c 2006-10-16 15:06:47.000000000 -0700 @@ -143,7 +143,7 @@ FcStrList *list; FcChar8 *cache_dir; struct stat file_stat, dir_stat; - FcBool ret = FcFalse; + FcBool ret = FcTrue; if (stat ((char *) dir, &dir_stat) < 0) return FcFalse;