obs-studio 26.1.1-1 (aarch64) 2021-13451
9999

Status published
Submitter angrypenguinpoland [@T] gmail.com
Platform rolling
Repository restricted
URL https://abf.openmandriva.org/build_lists/930334
Packages
lib64obs0-26.1.1-1.aarch64.binary
lib64obs0-debuginfo-26.1.1-1.aarch64.debuginfo
lib64obs-devel-26.1.1-1.aarch64.binary
lib64obs-frontend-api0-26.1.1-1.aarch64.binary
lib64obs-frontend-api0-debuginfo-26.1.1-1.aarch64.debuginfo
lib64obsglad0-26.1.1-1.aarch64.binary
lib64obsglad0-debuginfo-26.1.1-1.aarch64.debuginfo
lib64obs-opengl0-26.1.1-1.aarch64.binary
lib64obs-opengl0-debuginfo-26.1.1-1.aarch64.debuginfo
obs-studio-26.1.1-1.aarch64.binary
obs-studio-26.1.1-1.aarch64.source
obs-studio-debuginfo-26.1.1-1.aarch64.debuginfo
obs-studio-debugsource-26.1.1-1.aarch64.binary
Build Date 2021-01-06 15:57:57 +0000 UTC
Last Updated 2021-01-11 17:35:34.643942867 +0000 UTC
$ git diff --patch-with-stat --summary 126cd9db54816d2ba3978ad367fa42033837c210..48660cc0bea4687d9a138a3f909b952a0a0e5f1c

 .abf.yml                                      |   2 +-
 hevc-vaapi.diff                               | 316 ++++++++++++++++++++++++++
 obs-studio-21.0.3-linkage.patch               |  16 --
 obs-studio-22.0.2-linkage.patch               |  25 --
 obs-studio-25.0.3-fix-compiler-warnings.patch |  23 --
 obs-studio-26.0.0-rc1-linkage.patch           |  24 ++
 obs-studio.spec                               |   9 +-
 7 files changed, 345 insertions(+), 70 deletions(-)
 create mode 100644 hevc-vaapi.diff
 delete mode 100644 obs-studio-21.0.3-linkage.patch
 delete mode 100644 obs-studio-22.0.2-linkage.patch
 delete mode 100644 obs-studio-25.0.3-fix-compiler-warnings.patch
 create mode 100644 obs-studio-26.0.0-rc1-linkage.patch

diff --git a/.abf.yml b/.abf.yml
index 1bc02cc..ddce687 100644
--- a/.abf.yml
+++ b/.abf.yml
@@ -1,2 +1,2 @@
 sources:
