[Fontconfig] Broken "-enable-large-file" handling

Juergen Borleis fb at kreuzholzen.de
Thu Apr 30 18:51:59 UTC 2020


Hi,

a while ago I run my embedded device via NFS root and stumbled across an issue 
in fontconfig: if your embedded device is a 32 bit system, but the host which 
exports the NFS is a 64 bit system with a large filesystem, it can happen, it 
exports 64 bit inodes via NFS the 32 bit system cannot handle - unless you 
use "-enable-large-file" (which is the regular solution for this issue).

But in my case fontconfig stopped working, since the directories it searches for 
XML files had inodes which fits into a 32 bit value, but the inodes of the XML 
files in these directories didn't. So, from the fontconfig point of view there 
are no XML files at all - and I wondered why it didn't honor my adapted XML 
files...

Since the fonconfig's "configure" script already deals 
with "--enable-large-file", we only need to ensure *all* source files have to 
include its result: the "config.h".

A few source files already do that, but the most do not. And that was the root 
cause of my inode size issue. Two solutions are possible:

 1) adding the "#include <config.h>" in all source files
 2) forcing the inclusion of the "config.h" via a
      "-include $(top_builddir)/config.h"
    parameter to the compiler.

1) needs to touch all source files, 2) needs to add the mentioned parameter to 
the "AM_CPPFLAGS" variable (and removing the "#include <config.h>" from a few 
source files).

What would be an acceptable patch? I already made one for solution 2) and for my 
use case fontconfig works again.

Regards,
Juergen


More information about the Fontconfig mailing list