Closed phkahler closed 1 year ago
Update the wiki if the instructions are out of date. We dont use bugs for the wiki.
Fedora build directions were created and are maintained by the community. If there is anything missing or packages have changed, please feel free to just edit the page.
Update the wiki if the instructions are out of date. We dont use bugs for the wiki.
I can't. I don't know what the issue is, just that the packages don't seem to exist.
@phkahler
Can you try replacing them with:
libavcodec-free-devel libavdevice-free-devel
Getting closer. After a dnf update:
[phkahler@fedora build]$ sudo dnf install libavcodec-free-devel libavdevice-free-devel
Last metadata expiration check: 2:01:35 ago on Wed 21 Dec 2022 08:21:18 AM EST.
Error:
Problem 1: package libavcodec-free-devel-5.1.2-1.fc37.i686 requires libavcodec-free(x86-32) = 5.1.2-1.fc37, but none of the providers can be installed
- conflicting requests
- libavcodec-free-5.1.2-1.fc37.i686 has inferior architecture
- package libavcodec-free-devel-5.1.2-1.fc37.x86_64 requires libavcodec-free(x86-64) = 5.1.2-1.fc37, but none of the providers can be installed
- problem with installed package ffmpeg-libs-5.1.2-3.fc37.x86_64
- package ffmpeg-libs-5.1.2-3.fc37.x86_64 conflicts with libavcodec-free provided by libavcodec-free-5.1.2-1.fc37.x86_64
Problem 2: package libavdevice-free-devel-5.1.2-1.fc37.i686 requires libavdevice-free(x86-32) = 5.1.2-1.fc37, but none of the providers can be installed
- conflicting requests
- libavdevice-free-5.1.2-1.fc37.i686 has inferior architecture
- package libavdevice-free-devel-5.1.2-1.fc37.x86_64 requires libavdevice-free(x86-64) = 5.1.2-1.fc37, but none of the providers can be installed
- problem with installed package libavdevice-5.1.2-3.fc37.x86_64
- package libavdevice-5.1.2-3.fc37.x86_64 conflicts with libavdevice-free provided by libavdevice-free-5.1.2-1.fc37.x86_64
(try to add '--allowerasing' to command line to replace conflicting packages or '--skip-broken' to skip uninstallable packages)
@evanjarrett So I used that option --allowerasing and dnf completed. Then on to the CMAKE step in the build process I get:
[phkahler@fedora build]$ cmake -DENABLE_BROWSER=OFF -DENABLE_AJA=OFF -DENABLE_NEW_MPEGTS_OUTPUT=OFF ..
CMake Error at cmake/Modules/VersionConfig.cmake:33 (list):
list index: 1 out of range (-1, 0)
Call Stack (most recent call first):
CMakeLists.txt:4 (include)
-- OBS: Application Version: 626dbd3c3 - Build Number: 3
CMake Warning at CMakeLists.txt:15 (project):
VERSION keyword not followed by a value or was followed by a value that
expanded to nothing.
-- Found FFmpeg: /usr/lib64/../lib64/libavcodec.so (found version "#define LIBAVCODEC_VERSION_MINOR 37;#define LIBAVCODEC_VERSION_MICRO 100.37.100") found components: avcodec avdevice avutil avformat
CMake Error at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
Could NOT find CURL (missing: CURL_LIBRARY CURL_INCLUDE_DIR)
Call Stack (most recent call first):
/usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:600 (_FPHSA_FAILURE_MESSAGE)
/usr/share/cmake/Modules/FindCURL.cmake:182 (find_package_handle_standard_args)
deps/file-updater/CMakeLists.txt:3 (find_package)
-- Configuring incomplete, errors occurred!
See also "/home/phkahler/projects/obs-studio/build/CMakeFiles/CMakeOutput.log".
Progress. Several of the dependencies were not installed for some reason. Used CMake errors to install several packages and now I get:
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY - Success
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR - Success
CMake Error at /usr/share/cmake/Modules/WriteBasicConfigVersionFile.cmake:43 (message):
No VERSION specified for WRITE_BASIC_CONFIG_VERSION_FILE()
Call Stack (most recent call first):
/usr/share/cmake/Modules/CMakePackageConfigHelpers.cmake:237 (write_basic_config_version_file)
cmake/Modules/ObsHelpers.cmake:280 (write_basic_package_version_file)
cmake/Modules/ObsHelpers_Linux.cmake:16 (_export_target)
libobs/CMakeLists.txt:490 (export_target)
-- Configuring incomplete, errors occurred!
It appears you installed the 32bit versions (.i686) of libavcodec-free-devel and libavdevice-free-devel. CMAKE wont use those, which is why it appears that they werent actually installed.
You can use the fqdn of the package like dnf install libavdevice-free-devel-5.1.2-1.fc37.x86_64
=======================================
The other change I needed to make was installing ffmpeg-free-devel
vlc-devel and x264-devel come from the rpmfusion-free repo. so the wiki should be updated to make sure that is added first.
sudo dnf install \
https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
then the full install command i ran with the -free- changes
sudo dnf install \
alsa-lib-devel \
cmake \
ffmpeg-free-devel \
fontconfig-devel \
freetype-devel \
gcc \
gcc-c++ \
gcc-objc \
git \
glib2-devel \
libavcodec-free-devel \
libavdevice-free-devel \
libcurl-devel \
libdrm-devel \
libglvnd-devel \
libva-devel \
libv4l-devel \
libX11-devel \
libXcomposite-devel \
libXdamage \
libXinerama-devel \
libxkbcommon-devel \
luajit-devel \
make \
mbedtls-devel \
pciutils-devel \
pipewire-devel \
pulseaudio-libs-devel \
python3-devel \
qt6-qtbase-devel \
qt6-qtbase-private-devel \
qt6-qtsvg-devel \
qt6-qtwayland-devel \
speexdsp-devel \
swig \
systemd-devel \
vlc-devel \
wayland-devel \
x264-devel
Here is report on fedora 37:
==============================================================================================================
Package Arch Version Repository Size
==============================================================================================================
Installing:
alsa-lib-devel x86_64 1.2.8-2.fc37 updates 889 k
cmake x86_64 3.25.1-1.fc37 updates 6.8 M
ffmpeg-free-devel x86_64 5.1.2-1.fc37 fedora 139 k
fontconfig-devel x86_64 2.14.1-2.fc37 updates 164 k
freetype-devel x86_64 2.12.1-3.fc37 fedora 895 k
gcc-c++ x86_64 12.2.1-4.fc37 updates 13 M
gcc-objc x86_64 12.2.1-4.fc37 updates 10 M
glib2-devel x86_64 2.74.1-2.fc37 fedora 574 k
libXcomposite-devel x86_64 0.4.5-8.fc37 fedora 15 k
libXinerama-devel x86_64 1.1.4-11.fc37 fedora 13 k
libavcodec-free-devel x86_64 5.1.2-1.fc37 fedora 75 k
libavdevice-free-devel x86_64 5.1.2-1.fc37 fedora 20 k
libcurl-devel x86_64 7.85.0-4.fc37 updates 977 k
libdrm-devel x86_64 2.4.114-1.fc37 updates 173 k
libglvnd-devel x86_64 1:1.5.0-1.fc37 fedora 161 k
libv4l-devel x86_64 1.22.1-4.fc37 updates 21 k
libva-devel x86_64 2.16.0-1.fc37 updates 126 k
libxkbcommon-devel x86_64 1.4.1-2.fc37 fedora 65 k
luajit-devel x86_64 2.1.0-0.25beta3.fc37 fedora 82 k
mbedtls-devel x86_64 2.28.1-1.fc37 updates 316 k
pciutils-devel x86_64 3.9.0-2.fc37 updates 34 k
pipewire-devel x86_64 0.3.63-1.fc37 updates 179 k
pulseaudio-libs-devel x86_64 16.1-1.fc37 fedora 456 k
python3-devel x86_64 3.11.0-1.fc37 fedora 269 k
qt6-qtbase-devel x86_64 6.4.1-1.fc37 updates 3.6 M
qt6-qtbase-private-devel x86_64 6.4.1-1.fc37 updates 998 k
qt6-qtsvg-devel x86_64 6.4.1-1.fc37 updates 52 k
qt6-qtwayland-devel x86_64 6.4.1-1.fc37 updates 411 k
speexdsp-devel x86_64 1.2.1-2.fc37 fedora 17 k
swig x86_64 4.0.2-18.fc37 fedora 1.6 M
systemd-devel x86_64 251.9-587.fc37 updates 578 k
vlc-devel x86_64 1:3.0.18-2.fc37 rpmfusion-free 206 k
wayland-devel x86_64 1.21.0-1.fc37 fedora 147 k
x264-devel x86_64 0.164-3.20220602gitbaee400f.fc37 rpmfusion-free 33 k
Outside of that, cmake instructions work correctly for me.
@evanjarrett See my later comment above. I got all the packages installed, and now get that strange CMake error further down.
Edit: but yes, your new list of packages does not produce any errors with dnf so that should be updated on the wiki.
its acting like it can't find the obs version number which should be printed in the first few lines of output
[evan@fedora build]$ cmake -DENABLE_BROWSER=OFF -DENABLE_AJA=OFF -DENABLE_NEW_MPEGTS_OUTPUT=OFF ..
CMake Warning (dev) at cmake/Modules/VersionConfig.cmake:94 (message):
******************************************************************************
+ OBS-Studio - Beta detected, OBS_VERSION is now: 29.0.0-beta3
******************************************************************************
Call Stack (most recent call first):
CMakeLists.txt:4 (include)
This warning is for project developers. Use -Wno-dev to suppress it.
-- OBS: Application Version: 29.0.0-beta3 - Build Number: 1
Try deleting the entire build/*
directory and run it again again. cmake will cache things it think it doesn't have to rebuild even if libraries change.
If that doesn't work, please provide the entire output of your cmake command. Perhaps I can find something in there that will help debug.
=========
As for the original issue of the package names, it appears I have found the appropriate list of installs. The reason I didn't catch them initially was I was using packages from negativo17
which doesn't require the -free-
tags on the package names.
The first lines of output are this:
[phkahler@fedora build]$ cmake -DENABLE_BROWSER=OFF -DENABLE_AJA=OFF -DENABLE_NEW_MPEGTS_OUTPUT=OFF ..
CMake Error at cmake/Modules/VersionConfig.cmake:33 (list):
list index: 1 out of range (-1, 0)
Call Stack (most recent call first):
CMakeLists.txt:4 (include)
-- OBS: Application Version: 626dbd3c3 - Build Number: 26
CMake Warning at CMakeLists.txt:15 (project):
VERSION keyword not followed by a value or was followed by a value that
expanded to nothing.
-- The C compiler identification is GNU 12.2.1
-- The CXX compiler identification is GNU 12.2.1
I had not noticed this before. That's after deleting the build folder and recreating it. Doesn't that number increment each build? Where is it preserved? It this relevant?
Edit: It's stored in cmake/.CMakeBuildNumber
Complete output after deleting the build number file and making a fresh build folder:
[phkahler@fedora build]$ cmake -DENABLE_BROWSER=OFF -DENABLE_AJA=OFF -DENABLE_NEW_MPEGTS_OUTPUT=OFF ..
CMake Error at cmake/Modules/VersionConfig.cmake:33 (list):
list index: 1 out of range (-1, 0)
Call Stack (most recent call first):
CMakeLists.txt:4 (include)
-- OBS: Application Version: 626dbd3c3 - Build Number: 1
CMake Warning at CMakeLists.txt:15 (project):
VERSION keyword not followed by a value or was followed by a value that
expanded to nothing.
-- The C compiler identification is GNU 12.2.1
-- The CXX compiler identification is GNU 12.2.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found OpenGL: /usr/lib64/libOpenGL.so
-- Found FFmpeg: /usr/lib64/../lib64/libavcodec.so (found version "#define LIBAVCODEC_VERSION_MINOR 37;#define LIBAVCODEC_VERSION_MICRO 100.37.100") found components: avcodec avdevice avutil avformat
-- Found CURL: /usr/lib64/libcurl.so (found version "7.85.0")
-- Found Luajit: /usr/bin/../lib64/libluajit-5.1.so
-- Found SWIG: /usr/bin/swig (found suitable version "4.0.2", minimum required is "3")
-- OBS: ENABLED obslua
-- Found Luajit: /usr/lib64/libluajit-5.1.so
-- OBS: obs-scripting -> Luajit found.
-- Found Python: /usr/bin/python3.11 (found version "3.11.0") found components: Interpreter Development Development.Module Development.Embed
-- OBS: ENABLED obspython
-- OBS: obs-scripting -> Python 3.11.0 found.
-- OBS: Jansson >=2.5 not found, building bundled version.
C compiler: GNU
-- Looking for include file endian.h
-- Looking for include file endian.h - found
-- Looking for include file fcntl.h
-- Looking for include file fcntl.h - found
-- Looking for include file sched.h
-- Looking for include file sched.h - found
-- Looking for include file unistd.h
-- Looking for include file unistd.h - found
-- Looking for include file sys/param.h
-- Looking for include file sys/param.h - found
-- Looking for include file sys/stat.h
-- Looking for include file sys/stat.h - found
-- Looking for include file sys/time.h
-- Looking for include file sys/time.h - found
-- Looking for include file sys/time.h
-- Looking for include file sys/time.h - found
-- Looking for close
-- Looking for close - found
-- Looking for getpid
-- Looking for getpid - found
-- Looking for gettimeofday
-- Looking for gettimeofday - found
-- Looking for open
-- Looking for open - found
-- Looking for read
-- Looking for read - found
-- Looking for sched_yield
-- Looking for sched_yield - found
-- Looking for include file stdint.h
-- Looking for include file stdint.h - found
-- Looking for stddef.h
-- Looking for stddef.h - found
-- Check size of __int64
-- Check size of __int64 - failed
-- Check size of int64_t
-- Check size of int64_t - done
-- Check size of long long
-- Check size of long long - done
-- Check size of int32_t
-- Check size of int32_t - done
-- Check size of __int32
-- Check size of __int32 - failed
-- Check size of long
-- Check size of long - done
-- Check size of int
-- Check size of int - done
-- Check size of unsigned long
-- Check size of unsigned long - done
-- Check size of unsigned int
-- Check size of unsigned int - done
-- Check size of unsigned short
-- Check size of unsigned short - done
-- Check size of uint32_t
-- Check size of uint32_t - done
-- Check size of __uint32
-- Check size of __uint32 - failed
-- Check size of uint16_t
-- Check size of uint16_t - done
-- Check size of __uint16
-- Check size of __uint16 - failed
-- Check size of uint8_t
-- Check size of uint8_t - done
-- Check size of __uint8
-- Check size of __uint8 - failed
-- Check size of ssize_t
-- Check size of ssize_t - done
-- Check size of SSIZE_T
-- Check size of SSIZE_T - failed
-- Looking for strtoll
-- Looking for strtoll - found
-- Looking for strtoq
-- Looking for strtoq - found
-- Looking for _strtoi64
-- Looking for _strtoi64 - not found
-- Looking for include file locale.h
-- Looking for include file locale.h - found
-- Looking for localeconv
-- Looking for localeconv - found
-- Looking for setlocale
-- Looking for setlocale - found
-- Performing Test HAVE_INLINE
-- Performing Test HAVE_INLINE - Success
-- Performing Test HAVE___INLINE
-- Performing Test HAVE___INLINE - Success
-- Performing Test HAVE___INLINE__
-- Performing Test HAVE___INLINE__ - Success
-- Performing Test HAVE_SYNC_BUILTINS
-- Performing Test HAVE_SYNC_BUILTINS - Success
-- Performing Test HAVE_ATOMIC_BUILTINS
-- Performing Test HAVE_ATOMIC_BUILTINS - Success
-- Found X11: /usr/include
-- Looking for XOpenDisplay in /usr/lib64/libX11.so;/usr/lib64/libXext.so
-- Looking for XOpenDisplay in /usr/lib64/libX11.so;/usr/lib64/libXext.so - found
-- Looking for gethostbyname
-- Looking for gethostbyname - found
-- Looking for connect
-- Looking for connect - found
-- Looking for remove
-- Looking for remove - found
-- Looking for shmat
-- Looking for shmat - found
-- Found PkgConfig: /usr/bin/pkg-config (found version "1.8.0")
-- XCB[XCB]: Found component XCB
-- Found XCB: /usr/lib64/libxcb.so found components: XCB
-- Found X11_XCB: /usr/lib64/libX11-xcb.so
-- Found OpenGL: /usr/lib64/libOpenGL.so found components: EGL
-- Found Wayland: /usr/lib64/libwayland-client.so;/usr/lib64/libwayland-server.so;/usr/lib64/libwayland-egl.so;/usr/lib64/libwayland-cursor.so
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE
-- Found FFmpeg: /usr/lib64/libavformat.so (found version "#define LIBAVFORMAT_VERSION_MINOR 27;#define LIBAVFORMAT_VERSION_MICRO 100.27.100") found components: avformat avutil swscale swresample avcodec
-- Found ZLIB: /usr/lib64/libz.so (found version "1.2.12")
-- Performing Test HAVE_STDATOMIC
-- Performing Test HAVE_STDATOMIC - Success
-- OBS: Qt version: 6
-- OBS: -> PulseAudio found - audio monitoring enabled
-- Checking for modules 'gio-2.0;gio-unix-2.0'
-- Found gio-2.0, version 2.74.1
-- Found gio-unix-2.0, version 2.74.1
-- Found Gio: /usr/lib64/libgio-2.0.so
-- Found Wayland: /usr/lib64/libwayland-client.so;/usr/lib64/libwayland-server.so;/usr/lib64/libwayland-egl.so;/usr/lib64/libwayland-cursor.so found components: Client
-- Found Xkbcommon: /usr/lib64/libxkbcommon.so
-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY - Success
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY - Success
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR - Success
CMake Error at /usr/share/cmake/Modules/WriteBasicConfigVersionFile.cmake:43 (message):
No VERSION specified for WRITE_BASIC_CONFIG_VERSION_FILE()
Call Stack (most recent call first):
/usr/share/cmake/Modules/CMakePackageConfigHelpers.cmake:237 (write_basic_config_version_file)
cmake/Modules/ObsHelpers.cmake:280 (write_basic_package_version_file)
cmake/Modules/ObsHelpers_Linux.cmake:16 (_export_target)
libobs/CMakeLists.txt:490 (export_target)
-- Configuring incomplete, errors occurred!
See also "/home/phkahler/projects/obs-studio/build/CMakeFiles/CMakeOutput.log".
See also "/home/phkahler/projects/obs-studio/build/CMakeFiles/CMakeError.log".
Is it relevant that I cloned the repo from my own fork on github?
yes. the version is based on git tags, your clone doesn't have any tags.
You should recursive clone from the main repo
git clone --recursive https://github.com/obsproject/obs-studio.git
you can add a new remote source to map it to your repo
git remote add <name> <url>
I would prefer that troubleshooting for this take place outside of our issues page. Please use our forums or discord for further communication on this, and if there is an issue with the Fedora build directions, we welcome updates to fix it.
Operating System Info
Other
Other OS
Fedora 36 and 37
OBS Studio Version
Other
OBS Studio Version (Other)
Master
OBS Studio Log URL
N/A
OBS Studio Crash Log URL
No response
Expected Behavior
Following the build on Linux instructions should work
Current Behavior
When installing packages, everything works except I get:
Error: Unable to find a match: libavcodec-devel libavdevice-devel
It's like these two packages do not exist. Has something changed since the instructions were written?
Steps to Reproduce
Anything else we should know?
No response