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>

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

55
post
View File

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