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

Re: Bug#201688: bibtex2html: build dependencies cannot be fulfilled



On Thu, Jul 17, 2003 at 05:40:33PM +0200, Sven Luther wrote:
> reassign 201688 apt
> severity 201688 normal
> thanks
> 
> On Thu, Jul 17, 2003 at 11:53:15AM +0200, Laurent Bonnaud wrote:
> > Package: bibtex2html
> > Version: 1.61-1
> > Severity: serious
> > 
> > 
> > Hi,
> > 
> > here is the problem:
> > 
> > # apt-get build-dep bibtex2html
> > Reading Package Lists... Done
> > Building Dependency Tree... Done
> > E: Build-Depends-Indep dependency for bibtex2html cannot be satisfied because no available versions of package ocaml-3.06-1 can satisfy version requirements
> > 
> > Shouldn't you use ocaml-base-3.06-1 instead of ocaml-3.06-1 ?
> 
> After investigation, this definitively seems like an apt-get bug, which
> is perfectly capable of finding the real package providing the virtual
> ocaml-3.06-1 when you do an apt-get install, but this seems to be not
> true when one uses apt-get build-dep.
> 
> Note to the apt maintainers :
> 
>   I am really willing to discuss this with you, as i am curious as to
>   what the real problems are with apt/dpkg and the virtual packages.
>   "You shall not use virtual dependencies" is _not_ a right why to start
>   such a discussion though, i already got that from elmo some time ago :)

It seems to be a bug in apt, as we do the same thing as the perl-api
virtual package does. I discussed it with aj and he seems to think the
same thing. I am too busy right now to look at the apt code, i just know
that it fails at :

Line 2397 of apt-get.cc :

            /*
             * If this is a virtual package, we need to check the list
             * of
             * packages that provide it and see if any of those are
             * installed
             */
            pkgCache::PrvIterator Prv = Pkg.ProvidesList();
            for (; Prv.end() != true; Prv++)
               if ((*Cache)[Prv.OwnerPkg()].InstVerIter(*Cache).end() == false)
                  break;

            // Get installed version and version we are going to install
            pkgCache::VerIterator IV = (*Cache)[Pkg].InstVerIter(*Cache);
            pkgCache::VerIterator CV = (*Cache)[Pkg].CandidateVerIter(*Cache);

            for (; CV.end() != true; CV++)
            {
               if (Cache->VS().CheckDep(CV.VerStr(),(*D).Op,(*D).Version.c_str()) == true)
                  break;
            }
            if (CV.end() == true)
               return _error->Error(_("%s dependency for %s cannot be satisfied "
                                      "because no available versions of package %s "
                                      "can satisfy version requirements"),
                                      Last->BuildDepType((*D).Type),Src.c_str(),
                                      (*D).Package.c_str());
I will try to look at it later on, but as i am not familiar with the apt
code and it has been a long time since i have programmed in c++, ...

Friendly,

Sven Luther



Reply to: