Source: onevpl-intel-gpu
Version: 24.3.4-1
Severity: wishlist
Tags: patch
User: reproducible-bui...@lists.alioth.debian.org
Usertags: kernel
X-Debbugs-Cc: reproducible-b...@lists.alioth.debian.org

Hi,

Whilst working on the Reproducible Builds effort [0], we noticed that
onevpl-intel-gpu could not be built reproducibly.

This is because the binary embeds the kernel version into one of the
binaries via the MFX_BUILD_INFO macro:

│ │ │ ├── ./usr/lib/x86_64-linux-gnu/libmfx-gen.so.1.2.13
│ │ │ │┄ File has been modified after NT_GNU_BUILD_ID has been applied.
│ │ │ │ ├── readelf --wide --notes {}
│ │ │ │ │ @@ -1,4 +1,4 @@
│ │ │ │ │  
│ │ │ │ │  Displaying notes found in: .note.gnu.build-id
│ │ │ │ │    Owner                Data size     Description
│ │ │ │ │ -  GNU                  0x00000014    NT_GNU_BUILD_ID (unique build 
ID bitstring)         Build ID: 97c4c33f55d6d62f6a9d25fb95e901bca16c68f0
│ │ │ │ │ +  GNU                  0x00000014    NT_GNU_BUILD_ID (unique build 
ID bitstring)         Build ID: b144d3a34b074cb0ee714b4ab17c53b2059e6a71
│ │ │ │ ├── strings --all --bytes=8 {}
│ │ │ │ │ @@ -6387,15 +6387,15 @@
│ │ │ │ │  MFX_ERR_INCOMPATIBLE_VIDEO_PARAM
│ │ │ │ │  MFX_WRN_INCOMPATIBLE_VIDEO_PARAM
│ │ │ │ │  ./_studio/mfx_lib/shared/src/libmfxsw.cpp
│ │ │ │ │  APIImpl_MFXReleaseImplDescription
│ │ │ │ │  APIImpl_MFXQueryImplsDescription
│ │ │ │ │  MFXVideoCORE_SetBufferAllocator
│ │ │ │ │  mediasdk_libva_version: 1.22.0
│ │ │ │ │ -mediasdk_build_info: Linux-6.12.9+bpo-amd64 6.12.9+bpo-amd64 | GNU 
14.2.0 | glibc 2.40
│ │ │ │ │ +mediasdk_build_info: Linux-6.1.0-31-amd64 6.1.0-31-amd64 | GNU 
14.2.0 | glibc 2.40
│ │ │ │ │  mediasdk_copyright: Copyright(c) 2007-2020 Intel Corporation
│ │ │ │ │  mediasdk_product_name: Intel(R) Media SDK
│ │ │ │ │  APIImpl_MFXVideoCORE_SyncOperation
│ │ │ │ │  ./_studio/mfx_lib/shared/src/libmfxsw_async.cpp

A patch is attached that ensures that this value is not passed to the
compiler, resulting in "no build info" (via an #ifndef already in the
code).

An alternative approach is perhaps adding:

   export DEB_CPPFLAGS_MAINT_APPEND = -DMFX_BUILD_INFO="no build info"

... to debian/rules, although this will result in "redefinition"
warnings in the build log as it will cause multiple -DMFX_BUILD_INFO="[…]"
comand-line arguments.

 [0] https://reproducible-builds.org/


Regards,

-- 
      ,''`.
     : :'  :     Chris Lamb
     `. `'`      la...@debian.org / chris-lamb.co.uk
       `-


--- a/debian/patches/reproducible-build.patch   1970-01-01 01:00:00.000000000 
+0100
--- b/debian/patches/reproducible-build.patch   2025-02-18 11:36:27.514956436 
+0000
@@ -0,0 +1,14 @@
+Description: Make the build reproducible
+Author: Chris Lamb <la...@debian.org>
+Last-Update: 2025-02-18
+
+--- onevpl-intel-gpu-24.3.4.orig/builder/FindGlobals.cmake
++++ onevpl-intel-gpu-24.3.4/builder/FindGlobals.cmake
+@@ -247,7 +247,6 @@ target_compile_definitions(mfx_common_pr
+   INTERFACE
+     ${API_FLAGS}
+     ${WARNING_FLAGS}
+-    MFX_BUILD_INFO=\"${BUILD_INFO}\"
+     MFX_API_VERSION=\"${API_VER_MODIF}\"
+     MFX_GIT_COMMIT=\"${git_commit}\"
+     MEDIA_VERSION_STR=\"${MEDIA_VERSION_STR}\"
--- a/debian/patches/series     2025-02-18 11:17:28.157549783 +0000
--- b/debian/patches/series     2025-02-18 11:36:26.514952356 +0000
@@ -1 +1,2 @@
 #placeholder
+reproducible-build.patch

Reply via email to