[Pkg-rust-maintainers] Bootstrap of rust

Sylvestre Ledru sylvestre at debian.org
Wed Jan 21 08:40:20 UTC 2015


On 21/01/2015 05:03, Jordan Justen wrote:
> On 2015-01-20 01:46:24, Luca Bruno wrote:
>> On Tuesday 20 January 2015 09:25:57 Sylvestre Ledru wrote:
>>
>>> Hello,
>>>
>>> + Paul who showed some interest in this :)
>> Just to recap, we had a brief exchange with Paul on Feb 2014, where 
>> he expressed some concerns with an embedded stage0 blob, and suggested
>> to ask ftp-master for a shared/official statement on this.
>> I
>>  asked them twice by mail (on 07/02/2014 and 02/03/2014) but 
>> never got any answer. After that real-life took over my free time 
>> for rust, so the discussion died. 
>>  
>>> About the bootstrap, I am not sure that copying the compiler in
>>> debian/dl/ is the best way.
>> Me neither. 
>> At worse (if we keep shipping stage0), we should make use of multiple 
>> upstream tarball support[0], as it is not a debian delta we are 
>> shipping here.
>> [0] https://wiki.debian.org/Projects/DebSrc3.0#How_to_use_multiple_upstream_tarball_in_3.0_.28quilt.29_format.3F
> I added a new script: debian/make_orig-dl_tarball.py
>
> It will download the stage0 snapshots and generate
> ../rust_$VERSION.orig-dl.tar.gz.
>
> It appears to be working, so I deleted debian/dl.
Hmm, what is the goal of this? Builder don't have access to the network ?!
If you want this for the maintainer before the upload, please add a new
target
to debian/rules

> I suppose, since there hasn't been an upload yet, we might consider
> nuking debian/dl in the history and doing a force push. This should
> allow git gc to reclaim the stage0 binary space from the git repo.
If you want go ahead, but not sure that 40M is a big deal.
>>> AFAIK, the "right" way to bootstrap a compiler:
>>> * Build a local instance of the compiler on your system (whatever the
>>> method is)
>>> * Package the newly built compiler
>>> * Use the package to build compiler
>>> * Upload this package
>>>
>>> Once the package is in the archive, use the official package to build
>>> the new version of the compiler.
>> Been there, tried that. I collected some notes on the wiki[1].
>>
>> In theory it's all good. In practice:
>>  * upstream periodically snapshots stage0. This happens multiple times 
>>    between releases, so I don't expect eg. 1.0.1 to be bootstrappable 
>>    from 1.0.0 (experienced this somewhere around the 0.8->0.9 release)
>>  * requirements are pretty tight, and when a language feature change
>>    rustc cannot bootstrap itself (experienced this when trying to
>>    self-boostrap from local .deb, somewhere around 0.9-pre)
>>  * stage0 are in strictly-chained linear series. This means we cannot 
>>    miss even a single snapshot, otherwise next bootstrap could fail.
>>    Moreover, also due to first point above, bootstrapping across 
>>    non-adjacent package releases (ie. Stretch->Buster or similar) won't work
>>  
>> [1] https://wiki.debian.org/Teams/RustPackaging/Bootstrap
>>
>> Please note that those are notes I collected last time I was full-digging into it,
>> which was circa 1 year ago. Things may have improved in the meanwhile and 1.0 will
>> come with some sort of language stability. 
>> I'm still in the process of updating my knowledge on this, but due to past experience 
>> I won't personally expect to be able to do what suggested above without a lengthy 
>> blood-bath. But I'll be very happy to see that things are now much better! :)
> I'm not sure this would be helpful, but I did get a rust-bin package
> about 75% complete. It basically would just install the binaries that
> the rust team releases.
what do you mean?

S





More information about the Pkg-rust-maintainers mailing list