Hi packagers,
I just had an interesting issue with zypper and file conflicts and wanted to know what the "correct" way is to handle this situation.
I got this error when I tried to update a package I'm packaging from version 0.58 to 0.61:
File /usr/share/pipewire/hardware-profiles/default/pipewire.conf.d/filter-chain.conf
from install of
steamdeck-dsp-0.61.0-16.1.x86_64 (yuga_unstable)
conflicts with file
/usr/share/pipewire/hardware-profiles/valve-jupiter/pipewire.conf.d/filter-chain.conf
from install of
steamdeck-dsp-0.61.0-16.1.x86_64 (yuga_unstable)
which I found odd: A package has a conflict with itself on two different files?
I looked at the content of both files and saw: In version 0.58 /usr/share/pipewire/hardware-profiles/default is a symlink to /usr/share/pipewire/hardware-profiles/valve-jupiter, in version 0.61, they are seperate and the filter-chain.conf's in them differ.
I fixed the issue by adding
%pretrans
# if user has the old version symlinked, remove it before we install the new real dir
if [ -L %{_datadir}/pipewire/hardware-profiles/default ]; then
rm -f %{_datadir}/pipewire/hardware-profiles/default
fi
to my spec file, but it feels wrong. I shouldn't need to remove the symlink before installing the package (it fixed it though).
So, I was wondering if my spec file is incorrect. Do I need to specify symlinks in a special way?
This is the spec file:
Name: steamdeck-dsp
Version: 0.0.git.1816.0520dcba
Release: 7%{?dist}
Summary: Steamdeck Audio Processing
License: GPLv2
URL: https://github.com/ublue-os/bazzite
Source0: valve-hardware-audio-processing-%{version}.tar.xz
Patch0: fedora.patch
Requires: wireplumber
Requires: pipewire-modules-0_3
Requires: ladspa-rnnoise
Requires: systemd
BuildRequires: pipewire-modules-0_3
BuildRequires: ladspa-rnnoise
BuildRequires: wireplumber
BuildRequires: make
BuildRequires: faust
BuildRequires: faust-devel
BuildRequires: boost-devel
BuildRequires: lv2-devel
BuildRequires: gcc-c++
BuildRequires: ladspa-devel
BuildRequires: xz
BuildRequires: systemd
%description
Steamdeck Audio Processing
# Disable debug packages
%define debug_package %{nil}
%prep
%setup -n valve-hardware-audio-processing-%{version}
%patch 0 -p1
%build
%make_build FAUSTINC="/usr/include/faust" FAUSTLIB="/usr/share/faust"
%install
mkdir -p %{buildroot}/run/wireplumber
%make_install DEST_DIR="%{buildroot}" LIB_DIR="%{buildroot}%{_libdir}"
mkdir -p %{buildroot}%{_datadir}/licenses/%{name}/
cp LICENSE %{buildroot}%{_datadir}/licenses/%{name}/LICENSE
xz --check=crc32 %{buildroot}%{_prefix}/lib/firmware/amd/sof/*
xz --check=crc32 %{buildroot}%{_prefix}/lib/firmware/amd/sof-tplg/*
# This lists all the files that are included in the rpm package and that
# are going to be installed into target system where the rpm is installed.
%files
%license LICENSE
%{_prefix}/lib/firmware/amd/
%{_prefix}/lib/firmware/amd/*
#%{_libdir}/lv2/svg
#%{_libdir}/lv2/svg/valve_deck_*
%{_libdir}/lv2
%{_libdir}/lv2/valve_*
%{_datadir}/alsa/ucm2
%{_datadir}/alsa/ucm2/*
%{_datadir}/pipewire/hardware-profiles
%{_datadir}/pipewire/hardware-profiles/default
%{_datadir}/pipewire/hardware-profiles/valve-galileo
%{_datadir}/pipewire/hardware-profiles/pipewire-hwconfig
%{_datadir}/pipewire/hardware-profiles/valve-galileo/pipewire.conf.d
%{_datadir}/pipewire/hardware-profiles/pipewire-hwconfig
#%{_datadir}/wireplumber/bluetooth.lua.d/*.lua
#%{_prefix}/share/wireplumber/main.lua.d
#%{_datadir}/wireplumber/main.lua.d/*.lua
#%{_datadir}/wireplumber/scripts/*.lua
%{_prefix}/lib/systemd/system/multi-user.target.wants/wireplumber-sysconf.service
%{_prefix}/lib/systemd/system/wireplumber-sysconf.service
%{_prefix}/lib/systemd/system/multi-user.target.wants/pipewire-sysconf.service
%{_prefix}/lib/systemd/system/pipewire-sysconf.service
%{_prefix}/share/wireplumber/hardware-profiles
%{_prefix}/share/wireplumber/hardware-profiles/*
/etc/wireplumber
# Finally, changes from the latest release of your application are generated from
# your project's Git history. It will be empty until you make first annotated Git tag.
%changelog
Not too pretty, but it worked (so far).
The package can be found here:
https://build.opensuse.org/package/show/devel:microos:yuga:unstable/steamde…
I'm very curious to hear what you think how this would need to be handled, I would like to prevent these situations in the future :)
Sincerely,
Tobias G.
Dear fellow openSuse packagers!
CMake prepares for a new major release 4.0. By default this will break every package that requires a minimum version of CMake <= 3.5.
Can we create in OBS a mass rebuild with the latest release candidate of CMake 4.0 to see the fallout? I don't know how to do it and if I am allowed to do so.
This would help to identify which package needs to be patched or even better, we can reach out to upstream with patches.
Is it worth to open an issue to track the packages which needs to be addressed?
By the way, SUSE libraries might be affected, too. For example libsolv has an according open merge request since last December, see
https://github.com/openSUSE/libsolv/pull/575
Bye
Christoph
--
Most customers will not accept source code with compile errors in it.
Dan Saks, CppCon 2016 (https://youtu.be/D7Sd8A6_fYU)