Package: virtualbox-dkms
Version: 6.1.22-dfsg-1
On a multiarch environment with a 32 bit version of dpkg,
when building for a 64 kernel (both running and installed but not
running at the moment of building)
the build fails beacause BUILD_TARGET_ARCH is set to i686 and this
triggers the use of "__cdecl" in various typedef.
I noticed that in the "Makefile-header.gmk" of the three actual kernel
modules,
the BUILD_TARGET_ARCH_DEF variable, that later reflects in
BUILD_TARGET_ARCH,
is set at line 48 by the shell command
$(shell dpkg-architecture -qDEB_HOST_GNU_CPU)
In the original package from virtualbox.org, the command is
$(shell uname -m)
I feel that the second method is a bit better, but the main problem is
that it seems that the variable ARCH is not set at all, causing
BUILD_TARGET_ARCH_DEF to be assigned to BUILD_TARGET_ARCH.
If I manually set ARCH := x86_64 or BUILD_TARGET_ARCH := amd64, inside
the Makefile-header.gmk, the build succeeds.
uname -a
Linux ics-18-31 5.10.0-4-amd64 #1 SMP Debian 5.10.19-1 (2021-03-02)
x86_64 GNU/Linux
dpkg 1.20.9
dkms 2.8.4-4
Regards
Claudio