From: "Paul Barker" <paul@pbarker.dev>
To: "Alex Kiernan" <alex.kiernan@gmail.com>,
<openembedded-core@lists.openembedded.org>
Subject: Re: [PATCH 0/4] fontcache: make the caches built into an image valid
Date: Mon, 09 Nov 2026 14:20:35 +0000 [thread overview]
Message-ID: <DMQQVSTB0X1G.UN5EOW5V25PS@pbarker.dev> (raw)
In-Reply-To: <20261013-fontcache-reproducible-mtime-v1-0-950f07b80f0f@gmail.com>
On Tue Oct 13, 2026 at 11:49 AM BST, Alex Kiernan wrote:
> The fontconfig caches update_font_cache builds into an image are never
> used on the target. fontconfig accepts a cache only while the directory
> mtime it recorded matches the directory, and three things disagree about
> that mtime:
>
> - fc-cache records min(directory mtime, SOURCE_DATE_EPOCH). When the
> intercept runs, the font directories still carry their packages'
> mtimes and SOURCE_DATE_EPOCH is the image's fallback value.
> - reproducible_final_image_task then sets every mtime in the rootfs to
> REPRODUCIBLE_TIMESTAMP_ROOTFS.
> - mke2fs clamps every inode time to the SOURCE_DATE_EPOCH in its
> environment, so an ext image ends up with a different time again from
> a tar or squashfs image of the same rootfs.
>
> So every process using fonts rescans and writes a cache of its own, or
> fails to on a read-only rootfs. fc-cache also deletes a cache it has
> just written for a directory newer than SOURCE_DATE_EPOCH, so with the
> default values some caches are missing from the image entirely.
>
> Patches 1-2 run fc-cache under REPRODUCIBLE_TIMESTAMP_ROOTFS, with the
> font directories' mtimes already set to it. Patch 3 keeps that time in ext
> images, as oe_mksquashfs already does for squashfs. That moves every
> inode and superblock time in an ext image from
> SOURCE_DATE_EPOCH_FALLBACK to REPRODUCIBLE_TIMESTAMP_ROOTFS, which with
> the bitbake.conf defaults is from 2011-04-05 to 2018-03-09. Patch 4
> adds a selftest that boots an image carrying a font and checks that
> fontconfig accepts every cache and writes none. On qemuarm64 it fails
> without patches 1-3 and passes with them.
Hi Alex,
If the selftest case in patch 4 is ran without the other changes in this
series, does it fail? I'd like to confirm that this test case would
catch the failure case.
Thanks,
--
Paul Barker
next prev parent reply other threads:[~2026-11-09 14:20 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-13 10:49 [PATCH 0/4] fontcache: make the caches built into an image valid Alex Kiernan
2026-10-13 10:49 ` [PATCH 1/4] package_manager: pass REPRODUCIBLE_TIMESTAMP_ROOTFS to intercepts Alex Kiernan
2026-10-13 10:49 ` [PATCH 2/4] update_font_cache: write caches that are valid in the final image Alex Kiernan
2026-10-13 10:49 ` [PATCH 3/4] image_types: keep the rootfs mtimes in ext2/3/4 images Alex Kiernan
2026-10-13 10:49 ` [PATCH 4/4] oeqa/selftest: check the font caches an image ships are used Alex Kiernan
2026-11-09 14:20 ` Paul Barker [this message]
2026-11-09 14:57 ` [PATCH 0/4] fontcache: make the caches built into an image valid Alex Kiernan
[not found] ` <18E6685CF84244C0.681194@lists.openembedded.org>
2026-11-09 18:45 ` [OE-core] " Alex Kiernan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=DMQQVSTB0X1G.UN5EOW5V25PS@pbarker.dev \
--to=paul@pbarker.dev \
--cc=alex.kiernan@gmail.com \
--cc=openembedded-core@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox