On Thu, Mar 13, 2025 at 01:43:25PM -0400, Frank Ch. Eigler wrote:
> Hi -
> 
> > [...]
> > Every time you rebuild some packages, the package files are rebuilt with the
> > new contents. When this happens, the new package files will have a newer
> > mtime, but the files inside the archive (elf, source) will have the same
> > fixed timestamp as before. 
> 
> Do I understand this part correctly: that yocto package-file
> filestamps are normal (reflect their actual unique-ish creation time),
> but the timestamps of constituent files are synthetic (and may be
> backdated / duplicate)?

Exactly. Correct. The "rpm" file has a good mtime timestamp of it
creation, but the mtimes of the files inside are fake.

> > And when debuginfod will traverse them (without the patch I
> > propose), it will not update the database because it will find
> > consider that the files inside the packages were not modified. [...]
> 
> That's not how debuginfod works though.  It decides to reanalyze
> archives based on the archive mtime, not the constituent file mtime.
> Your patch only affects the "_r_seekable.mtime" column, which I
> believe is not used for any sort of caching/invalidation type logic.

Uhm I agree now that I review.
I see the _r_seekable_mtime though is sent through HTTP as Last-Modified.
Maybe it is the client that is confused? I had the impression the patch
fixed all my problems for me.
I will have to review this again in detail. I simply wanted to avoid
trusting the file-in-archive timestamp for anything, in my patch.

> Maybe we could make this discussion more concrete by having you show
> us an actual example.  Two different yocto package versions, with
> detailed timestamp/content listings, ingested into an otherwise empty
> debuginfod database one at a time, and doing a database dump after
> both completed scan operations.

Here is an example:
$ ls -l less-600-r0.cortexa78ae.rpm
-rw-r--r-- 1 lbatlle 1000 121980 Mar 14 02:04 less-600-r0.cortexa78ae.rpm
$ rpm2cpio less-600-r0.cortexa78ae.rpm |cpio -v -t
drwxr-xr-x   1 root     root            0 Jan  7  2022 ./usr
drwxr-xr-x   1 root     root            0 Jan  7  2022 ./usr/bin
-rwxr-xr-x   1 root     root       223592 Jan  7  2022 ./usr/bin/less.less
-rwxr-xr-x   1 root     root        10232 Jan  7  2022 ./usr/bin/lessecho
-rwxr-xr-x   1 root     root        19840 Jan  7  2022 ./usr/bin/lesskey
497 blocks

If I modify the recipe and build again, I get the same timestamps inside.
For example, I removed one of the patches to 'less' and rebuilt it.

$ ls -l less-600-r0.cortexa78ae.rpm
-rw-r--r-- 1 lbatlle 1000 121837 Mar 17 17:24 less-600-r0.cortexa78ae.rpm
$ rpm2cpio less-600-r0.cortexa78ae.rpm |cpio -v -t
drwxr-xr-x   1 root     root            0 Jan  7  2022 ./usr
drwxr-xr-x   1 root     root            0 Jan  7  2022 ./usr/bin
-rwxr-xr-x   1 root     root       223592 Jan  7  2022 ./usr/bin/less.less
-rwxr-xr-x   1 root     root        10232 Jan  7  2022 ./usr/bin/lessecho
-rwxr-xr-x   1 root     root        19840 Jan  7  2022 ./usr/bin/lesskey
497 blocks

Regards,
Lluís.

Reply via email to