-  obs-studio-25.0.7.tar.gz: 0c504750e90c1714c7343f3514d7075da9e18060
+  obs-studio-26.1.1.tar.gz: ecf7b814bc42e355e56fcf3f79d13ca0389689f2
diff --git a/hevc-vaapi.diff b/hevc-vaapi.diff
new file mode 100644
index 0000000..6fa8fc8
--- /dev/null
+++ b/hevc-vaapi.diff
@@ -0,0 +1,316 @@
+diff -up obs-studio-26.0.2/plugins/obs-ffmpeg/ffmpeg-mux/ffmpeg-mux.c.2~ obs-studio-26.0.2/plugins/obs-ffmpeg/ffmpeg-mux/ffmpeg-mux.c
+diff -up obs-studio-26.0.2/plugins/obs-ffmpeg/obs-ffmpeg.c.2~ obs-studio-26.0.2/plugins/obs-ffmpeg/obs-ffmpeg.c
+--- obs-studio-26.0.2/plugins/obs-ffmpeg/obs-ffmpeg.c.2~	2020-10-06 17:49:58.000000000 +0200
++++ obs-studio-26.0.2/plugins/obs-ffmpeg/obs-ffmpeg.c	2020-11-07 23:45:11.765373302 +0100
+@@ -34,6 +34,7 @@ extern struct obs_encoder_info nvenc_enc
+ 
+ #ifdef LIBAVUTIL_VAAPI_AVAILABLE
+ extern struct obs_encoder_info vaapi_encoder_info;
++extern struct obs_encoder_info vaapi_hevc_encoder_info;
+ #endif
+ 
+ #ifndef __APPLE__
+@@ -208,9 +209,9 @@ finish:
+ #endif
+ 
+ #ifdef LIBAVUTIL_VAAPI_AVAILABLE
+-static bool vaapi_supported(void)
++static bool vaapi_supported(const char *codec_name)
+ {
+-	AVCodec *vaenc = avcodec_find_encoder_by_name("h264_vaapi");
++	AVCodec *vaenc = avcodec_find_encoder_by_name(codec_name);
+ 	return !!vaenc;
+ }
+ #endif
+@@ -250,10 +251,14 @@ bool obs_module_load(void)
+ 		obs_register_encoder(&nvenc_encoder_info);
+ 	}
+ #if !defined(_WIN32) && defined(LIBAVUTIL_VAAPI_AVAILABLE)
+-	if (vaapi_supported()) {
++	if (vaapi_supported("h264_vaapi")) {
+ 		blog(LOG_INFO, "FFMPEG VAAPI supported");
+ 		obs_register_encoder(&vaapi_encoder_info);
+ 	}
++	if (vaapi_supported("hevc_vaapi")) {
++		blog(LOG_INFO, "FFMPEG HEVC VAAPI supported");
++		obs_register_encoder(&vaapi_hevc_encoder_info);
++	}
+ #endif
+ #endif
+ 
+diff -up obs-studio-26.0.2/plugins/obs-ffmpeg/obs-ffmpeg-vaapi.c.2~ obs-studio-26.0.2/plugins/obs-ffmpeg/obs-ffmpeg-vaapi.c
+--- obs-studio-26.0.2/plugins/obs-ffmpeg/obs-ffmpeg-vaapi.c.2~	2020-10-06 17:49:58.000000000 +0200
++++ obs-studio-26.0.2/plugins/obs-ffmpeg/obs-ffmpeg-vaapi.c	2020-11-07 23:45:11.764373289 +0100
+@@ -69,10 +69,35 @@ struct vaapi_encoder {
+ 	bool initialized;
+ };
+ 
+-static const char *vaapi_getname(void *unused)
++/* Identify codecs, and some default values */
++struct type_data {
++	const int id;
++	const int profile;
++	const int level;
++	const char *name;
++	const char *rate_control;
++};
++
++static struct type_data h264_type = {
++	.id = AV_CODEC_ID_H264,
++	.profile = FF_PROFILE_H264_CONSTRAINED_BASELINE,
++	.level = 40,
++	.rate_control = "CBR",
++	.name = "FFMPEG VAAPI",
++};
++
++static struct type_data hevc_type = {
++	.id = AV_CODEC_ID_HEVC,
++	.profile = FF_PROFILE_HEVC_MAIN,
++	.level = 0,
++	.name = "FFMPEG VAAPI (hevc)",
++	.rate_control = "CQP",
++};
++
++static const char *vaapi_getname(void *type_data)
+ {
+-	UNUSED_PARAMETER(unused);
+-	return "FFMPEG VAAPI";
++	struct type_data *data = type_data;
++	return data->name;
+ }
+ 
+ static inline bool valid_format(enum video_format format)
+@@ -170,21 +195,21 @@ typedef struct {
+ 	bool maxrate;
+ } rc_mode_t;
+ 
++/* Set "allowed" options per Rate Control */
++static const rc_mode_t RC_MODES[] = {
++	{.name = "CBR", .qp = false, .bitrate = true, .maxrate = false},
++	{.name = "CQP", .qp = true, .bitrate = false, .maxrate = false},
++	{.name = "VBR", .qp = false, .bitrate = true, .maxrate = true},
++	NULL};
++
+ static const rc_mode_t *get_rc_mode(const char *name)
+ {
+-	/* Set "allowed" options per Rate Control */
+-	static const rc_mode_t RC_MODES[] = {
+-		{.name = "CBR", .qp = false, .bitrate = true, .maxrate = false},
+-		{.name = "CQP", .qp = true, .bitrate = false, .maxrate = false},
+-		{.name = "VBR", .qp = false, .bitrate = true, .maxrate = true},
+-		NULL};
+-
+ 	const rc_mode_t *rc_mode = RC_MODES;
+ 
+-	while (!!rc_mode && strcmp(rc_mode->name, name) != 0)
++	while (!!rc_mode->name && strcmp(rc_mode->name, name) != 0)
+ 		rc_mode++;
+ 
+-	return rc_mode ? rc_mode : RC_MODES;
++	return !!rc_mode->name ? rc_mode : RC_MODES;
+ }
+ 
+ static bool vaapi_update(void *data, obs_data_t *settings)
+@@ -278,6 +303,7 @@ static bool vaapi_update(void *data, obs
+ 
+ 	info("settings:\n"
+ 	     "\tdevice:       %s\n"
++	     "\tcodec:        %s\n"
+ 	     "\trate_control: %s\n"
+ 	     "\tprofile:      %d\n"
+ 	     "\tlevel:        %d\n"
+@@ -288,9 +314,9 @@ static bool vaapi_update(void *data, obs
+ 	     "\twidth:        %d\n"
+ 	     "\theight:       %d\n"
+ 	     "\tb-frames:     %d\n",
+-	     device, rate_control, profile, level, qp, bitrate, maxrate,
+-	     enc->context->gop_size, enc->context->width, enc->context->height,
+-	     enc->context->max_b_frames);
++	     device, enc->vaapi->name, rate_control, profile, level, qp,
++	     bitrate, maxrate, enc->context->gop_size, enc->context->width,
++	     enc->context->height, enc->context->max_b_frames);
+ 
+ 	return vaapi_init_codec(enc, device);
+ }
+@@ -344,9 +370,12 @@ static void *vaapi_create(obs_data_t *se
+ 
+ 	if (vaapi_codec == AV_CODEC_ID_H264) {
+ 		enc->vaapi = avcodec_find_encoder_by_name("h264_vaapi");
++		enc->first_packet = true;
++	}
++	if (vaapi_codec == AV_CODEC_ID_HEVC) {
++		enc->vaapi = avcodec_find_encoder_by_name("hevc_vaapi");
++		enc->first_packet = false;
+ 	}
+-
+-	enc->first_packet = true;
+ 
+ 	blog(LOG_INFO, "---------------------------------");
+ 
+@@ -482,7 +511,10 @@ static bool vaapi_encode(void *data, str
+ 		packet->data = enc->buffer.array;
+ 		packet->size = enc->buffer.num;
+ 		packet->type = OBS_ENCODER_VIDEO;
+-		packet->keyframe = obs_avc_keyframe(packet->data, packet->size);
++		packet->keyframe =
++			enc->vaapi->id == AV_CODEC_ID_H264
++				? obs_avc_keyframe(packet->data, packet->size)
++				: av_pkt.flags & AV_PKT_FLAG_KEY;
+ 		*received_packet = true;
+ 	} else {
+ 		*received_packet = false;
+@@ -503,19 +535,20 @@ static void set_visible(obs_properties_t
+ 	obs_property_set_visible(p, visible);
+ }
+ 
+-static void vaapi_defaults(obs_data_t *settings)
++static void vaapi_defaults(obs_data_t *settings, void *type_data)
+ {
++	struct type_data *codec = type_data;
++
+ 	obs_data_set_default_string(settings, "vaapi_device",
+ 				    "/dev/dri/renderD128");
+-	obs_data_set_default_int(settings, "vaapi_codec", AV_CODEC_ID_H264);
+-	obs_data_set_default_int(settings, "profile",
+-				 FF_PROFILE_H264_CONSTRAINED_BASELINE);
+-	obs_data_set_default_int(settings, "level", 40);
++	obs_data_set_default_int(settings, "vaapi_codec", codec->id);
++	obs_data_set_default_int(settings, "profile", codec->profile);
++	obs_data_set_default_int(settings, "level", codec->level);
+ 	obs_data_set_default_int(settings, "bitrate", 2500);
+ 	obs_data_set_default_int(settings, "keyint_sec", 0);
+ 	obs_data_set_default_int(settings, "bf", 0);
+-	obs_data_set_default_int(settings, "rendermode", 0);
+-	obs_data_set_default_string(settings, "rate_control", "CBR");
++	obs_data_set_default_string(settings, "rate_control",
++				    codec->rate_control);
+ 	obs_data_set_default_int(settings, "qp", 20);
+ 	obs_data_set_default_int(settings, "maxrate", 0);
+ }
+@@ -538,9 +571,13 @@ static bool rate_control_modified(obs_pr
+ 	return true;
+ }
+ 
+-static obs_properties_t *vaapi_properties(void *unused)
++static obs_properties_t *vaapi_properties(void *unused, void *type_data)
+ {
+ 	UNUSED_PARAMETER(unused);
++	struct type_data *codec = type_data;
++	struct dstr name;
++
++	dstr_init(&name);
+ 
+ 	obs_properties_t *props = obs_properties_create();
+ 	obs_property_t *list;
+@@ -560,41 +597,44 @@ static obs_properties_t *vaapi_propertie
+ 		}
+ 	}
+ 
+-	list = obs_properties_add_list(props, "vaapi_codec", "VAAPI Codec",
+-				       OBS_COMBO_TYPE_LIST,
+-				       OBS_COMBO_FORMAT_INT);
+-
+-	obs_property_list_add_int(list, "H.264 (default)", AV_CODEC_ID_H264);
+-
+-	list = obs_properties_add_list(props, "profile", "Profile",
+-				       OBS_COMBO_TYPE_LIST,
+-				       OBS_COMBO_FORMAT_INT);
+-	obs_property_list_add_int(list, "Constrained Baseline (default)",
+-				  FF_PROFILE_H264_CONSTRAINED_BASELINE);
+-	obs_property_list_add_int(list, "Main", FF_PROFILE_H264_MAIN);
+-	obs_property_list_add_int(list, "High", FF_PROFILE_H264_HIGH);
+-
+-	list = obs_properties_add_list(props, "level", "Level",
+-				       OBS_COMBO_TYPE_LIST,
+-				       OBS_COMBO_FORMAT_INT);
+-	obs_property_list_add_int(list, "Auto", FF_LEVEL_UNKNOWN);
+-	obs_property_list_add_int(list, "3.0", 30);
+-	obs_property_list_add_int(list, "3.1", 31);
+-	obs_property_list_add_int(list, "4.0 (default) (Compatibility mode)",
+-				  40);
+-	obs_property_list_add_int(list, "4.1", 41);
+-	obs_property_list_add_int(list, "4.2", 42);
+-	obs_property_list_add_int(list, "5.0", 50);
+-	obs_property_list_add_int(list, "5.1", 51);
+-	obs_property_list_add_int(list, "5.2", 52);
++	if (codec->id == AV_CODEC_ID_H264) {
++		list = obs_properties_add_list(props, "profile", "Profile",
++					OBS_COMBO_TYPE_LIST,
++					OBS_COMBO_FORMAT_INT);
++		obs_property_list_add_int(list, "Constrained Baseline (default)",
++					FF_PROFILE_H264_CONSTRAINED_BASELINE);
++		obs_property_list_add_int(list, "Main", FF_PROFILE_H264_MAIN);
++		obs_property_list_add_int(list, "High", FF_PROFILE_H264_HIGH);
++
++		list = obs_properties_add_list(props, "level", "Level",
++						OBS_COMBO_TYPE_LIST,
++						OBS_COMBO_FORMAT_INT);
++		obs_property_list_add_int(list, "Auto", FF_LEVEL_UNKNOWN);
++		obs_property_list_add_int(list, "3.0", 30);
++		obs_property_list_add_int(list, "3.1", 31);
++		obs_property_list_add_int(list, "4.0 (default) (Compatibility mode)",
++						40);
++		obs_property_list_add_int(list, "4.1", 41);
++		obs_property_list_add_int(list, "4.2", 42);
++		obs_property_list_add_int(list, "5.0", 50);
++		obs_property_list_add_int(list, "5.1", 51);
++		obs_property_list_add_int(list, "5.2", 52);
++	}
+ 
+ 	list = obs_properties_add_list(props, "rate_control",
+ 				       obs_module_text("RateControl"),
+ 				       OBS_COMBO_TYPE_LIST,
+ 				       OBS_COMBO_FORMAT_STRING);
+-	obs_property_list_add_string(list, "CBR (default)", "CBR");
+-	obs_property_list_add_string(list, "CQP", "CQP");
+-	obs_property_list_add_string(list, "VBR", "VBR");
++
++	for (const rc_mode_t *rc_mode = RC_MODES; !!rc_mode->name; rc_mode++) {
++		/* Identify the default choice */
++		char *def = strcmp(rc_mode->name, codec->rate_control) == 0
++				    ? " (default)"
++				    : "";
++
++		dstr_printf(&name, "%s%s", rc_mode->name, def);
++		obs_property_list_add_string(list, name.array, rc_mode->name);
++	}
+ 
+ 	obs_property_set_modified_callback(list, rate_control_modified);
+ 
+@@ -613,6 +653,7 @@ static obs_properties_t *vaapi_propertie
+ 			       obs_module_text("KeyframeIntervalSec"), 0, 20,
+ 			       1);
+ 
++	dstr_free(&name);
+ 	return props;
+ }
+ 
+@@ -642,11 +683,26 @@ struct obs_encoder_info vaapi_encoder_in
+ 	.create = vaapi_create,
+ 	.destroy = vaapi_destroy,
+ 	.encode = vaapi_encode,
+-	.get_defaults = vaapi_defaults,
+-	.get_properties = vaapi_properties,
++	.get_defaults2 = vaapi_defaults,
++	.get_properties2 = vaapi_properties,
+ 	.get_extra_data = vaapi_extra_data,
+ 	.get_sei_data = vaapi_sei_data,
+ 	.get_video_info = vaapi_video_info,
++	.type_data = &h264_type,
++};
++
++struct obs_encoder_info vaapi_hevc_encoder_info = {
++	.id = "ffmpeg_vaapi_hevc",
++	.type = OBS_ENCODER_VIDEO,
++	.codec = "hevc",
++	.get_name = vaapi_getname,
++	.create = vaapi_create,
++	.destroy = vaapi_destroy,
++	.encode = vaapi_encode,
++	.get_defaults2 = vaapi_defaults,
++	.get_properties2 = vaapi_properties,
++	.get_video_info = vaapi_video_info,
++	.type_data = &hevc_type,
+ };
+ 
+ #endif
diff --git a/obs-studio-21.0.3-linkage.patch b/obs-studio-21.0.3-linkage.patch
deleted file mode 100644
index 2bf384e..0000000
--- a/obs-studio-21.0.3-linkage.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-Index: libobs/CMakeLists.txt
-===================================================================
---- libobs/CMakeLists.txt
-+++ libobs/CMakeLists.txt	2018-03-09 23:07:01.583210027 +0100
-@@ -463,6 +467,11 @@
- 		${OBS_JANSSON_IMPORT}
- 		${FFMPEG_LIBRARIES}
- 		${ZLIB_LIBRARIES}
-+		${XCB_LIBRARIES}
-+		${X11_XCB_LIBRARIES}
-+		${X11_LIBRARIES}
-+		-lm -ldl
-+
- 	PUBLIC
- 		${THREADS_LIBRARIES})
- 
diff --git a/obs-studio-22.0.2-linkage.patch b/obs-studio-22.0.2-linkage.patch
deleted file mode 100644
index ba3879d..0000000
--- a/obs-studio-22.0.2-linkage.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-diff -Naur obs-studio-22.0.2.orig/libobs/CMakeLists.txt obs-studio-22.0.2/libobs/CMakeLists.txt
---- obs-studio-22.0.2.orig/libobs/CMakeLists.txt	2018-09-18 16:30:17.994712405 +0300
-+++ obs-studio-22.0.2/libobs/CMakeLists.txt	2018-09-18 16:30:18.005712389 +0300
-@@ -11,6 +11,10 @@
- 	list(REMOVE_ITEM FFMPEG_LIBRARIES ${FFMPEG_AVCODEC_LIBRARIES})
- endif()
- 
-+find_package(XCB COMPONENTS XCB REQUIRED RANDR REQUIRED XINERAMA REQUIRED)
-+
-+find_package(X11 REQUIRED)
-+
- if(UNIX)
- 	if (NOT APPLE)
- 		find_package(X11_XCB REQUIRED)
-@@ -479,6 +483,10 @@
- 		${OBS_JANSSON_IMPORT}
- 		${FFMPEG_LIBRARIES}
- 		${ZLIB_LIBRARIES}
-+		${XCB_LIBRARIES}
-+		${X11_XCB_LIBRARIES}
-+		${X11_LIBRARIES}
-+		-lm -ldl
- 	PUBLIC
- 		${THREADS_LIBRARIES})
- 
diff --git a/obs-studio-25.0.3-fix-compiler-warnings.patch b/obs-studio-25.0.3-fix-compiler-warnings.patch
deleted file mode 100644
index 6f2a42a..0000000
--- a/obs-studio-25.0.3-fix-compiler-warnings.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-diff -up obs-studio-25.0.3/plugins/linux-v4l2/v4l2-controls.c.omv~ obs-studio-25.0.3/plugins/linux-v4l2/v4l2-controls.c
---- obs-studio-25.0.3/plugins/linux-v4l2/v4l2-controls.c.omv~	2020-03-24 19:20:06.747017305 +0100
-+++ obs-studio-25.0.3/plugins/linux-v4l2/v4l2-controls.c	2020-03-24 19:20:44.317640105 +0100
-@@ -102,7 +102,7 @@ static inline bool add_control_property(
- 	obs_property_t *prop = NULL;
- 
- 	if (!valid_control(qctrl)) {
--		return;
-+		return false;
- 	}
- 
- 	switch (qctrl->type) {
-@@ -131,7 +131,10 @@ static inline bool add_control_property(
- 		blog(LOG_INFO, "setting default for %s to %d",
- 		     (char *)qctrl->name, qctrl->default_value);
- 		break;
-+	default:
-+		return false;
- 	}
-+	return true;
- }
- 
- int_fast32_t v4l2_update_controls(int_fast32_t dev, obs_properties_t *props,
diff --git a/obs-studio-26.0.0-rc1-linkage.patch b/obs-studio-26.0.0-rc1-linkage.patch
new file mode 100644
index 0000000..31534a9
--- /dev/null
+++ b/obs-studio-26.0.0-rc1-linkage.patch
@@ -0,0 +1,24 @@
+diff -uraN obs-studio-26.1.0/libobs/CMakeLists.txt omv-obs-studio-26.1.0/libobs/CMakeLists.txt
+--- obs-studio-26.1.0/libobs/CMakeLists.txt	2020-12-14 20:53:01.000000000 +0100
++++ omv-obs-studio-26.1.0/libobs/CMakeLists.txt	2020-12-14 21:41:12.281592283 +0100
+@@ -10,6 +10,9 @@
+ if (NOT "${FFMPEG_AVCODEC_LIBRARIES}" STREQUAL "")
+ 	list(REMOVE_ITEM FFMPEG_LIBRARIES ${FFMPEG_AVCODEC_LIBRARIES})
+ endif()
++find_package(XCB COMPONENTS XCB REQUIRED RANDR REQUIRED XINERAMA REQUIRED)
++
++find_package(X11 REQUIRED)
+ 
+ if(DEBUG_FFMPEG_MUX)
+ 	add_definitions(-DSHOW_SUBPROCESSES)
+@@ -518,6 +521,10 @@
+ 		${OBS_JANSSON_IMPORT}
+ 		${FFMPEG_LIBRARIES}
+ 		${ZLIB_LIBRARIES}
++		${XCB_LIBRARIES}
++		${X11_XCB_LIBRARIES}
++		${X11_LIBRARIES}
++		-lm -ldl
+ 	PUBLIC
+ 		${THREADS_LIBRARIES})
+ 
diff --git a/obs-studio.spec b/obs-studio.spec
index d61bdbd..31487f4 100644
--- a/obs-studio.spec
+++ b/obs-studio.spec
@@ -12,14 +12,14 @@
 
 Summary:	Free and open source software for video recording and live streaming
 Name:		obs-studio
-Version:	25.0.7
+Version:	26.1.1
 Release:	1
 License:	GPLv2+
 Group:		Video
 Url:		https://obsproject.com
 Source0:	https://github.com/obsproject/%{name}/archive/%{version}/%{name}-%{version}.tar.gz
-Patch0:		%{name}-22.0.2-linkage.patch
-Patch1:		obs-studio-25.0.3-fix-compiler-warnings.patch
+Patch0:		%{name}-26.0.0-rc1-linkage.patch
+Patch1:		hevc-vaapi.diff
 BuildRequires:	cmake ninja
 BuildRequires:	qmake5
 BuildRequires:	freetype-devel
@@ -59,7 +59,7 @@ BuildRequires:	pkgconfig(xcb-xfixes)
 BuildRequires:	pkgconfig(xcb-xinerama)
 BuildRequires:	pkgconfig(xcomposite)
 BuildRequires:	pkgconfig(xfixes)
-BuildRequires:	pkgconfig(python3)
+BuildRequires:	pkgconfig(python)
 BuildRequires:	pkgconfig(lua)
 BuildRequires:	swig
 BuildRequires:	mbedtls-devel
@@ -192,6 +192,5 @@ Frontend-api library for %{name}.
 %build
 %ninja_build -C build
 
-
 %install
 %ninja_install -C build
Not Available

benbullard79 [@T] cox.netNo Comment.1194d 14hrs
benbullard79 [@T] cox.netNo Comment.1194d 14hrs