From mboxrd@z Thu Jan 1 00:00:00 1970 From: ludo@gnu.org (Ludovic =?utf-8?Q?Court=C3=A8s?=) Subject: Re: rust work in progress conflicts Date: Thu, 05 May 2016 15:35:32 +0200 Message-ID: <87lh3obpaz.fsf@gnu.org> References: <20160325184540.4e02cb2d@scratchpost.org> <87k2kq6wma.fsf@grrlz.net> <87oa8mt8lh.fsf@gmail.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]:47044) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ayJRa-0000WV-CM for guix-devel@gnu.org; Thu, 05 May 2016 09:36:00 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ayJRO-0005xF-GN for guix-devel@gnu.org; Thu, 05 May 2016 09:35:48 -0400 In-Reply-To: <87oa8mt8lh.fsf@gmail.com> (Jelle Licht's message of "Wed, 04 May 2016 12:34:34 +0200") 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: Jelle Licht Cc: guix-devel@gnu.org, Nils Gillmann Jelle Licht skribis: > Now there are two approaches which might make sense to me: > > 1) We package a recent stage-0 binary (thus adding yet another random > binary to the mix) This is something we want to avoid as much as possible. Part of the solution is to raise awareness about the security and freedom issues that arise from the use of binary blobs to build compilers. This has been discussed earlier: https://lists.gnu.org/archive/html/guix-devel/2016-03/msg00828.html Based on this discussion=E2=80=A6 > 2) We bootstrap all the way from the original rust compiler, written in > ocaml. This would then presumably need to be repeated for each snapshot, > leading to about 319 iterative compiler build. On my kind-of-okay i7, > compiling a single rust iteration takes about 25 to 40 minutes. =E2=80=A6 I strongly encourage you to try and take this route. Hopefully, not every version of Rust needs to be compiled with exactly the previous version of itself. Anyway, your experience in trying this will be invaluable! > I tentatively went with option 1, if only because I would like to see > results this decade still, and ran into several hurdles that became > quite manageable with help from the good people of #guix and > #rust-internals. One more issue yet remains: part of the rust > compilation process actually calls the 'cc linker'. This part does not > respect make flags, setenv calls or even rust's special configure flag > for setting cc. At worst, you can always add a =E2=80=98cc=E2=80=99 script that does: #!$SHELL exec gcc "$@" in $PATH, in a pre-build phase. > Option 1 does not seem feasible at this point of time, but there is some > light at the end of the tunnel: rust is at some point going to follow a > convention that will allow bootstrapping compilers via 'master from > beta, beta from stable and stable from previous stable'[2]. > > I am currently thinking of a compromise; basically, at this moment go > for option 1, and once the policy previously described is properly > implemented by the rust team, start iteratively bootstrapping rust from > that point in time. Yeah it=E2=80=99s OK to do it in the order: write the package bootstrapped = from the binary blob, and then work on bootstrapping it from OCaml. Thanks for looking into it! Ludo=E2=80=99.