mihawk90 / obs-studio.spec

SPEC file for RPM packaging on Fedora (and - theoretically - centOS/RHEL)
9 stars 1 forks source link

Qt error 28.0.3 #5

Closed 3laws closed 2 years ago

3laws commented 2 years ago

Fedora 37, following error when launching your RPM:

QWidget: Must construct a QApplication before a QWidget

I can run OBS built from source, master, 28.0.2 28.0.3 and release in both portable and "native". Libs are installed. All dependencies installed. Man, I feel like every time I come here is for simple stuff, but oh welp...

mihawk90 commented 2 years ago

Huh.. weird. Are you compiling using Qt5 or Qt6? OBS' cmake autodetects which libs are installed and uses Qt6 if both are installed. The RPMs are built with Qt5: https://github.com/mihawk90/obs-studio.spec/blob/3d4cd5c41320c76d767579f8596c8ad0da4299c1/obs-studio.spec#L57-L68

That said, since this is a Qt error it must be finding the libs somewhere... so I'm guessing a version mismatch but I don't know how that would happen unless there was yet another Qt5 update on F37.

Is the RPM Fusion version working?

Wish I had an F37 install right about now so I could test this ;)

mihawk90 commented 2 years ago

OK so I just checked and at least Qt wasn't updated:

z% dnf info qt5-qtbase-devel --releasever=37                     
Last metadata expiration check: 0:01:15 ago on Thu 06 Oct 2022 19:14:21 CEST.
Available Packages
Name         : qt5-qtbase-devel
Version      : 5.15.6
Release      : 1.fc37
Architecture : i686
Size         : 3.7 M
Source       : qt5-qtbase-5.15.6-1.fc37.src.rpm
Repository   : fedora
Summary      : Development files for qt5-qtbase
URL          : http://qt-project.org/
License      : LGPLv2 with exceptions or GPLv3 with exceptions
Description  : Development files for qt5-qtbase.

Name         : qt5-qtbase-devel
Version      : 5.15.6
Release      : 1.fc37
Architecture : x86_64
Size         : 3.5 M
Source       : qt5-qtbase-5.15.6-1.fc37.src.rpm
Repository   : fedora
Summary      : Development files for qt5-qtbase
URL          : http://qt-project.org/
License      : LGPLv2 with exceptions or GPLv3 with exceptions
Description  : Development files for qt5-qtbase.

z% cat Development/obs-studio.spec/f_upload/37/installed_pkgs.log | grep qtbase
qt5-qtbase-common-5.15.6-1.fc37.noarch 1663751656 76 d2ed413fc3782dc25167f7ec30cb80ce installed
qt5-qtbase-5.15.6-1.fc37.x86_64 1663751675 10517851 035ad2b5c822b9c1a29871273932d1e8 installed
qt5-qtbase-gui-5.15.6-1.fc37.x86_64 1663751675 21071657 869d9e60daa6fb9d3a6d8e17dc243846 installed
qt5-qtbase-devel-5.15.6-1.fc37.x86_64 1663751675 20023969 e9a2f318b2c2f29febe599c75869211c installed
qt5-qtbase-private-devel-5.15.6-1.fc37.x86_64 1663751675 7202582 3441e727efc13363e5cb5fb3ee082642 installed

So yeah not sure what's causing this.

3laws commented 2 years ago

I'm building with Qt6. Although I wasn't being clear enough. I am building from OBS' git, not this specific spec.

I said that as proof that my dependencies are correct for both building AND installing your RPM (which is a little redundant but I feel like I needed a point of reference).

I did not pasted the full logs tho, my bad:

