<div dir="ltr"><div dir="ltr">On Tue, Dec 13, 2022 at 7:50 AM Christopher Jones <<a href="mailto:jonesc@hep.phy.cam.ac.uk">jonesc@hep.phy.cam.ac.uk</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="overflow-wrap: break-word;"><div>… move to a model where the version is part of the port name, e.g. the current one would be called something like rust-1.61. ... </div></div></blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="overflow-wrap: break-word;"><div>1. Add a shim port ‘rust’ which simply installs sym-links etc. to the ‘current best version’ that mimics the current installation, i.e. in the main prefix. If done well, users should then be blind to the changes above.<br></div><div>2. Users that want an older rust could explicitly depend on and use a specific versioned rust-N</div></div></blockquote><div><br></div><div>A suggestion: if this is done, the shim port would ideally work in the same fashion as the "rustup" [1] Rust installation manager tool does. That is, the command shims are not just symlinks, but a binary that invokes the chosen version, which can be <a href="https://rust-lang.github.io/rustup/overrides.html">overridden on a per-project or per-user basis</a> [2], or at the command line with a special command argument like <font face="monospace">cargo +1.61.0 build. </font><span style="font-family:arial,sans-serif">The advantage this gives users is that MacPorts-installed Rust will automatically work with existing Rust projects which, for whatever reason, wish to use a specific toolchain version, as well as typical advice in tutorials.</span></div><div><font face="arial, sans-serif"><br></font></div><div><font face="arial, sans-serif">Almost certainly, the simplest way to do this would be for the shim port to actually itself be rustup, <a href="https://rust-lang.github.io/rustup/installation/package-managers.html">configured to know about the MacPorts-installed versions</a> [3]. I believe this should work seamlessly, other than perhaps configuring that toolchain link and setting the default toolchain (which is essentially like the </font><font face="monospace">port select</font><font face="arial, sans-serif"> mechanism in MacPorts) — which could be, at worst, a note printed at installation telling the user to run the link and default commands.</font></div><div><font face="arial, sans-serif"><br></font></div><div><font face="arial, sans-serif">This would also allow users who wish to use Rust versions not packaged by MacPorts to obtain rustup itself from MacPorts.</font></div><div><font face="arial, sans-serif"><br></font></div><div><font face="arial, sans-serif">(rustup has a self-update mechanism, but I believe that can be disabled for packaged versions.)</font></div><div><font face="arial, sans-serif"><br></font></div><div><font face="arial, sans-serif">[1]: </font><a href="https://rustup.rs">https://rustup.rs</a></div><div><font face="arial, sans-serif">[2]: </font><a href="https://rust-lang.github.io/rustup/overrides.html">https://rust-lang.github.io/rustup/overrides.html</a></div><div>[3]: <a href="https://rust-lang.github.io/rustup/installation/package-managers.html">https://rust-lang.github.io/rustup/installation/package-managers.html</a></div></div></div>