<div dir="ltr"><div>Kevin Reid:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><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.</div></blockquote><div><br></div><div>A very solid idea. We need to focus on getting the rust-N ports into place to start.<br></div><div><br></div><div>David Gilman:</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div>The thing blocking me, and probably anyone else in the project, from<br>
bumping the version, and also from testing/updating other ports, is<br>
that I don't have access to build machines with older MacOS X<br>
releases.</div></blockquote><div><br></div><div>Do you need the older macOS environments just to test the Rust update, or do you need them to build the bootstrap compilers for these environments?</div><div><br></div><div>Because if it's the former, then I think we should  just move forward using the buildbots.  We need to get the Rust 1.(X-1) bootstrap compilers built</div><div>and hosted somewhere, then verify that the latest Rust (1.66.0 as of now) can be built  in Github CI.  Once that works, we should just commit the</div><div>update and observe via buildbot status which macOS versions are failing, and do our best to resolve each broken environment over time.<br></div><div><br></div><div>At this point, upgrading incrementally across environments makes more sense than trying to verify it works in every single environment before updating.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Dec 13, 2022 at 8:31 PM Kevin Reid <<a href="mailto:kpreid@switchb.org">kpreid@switchb.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><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" target="_blank">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><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><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" target="_blank">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" target="_blank">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" target="_blank">https://rustup.rs</a></div><div><font face="arial, sans-serif">[2]: </font><a href="https://rust-lang.github.io/rustup/overrides.html" target="_blank">https://rust-lang.github.io/rustup/overrides.html</a></div><div>[3]: <a href="https://rust-lang.github.io/rustup/installation/package-managers.html" target="_blank">https://rust-lang.github.io/rustup/installation/package-managers.html</a></div></div></div>
</blockquote></div>