your RPM ``` QSocketNotifier: Can only be used with threads started with QThread debug: Found portal inhibitor Attempted path: share/obs/obs-studio/locale/en-US.ini Attempted path: /usr/share/obs/obs-studio/locale/en-US.ini Attempted path: share/obs/obs-studio/locale.ini Attempted path: /usr/share/obs/obs-studio/locale.ini Attempted path: share/obs/obs-studio/themes/Yami.qss Attempted path: /usr/share/obs/obs-studio/themes/Yami.qss info: Platform: Wayland info: CPU Name: AMD Ryzen 5 5600G with Radeon Graphics info: CPU Speed: 4198.699MHz info: Physical Cores: 6, Logical Cores: 12 info: Physical Memory: 15284MB Total, 1766MB Free info: Kernel Version: Linux 6.0.0-54.vanilla.1.fc37.x86_64 info: Distribution: "Fedora Linux" 37 info: Session Type: wayland info: Qt Version: 5.15.6 (runtime), 5.15.6 (compiled) info: Portable mode: false Attempted path: share/obs/obs-studio/themes/Dark/no_sources.svg Attempted path: /usr/share/obs/obs-studio/themes/Dark/no_sources.svg QMetaObject::connectSlotsByName: No matching signal for on_tbar_position_valueChanged(int) QMetaObject::connectSlotsByName: No matching signal for on_actionShowTransitionProperties_triggered() QMetaObject::connectSlotsByName: No matching signal for on_actionHideTransitionProperties_triggered() info: OBS 28.0.3 (linux) info: --------------------------------- info: --------------------------------- info: audio settings reset: samples per sec: 44100 speakers: 2 max buffering: 1044 milliseconds buffering type: dynamically increasing info: --------------------------------- info: Initializing OpenGL... info: Using EGL/Wayland info: Initialized EGL 1.5 info: Loading up OpenGL on adapter AMD RENOIR (renoir, LLVM 15.0.0, DRM 3.48, 6.0.0-54.vanilla.1.fc37.x86_64) info: OpenGL loaded successfully, version 4.6 (Core Profile) Mesa 22.3.0-devel, shading language 4.60 info: --------------------------------- info: video settings reset: base resolution: 1800x900 output resolution: 1800x900 downscale filter: Bilinear fps: 30000/1001 format: NV12 YUV mode: sRGB/Full info: NV12 texture support not available info: P010 texture support not available info: Audio monitoring device: name: Default id: default info: --------------------------------- warning: No AJA devices found, skipping loading AJA UI plugin warning: Failed to initialize module 'aja-output-ui.so' warning: No AJA devices found, skipping loading AJA plugin warning: Failed to initialize module 'aja.so' warning: Failed to load 'en-US' text for module: 'decklink-captions.so' warning: Failed to load 'en-US' text for module: 'decklink-output-ui.so' libDeckLinkAPI.so: cannot open shared object file: No such file or directory warning: A DeckLink iterator could not be created. The DeckLink drivers may not be installed warning: Failed to initialize module 'decklink.so' info: [pipewire] Available captures: info: [pipewire] - Desktop capture info: [pipewire] - Window capture warning: v4l2loopback not installed, virtual camera disabled info: [linux-vkcapture] plugin loaded successfully (version 1.2.0) info: [obs-browser]: Version 2.18.5 info: [obs-browser]: CEF Version 103.0.5060.134 (runtime), 103.0.0-5060-shared-textures_143.2591+g4204d54+chromium-103.0.5060.134 (compiled) info: FFMPEG VAAPI supported info: obs-gstreamer build: b6b70cb, gst-runtime: 1.20.3 info: [obs-websocket] [obs_module_load] you can haz websockets (Version: 5.0.1 | RPC Version: 1) info: [obs-websocket] [obs_module_load] Qt version (compile-time): 5.15.6 | Qt version (run-time): 5.15.6 info: [obs-websocket] [obs_module_load] Linked ASIO Version: 101201 info: [obs-websocket] [obs_module_load] Module loaded. info: [vlc-video]: VLC 3.0.18-rc2 Vetinari found, VLC video source enabled info: [input-overlay] [input-overlay] Loading v5.0.0 build time 2022.09.05 16:07 info: [input-overlay] Using '/dev/input/js*' for gamepad discovery info: [input-overlay::libgamepad] No Devices detected. Waiting for connection... info: [input-overlay] gamepad hook started info: [input-overlay::libgamepad] Hook thread started QWidget: Must construct a QApplication before a QWidget ```

And this is how it looks on my build

