Opened 2 hours ago
#70917 new enhancement
port migrate/restore enhancement request
Reported by: | pietvo (Pieter van Oostrum) | Owned by: | |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | |
Keywords: | Cc: | ||
Port: |
Description
I did a sudo port migrate
after installing a new OS version (Sonoma). However migrate
failed because there was a dependency cycle in my ports: graphviz
(+pangocairo+rsvg
) => librsvg
=> vala
=> graphviz
. And then all ports depending on these three also fail, which is quite a number.
The solution to break this cycle is to first install graphviz -rsvg
, and then vala
and librsvg
, and finally graphviz +rsvg
. However port migrate
cannot do this. A solution would have been to install graphviz -rsvg
befor the migration, but as I detected this problem after the migration attempt it was too late to do this. Also I couldn't find where the snapshot information was stored, otherwise I might have been able to edit that information.
So I "fixed" it by doing the install as described above, and then running sudo port restore --last
. Unfortunately this deactivates everything, and does the check for the cyclic dependency again, so this doesn't solve the problem. I ended up by manually going through the migration/restore log and the installing the failed ports with sudo port install
. However, this is tedious and error prone. The idea of port migrate
is that everything should go automatically.
Another problem that I can see is when a port requires that another one (or itself) must be deactivated before installing. For example I have sigil
and it requires that libzip
be deactivated before its installation. With the current migrate you can't do this. And you have no guarantee that migrate
or restore
wouldn't install libzip
before sigil
.
So my request is to give port restore
an option (e.g. --continue
), that does not deactivate the already installed ports and doesn't check dependencies for these. (Actually this is what I had expected it to do.)
In this way it is possible to manually correct problems during migration, and then continue with what is left over.