forked from pool/kernel-firmware-nvidia
Fix zypper conflict about directory -> symlink workaround (bsc#1244458) #5
@@ -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>
|
||||||
|
|
||||||
|
@@ -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
55
post
@@ -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
|
||||||
|
Reference in New Issue
Block a user