`fpm`: metapackages/standard dependency hierarchy

During today’s monthly call, we’ve discussed options to untangle the relationship between metapackages and standard dependencies in fpm. A tentative hierarchy rule can be summarized as:

  • Breadth-first search is to be applied to metapackages too. When two instances of the same metapackage are found down the dependency tree, the first occurrence is retained, if they have the same priority; otherwise, the highest priority item is used.

  • Three priority levels can be envisioned:

  1. User-specified “manual” dependency (git or local path): it has the top priority.
  2. Versioned metapackage syntax (not yet implemented, e.g. >=0.8.2)
  3. Unversioned metapackage syntax "*": it has the lowest priority.

I will also soon open a PR to propose an fpm 0.9.1 “bugfix” release.