<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<div name="messageReplySection">
<div dir="auto">On Oct 2, 2023 at 8:13 AM +0100, Joshua Root <jmr@macports.org>, wrote:</div>
<blockquote style="border-left: thin solid rgb(26, 188, 156); margin: 5px; padding-left: 10px;">On 2/10/2023 10:36, Jimmy Yuen Ho Wong wrote:<br />
<blockquote style="border-left: thin solid rgb(230, 126, 34); margin: 5px; padding-left: 10px;">Currently, the Migration<br />
<https://trac.macports.org/wiki/Migration#ports> guide on the wiki<br />
denotes a 6-step process to restore ports after an upgrade, one of which<br />
requires the user to download a script that hasn't worked properly for a<br />
few years now (doesn't restore variants and ignore platform and arch).</blockquote>
<br />
I follow the Migration instructions on every major OS update to ensure<br />
that they still work. I haven't noticed any problems with<br />
restore_ports.tcl. It restores all requested variants, including in<br />
non-requested dependencies, as intended.<br />
<br />
I don't know what you expect it to do with platform and arch<br />
information, but if there are any specific bugs, please file tickets.<br />
<br /></blockquote>
<div dir="auto"><br />
I can't reproduce it again now that I've reinstalled all the ports manually, but I distinctly remember even after reinstalling macports-base, restoring with the myports.txt file using the Sonama base and Ventura ports lead to macports complaining about ports not having the right platform. I had to remove all the platform and arch etc information from the file to make it work.It is at this point I realized it's easier to restore with the output of `port echo request` with the versions removed.<br />
<br /></div>
<blockquote style="border-left: thin solid rgb(26, 188, 156); margin: 5px; padding-left: 10px;">
<blockquote style="border-left: thin solid rgb(230, 126, 34); margin: 5px; padding-left: 10px;">I<br />
propose a much simpler instruction like so:<br />
<br />
3. *Reinstall your ports*<br />
1. Save the list of installed ports:<br />
<br />
port echo requested | sed -E s/@[^\+]+//g > requested.txt<br />
<br />
2. Uninstall all installed ports:<br />
<br />
sudo port -f uninstall installed<br />
<br />
3. Run a regular clear out of your installation:<br />
<br />
sudo port reclaim<br />
<br />
4. Restore requested ports:<br />
<br />
sudo bash -c 'cat requested.txt | xargs port -v install'<br />
<br />
This won't necessarily restore the variants of non-requested ports<br />
correctly, and will sometimes install the same port multiple times (a<br />
requested port that is a dep of another requested port can be first<br />
installed with its default variants, then again with its previously<br />
requested variants.)<br />
<br /></blockquote>
</blockquote>
<div dir="auto"><br />
Yes it will. The requested.txt files produced this way come with variants. Before xargs hit the requested port with variant, previous requested port with the same dep in a different variant will be installed, and when xargs hits the request port variant line, the requested variant will be installed and activated. If subsequent requested ports requesting the same dep in a different variant, either this means you will have to have 2 ports with different variants with the dependents pointing to the library binary directly, or you should have requested just one variant in the first instance that will satisfy both dependents. Neither case should be a part of the restoration process. The Portfile should be fixed in the first case and the second case is readily detectable with a number of port actions. Adding a 5th step to run `port reclaim` or `port rev-upgrade` will suffice.<br /></div>
<blockquote style="border-left: thin solid rgb(26, 188, 156); margin: 5px; padding-left: 10px;">Ultimately the goal is to develop the 'port migrate' action to a state<br />
where it handles all of these considerations automatically.<br />
<https://trac.macports.org/ticket/56019></blockquote>
<div dir="auto"><br />
That ticket hasn't moved for 6 years now and there's nothing useful written in it.</div>
<blockquote style="border-left: thin solid rgb(26, 188, 156); margin: 5px; padding-left: 10px;"><br />
- Josh</blockquote>
</div>
</body>
</html>