From mboxrd@z Thu Jan 1 00:00:00 1970 From: ludo@gnu.org (Ludovic =?utf-8?Q?Court=C3=A8s?=) Subject: Re: Rust Date: Sat, 30 Jul 2016 15:34:08 +0200 Message-ID: <87invnckrz.fsf@gnu.org> References: <20160325184540.4e02cb2d@scratchpost.org> <87k2kq6wma.fsf@grrlz.net> <87oa8mt8lh.fsf@gmail.com> <87eg9gzgqb.fsf@libertad.pw> <87popyp3od.fsf@we.make.ritual.n0.is> <20160728203144.7df4bb8c@itchy> <87mvl0a302.fsf_-_@gnu.org> <1469806462.309573.680485345.76401C68@webmail.messagingengine.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:33771) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bTUPC-0003oJ-Rg for guix-devel@gnu.org; Sat, 30 Jul 2016 09:34:20 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bTUP7-0007Xn-Em for guix-devel@gnu.org; Sat, 30 Jul 2016 09:34:17 -0400 In-Reply-To: <1469806462.309573.680485345.76401C68@webmail.messagingengine.com> (Alex Griffin's message of "Fri, 29 Jul 2016 10:34:22 -0500") List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: Alex Griffin Cc: guix-devel@gnu.org Alex Griffin skribis: > On Fri, Jul 29, 2016, at 10:16 AM, Ludovic Court=C3=A8s wrote: >> Do you know what=E2=80=99s Rust=E2=80=99s bootstrapping story is? Can w= e reasonably >> expect to bootstrap it from source, using a series of previous Rust >> versions, or using an alternative implementation? > > Yes, Rust 1.10 builds with the previous stable release (1.9) for the > first time. So we will only need one binary to bootstrap Rust. Although > this will quickly require a long chain of builds because Rust releases > every 6 weeks and 1.11 is only guaranteed to build with 1.10, etc. > > So after only two years we may need to compile like 17 different > releases to get the current version. Bah. If that were the only problem, we could regularly cut the dependency graph by storing a pre-built binary built using Guix, assuming Rust builds are reproducible. (Note that each node in the dependency graph contributes to the =E2=80=98guix build -d=E2=80=99 time by= less than a hundred milliseconds, so the chain can be quite long before it=E2=80=99s a practical problem.) Jelle Licht skribis: > So, to ad to Alex' point, we would also need to expend (one-time) effort = to > find this 'bootstrap-path' from the OCaml-based compiler to a more recent > rustc. I suspect this one-time effort would be quite huge. > To quote kibwen from [1]: > "We can determine exactly how many builds you'd need by looking at the > master snapshot file: > https://github.com/rust-lang/rust/blob/master/src/snapshots.... > > > According to this, there have been 290 snapshots in total. And keep in mi= nd > that you would also need to rebuild LLVM quite a few times as well during > this process, as Rust has continually upgraded its custom LLVM fork over > the years." > > Not sure if all this is worth the effort... It=E2=80=99s discouraging, indeed. We need to find a reasonable way forward. What about starting from the version that Eric submitted (bootstrapped from the opaque binary), and from there on do the =E2=80=9Cbuild with previous version=E2=80=9D thing? When the chain becomes too long, we=E2=80=99ll host new bootstrap binaries produced with Guix and cut the initial part of the chain. Thoughts? Obviously not ideal, but at least we=E2=80=99d have a clearer track record = of our binaries: we=E2=80=99d document the Guix commit needed to reproduce a specific binary, and anyone could verify it. Ludo=E2=80=99.