dpkg-cross: Cannot substitute $(DEB_HOST_GNU_TYPE) in definition of crossdir.
Hello People,
I've found a problem while using my backported for Debian 'sarge'
dpkg-cross 1.32 package (I only changed Build-Depends to stable
debhelper).
I'm trying to convert amd64 lib packages to i386, because I would
like to build my unofficial amd64 Debian packages and backports
on i386 box with Intel processor:
$ wget http://ftp.de.debian.org/debian-amd64/debian/pool/main/g/glibc/libc6_2.3.2.ds1-22sarge4_amd64.deb
$ wget http://ftp.de.debian.org/debian-amd64/debian/pool/main/g/glibc/libc6-dev_2.3.2.ds1-22sarge4_amd64.deb
$ wget http://ftp.de.debian.org/debian-amd64/debian/pool/main/l/linux-kernel-headers/linux-kernel-headers_2.5.999-test7-bk-17_amd64.deb
$ wget http://ftp.de.debian.org/debian-amd64/debian/pool/main/d/db1-compat/libdb1-compat_2.1.3-7_amd64.deb
$ ls l*amd64.deb
libc6_2.3.2.ds1-22sarge4_amd64.deb
libc6-dev_2.3.2.ds1-22sarge4_amd64.deb
libdb1-compat_2.1.3-7_amd64.deb
linux-kernel-headers_2.5.999-test7-bk-17_amd64.deb
If I run dpkg-cross tool with commented out default value of
crossdir variable ($(CROSSBASE)/$(DEB_HOST_GNU_TYPE))
in /etc/dpkg-cross/cross-compile file, then it puts the files
of package in /usr/x86_64-linux-gnu/ directory:
$ dpkg-cross -a amd64 -b l*amd64.deb
Building libc6-amd64-cross_2.3.2.ds1-22sarge4_all.deb
Building libc6-dev-amd64-cross_2.3.2.ds1-22sarge4_all.deb
Building libdb1-compat-amd64-cross_2.1.3-7_all.deb
Building linux-kernel-headers-amd64-cross_2.5.999-test7-bk-17_all.deb
$ mkdir deb
$ dpkg -x libc6-amd64-cross_2.3.2.ds1-22sarge4_all.deb deb/
$ find deb |head -5
deb
deb/usr
deb/usr/x86_64-linux-gnu
deb/usr/x86_64-linux-gnu/lib
deb/usr/x86_64-linux-gnu/lib/ld-2.3.2.so
However dpkg-architecture command says that value of
$DEB_HOST_GNU_TYPE variable should be rather x86_64-linux:
$ dpkg-architecture -aamd64
dpkg-architecture: warning: Specified GNU system type x86_64-linux does not match gcc system type i386-linux.
DEB_BUILD_ARCH=i386
DEB_BUILD_GNU_CPU=i386
DEB_BUILD_GNU_SYSTEM=linux
DEB_BUILD_GNU_TYPE=i386-linux
DEB_HOST_ARCH=amd64
DEB_HOST_GNU_CPU=x86_64
DEB_HOST_GNU_SYSTEM=linux
DEB_HOST_GNU_TYPE=x86_64-linux
If I set crossdir variable to $(CROSSBASE)/$(DEB_HOST_GNU_TYPE)
in /etc/dpkg-cross/cross-compile file, then dpkg-cross utility
can't substitute it:
$ dpkg-cross -a amd64 -b l*amd64.deb
dpkg-cross: Cannot substitute $(DEB_HOST_GNU_TYPE) in definition of crossdir.
Building libc6-amd64-cross_2.3.2.ds1-22sarge4_all.deb
Building libc6-dev-amd64-cross_2.3.2.ds1-22sarge4_all.deb
Building libdb1-compat-amd64-cross_2.1.3-7_all.deb
Building linux-kernel-headers-amd64-cross_2.5.999-test7-bk-17_all.deb
and the package files are placed into /usr/lib/ directory:
$ rm -rf deb/*
$ dpkg -x libc6-amd64-cross_2.3.2.ds1-22sarge4_all.deb deb/
$ find deb |head -5
deb
deb/usr
deb/usr/lib
deb/usr/lib/ld-2.3.2.so
deb/usr/lib/libanl-2.3.2.so
Is it not a strange? I think you should know about it problem.
Below are my Debian 'sarge' system settings:
* dpkg-dev: 1.10.28
* dpkg-cross: 1.32
My best regards,
Pawel Tecza
PS. Please CC me if you reply, because I'm not subscribed to that
mailing list. Thank you! :)
Reply to: