mirror of
https://github.com/materusPL/Nixerus.git
synced 2026-06-26 18:36:42 +00:00
Copy obs and ffmpeg from nixpgks instead of override
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
From 0de0a90f8fe5e1e48fa4ec7aa7c825ef88770f9d Mon Sep 17 00:00:00 2001
|
||||
From: Ryan Foster <RytoEX@gmail.com>
|
||||
Date: Mon, 9 Sep 2019 23:55:02 -0400
|
||||
Subject: [PATCH] Enable file access and universal access for file URLs
|
||||
|
||||
When loading a local file, instead of disabling CEF's web security,
|
||||
enable file access and universal access for file URLs. This should allow
|
||||
local files to make CORS requests without completely disabling CEF's
|
||||
security model.
|
||||
---
|
||||
obs-browser-source.cpp | 9 ++++++---
|
||||
1 file changed, 6 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/obs-browser-source.cpp b/obs-browser-source.cpp
|
||||
index ab1181e..c775283 100644
|
||||
--- a/plugins/obs-browser/obs-browser-source.cpp
|
||||
+++ b/plugins/obs-browser/obs-browser-source.cpp
|
||||
@@ -179,9 +179,12 @@ bool BrowserSource::CreateBrowser()
|
||||
|
||||
#if ENABLE_LOCAL_FILE_URL_SCHEME
|
||||
if (is_local) {
|
||||
- /* Disable web security for file:// URLs to allow
|
||||
- * local content access to remote APIs */
|
||||
- cefBrowserSettings.web_security = STATE_DISABLED;
|
||||
+ /* Enable file access and universal access from file://
|
||||
+ * URLs to allow local content access to remote APIs */
|
||||
+ cefBrowserSettings.file_access_from_file_urls =
|
||||
+ STATE_ENABLED;
|
||||
+ cefBrowserSettings.universal_access_from_file_urls =
|
||||
+ STATE_ENABLED;
|
||||
}
|
||||
#endif
|
||||
|
||||
--
|
||||
2.31.1
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
diff --git a/libobs/CMakeLists.txt b/libobs/CMakeLists.txt
|
||||
index 790583cd5..763cf3548 100644
|
||||
--- a/libobs/CMakeLists.txt
|
||||
+++ b/libobs/CMakeLists.txt
|
||||
@@ -455,6 +455,8 @@ elseif(OS_POSIX)
|
||||
libobs PROPERTIES BUILD_RPATH "$<TARGET_FILE_DIR:OBS::libobs-opengl>")
|
||||
endif()
|
||||
|
||||
+string(REGEX REPLACE "^${OBS_INSTALL_PREFIX}" "" OBS_PLUGIN_DESTINATION_RELATIVE ${OBS_PLUGIN_DESTINATION})
|
||||
+
|
||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/obsconfig.h.in
|
||||
${CMAKE_BINARY_DIR}/config/obsconfig.h)
|
||||
|
||||
diff --git a/libobs/obsconfig.h.in b/libobs/obsconfig.h.in
|
||||
index 4a664285a..5cff2ca53 100644
|
||||
--- a/libobs/obsconfig.h.in
|
||||
+++ b/libobs/obsconfig.h.in
|
||||
@@ -13,7 +13,7 @@
|
||||
#define OBS_VERSION_CANONICAL "@OBS_VERSION_CANONICAL@"
|
||||
#define OBS_DATA_PATH "@OBS_DATA_PATH@"
|
||||
#define OBS_INSTALL_PREFIX "@OBS_INSTALL_PREFIX@"
|
||||
-#define OBS_PLUGIN_DESTINATION "@OBS_PLUGIN_DESTINATION@"
|
||||
+#define OBS_PLUGIN_DESTINATION "@OBS_PLUGIN_DESTINATION_RELATIVE@"
|
||||
#define OBS_QT_VERSION @_QT_VERSION@
|
||||
|
||||
#cmakedefine LINUX_PORTABLE
|
||||
+161
-2
@@ -1,2 +1,161 @@
|
||||
{pkgs, ffmpeg6-amf}:
|
||||
(pkgs.obs-studio.override {ffmpeg_4 = ffmpeg6-amf;}).overrideAttrs (oldAttrs: rec { patches = oldAttrs.patches ++ [ ./7206.patch ./ffmpeg-6.patch ];})
|
||||
{ config
|
||||
, lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, addOpenGLRunpath
|
||||
, cmake
|
||||
, fdk_aac
|
||||
, ffmpeg
|
||||
, jansson
|
||||
, libjack2
|
||||
, libxkbcommon
|
||||
, libpthreadstubs
|
||||
, libXdmcp
|
||||
, qtbase
|
||||
, qtsvg
|
||||
, speex
|
||||
, libv4l
|
||||
, x264
|
||||
, curl
|
||||
, wayland
|
||||
, xorg
|
||||
, pkg-config
|
||||
, libvlc
|
||||
, mbedtls
|
||||
, wrapGAppsHook
|
||||
, scriptingSupport ? true
|
||||
, luajit
|
||||
, swig
|
||||
, python3
|
||||
, alsaSupport ? stdenv.isLinux
|
||||
, alsa-lib
|
||||
, pulseaudioSupport ? config.pulseaudio or stdenv.isLinux
|
||||
, libpulseaudio
|
||||
, libcef
|
||||
, pciutils
|
||||
, pipewireSupport ? stdenv.isLinux
|
||||
, pipewire
|
||||
, libdrm
|
||||
, libajantv2
|
||||
, librist
|
||||
, libva
|
||||
, srt
|
||||
, qtwayland
|
||||
, wrapQtAppsHook
|
||||
}:
|
||||
|
||||
let
|
||||
inherit (lib) optional optionals;
|
||||
ver = "29.0.2";
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "obs-studio";
|
||||
version = ver + "-amf";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "obsproject";
|
||||
repo = "obs-studio";
|
||||
rev = ver;
|
||||
sha256 = "sha256-TIUSjyPEsKRNTSLQXuLJGEgD989hJ5GhOsqJ4nkKVsY=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
patches = [
|
||||
# Lets obs-browser build against CEF 90.1.0+
|
||||
./Enable-file-access-and-universal-access-for-file-URL.patch
|
||||
./Provide-runtime-plugin-destination-as-relative-path.patch
|
||||
./7206.patch
|
||||
./ffmpeg-6.patch
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
addOpenGLRunpath
|
||||
cmake
|
||||
pkg-config
|
||||
wrapGAppsHook
|
||||
wrapQtAppsHook
|
||||
]
|
||||
++ optional scriptingSupport swig;
|
||||
|
||||
buildInputs = [
|
||||
curl
|
||||
fdk_aac
|
||||
ffmpeg
|
||||
jansson
|
||||
libcef
|
||||
libjack2
|
||||
libv4l
|
||||
libxkbcommon
|
||||
libpthreadstubs
|
||||
libXdmcp
|
||||
qtbase
|
||||
qtsvg
|
||||
speex
|
||||
wayland
|
||||
x264
|
||||
libvlc
|
||||
mbedtls
|
||||
pciutils
|
||||
libajantv2
|
||||
librist
|
||||
libva
|
||||
srt
|
||||
qtwayland
|
||||
]
|
||||
++ optionals scriptingSupport [ luajit python3 ]
|
||||
++ optional alsaSupport alsa-lib
|
||||
++ optional pulseaudioSupport libpulseaudio
|
||||
++ optionals pipewireSupport [ pipewire libdrm ];
|
||||
|
||||
# Copied from the obs-linuxbrowser
|
||||
postUnpack = ''
|
||||
mkdir -p cef/Release cef/Resources cef/libcef_dll_wrapper/
|
||||
for i in ${libcef}/share/cef/*; do
|
||||
cp -r $i cef/Release/
|
||||
cp -r $i cef/Resources/
|
||||
done
|
||||
cp -r ${libcef}/lib/libcef.so cef/Release/
|
||||
cp -r ${libcef}/lib/libcef_dll_wrapper.a cef/libcef_dll_wrapper/
|
||||
cp -r ${libcef}/include cef/
|
||||
'';
|
||||
|
||||
# obs attempts to dlopen libobs-opengl, it fails unless we make sure
|
||||
# DL_OPENGL is an explicit path. Not sure if there's a better way
|
||||
# to handle this.
|
||||
cmakeFlags = [
|
||||
"-DCMAKE_CXX_FLAGS=-DDL_OPENGL=\\\"$(out)/lib/libobs-opengl.so\\\""
|
||||
"-DOBS_VERSION_OVERRIDE=${version}"
|
||||
"-Wno-dev" # kill dev warnings that are useless for packaging
|
||||
# Add support for browser source
|
||||
"-DBUILD_BROWSER=ON"
|
||||
"-DCEF_ROOT_DIR=../../cef"
|
||||
"-DENABLE_JACK=ON"
|
||||
];
|
||||
|
||||
dontWrapGApps = true;
|
||||
preFixup = ''
|
||||
qtWrapperArgs+=(
|
||||
--prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ xorg.libX11 libvlc ]}"
|
||||
''${gappsWrapperArgs[@]}
|
||||
)
|
||||
'';
|
||||
|
||||
postFixup = lib.optionalString stdenv.isLinux ''
|
||||
addOpenGLRunpath $out/lib/lib*.so
|
||||
addOpenGLRunpath $out/lib/obs-plugins/*.so
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Free and open source software for video recording and live streaming";
|
||||
longDescription = ''
|
||||
This project is a rewrite of what was formerly known as "Open Broadcaster
|
||||
Software", software originally designed for recording and streaming live
|
||||
video content, efficiently
|
||||
'';
|
||||
homepage = "https://obsproject.com";
|
||||
maintainers = with maintainers; [ jb55 MP2E V miangraham ];
|
||||
license = licenses.gpl2Plus;
|
||||
platforms = [ "x86_64-linux" "i686-linux" "aarch64-linux" ];
|
||||
mainProgram = "obs";
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user