[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#683786: apt-get cross build dependency resolution of arch:all, m-a:none packages



Package: apt
Version: 0.9.7.3
Severity: normal


Hi,

all the following is based on a recent Debian Sid amd64 debootstrap
minbase chroot with armel enabled as a foreign architecture.

Dose3 fails to satisfy the cross build dependencies for the following
packages while apt does manage to satisfy them:

        dash, file, slang2, gzip, insserv, libsigsegv, make-dfsg, mpfr4,
        pam, sysvinit

Case 1
------

The following packages build-depend on a architecture:all, M-A: none
package. Dose3 correctly detected that they cannot satisfy the cross
build dependencies because they are not marked M-A: foreign. Apt decides
to ignore that and doesnt install them at all. Apt seems to completely
ignore that build dependency and is therefor able to believe it can
satisfy it.

{package}->{dependency that dose3 detected to be unsatisfiable and apt ignores} 

dash    -> po-debconf
file    -> python
slang2  -> autoconf

two examples:

josch@hoothoot> sudo chroot ~/debian-sid-minbase apt-cache showsrc dash | grep po-debconf
Build-Depends: po-debconf
josch@hoothoot> sudo chroot ~/debian-sid-minbase apt-get --simulate -aarmel build-dep dash | grep po-debconf | wc -l
0
josch@hoothoot> sudo chroot ~/debian-sid-minbase apt-get --option Debug::BuildDeps=true --simulate -aarmel build-dep dash | grep po-debconf
Looking for po-debconf...
  Trying to install po-debconf [ armel ] < none > ( none )

Case 2
------

The following packages also build-depend on a architecture:all, M-A:
none package. Since the packages are not M-A: foreign, they should not
be used to satisfy the build-dependencies for cross building. Apt
chooses to install them anyways:

{package}->{dependency that dose3 detected to be unsatisfiable but apt installs}

gzip    -> mingw-w64
insserv -> po-debconf
libsigsegv      -> autoconf
make-dfsg       -> autoconf
mpfr4   -> texlive-latex-base
pam     -> docbook-xml
sysvinit        -> po-debconf

an example:

josch@hoothoot> sudo chroot ~/debian-sid-minbase apt-cache showsrc
Build-Depends: debhelper (>= 8), po-debconf, bash-completion
josch@hoothoot> sudo chroot ~/debian-sid-minbase apt-get --option Debug::BuildDeps=true --simulate -aarmel build-dep insserv | grep po-debconf
Looking for po-debconf...
  Trying to install po-debconf [ armel ] < none > ( none )
  po-debconf
Inst po-debconf (1.0.16+nmu2 Debian:unstable [all])
Conf po-debconf (1.0.16+nmu2 Debian:unstable [all])


It is maybe interesting to see how dash and insserv both depend on
po-debconf and how slang2 and libsigsegv both depend on autoconf in the
exact same way but apt handles them differently. In one case it decides
to ignore the dependency on po-debconf and autoconf and in the other
case it wrongly installs the package even though it is not M-A: foreign
and should therefor not satisfy that build dependency.

Case 3
------

So we see that apt sometimes decides to use arch:all, M-A: none packages
to satisfy foreign build dependencies.

Then why do the following scenarios not work as expected:

josch@hoothoot> sudo chroot ~/debian-sid-minbase apt-get --simulate -aarmel build-dep libselinux
Reading package lists... Done
Building dependency tree... Done
E: Build-Depends dependency for libselinux cannot be satisfied because the package gem2deb cannot be found

josch@hoothoot> sudo chroot ~/debian-sid-minbase apt-get --simulate -aarmel build-dep libsemanage
Reading package lists... Done
Building dependency tree... Done
E: Build-Depends dependency for libsemanage cannot be satisfied because the package gem2deb cannot be found

josch@hoothoot> sudo chroot ~/debian-sid-minbase apt-get --simulate -aarmel build-dep libffi
Reading package lists... Done
Building dependency tree... Done
E: Build-Depends dependency for libffi cannot be satisfied because the package dejagnu cannot be found

josch@hoothoot> sudo chroot ~/debian-sid-minbase apt-get --simulate -aarmel build-dep diffutils
Reading package lists... Done
Building dependency tree... Done
E: Build-Depends dependency for diffutils cannot be satisfied because the package texi2html cannot be found

gem2deb, dejagnu and texi2html are arch:all, M-A: none packages just as
mingw-w64, po-debconf, autoconf, texlive-latex-base and docbook-xml that
apt happily installed before in some cases. Why doesnt it install those
packages this time?

Maybe there is a connection to bug#666772 ?

cheers, josch


Reply to: