debian: fix wrong kernel version used in preinst

This script is used in the non-dkms scst package. The purpose of package
is to determine kernel location at compile-time, as opposed to the
package installation time. However, calling `uname -r` in package
installation time violates that idea because it would get some random
kernel that was running on the machine. This problem is particularly
seen in containers, because in those `uname` shows the kernel running on
the host, rather than the one running inside container.

Fix this by determining the kernel location in `preinst` script at
compile time as well.
This commit is contained in:
Konstantin Kharlamov
2021-05-19 11:59:40 +03:00
parent 65ef5e0627
commit bd2cfd4bb2
3 changed files with 4 additions and 2 deletions

View File

@@ -367,6 +367,8 @@ dpkg: ../scst_$(VERSION).orig.tar.gz
[ -z "$$DEBFULLNAME" ] || export DEBFULLNAME="Bart Van Assche" &&\
sed 's/%{scst_version}/$(VERSION)/' \
<debian/scst.dkms.in >debian/scst.dkms && \
sed 's/%{KVER}/$(KVER)/' \
<debian/scst.preinst.in >debian/scst.preinst && \
output_files=( \
../*_$(VERSION)-$(DEBIAN_REVISION)_*.deb \
../*_$(VERSION)-$(DEBIAN_REVISION)_*.ddeb \

2
debian/rules vendored
View File

@@ -29,7 +29,7 @@ export KDIR=$(DEB_KDIR_SET)
clean:
dh_testdir && \
dh_prep -Xqla_isp/TAGS -Xdebian/changelog && \
scripts/clean-source-tree -x debian/changelog -x debian/compat
scripts/clean-source-tree -x debian/changelog -x debian/compat -x debian/scst.preinst
build:
make 2release && \

View File

@@ -17,7 +17,7 @@ set -e
case "$1" in
install)
# Remove any existing ib_srpt.ko kernel modules
find "/lib/modules/$(uname -r)" -name ib_srpt.ko -exec rm {} \;
find "/lib/modules/%{KVER}" -name ib_srpt.ko -exec rm {} \;
# Remove files installed by "make install"
rm -f /usr/local/man/man5/iscsi-scstd.conf.5
rm -f /usr/local/man/man8/iscsi-scst-adm.8