Dependency Solving Is Still Hard, but We Are Getting Better at It

Conference Paper (2020)
Author(s)

Pietro Abate (Nomadic Labs)

Roberto Di Cosmo (Institut National de Recherche en Informatique et en Automatique (INRIA), Université de Paris)

Georgios Gousios (TU Delft - Electrical Engineering, Mathematics and Computer Science)

Stefano Zacchiroli (Université de Paris, Institut National de Recherche en Informatique et en Automatique (INRIA))

Research Group
Software Engineering
DOI related publication
https://doi.org/10.1109/SANER48275.2020.9054837 Final published version
More Info
expand_more
Publication Year
2020
Language
English
Research Group
Software Engineering
Article number
9054837
Pages (from-to)
547-551
Publisher
IEEE
ISBN (print)
978-1-7281-5144-1
ISBN (electronic)
978-1-7281-5143-4
Event
27th IEEE International Conference on Software Analysis, Evolution, and Reengineering, SANER 2020 (2020-02-18 - 2020-02-21), London, Canada
Downloads counter
219
Collections
Institutional Repository
Reuse Rights

Other than for strictly personal use, it is not permitted to download, forward or distribute the text or part of it, without the consent of the author(s) and/or copyright holder(s), unless the work is under an open content license such as Creative Commons.

Abstract

Dependency solving is a hard (NP-complete) problem in all non-trivial component models due to either mutually incompatible versions of the same packages or explicitly declared package conflicts. As such, software upgrade planning needs to rely on highly specialized dependency solvers, lest falling into pitfalls such as incompleteness - a combination of package versions that satisfy dependency constraints does exist, but the package manager is unable to find it. In this paper we look back at proposals from dependency solving research dating back a few years. Specifically, we review the idea of treating dependency solving as a separate concern in package manager implementations, relying on generic dependency solvers based on tried and tested techniques such as SAT solving, PBO, MILP, etc. By conducting a census of dependency solving capabilities in state-of-the-art package managers we conclude that some proposals are starting to take off (e.g., SAT-based dependency solving) while - with few exceptions - others have not (e.g., outsourcing dependency solving to reusable components). We reflect on why that has been the case and look at novel challenges for dependency solving that have emerged since.