<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">David,<div class=""><br class=""></div><div class="">the idea is creating a dependency chain:</div><div class=""><br class=""></div><div class="">Port rust (version 1.66) depends on rust-1.65 to be build; </div><div class="">Port rust-1.65 depends on rust-1.64 to be build;</div><div class=""><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);" class="">Port rust-1.64 depends on rust-1.63 to be build;</div></div><div class="">...</div><div class=""><div class=""><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);" class=""><div style="caret-color: rgb(255, 255, 255); color: rgb(255, 255, 255);" class=""><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);" class="">Port rust-1.56 depends on rust-1.55 to be build;</div><div class=""><div class=""><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);" class="">Port rust-1.55 depends on rust-1.54 to be build;</div></div></div><div class=""><div class=""><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);" class="">Port rust-1.54 depends on mrsutc to be build.</div></div></div><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);" class=""><br class=""></div><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);" class="">:)</div><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);" class=""><br class=""></div><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);" class="">When someone would like to add rust 1.67, he need to add port rust-1.66 which should be used as bootstrap compiler.</div><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);" class=""><br class=""></div><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);" class="">I hate this way, but it is the only way to bootstrap it from scratch.</div><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);" class=""><br class=""></div><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);" class="">When mrust had support new rust, we may cut the tree by removing a lot of unused ports.</div><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);" class=""><br class=""></div><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);" class=""><br class=""></div></div></div></div><div class="">
<div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none;">-- <br class="">wbr, Kirill</div>

</div>
<div><br class=""><blockquote type="cite" class=""><div class="">On 13. Dec 2022, at 17:53, David Gilman <<a href="mailto:davidgilman1@gmail.com" class="">davidgilman1@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="auto" class=""><div dir="auto" class=""></div>The work on mrustc is novel but I don't think it solves the issues we have here. On modern systems MacPorts uses bootstrap compilers provided by Rust upstream. MCL's bootstrap compilers are for older systems.<div dir="auto" class=""><br class=""></div><div dir="auto" class=""><div dir="auto" class="">To update rust, my understanding is that you have to do the usual work of rebasing patches (my PR), but you also have to provide the binaries for older systems which I could not provide.</div><div dir="auto" class=""><br class=""></div><div dir="auto" class=""><br class=""><div class="gmail_quote" dir="auto"><div dir="ltr" class="gmail_attr">On Tue, Dec 13, 2022, 11:07 AM Kirill A. Korinsky via macports-dev <<a href="mailto:macports-dev@lists.macports.org" target="_blank" rel="noreferrer" class="">macports-dev@lists.macports.org</a>> wrote:<br class=""></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word;line-break:after-white-space" class="">Folks,<div class=""><br class=""></div><div class="">From the third hand we may build our own bootstrap chain of rust from scratch.</div><div class=""><br class=""></div><div class="">Or almost.</div><div class=""><br class=""></div><div class="">We have a <a href="https://ports.macports.org/port/mrustc/details/" rel="noreferrer noreferrer" target="_blank" class="">https://ports.macports.org/port/mrustc/details/</a> which is able to bootstrap 1.54 rust on x86_64 and arm64.</div><div class=""><br class=""></div><div class="">Unfortunately support of i386 isn't yet finished at upstream. I plan to fix it, but it requires time and availability of hardware to test it :)</div><div class=""><br class=""></div><div class="">I do have a commits which implements rust bootstrap by cahin: mrustc -> rust 1.54 -> rust 1.55 -> rust 1.56; I can start to open PRs to move step-by-step and in month we'll have the last rust via this chain. </div><div class=""><br class=""><div class="">
<div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none;" class="">-- <br class="">wbr, Kirill</div>

