Skip to content
Snippets Groups Projects
  • David Kalnischkies's avatar
    a249b3e6
    reimplement build-dep via apts normal resolver · a249b3e6
    David Kalnischkies authored
    build-dep was implemented by parsing the build-dependencies of a package
    and figuring out which packages to install/remove based on this. That
    means that for the first level of dependencies build-dep was
    implementing its very own resolver with all the benefits (aka: bugs)
    this gives us for not using the existing resolver for all levels.
    
    Making this work involves generating a dummy binary package with fitting
    Depends and Conflicts and as we can't create them out of thin air the
    cache generation needs to be involved so we end up writing a Packages
    file which we want to parse – after we have parsed the other Packages
    files already. With .dsc/.deb files we could add them before we started
    parsing anything.
    
    With a bit of care we can avoid generating too much data we have to
    throw away again (as many parts assume that e.g. the count of packages
    doesn't change midair), so that on a speed front there shouldn't be
    much of a difference, but output can be slightly confusing as if we have
    a completely valid cache on disk the "Reading package lists... Done" is
    printed two times – but apt is pretty quick about it in that case.
    
    Closes: #137560, #444930, #489911, #583914, #728317, #812173
    a249b3e6
    History
    reimplement build-dep via apts normal resolver
    David Kalnischkies authored
    build-dep was implemented by parsing the build-dependencies of a package
    and figuring out which packages to install/remove based on this. That
    means that for the first level of dependencies build-dep was
    implementing its very own resolver with all the benefits (aka: bugs)
    this gives us for not using the existing resolver for all levels.
    
    Making this work involves generating a dummy binary package with fitting
    Depends and Conflicts and as we can't create them out of thin air the
    cache generation needs to be involved so we end up writing a Packages
    file which we want to parse – after we have parsed the other Packages
    files already. With .dsc/.deb files we could add them before we started
    parsing anything.
    
    With a bit of care we can avoid generating too much data we have to
    throw away again (as many parts assume that e.g. the count of packages
    doesn't change midair), so that on a speed front there shouldn't be
    much of a difference, but output can be slightly confusing as if we have
    a completely valid cache on disk the "Reading package lists... Done" is
    printed two times – but apt is pretty quick about it in that case.
    
    Closes: #137560, #444930, #489911, #583914, #728317, #812173