diff --git a/linux/build/scripts/build-inner.sh b/linux/build/scripts/build-inner.sh index e2a11de..ef82d15 100755 --- a/linux/build/scripts/build-inner.sh +++ b/linux/build/scripts/build-inner.sh @@ -260,12 +260,27 @@ post_process_for_reproducibility() { # `--` terminates the variable-length path list of -alter_date_r; # without it the following -volume_date is consumed as a path and # xorriso bails with "Cannot find path '/-volume_date'" (run #4279). + # Run #4283's diagnostic decoded the residual divergence as the + # Rock Ridge TF (Timestamps) entry on the just-replaced + # /live/filesystem.squashfs node. The byte pattern was: + # flags=0x0e → CREATION + MODIFICATION + ACCESS (short form) + # CREATION: `7e 05 08 00 06 2d 00` (=SOURCE_DATE_EPOCH ✅) + # MODIFICATION: A=`7e 05 08 00 18 10 00` B=`7e 05 08 00 28 14 00` + # ACCESS: A=`7e 05 08 00 18 0f 00` B=`7e 05 08 00 28 13 00` + # MODIFICATION/ACCESS each leaked the wall-clock time of -commit. + # So `-alter_date_r all` only fixed b (creation) on the updated + # node, and -update overwrote a and m at -commit. + # + # Add an explicit `-alter_date all` for /live/filesystem.squashfs + # AFTER -update — this way the override is the very last thing + # applied to that node before -commit. sudo --non-interactive xorriso \ -return_with SORRY 0 \ -indev "${iso_file}" \ -outdev "${new_iso}" \ -boot_image any keep \ -update "${new_sqfs}" /live/filesystem.squashfs \ + -alter_date all "=${SOURCE_DATE_EPOCH}" /live/filesystem.squashfs -- \ -alter_date_r all "=${SOURCE_DATE_EPOCH}" / -- \ -volume_date c "=${SOURCE_DATE_EPOCH}" \ -volume_date m "=${SOURCE_DATE_EPOCH}" \