On 9/8/2025 9:19 AM, Rob Clark wrote:
On Mon, Sep 8, 2025 at 6:39 AM Ryan Eatmon <[email protected]> wrote:
On 9/6/2025 6:24 PM, Rob Clark wrote:
On Sat, May 24, 2025 at 10:15 AM Dmitry Baryshkov
<[email protected]> wrote:
On Sat, May 24, 2025 at 09:25:37PM +0530, Viswanath Kraleti wrote:
From: Ryan Eatmon <[email protected]>
The files generated by gen_header.py capture the source path to the
input files and the date. While that can be informative, it varies
based on where and when the kernel was built as the full path is
captured.
Since all of the files that this tool is run on is under the drivers
directory, this modifies the application to strip all of the path before
drivers. Additionally it prints <stripped> instead of the date.
Signed-off-by: Ryan Eatmon <[email protected]>
Signed-off-by: Bruce Ashfield <[email protected]>
Signed-off-by: Viswanath Kraleti <[email protected]>
---
The files generated by gen_header.py include the source path to the
input files and the build date. While this information can be useful,
it inadvertently exposes build system configuration details in the
binaries. This hinders binary reproducibility, as the output will
vary if the build environment changes.
This change was originally submitted to the linux-yocto-dev kernel [1]
to address binary reproducibility QA errors. However, the fix is generic
enough to be applicable to the mainline kernel and would benefit other
distributions as well. So proposing it here for broader inclusion.
[1]
https://git.yoctoproject.org/linux-yocto-dev/commit/?id=f36faf0f9f8d8f5b4c43a68e5c6bd83a62253140
---
Changes in v2:
- Corrected author id
- Link to v1:
https://lore.kernel.org/r/[email protected]
---
drivers/gpu/drm/msm/registers/gen_header.py | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
Acked-by: Dmitry Baryshkov <[email protected]>
Rob, WDYT?
I'm revisiting this one, in the context of trying to re-sync
gen_header.py with mesa.. but it is only changing the contents of
comments, so it's not quite clear to me how this ends up mattering for
binary reproducibility.
The reason it matters is that for Yocto, the generated header file is
identified as a file that needs to be installed into the sysroot. All
files going into the sysroot are checked to make sure they do not
contain dates and/or paths to the build directory contained within.
Since this is a generated header file that is included in the sysroot we
needed to strip out the path and date.
The idea for the reproducible builds are that the same files on a
different a machine at a different time should produce 100% identical
files. Including paths and dates violates that tenet.
Hope that helps explain why we needed this. So long as the
gen_header.py is being called to generate header files then we need to
maintain the reproducible aspect.
My plan is (was?) to just replace the entire comment header with simply:
/* Autogenerated file, DO NOT EDIT manually! */
That said, I'm not entirely sure why these files should get installed
into the sysroot? I'm not super hands-on familiar with Yocto, so
maybe there is a good reason.. but if there is, maybe the plan to
remove the license/etc from the comment header isn't such a good idea
after all?
The generated header files would be part of a linux-headers package that
would be needed to build other packages as part of the distro. And so
the header files are all checked against the rules. A linux-headers
type package is common for distros to have available.
BR,
-R
That said, since the generated files are no longer checked in to mesa
or the kernel, we could probably just drop all of this if it mattered.
BR,
-R
--
Ryan Eatmon [email protected]
-----------------------------------------
Texas Instruments, Inc. - LCPD - MGTS
--
Ryan Eatmon [email protected]
-----------------------------------------
Texas Instruments, Inc. - LCPD - MGTS