</div>
<div class=""><br class=""><blockquote type="cite" class=""><div class="">On 13. Dec 2022, at 16:49, Christopher Jones <<a href="mailto:jonesc@hep.phy.cam.ac.uk" rel="noreferrer noreferrer" target="_blank" class="">jonesc@hep.phy.cam.ac.uk</a>> wrote:</div><br class=""><div class=""><div style="word-wrap:break-word;line-break:after-white-space" class="">Hi,<div class=""><br class=""></div><div class="">In my opinion, hosting and maintaining these ‘bootstrap’ compilers outside the macports infrastructure was a poor choice, for all the reasons you mention below. I thought this at the time it was done, and even more so now.</div><div class=""><br class=""></div><div class="">Personally, I would suggest you think about a change to how the rust compiler is package, to mirror a bit how things are done with gcc and clang. Namely, 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 class=""><br class=""></div><div class="">The main reason for doing this, is adding a new version would that not remove the previous version, and thus you could simple use it as the bootstrap compiler. So with the above, when you add rust-1.62 that would simple configure itself to bootstrap using the macports rust-1.61 port.</div><div class=""><br class=""></div><div class="">Yes, this will require some work to set up. You will need to make all the various rust versions installable along side each other, so some tweaking of the install prefix would be needed. </div><div class=""><br class=""></div><div class="">One thing I would do differently though to how gcc/clang do things is I would try and have a single rust port file, that implements all the versions as sub-ports. I suspect most of what each needs can then just be shared , such that what needs to be different for each sub-port is actually not that much.</div><div class=""><br class=""></div><div class="">Regarding how users of rust then use these ports, there are a couple options</div><div class=""><br class=""></div><div class="">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.</div><div class="">2. Users that want an older rust could explicitly depend on and use a specific versioned rust-N</div><div class=""><br class=""></div><div class="">For me, this approach makes a lot more sense than the current way these bootstrap compilers are maintained.</div><div class=""><br class=""></div><div class="">cheers Chris</div><div class=""><br class=""><div class=""><br class=""><blockquote type="cite" class=""><div class="">On 13 Dec 2022, at 2:57 pm, Herby G <<a href="mailto:herby.gillot@gmail.com" rel="noreferrer noreferrer" target="_blank" class="">herby.gillot@gmail.com</a>> wrote:</div><br class=""><div class=""><div dir="ltr" class=""><div class="">Hello all,</div><div class=""><br class=""></div><div class="">Right now, Rust in MacPorts is severely out of date. It's about 5 versions behind the current release, which at the moment is at 1.65.0. In comparison, MacPorts Rust is currently at 1.61.0.</div><div class=""><br class=""></div><div class="">As a core language underlying a lot of other ports, many of these ports cannot be updated to their latest versions because these versions require current versions of Rust. At the time of this writing, 156 ports are being built using Rust ( <a href="https://ports.macports.org/port/rust/details/" rel="noreferrer noreferrer" target="_blank" class="">https://ports.macports.org/port/rust/details/</a> ), some quite heavily used by the community, including projects like `git-delta`, `bat` and `fd`.<br class=""></div><div class=""><br class=""></div><div class="">MarcusCalhoun-Lopez's PR here ( <a href="https://github.com/macports/macports-ports/pull/14277" rel="noreferrer noreferrer" target="_blank" class="">https://github.com/macports/macports-ports/pull/14277</a> ) heavily rewrote the Rust port to run on older systems, and was very much celebrated and endorsed. However, as a result of this PR, the Rust port became a lot more complicated, and also introduced a new critical bootstrap compiler (referenced in the Rust portgroup here: <a href="https://github.com/macports/macports-ports/blob/2d39b30a32fcf0f5e1cff04f172e9d55ae08ba48/_resources/port1.0/group/rust-1.0.tcl#L140" rel="noreferrer noreferrer" target="_blank" class="">https://github.com/macports/macports-ports/blob/2d39b30a32fcf0f5e1cff04f172e9d55ae08ba48/_resources/port1.0/group/rust-1.0.tcl#L140</a>), which is being hosted in MarcusCalhoun-Lopez's personal Github account ( <a href="https://github.com/MarcusCalhoun-Lopez/rust/releases" rel="noreferrer noreferrer" target="_blank" class="">https://github.com/MarcusCalhoun-Lopez/rust/releases</a> ).  Marcus did try to ask about a more official location to host the bootstrap compiler in a macports-dev thread: <a href="https://lists.macports.org/pipermail/macports-dev/2022-April/044243.html" rel="noreferrer noreferrer" target="_blank" class="">https://lists.macports.org/pipermail/macports-dev/2022-April/044243.html</a> , but ultimately per the  responses  he decided to just host it in his personal account himself.</div><div class=""><br class=""></div><div class="">Since this massive change to the Rust port at 1.60.0, it's only seen one update since then to 1.61.0 ( <a href="https://github.com/macports/macports-ports/commit/8431ccb48eec4824736eca51f643523356091cd6" rel="noreferrer noreferrer" target="_blank" class="">https://github.com/macports/macports-ports/commit/8431ccb48eec4824736eca51f643523356091cd6</a> )<br class=""></div><div class=""><br class=""></div><div class="">David Gilman opened a PR recently attempting to update Rust to 1.64.0 ( <a href="https://github.com/macports/macports-ports/pull/16329" rel="noreferrer noreferrer" target="_blank" class="">https://github.com/macports/macports-ports/pull/16329</a> ), but Gilman doesn't have access to update the bootstrap compiler, because as of right now, only MarcusCalhoun-Lopez knows how to build it, and also it's hosted in Calhoun's Github account as mentioned prior.</div><div class=""><br class=""></div><div class="">We need to figure out a more sustainable approach for this bootstrap compiler, including how it can be built, and hosting it somewhere where a small set of MacPorts maintainers can build and update it so that we can get MacPorts Rust back on track.  As things are today, only MarcusCalhoun-Lopez has all the pieces required to update this port, and there's been no word from him for months now as the Rust port has fallen further and further behind. Being such a critical core language port, it may make sense to create a repo within the MacPorts Github organization where a set of maintainers can host and update the Rust bootstrap compiler.<br class=""></div></div>
</div></blockquote></div><br class=""></div></div></div></blockquote></div><br class=""></div></div></blockquote></div></div></div></div>
</div></blockquote></div><br class=""></div></body></html>