diff --git a/vlc/vlc.spec b/vlc/vlc.spec new file mode 100644 index 0000000..a322389 --- /dev/null +++ b/vlc/vlc.spec @@ -0,0 +1,238 @@ +# SPDX-FileCopyrightText: (C) 2026 Institute of Software, Chinese Academy of Sciences (ISCAS) +# SPDX-FileCopyrightText: (C) 2026 openRuyi Project Contributors +# SPDX-FileContributor: HNO3Miracle +# +# 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}/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