Je n'ai pas répondu à ce message plus tôt car je n'avais pas encore implémenté le système de "fournitures" (provides).
Pour le moment, si B fournit Plop, ça crée un "paquet virtuel" Plop. En fait, comme paquet virtuel, c'est une simple entrée dans la table des chaînes de caractères (mais bon, c'est un détail technique).
Bref, C install D, et D supprime B. Actuellement, ça supprimera A (car avec les provides, des dépendances inverses sont crées, etc). Seulement, comme c'est un simple système de dépendances inverses, ce n'est pas répété dans le code, et je peux faire un truc plus complexe.
Prenons A qui dépend de B, C ou D. Je veux supprimer D. Nous crées donc 3 branches : une où on supprime D et A, une où on supprime D et installe C, une où on supprime D et installe B. C'est simple à faire, le format de la BDD le permet (j'aime ce format, il permet plein de choses).
Reprenons donc notre exemple : D supprime B. B va donc créer deux branches : une où il supprime A ... et une où il installe E ! Voilà, c'est fait, le problème est résolu, et en quelques lignes seulement (enfin de crois, j'ai pas encore codé).
[^] # Re: Cas complexes
Posté par steckdenis . En réponse au journal Résolution des dépendances par système de branches. Évalué à 2.
Pour le moment, si B fournit Plop, ça crée un "paquet virtuel" Plop. En fait, comme paquet virtuel, c'est une simple entrée dans la table des chaînes de caractères (mais bon, c'est un détail technique).
Bref, C install D, et D supprime B. Actuellement, ça supprimera A (car avec les provides, des dépendances inverses sont crées, etc). Seulement, comme c'est un simple système de dépendances inverses, ce n'est pas répété dans le code, et je peux faire un truc plus complexe.
Prenons A qui dépend de B, C ou D. Je veux supprimer D. Nous crées donc 3 branches : une où on supprime D et A, une où on supprime D et installe C, une où on supprime D et installe B. C'est simple à faire, le format de la BDD le permet (j'aime ce format, il permet plein de choses).
Reprenons donc notre exemple : D supprime B. B va donc créer deux branches : une où il supprime A ... et une où il installe E ! Voilà, c'est fait, le problème est résolu, et en quelques lignes seulement (enfin de crois, j'ai pas encore codé).