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.