Accepting request 900649 from home:Vogtinator:branches:KDE:Frameworks5
- Add patches to enable the PCI module on ARM: * 0001-Handle-libpci-errors-gracefully.patch * 0002-Enable-the-PCI-module-everywhere.patch OBS-URL: https://build.opensuse.org/request/show/900649 OBS-URL: https://build.opensuse.org/package/show/KDE:Frameworks5/kinfocenter5?expand=0&rev=322
This commit is contained in:
parent
7d87c4ce03
commit
944a54ae4b
67
0001-Handle-libpci-errors-gracefully.patch
Normal file
67
0001-Handle-libpci-errors-gracefully.patch
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
From f497e7757d33cf363a75f7e723cb0d8f3a78b52f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Fabian Vogt <fabian@ritter-vogt.de>
|
||||||
|
Date: Thu, 17 Jun 2021 20:07:50 +0200
|
||||||
|
Subject: [PATCH 1/2] Handle libpci errors gracefully
|
||||||
|
|
||||||
|
libpci expects that the error callback does not return, but pci_warning
|
||||||
|
previously did. Throwing exceptions through C code without -fexceptions is not
|
||||||
|
safe, so resort to plain setjmp/longjmp.
|
||||||
|
|
||||||
|
Also format the message properly.
|
||||||
|
---
|
||||||
|
Modules/pci/kpci.cpp | 21 ++++++++++++++++-----
|
||||||
|
1 file changed, 16 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/Modules/pci/kpci.cpp b/Modules/pci/kpci.cpp
|
||||||
|
index 528252d..886cc8f 100644
|
||||||
|
--- a/Modules/pci/kpci.cpp
|
||||||
|
+++ b/Modules/pci/kpci.cpp
|
||||||
|
@@ -15,6 +15,7 @@
|
||||||
|
extern "C" {
|
||||||
|
#include <pci/pci.h>
|
||||||
|
}
|
||||||
|
+#include <csetjmp>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <sys/types.h> //getuid
|
||||||
|
#include <ctype.h> //isxdigit
|
||||||
|
@@ -698,12 +699,18 @@ static QTreeWidgetItem* addCaps(QTreeWidgetItem *parent, QTreeWidgetItem *after,
|
||||||
|
return after;
|
||||||
|
}//addCaps
|
||||||
|
|
||||||
|
-static void pci_warning(char *msg, ...)
|
||||||
|
+static jmp_buf pci_error_jmp_buf;
|
||||||
|
+
|
||||||
|
+// This callback must not return, but we don't want to call exit.
|
||||||
|
+// Exceptions across C code aren't safe, so the only option is longjmp.
|
||||||
|
+static void pci_error(char *msg, ...)
|
||||||
|
{
|
||||||
|
va_list args;
|
||||||
|
va_start(args, msg);
|
||||||
|
- qWarning(msg, args);
|
||||||
|
+ qWarning() << QString::vasprintf(msg, args);
|
||||||
|
va_end(args);
|
||||||
|
+
|
||||||
|
+ longjmp(pci_error_jmp_buf, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool GetInfo_PCIUtils(QTreeWidget* tree) {
|
||||||
|
@@ -721,9 +728,13 @@ bool GetInfo_PCIUtils(QTreeWidget* tree) {
|
||||||
|
if (PCIAccess==nullptr) {
|
||||||
|
return false;
|
||||||
|
}//if
|
||||||
|
- // Use warnings for errors, they are decidely not fatal for us!
|
||||||
|
- // https://bugs.kde.org/show_bug.cgi?id=382979
|
||||||
|
- PCIAccess->error = pci_warning;
|
||||||
|
+
|
||||||
|
+ if (setjmp(pci_error_jmp_buf)) {
|
||||||
|
+ // Got a fatal error. Cleanup might be unsafe, just return.
|
||||||
|
+ return false;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ PCIAccess->error = pci_error;
|
||||||
|
|
||||||
|
pci_init(PCIAccess);
|
||||||
|
pci_scan_bus(PCIAccess);
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
37
0002-Enable-the-PCI-module-everywhere.patch
Normal file
37
0002-Enable-the-PCI-module-everywhere.patch
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
From b3cffbad3503572e942ee41c168e245a651375cf Mon Sep 17 00:00:00 2001
|
||||||
|
From: Fabian Vogt <fabian@ritter-vogt.de>
|
||||||
|
Date: Thu, 17 Jun 2021 17:46:15 +0200
|
||||||
|
Subject: [PATCH 2/2] Enable the PCI module everywhere
|
||||||
|
|
||||||
|
Not sure why it's disabled on non-BSD ARM, it works fine here on Linux too.
|
||||||
|
---
|
||||||
|
Modules/CMakeLists.txt | 13 +------------
|
||||||
|
1 file changed, 1 insertion(+), 12 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/Modules/CMakeLists.txt b/Modules/CMakeLists.txt
|
||||||
|
index 020b430..859a00c 100644
|
||||||
|
--- a/Modules/CMakeLists.txt
|
||||||
|
+++ b/Modules/CMakeLists.txt
|
||||||
|
@@ -40,18 +40,7 @@ set_package_properties(PCIUTILS PROPERTIES DESCRIPTION "PciUtils is a library fo
|
||||||
|
PURPOSE "View PCI details in kinfocenter."
|
||||||
|
)
|
||||||
|
|
||||||
|
-# PCI module doesn't work on Linux arm64, nor on MacOS, but does on
|
||||||
|
-# FreeBSD arm64, so this is a bit of a tangle of what-is-supported.
|
||||||
|
-set(_want_pci ON)
|
||||||
|
-if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm" OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64")
|
||||||
|
- if (${CMAKE_SYSTEM} MATCHES "FreeBSD")
|
||||||
|
- message(STATUS "FreeBSD arm64 pci support enabled.")
|
||||||
|
- else()
|
||||||
|
- set(_want_pci OFF)
|
||||||
|
- endif()
|
||||||
|
-endif()
|
||||||
|
-
|
||||||
|
-if(_want_pci)
|
||||||
|
+if(PCIUTILS_FOUND)
|
||||||
|
add_subdirectory( pci )
|
||||||
|
endif()
|
||||||
|
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -1,3 +1,10 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Jun 17 15:47:38 UTC 2021 - Fabian Vogt <fabian@ritter-vogt.de>
|
||||||
|
|
||||||
|
- Add patches to enable the PCI module on ARM:
|
||||||
|
* 0001-Handle-libpci-errors-gracefully.patch
|
||||||
|
* 0002-Enable-the-PCI-module-everywhere.patch
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue Jun 15 15:33:05 UTC 2021 - Fabian Vogt <fabian@ritter-vogt.de>
|
Tue Jun 15 15:33:05 UTC 2021 - Fabian Vogt <fabian@ritter-vogt.de>
|
||||||
|
|
||||||
|
@ -40,6 +40,9 @@ Source2: plasma.keyring
|
|||||||
%endif
|
%endif
|
||||||
# PATCH-FIX-OPENSUSE plasma-session-name.patch
|
# PATCH-FIX-OPENSUSE plasma-session-name.patch
|
||||||
Patch0: plasma-session-name.patch
|
Patch0: plasma-session-name.patch
|
||||||
|
# PATCH-FIX-UPSTREAM
|
||||||
|
Patch1: 0001-Handle-libpci-errors-gracefully.patch
|
||||||
|
Patch2: 0002-Enable-the-PCI-module-everywhere.patch
|
||||||
BuildRequires: extra-cmake-modules >= 1.2.0
|
BuildRequires: extra-cmake-modules >= 1.2.0
|
||||||
BuildRequires: kf5-filesystem
|
BuildRequires: kf5-filesystem
|
||||||
BuildRequires: libraw1394-devel
|
BuildRequires: libraw1394-devel
|
||||||
@ -89,9 +92,9 @@ Requires: systemsettings5
|
|||||||
KDE Utility that provides information about a computer system.
|
KDE Utility that provides information about a computer system.
|
||||||
|
|
||||||
%lang_package
|
%lang_package
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q -n kinfocenter-%{version}
|
%autosetup -p1 -n kinfocenter-%{version}
|
||||||
%patch0 -p1
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
%cmake_kf5 -d build -- -DCMAKE_INSTALL_LOCALEDIR=%{_kf5_localedir}
|
%cmake_kf5 -d build -- -DCMAKE_INSTALL_LOCALEDIR=%{_kf5_localedir}
|
||||||
|
Loading…
Reference in New Issue
Block a user