Fix zypper conflict about directory -> symlink workaround (bsc#1244458) #5

Merged
tiwai merged 1 commits from tiwai/kernel-firmware-nvidia:main into main 2025-06-12 10:05:34 +02:00
3 changed files with 47 additions and 68 deletions

View File

@@ -1,3 +1,8 @@
-------------------------------------------------------------------
Thu Jun 12 07:05:23 UTC 2025 - Takashi Iwai <tiwai@suse.com>
- Fix zypper conflict about directory -> symlink workaround (bsc#1244458)
------------------------------------------------------------------- -------------------------------------------------------------------
Thu Jun 5 10:45:00 UTC 2025 - Takashi Iwai <tiwai@suse.com> Thu Jun 5 10:45:00 UTC 2025 - Takashi Iwai <tiwai@suse.com>

View File

@@ -169,41 +169,28 @@ scripts/install-licenses.sh nvidia %{buildroot}%{_licensedir}/%{name}
install -c -D -m 0644 WHENCE %{buildroot}%{_licensedir}/%{name}/WHENCE install -c -D -m 0644 WHENCE %{buildroot}%{_licensedir}/%{name}/WHENCE
install -c -D -m 0644 README.md %{buildroot}%{_docdir}/%{name}/README.md install -c -D -m 0644 README.md %{buildroot}%{_docdir}/%{name}/README.md
%pre %pretrans -p <lua>
# ugly workaround for changing nvidia/ad103 & co to symlinks (bsc#1243843) if not macros then
for d in ad103 ad104 ad106 ad107; do fwdir = "/lib/firmware"
if [ ! -L %{_firmwaredir}/nvidia/$d ]; then
if [ -d %{_firmwaredir}/nvidia/$d ]; then
mv %{_firmwaredir}/nvidia/$d %{_firmwaredir}/nvidia/$d.xxxold
fi
fi
done
%post
# ugly workaround (bsc#1243843)
if [ -d %{_firmwaredir}/nvidia/ad103.xxxold ]; then
for d in ad103 ad104 ad106 ad107; do
mv %{_firmwaredir}/nvidia/$d %{_firmwaredir}/nvidia/$d.xxxnew
if [ -d %{_firmwaredir}/nvidia/$d.xxxold ]; then
mv %{_firmwaredir}/nvidia/$d.xxxold %{_firmwaredir}/nvidia/$d
fi
done
else else
%{?regenerate_initrd_post} fwdir = macros._firmwaredir
fi end
paths = {"ad103", "ad104", "ad106", "ad107"}
%postun for i = 1, 4 do
%{?regenerate_initrd_post} path = fwdir .. "/nvidia/" .. paths[i]
st = posix.stat(path)
%posttrans if st and st.type == "directory" then
# ugly workaround (bsc#1243843) status = os.rename(path, path .. ".rpmmoved")
for d in ad103 ad104 ad106 ad107; do if not status then
if [ -L %{_firmwaredir}/nvidia/$d.xxxnew ]; then suffix = 0
rm -rf %{_firmwaredir}/nvidia/$d while not status do
mv %{_firmwaredir}/nvidia/$d.xxxnew %{_firmwaredir}/nvidia/$d suffix = suffix + 1
fi status = os.rename(path .. ".rpmmoved", path .. ".rpmmoved." .. suffix)
done end
%{?regenerate_initrd_posttrans} os.rename(path, path .. ".rpmmoved")
end
end
end
%files %files
%doc %{_docdir}/%{name} %doc %{_docdir}/%{name}

55
post
View File

@@ -1,35 +1,22 @@
%pre %pretrans -p <lua>
# ugly workaround for changing nvidia/ad103 & co to symlinks (bsc#1243843) if not macros then
for d in ad103 ad104 ad106 ad107; do fwdir = "/lib/firmware"
if [ ! -L %{_firmwaredir}/nvidia/$d ]; then
if [ -d %{_firmwaredir}/nvidia/$d ]; then
mv %{_firmwaredir}/nvidia/$d %{_firmwaredir}/nvidia/$d.xxxold
fi
fi
done
%post
# ugly workaround (bsc#1243843)
if [ -d %{_firmwaredir}/nvidia/ad103.xxxold ]; then
for d in ad103 ad104 ad106 ad107; do
mv %{_firmwaredir}/nvidia/$d %{_firmwaredir}/nvidia/$d.xxxnew
if [ -d %{_firmwaredir}/nvidia/$d.xxxold ]; then
mv %{_firmwaredir}/nvidia/$d.xxxold %{_firmwaredir}/nvidia/$d
fi
done
else else
%{?regenerate_initrd_post} fwdir = macros._firmwaredir
fi end
paths = {"ad103", "ad104", "ad106", "ad107"}
%postun for i = 1, 4 do
%{?regenerate_initrd_post} path = fwdir .. "/nvidia/" .. paths[i]
st = posix.stat(path)
%posttrans if st and st.type == "directory" then
# ugly workaround (bsc#1243843) status = os.rename(path, path .. ".rpmmoved")
for d in ad103 ad104 ad106 ad107; do if not status then
if [ -L %{_firmwaredir}/nvidia/$d.xxxnew ]; then suffix = 0
rm -rf %{_firmwaredir}/nvidia/$d while not status do
mv %{_firmwaredir}/nvidia/$d.xxxnew %{_firmwaredir}/nvidia/$d suffix = suffix + 1
fi status = os.rename(path .. ".rpmmoved", path .. ".rpmmoved." .. suffix)
done end
%{?regenerate_initrd_posttrans} os.rename(path, path .. ".rpmmoved")
end
end
end