master branch ``` debug: Found portal inhibitor Attempted path: ../../data/obs-studio/locale/en-US.ini Attempted path: ../../data/obs-studio/locale.ini Attempted path: ../../data/obs-studio/themes/Yami.qss info: Using EGL/X11 info: CPU Name: AMD Ryzen 5 5600G with Radeon Graphics info: CPU Speed: 4807.000MHz info: Physical Cores: 6, Logical Cores: 12 info: Physical Memory: 15284MB Total, 1788MB Free info: Kernel Version: Linux 6.0.0-54.vanilla.1.fc37.x86_64 info: Distribution: "Fedora Linux" 37 info: Session Type: wayland info: Window System: X11.0, Vendor: The X.Org Foundation, Version: 1.22.1 info: Qt Version: 6.3.1 (runtime), 6.3.1 (compiled) info: Portable mode: false Attempted path: ../../data/obs-studio/themes/Dark/no_sources.svg qt.core.qmetaobject.connectslotsbyname: QMetaObject::connectSlotsByName: No matching signal for on_tbar_position_valueChanged(int) qt.core.qmetaobject.connectslotsbyname: QMetaObject::connectSlotsByName: No matching signal for on_actionShowTransitionProperties_triggered() qt.core.qmetaobject.connectslotsbyname: QMetaObject::connectSlotsByName: No matching signal for on_actionHideTransitionProperties_triggered() info: OBS 28.0.1-90-g2a76ffaf0 (linux) info: --------------------------------- info: --------------------------------- info: audio settings reset: samples per sec: 44100 speakers: 2 max buffering: 1044 milliseconds buffering type: dynamically increasing info: --------------------------------- info: Initializing OpenGL... info: Loading up OpenGL on adapter AMD RENOIR (renoir, LLVM 15.0.0, DRM 3.48, 6.0.0-54.vanilla.1.fc37.x86_64) info: OpenGL loaded successfully, version 4.6 (Core Profile) Mesa 22.3.0-devel, shading language 4.60 info: --------------------------------- info: video settings reset: base resolution: 1800x900 output resolution: 1800x900 downscale filter: Bilinear fps: 30000/1001 format: NV12 YUV mode: sRGB/Full info: NV12 texture support not available info: P010 texture support not available info: Audio monitoring device: name: Default id: default info: --------------------------------- warning: Failed to load 'en-US' text for module: 'decklink-captions.so' warning: Failed to load 'en-US' text for module: 'decklink-output-ui.so' libDeckLinkAPI.so: cannot open shared object file: No such file or directory warning: A DeckLink iterator could not be created. The DeckLink drivers may not be installed warning: Failed to initialize module 'decklink.so' info: [pipewire] Available captures: info: [pipewire] - Desktop capture info: [pipewire] - Window capture warning: v4l2loopback not installed, virtual camera disabled warning: Failed to load 'en-US' text for module: 'linux-vkcapture.so' info: [linux-vkcapture] plugin loaded successfully (version 1.2.0) info: [obs-browser]: Version 2.18.5 info: [obs-browser]: CEF Version 95.0.4638.69 (runtime), 95.0.0-MediaHandler.2463+g3b3ac84+chromium-95.0.4638.69 (compiled) info: FFMPEG VAAPI supported info: obs-gstreamer build: ecd6d52, gst-runtime: 1.20.3 info: [obs-websocket] [obs_module_load] you can haz websockets (Version: 5.0.1 | RPC Version: 1) info: [obs-websocket] [obs_module_load] Qt version (compile-time): 6.3.1 | Qt version (run-time): 6.3.1 ``` Qt 6.3.1 keeps loading successfully from here on

Uninstalling, reinstalling the RPM does not work.

X11 & Wayland ("native" and xcb) is the same story.

mihawk90 commented 2 years ago

Looking at your logs it seems you are running a Qt6 plugin on a Qt5 OBS (thanks tytan652 on Discord) which is why Qt is is just noping out.

https://github.com/univrsal/input-overlay/releases/tag/v5.0.0

This is only for Qt6 unfortunately (from what I can tell anyway).

RPM Fusion (and by extension my build) are Qt5. Why they do this I don't know, I assume because they also ship obs-ndi in RPM Fusion and obs-ndi is not yet Qt6. This is a weird transition time where not all plugins are updated for Qt6 yet so you can run into these mismatches.

If you launch without plugins OBS will probably load just fine.

I was thinking about doing a qt6 build too but I haven't gotten around to it yet.

3laws commented 2 years ago

I did not know about NDI coming by default on Fusion's end, big oof tho obs-ndi has remarkably one of the slowest developments of the "big" plugins.

Looks like I will have to keep building my own for a while then. Appreciate the insight. Closing.