From 5c905c4b656ec9e8f6fdc15512fb4891b7ce5d2e Mon Sep 17 00:00:00 2001 From: Jeremy Newton Date: Mon, 29 Sep 2025 18:52:51 -0400 Subject: [PATCH] Packaging - Drop libva-amdgpu for RHEL 9+, Ubuntu 24, and SLES (#656) * Drop libva-amdgpu for newer distros Due to bugs in mixing old and new libva installed, having both libva-amdgpu packages just causes bugs due to edge cases. It's easier to just use the inbox packages for RHEL9+, SLE, and UB24.04. RHEL 8 and UB22.04 still needs libva-amdgpu since libva is too old. I also noticed that SLE should be pulling in libva-drm2 as a runtime requirement, since rocdecode only uses the DRM interface. SWDEV-555510 SWDEV-557842 Signed-off-by: Jeremy Newton * rocDecode-setup.py - Fix ``` rocDecode-setup.py", line 246 else ^ SyntaxError: expected ':' ``` * rocDecode-setup.py - Fix ``` rocDecode-setup.py", line 246 else ^ SyntaxError: expected ':' ``` * rocDecode-setup.py - fix ``` E: Unable to locate package rocm-hip-runtime-devlibstdc++-12-dev E: Couldn't find any package by regex 'rocm-hip-runtime-devlibstdc++-12-dev' ``` --------- Signed-off-by: Jeremy Newton Co-authored-by: Kiriti Gowda [ROCm/rocdecode commit: d179c02e3674d1690c0b5ed417d05f48b0d941fa] --- projects/rocdecode/CMakeLists.txt | 15 +++--- projects/rocdecode/cmake/FindLibva.cmake | 4 +- projects/rocdecode/rocDecode-setup.py | 67 ++++++++++++++++++------ 3 files changed, 60 insertions(+), 26 deletions(-) diff --git a/projects/rocdecode/CMakeLists.txt b/projects/rocdecode/CMakeLists.txt index 7164d4ff2d..b63a087bec 100644 --- a/projects/rocdecode/CMakeLists.txt +++ b/projects/rocdecode/CMakeLists.txt @@ -304,10 +304,9 @@ if(HIP_FOUND AND Libva_FOUND AND Libdrm_amdgpu_FOUND) # Set the dependent packages # libva 2.16 (API 1.16) is needed to use mesa-amdgpu-va-drivers, libva-amdgpu # (AMD build of libva 2.16) should be used if distro's libva is too old - # Libva is 2.12 on Ubuntu 22.04 and 24.04, so we can always use libva-amdgpu - set(ROCDECODE_DEBIAN_RUNTIME_PACKAGE_LIST "rocm-hip-runtime, libva2-amdgpu, libva-amdgpu-drm2, libva-amdgpu-wayland2, libva-amdgpu-x11-2, mesa-amdgpu-va-drivers") - # Unfortunately RPM has a mix of versions; RHEL has "libva", SLE has "libva2" - set(ROCDECODE_RPM_RUNTIME_PACKAGE_LIST "rocm-hip-runtime, (libva >= 2.16.0 or libva2 >= 2.16.0 or libva-amdgpu), mesa-amdgpu-va-drivers") + set(ROCDECODE_DEBIAN_RUNTIME_PACKAGE_LIST "rocm-hip-runtime, libva-drm2 (>= 2.16.0) | libva-amdgpu-drm2, mesa-amdgpu-va-drivers") + # Unfortunately RPM has a mix of naming schemes; RHEL has "libva", SLE has "libva2-drm2" + set(ROCDECODE_RPM_RUNTIME_PACKAGE_LIST "rocm-hip-runtime, (libva >= 2.16.0 or libva-drm2 >= 2.16.0 or libva-amdgpu), mesa-amdgpu-va-drivers") # Add rocprofiler-register dependencies if(ROCDECODE_ENABLE_ROCPROFILER_REGISTER) set(ROCDECODE_DEBIAN_RUNTIME_PACKAGE_LIST "${ROCDECODE_DEBIAN_RUNTIME_PACKAGE_LIST}, rocprofiler-register") @@ -315,12 +314,12 @@ if(HIP_FOUND AND Libva_FOUND AND Libdrm_amdgpu_FOUND) endif() # Set the dev dependent packages - set(ROCDECODE_DEBIAN_DEV_PACKAGE_LIST "rocm-hip-runtime-dev, libva-amdgpu-dev, pkg-config, libavcodec-dev, libavformat-dev, libavutil-dev") + set(ROCDECODE_DEBIAN_DEV_PACKAGE_LIST "rocm-hip-runtime-dev, libva-dev (>= 2.16.0) | libva-amdgpu-dev, pkg-config, libavcodec-dev, libavformat-dev, libavutil-dev") if(UBUNTU_22_FOUND) set(ROCDECODE_DEBIAN_DEV_PACKAGE_LIST "${ROCDECODE_DEBIAN_DEV_PACKAGE_LIST}, libstdc++-12-dev") endif() # TBD - RPM packages need Fusion Packages - "libavcodec-devel, libavformat-devel, libavutil-devel" - set(ROCDECODE_RPM_DEV_PACKAGE_LIST "rocm-hip-runtime-devel, libva-amdgpu-devel, pkg-config") + set(ROCDECODE_RPM_DEV_PACKAGE_LIST "rocm-hip-runtime-devel, (libva-devel >= 2.16.0 or libva-amdgpu-devel), pkg-config") # '%{?dist}' breaks manual builds on debian systems due to empty Provides execute_process( @@ -434,9 +433,9 @@ else() message(FATAL_ERROR "-- ERROR!: HIP Not Found! - please install rocm-hip-runtime-dev!") endif() if(NOT Libva_FOUND) - message(FATAL_ERROR "-- ERROR!: libva Not Found - please install libva-amdgpu-dev/libva-amdgpu-devel!") + message(FATAL_ERROR "-- ERROR!: libva Not Found - please install libva-dev/libva-devel!") endif() if(NOT Libdrm_amdgpu_FOUND) - message(FATAL_ERROR "-- ERROR!: libdrm_amdgpu Not Found - please install libdrm-amdgpu-dev(DEBIAN)/libdrm-amdgpu-devel(RPM) package!") + message(FATAL_ERROR "-- ERROR!: libdrm_amdgpu Not Found - please install libdrm-dev(DEBIAN)/libdrm-devel(RPM) package!") endif() endif() diff --git a/projects/rocdecode/cmake/FindLibva.cmake b/projects/rocdecode/cmake/FindLibva.cmake index 9e1914d8a1..adcbb952a6 100644 --- a/projects/rocdecode/cmake/FindLibva.cmake +++ b/projects/rocdecode/cmake/FindLibva.cmake @@ -23,7 +23,7 @@ find_library(LIBVA_LIBRARY NAMES va HINTS /opt/amdgpu/lib/x86_64-linux-gnu /opt/amdgpu/lib64 /usr/lib/x86_64-linux-gnu /usr/lib64) find_library(LIBVA_DRM_LIBRARY NAMES va-drm HINTS /opt/amdgpu/lib/x86_64-linux-gnu /opt/amdgpu/lib64 /usr/lib/x86_64-linux-gnu /usr/lib64) -find_path(LIBVA_INCLUDE_DIR NAMES va/va.h PATHS /opt/amdgpu/include NO_DEFAULT_PATH) +find_path(LIBVA_INCLUDE_DIR NAMES va/va.h PATHS /opt/amdgpu/include /usr/include NO_DEFAULT_PATH) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(Libva DEFAULT_MSG LIBVA_INCLUDE_DIR LIBVA_LIBRARY) @@ -65,4 +65,4 @@ else() if(Libva_FIND_REQUIRED) message(FATAL_ERROR "{Red}FindLibva -- Libva NOT FOUND${ColourReset}") endif() -endif() \ No newline at end of file +endif() diff --git a/projects/rocdecode/rocDecode-setup.py b/projects/rocdecode/rocDecode-setup.py index b64430d78c..5cc3bedfe6 100644 --- a/projects/rocdecode/rocDecode-setup.py +++ b/projects/rocdecode/rocDecode-setup.py @@ -167,13 +167,20 @@ commonPackages = [ # Debian packages coreDebianPackages = [ - 'libva-amdgpu-dev', + 'libva-dev', 'rocm-hip-runtime-dev' ] coreDebianU22Packages = [ + 'libva-amdgpu-dev', + 'rocm-hip-runtime-dev', 'libstdc++-12-dev' ] runtimeDebianPackages = [ + 'libva-drm2', + 'mesa-amdgpu-va-drivers', + 'vainfo' +] +runtimeDebianU22Packages = [ 'libva2-amdgpu', 'libva-amdgpu-drm2', 'libva-amdgpu-wayland2', @@ -188,15 +195,37 @@ ffmpegDebianPackages = [ ] # RPM Packages -coreRPMPackages = [ - 'libva-amdgpu-devel', - 'rocm-hip-runtime-devel' -] -runtimeRPMPackages = [ - 'libva-amdgpu', - 'mesa-amdgpu-va-drivers', - 'libva-utils' -] +if "centos" in os_info_data or "redhat" in os_info_data: + if "VERSION_ID=7" in os_info_data or "VERSION_ID=8" in os_info_data: + coreRPMPackages = [ + 'libva-amdgpu-devel', + 'rocm-hip-runtime-devel' + ] + runtimeRPMPackages = [ + 'libva-amdgpu', + 'mesa-amdgpu-va-drivers', + 'libva-utils' + ] + else: + coreRPMPackages = [ + 'libva-devel', + 'rocm-hip-runtime-devel' + ] + runtimeRPMPackages = [ + 'libva', + 'mesa-amdgpu-va-drivers', + 'libva-utils' + ] +else: + coreRPMPackages = [ + 'libva-devel', + 'rocm-hip-runtime-devel' + ] + runtimeRPMPackages = [ + 'libva-drm2', + 'mesa-amdgpu-va-drivers', + 'libva-utils' + ] # update ERROR_CHECK(os.system('sudo '+linuxFlag+' '+linuxSystemInstall +' '+linuxSystemInstall_check+' '+osUpdate)) @@ -210,13 +239,14 @@ for i in range(len(commonPackages)): # rocDecode Core - Requirements ERROR_CHECK(os.system('sudo '+sudoValidateOption)) if "Ubuntu" in platfromInfo: - for i in range(len(coreDebianPackages)): - ERROR_CHECK(os.system('sudo '+linuxFlag+' '+linuxSystemInstall + - ' '+linuxSystemInstall_check+' install '+ coreDebianPackages[i])) if "VERSION_ID=22" in os_info_data: for i in range(len(coreDebianU22Packages)): ERROR_CHECK(os.system('sudo '+linuxFlag+' '+linuxSystemInstall + ' '+linuxSystemInstall_check+' install '+ coreDebianU22Packages[i])) + else: + for i in range(len(coreDebianPackages)): + ERROR_CHECK(os.system('sudo '+linuxFlag+' '+linuxSystemInstall + + ' '+linuxSystemInstall_check+' install '+ coreDebianPackages[i])) else: for i in range(len(coreRPMPackages)): ERROR_CHECK(os.system('sudo '+linuxFlag+' '+linuxSystemInstall + @@ -226,9 +256,14 @@ else: ERROR_CHECK(os.system('sudo '+sudoValidateOption)) if runtimeInstall == 'ON': if "Ubuntu" in platfromInfo: - for i in range(len(runtimeDebianPackages)): - ERROR_CHECK(os.system('sudo '+linuxFlag+' '+linuxSystemInstall + - ' '+linuxSystemInstall_check+' install '+ runtimeDebianPackages[i])) + if "VERSION_ID=22" in os_info_data: + for i in range(len(runtimeDebianU22Packages)): + ERROR_CHECK(os.system('sudo '+linuxFlag+' '+linuxSystemInstall + + ' '+linuxSystemInstall_check+' install '+ runtimeDebianU22Packages[i])) + else: + for i in range(len(runtimeDebianPackages)): + ERROR_CHECK(os.system('sudo '+linuxFlag+' '+linuxSystemInstall + + ' '+linuxSystemInstall_check+' install '+ runtimeDebianPackages[i])) else: for i in range(len(runtimeRPMPackages)): ERROR_CHECK(os.system('sudo '+linuxFlag+' '+linuxSystemInstall +