Re: Next steps for a reproducible Fontconfig?

"Keith Packard" <[email protected]> Wed, 09 Jan 2019 11:29:05 -0800
Newsgroups gmane.comp.fonts.fontconfig
Message-ID <[email protected]>
Akira TAGOH <[email protected]> writes:

> As of the discussion on the list, Keith's changes doesn't address the
> original purpose - allow sharing caches on bind-mounts in flatpaks.
> particularly for the case where flatpaks uses same location in
> sandbox.

I'm probably forgetting a bunch of context here, but I think the problem
was that flatpaks have /run/host/fonts pointing to the "real"
/usr/share/fonts and then a separate /usr/share/fonts of their own with
a small set of fonts, and so you end up with collisions in the cache
file namespace as both directories end up generating the same cache file
name.

> this is the reason why it can't be merged into master.  So just
> reverting the change that removes .uuid file only when a directory has
> empty is done in master so far. if you have .uuid file prior to run
> fc-cache, your issue could be worked around at this moment. for more
> details, you can check what Alex Larsson said on this list.

Making the build reproducible means having all content generated
deterministically based only on the source package and toolchain. The
current UUID files are generated randomly making them
non-deterministic.

For the font cache, making it reproducible requires that the keys
mapping directories to cache filenames be the same each time the cache
is built. This means we cannot use the current randomly generated UUID
values and also have a reproducible system.

I considered whether we might provide a mechanism to generate UUID
values deterministically for purposes of packaging. However, this would
mean that we couldn't use these same packages when creating a flatpak as
the deterministic UUID values would collide if those same packages were
used in the outer system.

Without deterministic UUID values, I'm left with the feeling that
our only available solutions involve changing how flatpaks reference
fonts.

If we agree that a solution to this involves changing the flatpak
mechanism, I'd like to suggest that the most straightforward fix for the
overall system would be to expose the external fonts using the external
path names -- bind mounting the external /usr/share/fonts as
/usr/share/fonts within the flatpak, and creating a new
/usr/share/fonts-minimal (or whatever) to hold the fonts provided by the
flatpak itself. With this change, we can simply delete the UUID code
from fontconfig and go back to using global font paths as keys to the
font cache database.

I'd love to hear about alternative ideas which might lead to solutions
that make builds involving fontconfig reproducible. I'd be happy to take
even vague hints at this point; all I've got at this point are a
collection of dead ends.

(Also, if I've missed or forgotten something relevant, please let me
know; I've re-read a lot of stuff while writing this, but surely
something escaped my notice).

-- 
-keith

_______________________________________________
Fontconfig mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/fontconfig
signature.asc (application/pgp-signature, 832 B)
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEEw4O3eCVWE9/bQJ2R2yIaaQAAABEFAlw2S4EACgkQ2yIaaQAA
ABF8Bg//cgAXc9yV1vYsCzsQLm1QSzRXdBEugYBvPZix/EgO0HDBbAvNaZuWGGc6
Ujv4PRmO/m1vs3YBYdsTLd+ZvmtYoSapm90Ilw4qwnkGj194//KkO32JTnzQ6v+8
hBBIyvIESD8Bw6i3vRYGzyakC4dIKUSDqhHbO2PAI9ZkGb0OPUwOOLbVJM0bJPFN
ZECMnaBhquiCY+AYZKI6xkNn5/ZMcCOxtsv5vWFq36X4GamG0Y0o9+nTGXnfMP7D
pGN8ip3iCkF3ONRnbOkh1wnkzhvqxPoN15YHlJWRPlcbjsS4hKEbO7SUmbAYZdwU
tLwoS2WPFVH1pOSoF3yLF1SnMG7o9zHqLZ3eRBJbQSqtIB9+8p84dYwYtE9PDkuT
BZPXlV7ugOsXATCVcY9G6jhRJEatGqb4/M2QM4rFJEmFbktBaT9GkzZ9u0NrkTKe
nnuQBFz4e5+JIzfMJb+DXsBsfuEJrOKAqo2nT4ukQJWyTFNjYbxLvWpFOmlt6zFt
iNyEJ7oY8HcGNKq+200vCyT4qRJQoxBjm1eSj4/UJsCQaAgwk2eFuDvEyiuoh+VC
f7naSPFSFHQgltjbcEJ8BfVQqPS03aXiYoGotJDCRxa7ivIixfGEUs+Jo8rLahQA
B+YvflocCTntPEHg+RCjSzNZufH1iApfoT75Nsz2fC/QFeYWCkg=
=0ZD/
-----END PGP SIGNATURE-----