Bug#477207: javac fails when run on an i386 Debian with amd64 Linux
Package: java-gcj-compat-dev
Version: 1.0.65-10
javac fails when run on an i386 Debian if the kernel is compiled
for amd64:
$ /usr/lib/jvm/java-gcj/bin/javac obj/Test.java
----------
1. ERROR in obj/Test.java (at line 1)
/* #line 22113 "configure" */
^
The type java.lang.Object cannot be resolved. It is indirectly referenced from required .class files
----------
1 problem (1 error)
Comparison of `strace's for i386 and amd64 Debian has revealed
the following suspicious syscall run on i386 Debian:
access("/usr/lib32/jvm/java-1.4.2-gcj-4.1-1.4.2.0/jre", F_OK) = -1 ENOENT
Apparently, javac deduces the path to its libraries from the
platform the kernel was built for:
$ uname -m
x86_64
$
However, the actual architecture of the system (which should be
taken into account) is different:
$ dpkg-architecture
DEB_BUILD_ARCH=i386
DEB_BUILD_ARCH_OS=linux
DEB_BUILD_ARCH_CPU=i386
DEB_BUILD_GNU_CPU=i486
DEB_BUILD_GNU_SYSTEM=linux-gnu
DEB_BUILD_GNU_TYPE=i486-linux-gnu
DEB_HOST_ARCH=i386
DEB_HOST_ARCH_OS=linux
DEB_HOST_ARCH_CPU=i386
DEB_HOST_GNU_CPU=i486
DEB_HOST_GNU_SYSTEM=linux-gnu
DEB_HOST_GNU_TYPE=i486-linux-gnu
$
This effectively prevents one from building the software
`Build-Depend'ing on `java-gcj-compat-dev' for i386 on hosts
running Linux built for amd64.
The problem was observed when running `pbuilder' with a
`base.tgz' containing i386 port of Debian etch on an otherwise
Debian amd64 host:
# uname -m
x86_64
# pbuilder create \
--basetgz /var/cache/pbuilder/base-i386.tgz \
--debootstrap debootstrap \
--debootstrapopts --arch --debootstrapopts i386 \
--distribution etch \
--mirror http://local-debian-mirror/
...
# LC_ALL=C nohup /usr/bin/time pbuilder build \
--basetgz /var/cache/pbuilder/base-i386.tgz \
.../ftp.de.debian.org/debian/pool/main/d/db4.5/db4.5_4.5.20-11.dsc &
... fails to build...
#
Reply to: