%global app_id com.saivert.pwvucontrol Name: pwvucontrol Version: 0.5.2 Release: 1%{?dist} Summary: PipeWire Volume Control License: GPL-3.0-or-later URL: https://github.com/saivert/pwvucontrol Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{name}-%{version}.tar.gz # To generate the vendor tarball: # tar xf pwvucontrol-%%{version}.tar.gz # cd pwvucontrol-%%{version} # meson setup builddir # meson dist -C builddir --no-tests --include-subprojects # The dist script (build-aux/dist-vendor.sh) will produce a vendor/ directory # inside the dist tarball. Alternatively: # cargo vendor vendor # tar czf pwvucontrol-%%{version}-vendor.tar.gz vendor/ Source1: %{name}-%{version}-vendor.tar.gz BuildRequires: rust >= 1.80 BuildRequires: cargo BuildRequires: meson >= 0.59.0 BuildRequires: ninja-build BuildRequires: blueprint-compiler BuildRequires: pkgconfig(libclang.so) BuildRequires: pkgconfig(glib-2.0) >= 2.66 BuildRequires: pkgconfig(gio-2.0) >= 2.66 BuildRequires: pkgconfig(gtk4) >= 4.0.0 BuildRequires: pkgconfig(libadwaita-1) >= 1.2 BuildRequires: pkgconfig(libpipewire-0.3) >= 0.3.83 BuildRequires: pkgconfig(wireplumber-0.5) >= 0.5.11 BuildRequires: gettext BuildRequires: glib2-devel BuildRequires: desktop-file-utils BuildRequires: libappstream-glib BuildRequires: /usr/bin/appstream-util Requires: gtk4%{?_isa} Requires: libadwaita%{?_isa} Requires: pipewire-libs%{?_isa} >= 0.3.83 Requires: wireplumber-libs%{?_isa} >= 0.5.11 Requires: hicolor-icon-theme %description pwvucontrol is a volume control application for PipeWire. It provides a graphical interface for managing audio streams, similar to pavucontrol but designed specifically for PipeWire. %prep %autosetup -n %{name}-%{version} # Set up offline Cargo vendor directory mkdir -p .cargo cat > .cargo/config.toml << 'EOF' [source.crates-io] replace-with = "vendored-sources" [source."https://github.com/saivert/wireplumber.rs.git"] git = "https://github.com/saivert/wireplumber.rs.git" branch = "wp-0.5-glib-0.21-pipewire-0.9" replace-with = "vendored-sources" [source.vendored-sources] directory = "vendor" EOF # Extract the vendor tarball into the source tree tar xf %{SOURCE1} %build %meson \ --buildtype=release \ -Dprofile=default %meson_build %install %meson_install # Compile GSettings schemas %{__install} -d %{buildroot}%{_datadir}/glib-2.0/schemas/ # Update icon cache, schema, and desktop DB are handled by post scripts %find_lang %{name} %check desktop-file-validate %{buildroot}%{_datadir}/applications/%{app_id}.desktop appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/%{app_id}.metainfo.xml %post /usr/bin/update-desktop-database &>/dev/null || : /usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : /usr/bin/glib-compile-schemas %{_datadir}/glib-2.0/schemas &>/dev/null || : %postun /usr/bin/update-desktop-database &>/dev/null || : /usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : /usr/bin/glib-compile-schemas %{_datadir}/glib-2.0/schemas &>/dev/null || : %files -f %{name}.lang %license COPYING %doc README.md %{_bindir}/%{name} %{_datadir}/applications/%{app_id}.desktop %{_datadir}/glib-2.0/schemas/%{app_id}.gschema.xml %{_datadir}/icons/hicolor/*/apps/%{app_id}* %{_metainfodir}/%{app_id}.metainfo.xml %changelog %autochangelog