Initial Fedora build

As VLC is going to be used as a multimedia backend library by KDE Phonon
and apps, the subpackages are organized in a way that should cover every
use case from framework, to CLI, TUI, and of course the GUI.
epel10
Yaakov Selkowitz 1 year ago
parent d2318576e1
commit 6709eef7e4

1
.gitignore vendored

@ -0,0 +1 @@
/vlc-3.0.20.tar.xz

@ -0,0 +1,38 @@
From 3039aec58203513f29edb03f84471ea941a0c226 Mon Sep 17 00:00:00 2001
From: Nicolas Chauvet <kwizart@gmail.com>
Date: Mon, 24 Sep 2018 18:28:26 +0200
Subject: [PATCH] Use @SYSTEM wide ciphers for gnutls
Gnutls upstream has support for system defined ciphers list
This is decribed at
https://fedoraproject.org/wiki/Packaging:CryptoPolicies
Also found on the debian wiki
https://wiki.debian.org/CryptoPolicy
Signed-off-by: Nicolas Chauvet <kwizart@gmail.com>
---
modules/misc/gnutls.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/modules/misc/gnutls.c b/modules/misc/gnutls.c
index 7b63cc34c4..3ca665f3d3 100644
--- a/modules/misc/gnutls.c
+++ b/modules/misc/gnutls.c
@@ -768,12 +768,14 @@ static void CloseServer (vlc_tls_creds_t *crd)
"hash functions and compression methods can be selected. " \
"Refer to GNU TLS documentation for detailed syntax.")
static const char *const priorities_values[] = {
+ "@SYSTEM",
"PERFORMANCE",
"NORMAL",
"SECURE128",
"SECURE256",
};
static const char *const priorities_text[] = {
+ N_("System (default to system crypto ciphers policy)"),
N_("Performance (prioritize faster ciphers)"),
N_("Normal"),
N_("Secure 128-bits (exclude 256-bits ciphers)"),
--
2.25.4

File diff suppressed because it is too large Load Diff

@ -0,0 +1,84 @@
From 6ea9b13fe82fae2b25b7371c6c36d6296db28ccb Mon Sep 17 00:00:00 2001
From: Antonio Larrosa <antonio.larrosa@gmail.com>
Date: Thu, 14 Feb 2019 10:09:30 +0100
Subject: [PATCH] Fix building vlc with libfdk-aac v2
When flushing the encoder, we now need to provide non-null buffer
parameters for everything, even if they are unused.
The encoderDelay parameter has been replaced by two, nDelay and
nDelayCore.
This is based on:
https://git.libav.org/?p=libav.git;a=commitdiff_plain;h=141c960e21d2860e354f9b90df136184dd00a9a8;hp=c8bca9fe466f810fd484e2c6db7ef7bc83b5a943
Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>
---
modules/codec/fdkaac.c | 27 +++++++++++++++++++++------
1 file changed, 21 insertions(+), 6 deletions(-)
diff --git a/modules/codec/fdkaac.c b/modules/codec/fdkaac.c
index e0b3088c4a..3ac7b756a3 100644
--- a/modules/codec/fdkaac.c
+++ b/modules/codec/fdkaac.c
@@ -92,6 +92,11 @@ static void CloseEncoder(vlc_object_t *);
#define SIGNALING_COMPATIBLE 1
#define SIGNALING_HIERARCHICAL 2
+#define FDKENC_VER_AT_LEAST(vl0, vl1) \
+ (defined(AACENCODER_LIB_VL0) && \
+ ((AACENCODER_LIB_VL0 > vl0) || \
+ (AACENCODER_LIB_VL0 == vl0 && AACENCODER_LIB_VL1 >= vl1)))
+
static const int pi_aot_values[] = { PROFILE_AAC_LC, PROFILE_AAC_HE, PROFILE_AAC_HE_v2, PROFILE_AAC_LD, PROFILE_AAC_ELD };
static const char *const ppsz_aot_descriptions[] =
{ N_("AAC-LC"), N_("HE-AAC"), N_("HE-AAC-v2"), N_("AAC-LD"), N_("AAC-ELD") };
@@ -288,7 +293,11 @@ static int OpenEncoder(vlc_object_t *p_this)
p_sys->i_maxoutputsize = 768*p_enc->fmt_in.audio.i_channels;
p_enc->fmt_in.audio.i_bitspersample = 16;
p_sys->i_frame_size = info.frameLength;
+#if FDKENC_VER_AT_LEAST(4, 0)
+ p_sys->i_encoderdelay = info.nDelay;
+#else
p_sys->i_encoderdelay = info.encoderDelay;
+#endif
p_enc->fmt_out.i_extra = info.confSize;
if (p_enc->fmt_out.i_extra) {
@@ -351,21 +360,27 @@ static block_t *EncodeAudio(encoder_t *p_enc, block_t *p_aout_buf)
int out_identifier = OUT_BITSTREAM_DATA;
int out_size, out_elem_size;
void *in_ptr, *out_ptr;
+ uint8_t dummy_buf[1];
if (unlikely(i_samples == 0)) {
// this forces the encoder to purge whatever is left in the internal buffer
+ /* Must be a non-null pointer, even if it's a dummy. We could use
+ * the address of anything else on the stack as well. */
+ in_ptr = dummy_buf;
+ in_size = 0;
+
in_args.numInSamples = -1;
} else {
in_ptr = p_buffer + (i_samples - i_samples_left)*p_enc->fmt_in.audio.i_channels;
in_size = 2*p_enc->fmt_in.audio.i_channels*i_samples_left;
- in_elem_size = 2;
in_args.numInSamples = p_enc->fmt_in.audio.i_channels*i_samples_left;
- in_buf.numBufs = 1;
- in_buf.bufs = &in_ptr;
- in_buf.bufferIdentifiers = &in_identifier;
- in_buf.bufSizes = &in_size;
- in_buf.bufElSizes = &in_elem_size;
}
+ in_elem_size = 2;
+ in_buf.numBufs = 1;
+ in_buf.bufs = &in_ptr;
+ in_buf.bufferIdentifiers = &in_identifier;
+ in_buf.bufSizes = &in_size;
+ in_buf.bufElSizes = &in_elem_size;
block_t *p_block;
p_block = block_Alloc(p_sys->i_maxoutputsize);
p_block->i_buffer = p_sys->i_maxoutputsize;
--
2.11.0

@ -0,0 +1 @@
%vlc_plugindir %{_libdir}/vlc/plugins

@ -0,0 +1 @@
SHA512 (vlc-3.0.20.tar.xz) = 02e58fb52dd75bf483ac4b298aecf86463b13d4782173d164adba6e4552d9262ff5e2ee1cbe1bce2c8a809801b79f328c6a8c475d34ae62aefaea02ae5ade406

@ -0,0 +1,18 @@
avcodec_vaapi requires ffmpeg-4, but other vaapi modules can be built
diff --git a/configure.ac b/configure.ac
index 69beb77..c7f7142 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2454,9 +2454,9 @@ AS_IF([test "${have_vaapi}" = "yes" -a "${have_avcodec}" = "yes"], [
have_avcodec_vaapi="yes"
],[
AS_IF([test -n "${enable_libva}"], [
- AC_MSG_ERROR([libva is present but libavcodec/vaapi.h is missing])
+ AC_MSG_WARN([libva is present but libavcodec/vaapi.h is missing])
], [
- AC_MSG_WARN([libva is present but libavcodec/vaapi.h is missing ])
+ AC_MSG_NOTICE([libva is present but libavcodec/vaapi.h is missing ])
])
])
VLC_RESTORE_FLAGS

@ -0,0 +1,892 @@
# codecs which cannot be shipped in Fedora proper
%bcond freeworld 0
%bcond faad2 %{with freeworld}
%bcond x264 %{with freeworld}
%bcond x265 %{with freeworld}
# not compatible with asdcplib-2.12
%bcond asdcp %[!(0%{?fedora} >= 38 || 0%{?rhel} >= 10)]
# not compatible with opencv 3.4 or 4.0
# https://code.videolan.org/videolan/vlc/-/issues/22016
%bcond opencv 0
# not compatible with libplacebo-6
# https://code.videolan.org/videolan/vlc/-/merge_requests/3950
%bcond placebo %[!(0%{?fedora} >= 39 || 0%{?rhel} >= 10)]
# disabled due to various issues
%bcond projectm 0
%ifnarch s390x
%bcond crystalhd %[0%{?fedora} || 0%{?rhel} < 9]
%bcond ieee1394 1
%endif
%ifarch x86_64
%bcond mfx 1
%endif
Name: vlc
Epoch: 1
Version: 3.0.20
Release: %autorelease -b 3
Summary: The cross-platform open-source multimedia framework, player and server
License: GPL-2.0-or-later AND LGPL-2.1-or-later AND BSD-2-Clause AND BSD-3-Clause
URL: https://www.videolan.org
Source: https://get.videolan.org/vlc/%{version}/vlc-%{version}.tar.xz
Source: macros.vlc
# https://fedoraproject.org/wiki/Changes/CryptoPolicy
Patch: 0001-Use-SYSTEM-wide-ciphers-for-gnutls.patch
# Fix building with fdk-aac-2.0; backport for 3.0 from flathub
Patch: fdk-aac2.patch
# separate avcodec-vaapi conditional from other vaapi modules
Patch: vaapi-without-ffmepg4.patch
%{load:%{S:1}}
%global __provides_exclude_from ^%{vlc_plugindir}/.*$
BuildRequires: bison
BuildRequires: flex
BuildRequires: gettext-devel
BuildRequires: libtool
BuildRequires: gcc-c++
BuildRequires: desktop-file-utils
BuildRequires: libappstream-glib
BuildRequires: a52dec-devel
BuildRequires: aalib-devel
%if %{with faad2}
BuildRequires: faad2-devel
%endif
BuildRequires: hostname
BuildRequires: kernel-headers
%if %{with crystalhd}
BuildRequires: libcrystalhd-devel
%endif
BuildRequires: libgcrypt-devel
BuildRequires: libjpeg-devel
BuildRequires: libmad-devel
BuildRequires: libmpcdec-devel
BuildRequires: libpng-devel
BuildRequires: lirc-devel
BuildRequires: live555-devel
BuildRequires: lua-devel
BuildRequires: pkgconfig(alsa) >= 1.0.24
BuildRequires: pkgconfig(aom)
#BuildRequires: pkgconfig(aribb24)
#BuildRequires: pkgconfig(aribb25)
%if %{with asdcp}
BuildRequires: pkgconfig(asdcplib)
%endif
BuildRequires: pkgconfig(avahi-client) >= 0.6
#BuildRequires: pkgconfig(breakpad-client)
BuildRequires: pkgconfig(caca) >= 0.99.beta14
BuildRequires: pkgconfig(daaladec)
BuildRequires: pkgconfig(daalaenc)
BuildRequires: pkgconfig(dav1d)
BuildRequires: pkgconfig(dbus-1)
BuildRequires: pkgconfig(dvdnav) > 4.9.0
BuildRequires: pkgconfig(dvdread) > 4.9.0
BuildRequires: pkgconfig(egl)
#BuildRequires: pkgconfig(evas)
BuildRequires: pkgconfig(fdk-aac)
BuildRequires: pkgconfig(flac)
#BuildRequires: pkgconfig(fluidlite)
BuildRequires: pkgconfig(fluidsynth) >= 1.1.2
BuildRequires: pkgconfig(fontconfig) >= 2.11
#BuildRequires: pkgconfig(freerdp)
BuildRequires: pkgconfig(freetype2)
BuildRequires: pkgconfig(fribidi)
BuildRequires: pkgconfig(gl)
BuildRequires: pkgconfig(glesv2)
BuildRequires: pkgconfig(gnutls) >= 3.3.6
BuildRequires: pkgconfig(gstreamer-app-1.0)
BuildRequires: pkgconfig(gstreamer-video-1.0)
BuildRequires: pkgconfig(harfbuzz)
BuildRequires: pkgconfig(jack) >= 1.9.7
BuildRequires: pkgconfig(kate) >= 0.3.0
BuildRequires: pkgconfig(libarchive) >= 3.1.0
BuildRequires: pkgconfig(libass) >= 0.9.8
BuildRequires: pkgconfig(libavcodec) >= 57.37.100
BuildRequires: pkgconfig(libavformat) >= 53.21.0
BuildRequires: pkgconfig(libavutil) >= 52.0.0
BuildRequires: pkgconfig(libbluray) >= 0.6.2
BuildRequires: pkgconfig(libcddb) >= 0.9.5
BuildRequires: pkgconfig(libchromaprint)
%if %{with ieee1394}
BuildRequires: pkgconfig(libdc1394-2) >= 2.1.0
%endif
BuildRequires: pkgconfig(libdca) >= 0.0.5
#BuildRequires: pkgconfig(libdsm) >= 0.2.0
BuildRequires: pkgconfig(libdvbpsi)
BuildRequires: pkgconfig(libebml) >= 1.3.6
BuildRequires: pkgconfig(libgme)
#BuildRequires: pkgconfig(libgoom2)
BuildRequires: pkgconfig(libidn)
BuildRequires: pkgconfig(libmatroska)
%if %{with mfx}
BuildRequires: pkgconfig(libmfx)
%endif
BuildRequires: pkgconfig(libmodplug) >= 0.8.9.0
BuildRequires: pkgconfig(libmpeg2) >= 0.3.2
BuildRequires: pkgconfig(libmpg123)
BuildRequires: pkgconfig(libmtp) >= 1.0.0
BuildRequires: pkgconfig(libnfs) >= 1.10.0
BuildRequires: pkgconfig(libnotify) pkgconfig(gtk+-3.0)
%if %{with placebo}
BuildRequires: pkgconfig(libplacebo) >= 0.2.1
%endif
BuildRequires: pkgconfig(libpostproc)
%if %{with projectm}
BuildRequires: pkgconfig(libprojectM)
%endif
BuildRequires: pkgconfig(libpulse) >= 1.0
%if %{with ieee1394}
BuildRequires: pkgconfig(libraw1394) >= 2.0.1 pkgconfig(libavc1394) >= 0.5.3
%endif
BuildRequires: pkgconfig(librsvg-2.0) >= 2.9.0
BuildRequires: pkgconfig(libsecret-1) >= 0.18
#BuildRequires: pkgconfig(libsidplay2)
#BuildRequires: pkgconfig(libsmb2) >= 3.0.0
BuildRequires: pkgconfig(libssh2)
BuildRequires: pkgconfig(libswscale)
BuildRequires: pkgconfig(libsystemd)
BuildRequires: pkgconfig(libudev) >= 142
BuildRequires: pkgconfig(libupnp)
BuildRequires: pkgconfig(libva) >= 0.38
BuildRequires: pkgconfig(libva-drm)
BuildRequires: pkgconfig(libva-wayland)
BuildRequires: pkgconfig(libva-x11)
BuildRequires: pkgconfig(libvncclient) >= 0.9.9
#BuildRequires: pkgconfig(libvsxu)
BuildRequires: pkgconfig(libxml-2.0) >= 2.5
BuildRequires: pkgconfig(microdns) >= 0.1.2
BuildRequires: pkgconfig(minizip)
BuildRequires: pkgconfig(ncursesw)
BuildRequires: pkgconfig(ogg) >= 1.0
%if %{with opencv}
BuildRequires: pkgconfig(opencv)
%endif
BuildRequires: pkgconfig(opus) >= 1.0.3
BuildRequires: pkgconfig(protobuf-lite) >= 2.5
BuildRequires: pkgconfig(Qt5Core) >= 5.5
BuildRequires: pkgconfig(Qt5Gui) >= 5.5
BuildRequires: pkgconfig(Qt5Svg) >= 5.5
BuildRequires: pkgconfig(Qt5Widgets) >= 5.5
BuildRequires: pkgconfig(Qt5X11Extras) >= 5.5
BuildRequires: pkgconfig(samplerate)
BuildRequires: pkgconfig(schroedinger-1.0) >= 1.0.10
BuildRequires: pkgconfig(SDL_image) >= 1.2.10
#BuildRequires: pkgconfig(shine) >= 3.0.0
BuildRequires: pkgconfig(shout) >= 2.1
BuildRequires: pkgconfig(smbclient)
BuildRequires: pkgconfig(soxr) >= 0.1.2
BuildRequires: pkgconfig(sqlite3)
BuildRequires: pkgconfig(spatialaudio)
BuildRequires: pkgconfig(speex) >= 1.0.5
BuildRequires: pkgconfig(speexdsp)
BuildRequires: pkgconfig(srt) >= 1.3.0
BuildRequires: pkgconfig(taglib) >= 1.9
BuildRequires: pkgconfig(theoradec)
BuildRequires: pkgconfig(theoraenc)
BuildRequires: pkgconfig(tiger) >= 0.3.1
BuildRequires: pkgconfig(twolame)
BuildRequires: pkgconfig(vdpau) >= 0.6
BuildRequires: pkgconfig(vorbis) >= 1.1
BuildRequires: pkgconfig(vorbisenc) >= 1.1
BuildRequires: pkgconfig(vpx) >= 1.5.0
BuildRequires: pkgconfig(wayland-client) >= 1.5.91
BuildRequires: pkgconfig(wayland-egl)
BuildRequires: pkgconfig(wayland-protocols)
#BuildRequires: pkgconfig(x262)
%if %{with x264}
BuildRequires: pkgconfig(x264) >= 0.153
%endif
%if %{with x265}
BuildRequires: pkgconfig(x265)
%endif
BuildRequires: pkgconfig(xcb) >= 1.6
BuildRequires: pkgconfig(xcb-composite)
BuildRequires: pkgconfig(xcb-keysyms) >= 0.3.4
BuildRequires: pkgconfig(xcb-randr) >= 1.3
BuildRequires: pkgconfig(xcb-shm)
BuildRequires: pkgconfig(xcb-xv) >= 1.1.90.1
BuildRequires: pkgconfig(xext)
BuildRequires: pkgconfig(xinerama)
BuildRequires: pkgconfig(xpm)
BuildRequires: pkgconfig(xproto)
BuildRequires: pkgconfig(zvbi-0.2) >= 0.2.28
BuildRequires: qt5-qtbase-private-devel
BuildRequires: zlib-devel
Provides: %{name}-xorg%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-gui-qt%{?_isa} = %{epoch}:%{version}-%{release}
Recommends: %{name}-gui-skins2%{?_isa} = %{epoch}:%{version}-%{release}
Recommends: %{name}-plugin-ffmpeg%{?_isa} = %{epoch}:%{version}-%{release}
Requires: hicolor-icon-theme
Requires: kf5-filesystem
# For xdg-screensaver (libxdg_screensaver_plugin)
Recommends: xdg-utils
%description
VLC media player is a highly portable multimedia player and multimedia framework
capable of reading most audio and video formats as well as DVDs, Audio CDs VCDs,
and various streaming protocols.
It can also be used as a media converter or a server to stream in uni-cast or
multi-cast in IPv4 or IPv6 on networks.
%package libs
Summary: VLC media player runtime libraries
Recommends: libproxy-bin%{?_isa}
Conflicts: %{name}-core < %{epoch}:%{version}-%{release}
%description libs
VLC media player runtime libraries
%package cli
Summary: VLC media player command line interface
Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-plugins-base%{?_isa} = %{epoch}:%{version}-%{release}
Recommends: %{name}-plugin-lua%{?_isa} = %{epoch}:%{version}-%{release}
Obsoletes: %{name}-core < %{epoch}:%{version}-%{release}
Provides: %{name}-core = %{epoch}:%{version}-%{release}
Provides: %{name}-nox = %{epoch}:%{version}-%{release}
%description cli
VLC media player command line interfaces
%package gui-ncurses
Summary: VLC media player TUI
Requires: %{name}-cli%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-plugins-base%{?_isa} = %{epoch}:%{version}-%{release}
%description gui-ncurses
VLC media player ncurses-based terminal interface
%package gui-qt
Summary: VLC media player Qt GUI
Requires: %{name}-cli%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-plugins-base%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-plugins-video-out%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-plugin-lua%{?_isa} = %{epoch}:%{version}-%{release}
Requires: (qt5-qtwayland%{?_isa} if libwayland-client%{?_isa})
Recommends: %{name}-plugin-ffmpeg%{?_isa} = %{epoch}:%{version}-%{release}
Recommends: %{name}-plugin-visualization%{?_isa} = %{epoch}:%{version}-%{release}
Recommends: (%{name}-plugin-gnome%{?_isa} = %{epoch}:%{version}-%{release} if gnome-keyring)
Recommends: (%{name}-plugin-kde%{?_isa} = %{epoch}:%{version}-%{release} if kf5-kwallet)
Recommends: (%{name}-plugin-notify%{?_isa} = %{epoch}:%{version}-%{release} if gtk3)
Recommends: (%{name}-plugin-pulseaudio%{?_isa} = %{epoch}:%{version}-%{release} or vlc-plugin-pipewire%{?_isa})
%description gui-qt
VLC media player Qt graphical interface
%package gui-skins2
Summary: VLC media player Skins2 GUI
Requires: %{name}-cli%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-gui-qt%{?_isa} = %{epoch}:%{version}-%{release}
Requires: gnu-free-sans-fonts
%description gui-skins2
VLC media player skinnable graphical interface
%package plugins-base
Summary: VLC media player core
Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release}
Requires: google-noto-sans-mono-vf-fonts
Requires: google-noto-serif-vf-fonts
Recommends: libv4l%{?_isa}
Conflicts: %{name}-core < %{epoch}:%{version}-%{release}
%description plugins-base
VLC media player core components
# libcrystalhd requires crystalhd-firmware, is for specific hardware
%if %{with crystalhd}
%package plugin-crystalhd
Summary: VLC media player Crystal HD plugin
Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-plugins-base%{?_isa} = %{epoch}:%{version}-%{release}
Obsoletes: %{name}-extras < %{epoch}:%{version}-%{release}
Provides: %{name}-extras = %{epoch}:%{version}-%{release}
%description plugin-crystalhd
Crystal HD plugin for VLC media player
%endif
# libavcodec/libavformat etc. have many dependencies
%package plugin-ffmpeg
Summary: VLC media player FFmpeg plugins
Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-plugins-base%{?_isa} = %{epoch}:%{version}-%{release}
%description plugin-ffmpeg
FFmpeg support plugins for VLC media player
# for MIDI playback, requires a soundfont (usually quite large)
%package plugin-fluidsynth
Summary: VLC media player MIDI playback plugin
Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-plugins-base%{?_isa} = %{epoch}:%{version}-%{release}
Recommends: fluid-soundfont-gm
%description plugin-fluidsynth
MIDI playback support plugin for VLC media player
# requires libsecret, for gnome-keyring secrets storage on GNOME
%package plugin-gnome
Summary: VLC media player Gnome Keyring plugin
Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-plugins-base%{?_isa} = %{epoch}:%{version}-%{release}
%description plugin-gnome
Gnome Keyring integration for VLC media player
# alternative codecs for specific formats, requires many of its own plugins
%package plugin-gstreamer
Summary: VLC media player GStreamer codec plugin
Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-plugins-base%{?_isa} = %{epoch}:%{version}-%{release}
Requires: gstreamer1-plugins-good%{?_isa}
Requires: gstreamer1-plugins-bad-free%{?_isa}
Recommends: gstreamer1-plugin-libav%{?_isa}
Recommends: gstreamer1-plugin-openh264%{?_isa}
%description plugin-gstreamer
GStreamer decoder plugins for VLC media player
# requires libdc1394/libavc1394/libraw1394, is for specific hardware
%if %{with ieee1394}
%package plugin-ieee1394
Summary: VLC media player IEEE 1394 plugins
Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-plugins-base%{?_isa} = %{epoch}:%{version}-%{release}
%description plugin-ieee1394
IEEE 1394 (FireWire) plugins for VLC media player
%endif
# depends on j-a-c-k or pipewire-j-a-c-k, for low-latency audio
%package plugin-jack
Summary: VLC media player JACK plugins
Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-plugins-base%{?_isa} = %{epoch}:%{version}-%{release}
Suggests: pipewire-jack-audio-connection-kit
%description plugin-jack
PulseAudio plugins for VLC media player
# for KWallet secrets storage on KDE Plasma
%package plugin-kde
Summary: VLC media player KWallet plugin
Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-plugins-base%{?_isa} = %{epoch}:%{version}-%{release}
%description plugin-kde
KDE KWallet integration for VLC media player
# requires lua, used by CLI and GUI
%package plugin-lua
Summary: VLC media player lua scripting plugins
Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-plugins-base%{?_isa} = %{epoch}:%{version}-%{release}
%{?lua_version:Requires: lua(abi) = %{lua_version}}
%description plugin-lua
Lua scripting support for VLC media player
# requires gtk3 to render the notification icon
%package plugin-notify
Summary: VLC media player notification plugin
Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-plugins-base%{?_isa} = %{epoch}:%{version}-%{release}
%description plugin-notify
Desktop notification plugin for VLC media player
# opencv has many dependencies
%if %{with opencv}
%package plugin-opencv
Summary: VLC media player OpenCV plugins
Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-plugins-base%{?_isa} = %{epoch}:%{version}-%{release}
%description plugin-opencv
OpenCV plugins for VLC media player
%endif
# uses libpulse to connect to pipewire-pulseaudio
# vlc-plugin-pipewire plugin is an alternative
%package plugin-pulseaudio
Summary: VLC media player PulseAudio plugins
Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-plugins-base%{?_isa} = %{epoch}:%{version}-%{release}
%description plugin-pulseaudio
PulseAudio plugins for VLC media player
# requires libsmbclient, for SMB protocol support
%package plugin-samba
Summary: VLC media player SMB plugin
Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-plugins-base%{?_isa} = %{epoch}:%{version}-%{release}
%description plugin-samba
Samba access plugin for VLC media player
# requires librsvg2, for SVG decoding and screen overlay
%package plugin-svg
Summary: VLC media player SVG plugins
Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-plugins-base%{?_isa} = %{epoch}:%{version}-%{release}
%description plugin-svg
SVG plugins for VLC media player
# requires libv4l, libva, OpenGL, X11/xcb, etc.
%package plugins-video-out
Summary: VLC media player vout plugins
Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-plugins-base%{?_isa} = %{epoch}:%{version}-%{release}
%description plugins-video-out
Video output plugins for VLC media player
%package plugin-visualization
Summary: VLC media player visualization plugins
Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-plugins-base%{?_isa} = %{epoch}:%{version}-%{release}
%description plugin-visualization
Visualization plugins for VLC media player
%package plugin-vnc
Summary: VLC media player VNC plugin
Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-plugins-base%{?_isa} = %{epoch}:%{version}-%{release}
%description plugin-vnc
VNC access plugin for VLC media player
%package devel
Summary: Development files for %{name}
Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release}
%description devel
The %{name}-devel package contains libraries and header files for
developing applications and plugins that use %{name}.
%prep
%autosetup -p1
rm -f aclocal.m4 m4/lib*.m4 m4/lt*.m4
./bootstrap
# switch "Allow automatic icon change" to opt-in
sed -i -e 's|\("qt-icon-change",\) true|\1 false|' modules/gui/qt/qt.cpp
# sync appstream app-id with Flathub
sed -i -e 's|org\.videolan\.vlc|org.videolan.VLC|' share/vlc.appdata.xml.in.in
%if 0%{?flatpak}
# icons are renamed in order to be exported
sed -i -e '/icon_theme_load/s|"vlc"|"org.videolan.VLC"|' modules/notify/notify.c
sed -i -e '/fromTheme/s|"vlc"|"org.videolan.VLC"|' \
modules/gui/qt/main_interface.cpp modules/gui/qt/qt.cpp
%endif
touch src/revision.txt
%build
export LIVE555_PREFIX=%{_prefix}
%configure \
--disable-silent-rules \
--disable-dependency-tracking \
--with-binary-version=%{version} \
--disable-static \
--with-pic \
--disable-rpath \
--enable-dbus \
--disable-optimizations \
--enable-lua \
\
--enable-archive \
--enable-live555 \
--enable-dc1394%{!?with_ieee1394:=no} \
--enable-dv1394%{!?with_ieee1394:=no} \
--enable-linsys \
--enable-dvdread \
--enable-dvdnav \
--enable-bluray \
--enable-opencv%{!?with_opencv:=no} \
--enable-smbclient \
--disable-dsm \
--enable-sftp \
--enable-nfs \
--disable-smb2 \
--enable-v4l2 \
--disable-decklink \
--enable-vcd \
--enable-libcddb \
--enable-screen \
--enable-vnc \
--disable-freerdp \
--enable-realrtsp \
--enable-asdcp%{!?with_asdcp:=no} \
\
--enable-dvbpsi \
--enable-gme \
--disable-sid \
--enable-ogg \
--enable-shout \
--enable-matroska \
--enable-mod \
--enable-mpc \
\
--disable-shine \
--disable-omxil \
--enable-crystalhd%{!?with_crystalhd:=no} \
--enable-mad \
--enable-mpg123 \
--enable-gst-decode \
--enable-avcodec \
--enable-libva \
--enable-avformat \
--enable-swscale \
--enable-postproc \
--enable-faad%{!?with_faad2:=no} \
--enable-aom \
--enable-dav1d \
--enable-vpx \
--enable-twolame \
--enable-fdkaac \
--enable-a52 \
--enable-dca \
--enable-flac \
--enable-libmpeg2 \
--enable-vorbis \
--enable-tremor \
--enable-speex \
--enable-opus \
--enable-spatialaudio \
--enable-theora \
--enable-oggspots \
--enable-daala \
--enable-schroedinger \
--enable-png \
--enable-jpeg \
--disable-bpg \
--disable-x262 \
--enable-x265%{!?with_x265:=no} \
--enable-x264%{!?with_x264:=no} \
--enable-x26410b%{!?with_x264:=no} \
--enable-mfx%{!?with_mfx:=no} \
--enable-fluidsynth \
--disable-fluidlite \
--enable-zvbi \
--disable-telx \
--enable-libass \
--disable-aribsub \
--disable-aribb25 \
--enable-kate \
--enable-tiger \
--enable-css \
\
--enable-gles2 \
--enable-xcb \
--enable-xvideo \
--enable-vdpau \
--enable-wayland \
--enable-sdl-image \
--enable-freetype \
--enable-fribidi \
--enable-harfbuzz \
--enable-fontconfig \
--with-default-font-family=NotoSerif \
--with-default-monospace-font-family=NotoSansMono \
--enable-svg \
--enable-svgdec \
--enable-aa \
--enable-caca \
--disable-mmal \
--disable-evas \
\
--enable-pulse \
--enable-alsa \
--enable-jack \
--enable-samplerate \
--enable-soxr \
--enable-chromaprint \
--enable-chromecast \
\
--enable-qt \
--enable-skins2 \
--disable-libtar \
--enable-lirc \
--enable-srt \
\
--disable-goom \
--enable-projectm%{!?with_projectm:=no} \
--disable-vsxu \
\
--enable-avahi \
--enable-udev \
--enable-mtp \
--enable-upnp \
--enable-microdns \
\
--enable-libxml2 \
--enable-libgcrypt \
--enable-gnutls \
--enable-taglib \
--enable-secret \
--enable-kwallet \
--disable-update-check \
--enable-notify \
--enable-libplacebo%{!?with_placebo:=no} \
--with-kde-solid=%{_datadir}/solid/actions \
%{nil}
# clean unused-direct-shlib-dependencies
sed -i -e 's! -shared ! -Wl,--as-needed\0!g' libtool
%make_build
%install
%make_install CPPROG="cp -p"
# RPM macros for other vlc-plugin-* packages
install -D -m0644 %{S:1} %{buildroot}%{_rpmmacrodir}/macros.vlc
# Ghost the plugins cache
touch %{buildroot}%{vlc_plugindir}/plugins.dat
# Use installed fonts for skins2; gnu-free is part of flatpak runtime
rm -f %{buildroot}%{_datadir}/vlc/skins2/fonts/FreeSans{,Bold}.ttf
ln -s %{_usr}/share/fonts/gnu-free/FreeSans{,Bold}.ttf %{buildroot}%{_datadir}/vlc/skins2/fonts/
# Remove libtool libraries (for RHEL 9 and older)
find %{buildroot}%{_libdir} -name '*.la' -delete
# unpackaged static library
rm -f %{buildroot}%{_libdir}/vlc/libcompat.*
# GNOME 2 script, not compatible with GNOME 3+
rm -f %{buildroot}%{_datadir}/vlc/utils/gnome-vlc-default.sh
# The default PNG icons are used for desktop menu, notifications, and SNI;
# all other icons are compiled in as resources
find %{buildroot}%{_datadir}/icons/hicolor -type f ! -name 'vlc.png' -delete
rm -f %{buildroot}%{_datadir}/vlc/vlc.ico
# docs will be installed in %%files
rm -rf %{buildroot}%{_docdir}/vlc
%find_lang %{name}
%check
desktop-file-validate %{buildroot}%{_datadir}/applications/vlc.desktop
appstream-util validate-relax --nonet %{buildroot}%{_datadir}/metainfo/vlc.appdata.xml
# chroma_copy_test fails on s390x (big endian?)
%ifnarch s390x
make check
%endif
%transfiletriggerin libs -- %{vlc_plugindir}
%{_libdir}/vlc/vlc-cache-gen %{vlc_plugindir} &>/dev/null || :
%transfiletriggerpostun libs -- %{vlc_plugindir}
%{_libdir}/vlc/vlc-cache-gen %{vlc_plugindir} &>/dev/null || :
%files
%doc AUTHORS NEWS README THANKS
%license COPYING COPYING.LIB
%{_datadir}/applications/%{name}.desktop
%{_datadir}/icons/hicolor/*/apps/%{name}.png
%{_datadir}/solid/actions/%{name}-*.desktop
%{_datadir}/vlc/utils/
%{_metainfodir}/%{name}.appdata.xml
%files libs -f %{name}.lang
%license COPYING.LIB
# client library, used by e.g. kaffeine, phonon-backend-vlc, etc.
%{_libdir}/libvlc.so.5{,.*}
# plugin API, used by vlc-plugin(s)-*
%{_libdir}/libvlccore.so.9{,.*}
%dir %{_libdir}/vlc/
%{_libdir}/vlc/vlc-cache-gen
%dir %{vlc_plugindir}
%ghost %{vlc_plugindir}/plugins.dat
%files cli
%{_bindir}/vlc
%{_bindir}/cvlc
%{_bindir}/rvlc
%{_bindir}/vlc-wrapper
%{_mandir}/man1/vlc*.1*
%files gui-ncurses
%{_bindir}/nvlc
%{vlc_plugindir}/gui/libncurses_plugin.so
%files gui-qt
%{_bindir}/qvlc
%{vlc_plugindir}/gui/libqt_plugin.so
%files gui-skins2
%{_bindir}/svlc
%{vlc_plugindir}/gui/libskins2_plugin.so
%{_datadir}/vlc/skins2/
%files plugins-base
%license COPYING COPYING.LIB
%exclude %{vlc_plugindir}/access/libaccess_jack_plugin.so
%exclude %{vlc_plugindir}/access/libavio_plugin.so
%if %{with ieee1394}
%exclude %{vlc_plugindir}/access/libdc1394_plugin.so
%exclude %{vlc_plugindir}/access/libdv1394_plugin.so
%endif
%exclude %{vlc_plugindir}/access/libpulsesrc_plugin.so
%exclude %{vlc_plugindir}/access/libsmb_plugin.so
%exclude %{vlc_plugindir}/access/libvnc_plugin.so
%{vlc_plugindir}/access/
%{vlc_plugindir}/access_output/
%{vlc_plugindir}/audio_filter/
%{vlc_plugindir}/audio_mixer/
%exclude %{vlc_plugindir}/audio_output/libjack_plugin.so
%exclude %{vlc_plugindir}/audio_output/libpulse_plugin.so
%{vlc_plugindir}/audio_output/
%exclude %{vlc_plugindir}/codec/libavcodec_plugin.so
%if %{with crystalhd}
%exclude %{vlc_plugindir}/codec/libcrystalhd_plugin.so
%endif
%exclude %{vlc_plugindir}/codec/libfluidsynth_plugin.so
%exclude %{vlc_plugindir}/codec/libgstdecode_plugin.so
%exclude %{vlc_plugindir}/codec/libsvgdec_plugin.so
%{vlc_plugindir}/codec/
%exclude %{vlc_plugindir}/control/libxcb_hotkeys_plugin.so
%{vlc_plugindir}/control/
%exclude %{vlc_plugindir}/demux/libavformat_plugin.so
%{vlc_plugindir}/demux/
%dir %{vlc_plugindir}/gui/
%exclude %{vlc_plugindir}/keystore/libkwallet_plugin.so
%exclude %{vlc_plugindir}/keystore/libsecret_plugin.so
%{vlc_plugindir}/keystore/
%{vlc_plugindir}/logger/
%{vlc_plugindir}/meta_engine/
%{vlc_plugindir}/misc/
%{vlc_plugindir}/mux/
%dir %{vlc_plugindir}/notify/
%exclude %{vlc_plugindir}/packetizer/libpacketizer_avparser_plugin.so
%{vlc_plugindir}/packetizer/
%exclude %{vlc_plugindir}/services_discovery/libpulselist_plugin.so
%exclude %{vlc_plugindir}/services_discovery/libxcb_apps_plugin.so
%{vlc_plugindir}/services_discovery/
%{vlc_plugindir}/spu/
%{vlc_plugindir}/stream_extractor/
%{vlc_plugindir}/stream_filter/
%exclude %{vlc_plugindir}/stream_out/libstream_out_chromaprint_plugin.so
%{vlc_plugindir}/stream_out/
%exclude %{vlc_plugindir}/text_renderer/libsvg_plugin.so
%{vlc_plugindir}/text_renderer/
%dir %{vlc_plugindir}/vaapi/
%dir %{vlc_plugindir}/vdpau/
%exclude %{vlc_plugindir}/video_chroma/libswscale_plugin.so
%{vlc_plugindir}/video_chroma/
%if %{with opencv}
%exclude %{vlc_plugindir}/video_filter/libopencv_*.so
%endif
%exclude %{vlc_plugindir}/video_filter/libpostproc_plugin.so
%{vlc_plugindir}/video_filter/
%dir %{vlc_plugindir}/video_output/
%{vlc_plugindir}/video_output/libfb_plugin.so
%{vlc_plugindir}/video_output/libvdummy_plugin.so
%{vlc_plugindir}/video_output/libvmem_plugin.so
%{vlc_plugindir}/video_output/libyuv_plugin.so
%dir %{vlc_plugindir}/video_splitter/
%dir %{vlc_plugindir}/visualization/
%dir %{_datadir}/vlc/
%if %{with crystalhd}
%files plugin-crystalhd
%{vlc_plugindir}/codec/libcrystalhd_plugin.so
%endif
%files plugin-ffmpeg
%{vlc_plugindir}/access/libavio_plugin.so
%{vlc_plugindir}/codec/libavcodec_plugin.so
%{vlc_plugindir}/demux/libavformat_plugin.so
%{vlc_plugindir}/packetizer/libpacketizer_avparser_plugin.so
%{vlc_plugindir}/stream_out/libstream_out_chromaprint_plugin.so
%{vlc_plugindir}/vdpau/libvdpau_avcodec_plugin.so
%{vlc_plugindir}/video_chroma/libswscale_plugin.so
%{vlc_plugindir}/video_filter/libpostproc_plugin.so
%files plugin-fluidsynth
%{vlc_plugindir}/codec/libfluidsynth_plugin.so
%files plugin-gnome
%{vlc_plugindir}/keystore/libsecret_plugin.so
%files plugin-gstreamer
%{vlc_plugindir}/codec/libgstdecode_plugin.so
%if %{with ieee1394}
%files plugin-ieee1394
%{vlc_plugindir}/access/libdc1394_plugin.so
%{vlc_plugindir}/access/libdv1394_plugin.so
%endif
%files plugin-jack
%{vlc_plugindir}/access/libaccess_jack_plugin.so
%{vlc_plugindir}/audio_output/libjack_plugin.so
%files plugin-kde
%{vlc_plugindir}/keystore/libkwallet_plugin.so
%files plugin-lua
%{_libdir}/vlc/lua/
%{vlc_plugindir}/lua/
%{_datadir}/vlc/lua/
%files plugin-notify
%{vlc_plugindir}/notify/libnotify_plugin.so
%if %{with opencv}
%files plugin-opencv
%{vlc_plugindir}/video_filter/libopencv_example_plugin.so
%{vlc_plugindir}/video_filter/libopencv_wrapper_plugin.so
%endif
%files plugin-pulseaudio
%{_libdir}/vlc/libvlc_pulse.so*
%{vlc_plugindir}/access/libpulsesrc_plugin.so
%{vlc_plugindir}/audio_output/libpulse_plugin.so
%{vlc_plugindir}/services_discovery/libpulselist_plugin.so
%files plugin-samba
%{vlc_plugindir}/access/libsmb_plugin.so
%files plugin-svg
%{vlc_plugindir}/codec/libsvgdec_plugin.so
%{vlc_plugindir}/text_renderer/libsvg_plugin.so
%files plugins-video-out
%{_libdir}/vlc/libvlc_vdpau.so*
%{_libdir}/vlc/libvlc_xcb_events.so*
%{vlc_plugindir}/control/libxcb_hotkeys_plugin.so
%{vlc_plugindir}/services_discovery/libxcb_apps_plugin.so
%{vlc_plugindir}/vaapi/*.so
%exclude %{vlc_plugindir}/vdpau/libvdpau_avcodec_plugin.so
%{vlc_plugindir}/vdpau/*.so
%exclude %{vlc_plugindir}/video_output/libfb_plugin.so
%exclude %{vlc_plugindir}/video_output/libvdummy_plugin.so
%exclude %{vlc_plugindir}/video_output/libvmem_plugin.so
%exclude %{vlc_plugindir}/video_output/libyuv_plugin.so
%{vlc_plugindir}/video_output/*.so
%{vlc_plugindir}/video_splitter/*.so
%files plugin-visualization
%{vlc_plugindir}/visualization/*.so
%files plugin-vnc
%{vlc_plugindir}/access/libvnc_plugin.so
%files devel
%dir %{_includedir}/vlc
%{_includedir}/vlc/*.h
%{_includedir}/vlc/plugins/
%{_libdir}/libvlc.so
%{_libdir}/libvlccore.so
%{_libdir}/pkgconfig/libvlc.pc
%{_libdir}/pkgconfig/vlc-plugin.pc
%{_rpmmacrodir}/macros.vlc
%changelog
%autochangelog
Loading…
Cancel
Save