Files
desktop/vlc/vlc.spec
2026-04-12 22:07:17 +08:00

241 lines
7.7 KiB
RPMSpec

# SPDX-FileCopyrightText: (C) 2026 Institute of Software, Chinese Academy of Sciences (ISCAS)
# SPDX-FileCopyrightText: (C) 2026 openRuyi Project Contributors
# SPDX-FileContributor: HNO3Miracle <xiangao.or@isrc.iscas.ac.cn>
# SPDX-FileContributor: jingyupu <pujingyu@iscas.ac.cn>
#
# SPDX-License-Identifier: MulanPSL-2.0
# VLC 3.0.x still uses the autotools configure/make flow.
# The upstream Qt interface is tied to Qt5, while openRuyi currently ships Qt6
# in-tree. Keep the first build focused on the core playback engine and non-Qt
# interfaces, then revisit GUI enablement after a Qt5 strategy is decided.
%bcond qt 1
%bcond lua 1
%bcond live555 0
%bcond upnp 0
%bcond notify 1
%bcond wayland 0
Name: vlc
Version: 3.0.23
Release: %autorelease
Summary: Multimedia player and streaming framework
License: GPL-2.0-or-later AND LGPL-2.1-or-later
URL: https://www.videolan.org/vlc/
VCS: git:https://code.videolan.org/videolan/vlc.git
#!RemoteAsset: sha256:e891cae6aa3ccda69bf94173d5105cbc55c7a7d9b1d21b9b21666e69eff3e7e0
Source0: https://get.videolan.org/vlc/%{version}/vlc-%{version}.tar.xz
BuildSystem: autotools
# skins2 depends on the Qt interface and is therefore deferred together with
# the Qt5 stack question.
BuildOption(conf): --disable-skins2
# These codec backends are not packaged in-tree yet.
BuildOption(conf): --disable-a52
BuildOption(conf): --disable-faad
BuildOption(conf): --disable-mad
# chromaprint support needs extra multimedia stack work and is not required for
# a functional first package.
BuildOption(conf): --disable-chromaprint
# chromecast support needs protobuf-lite handling that has not been validated
# in openRuyi packaging yet.
BuildOption(conf): --disable-chromecast
# JACK is intentionally deferred until the preferred jack provider strategy in
# openRuyi is settled.
BuildOption(conf): --disable-jack
# libplacebo is not packaged in-tree yet.
BuildOption(conf): --disable-libplacebo
BuildOption(conf): --enable-libgcrypt
BuildOption(conf): --enable-libva
BuildOption(conf): --enable-vdpau
BuildOption(conf): --enable-avcodec
BuildOption(conf): --enable-avformat
BuildOption(conf): --enable-swscale
BuildOption(conf): --enable-alsa
BuildOption(conf): --enable-pulse
BuildOption(conf): --enable-dbus
BuildOption(conf): --enable-dvdread
BuildOption(conf): --enable-dvdnav
BuildOption(conf): --enable-samplerate
BuildOption(conf): --enable-taglib
BuildOption(conf): --enable-gnutls
BuildOption(conf): --enable-xcb
BuildOption(conf): --enable-xvideo
# Upstream builds helper generators with a native C compiler during configure.
BuildOption(conf): BUILDCC=gcc
%if %{with qt}
BuildOption(conf): --enable-qt
%else
# VLC 3.0.x GUI still requires Qt5, while openRuyi currently ships Qt6 in-tree.
BuildOption(conf): --disable-qt
%endif
%if %{with lua}
BuildOption(conf): --enable-lua
%else
BuildOption(conf): --disable-lua
%endif
%if %{with live555}
BuildOption(conf): --enable-live555
%else
# live555 is not packaged in-tree yet.
BuildOption(conf): --disable-live555
%endif
%if %{with upnp}
BuildOption(conf): --enable-upnp
%else
# libupnp is not packaged in-tree yet.
BuildOption(conf): --disable-upnp
%endif
%if %{with notify}
BuildOption(conf): --enable-notify
%else
BuildOption(conf): --disable-notify
%endif
%if %{with wayland}
BuildOption(conf): --enable-wayland
%else
# Upstream marks Wayland support as incomplete and it also needs wayland-scanner
# provider validation in openRuyi before we make it a hard requirement.
BuildOption(conf): --disable-wayland
%endif
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: bison
BuildRequires: desktop-file-utils
BuildRequires: flex
BuildRequires: gettext
BuildRequires: libtool
BuildRequires: make
BuildRequires: pkgconfig(alsa)
BuildRequires: pkgconfig(dbus-1)
BuildRequires: pkgconfig(dvdnav)
BuildRequires: pkgconfig(dvdread)
BuildRequires: pkgconfig(fontconfig)
BuildRequires: pkgconfig(freetype2)
BuildRequires: pkgconfig(fribidi)
BuildRequires: pkgconfig(gnutls)
BuildRequires: pkgconfig(harfbuzz)
BuildRequires: pkgconfig(libavcodec)
BuildRequires: pkgconfig(libavformat)
BuildRequires: pkgconfig(libavutil)
BuildRequires: pkgconfig(libass)
BuildRequires: pkgconfig(libgcrypt)
BuildRequires: pkgconfig(libpulse)
BuildRequires: pkgconfig(libsecret-1)
BuildRequires: pkgconfig(libva)
BuildRequires: pkgconfig(libva-drm)
BuildRequires: pkgconfig(libva-x11)
BuildRequires: pkgconfig(libswscale)
BuildRequires: pkgconfig(libxml-2.0)
BuildRequires: pkgconfig(ogg)
BuildRequires: pkgconfig(samplerate)
BuildRequires: pkgconfig(taglib)
BuildRequires: pkgconfig(vdpau)
BuildRequires: pkgconfig(vorbis)
BuildRequires: pkgconfig(x11)
BuildRequires: pkgconfig(xcb)
BuildRequires: pkgconfig(xcb-composite)
BuildRequires: pkgconfig(xcb-keysyms)
BuildRequires: pkgconfig(xcb-randr)
BuildRequires: pkgconfig(xcb-shm)
BuildRequires: pkgconfig(xcb-xv)
BuildRequires: pkgconfig(xproto)
%if %{with qt}
BuildRequires: pkgconfig(Qt6Core)
BuildRequires: pkgconfig(Qt6Gui)
BuildRequires: pkgconfig(Qt6Svg)
BuildRequires: pkgconfig(Qt6Widgets)
# Qt6 has no standalone QtX11Extras module; X11 integration is in QtGui.
%endif
%if %{with live555}
BuildRequires: pkgconfig(live555)
%endif
%if %{with lua}
BuildRequires: pkgconfig(lua)
%endif
%if %{with upnp}
BuildRequires: pkgconfig(libupnp)
%endif
%if %{with notify}
BuildRequires: pkgconfig(gtk+-3.0)
BuildRequires: pkgconfig(libnotify)
%endif
%if %{with wayland}
BuildRequires: pkgconfig(wayland-client)
BuildRequires: pkgconfig(wayland-egl)
BuildRequires: pkgconfig(wayland-protocols)
BuildRequires: pkgconfig(wayland-scanner)
%endif
%description
VLC is a libre multimedia player and streaming framework capable of playing
local files, optical media and network streams through libvlc and a large
collection of loadable plugins.
This initial openRuyi build focuses on the core playback engine, common audio
and video paths and development files. The upstream Qt5 interface is kept
disabled for now because openRuyi currently ships Qt6 in-tree and the GUI
enablement strategy needs to be decided separately.
%package devel
Summary: Development files for %{name}
Requires: %{name}%{?_isa} = %{version}-%{release}
%description devel
This package contains headers, pkg-config metadata and linker symlinks for
developing applications against libvlc and libvlccore.
%package doc
Summary: Additional documentation for %{name}
%description doc
This package contains upstream examples, Lua integration notes and additional
reference documentation for VLC and libvlc.
%install -a
# Drop an internal static archive that is not meant to be shipped.
rm -f %{buildroot}%{_libdir}/vlc/libcompat.a
# Keep translations in the main package language manifest instead of generating
# lang subpackages, which avoids invalid subpackage names from locale variants.
%find_lang %{name}
%check
# TODO: re-enable checks after deciding the Qt5 packaging strategy for VLC 3.x.
# The upstream check suite runs check_POTFILES.sh, which expects generated Qt
# UI headers even when the Qt interface is disabled.
:
%files -f %{name}.lang
%license COPYING COPYING.LIB
%{_bindir}/cvlc
%{_bindir}/qvlc
%{_bindir}/rvlc
%{_bindir}/vlc
%{_bindir}/vlc-wrapper
%{_datadir}/applications/*vlc*.desktop
%{_datadir}/icons/hicolor/
%{_datadir}/kde4/apps/solid/actions/*vlc*.desktop
%{_datadir}/metainfo/*vlc*.xml
%{_datadir}/vlc/
# Runtime libraries
%{_libdir}/libvlc.so.*
%{_libdir}/libvlccore.so.*
%{_libdir}/vlc/
%{_mandir}/man1/*vlc*.1*
%files devel
%{_includedir}/vlc/
%{_libdir}/libvlc.so
%{_libdir}/libvlccore.so
%{_libdir}/pkgconfig/libvlc.pc
%{_libdir}/pkgconfig/vlc-plugin.pc
%files doc
%doc AUTHORS NEWS THANKS
%doc %{_pkgdocdir}/*
%changelog
%autochangelog