]> git.proxmox.com Git - rustc.git/blob - debian/README.source
Merge tag 'upstream/1.10.0+dfsg1'
[rustc.git] / debian / README.source
1 Document by Luca Bruno & Sylvestre Ledru
2
3 This source package is unfortunately quite tricky and with
4 several cutting edges, due to the complexity of rust-lang
5 bootstrapping system and the high rate of language changes
6 still ongoing.
7
8 We try to describe here inner packaging details and the
9 reasons behind them.
10
11
12 Bootstrapping
13 =============
14
15 This package is composed of two upstream tarballs:
16 * the rust-lang source
17 * a minimal stage0 to start bootstrapping the system
18
19 This is an interim solution, in the long term we plan to have
20 rust bootstrap itself from an installed copy. However, we are
21 currently forced to ship a stage0.
22
23 We have to that way, because:
24 * upstream periodically snapshots stage0. This happens multiple times
25 between releases, so it is not currently possible to bootstrap using
26 (only) released versions
27 * requirements are pretty tight, and when a language feature change
28 rustc cannot self-bootstrap (you need a stage0 before the change,
29 which support the old set of features)
30 * stage0 are in strictly-chained linear series. This means we cannot
31 miss even a single snapshot, otherwise next bootstrap could fail.
32 Moreover, also due to first point above, bootstrapping across
33 non-adjacent snapshots/packages won't work
34
35 On the other hand:
36 * stage0 is directly generated by the same infrastructure that
37 packages the source tarball
38 * Mozilla upstream directly provides it, and at least has some point
39 you have to trust it in order to break the boostrap cycle
40 * builds are automated, and public build logs can be inspected at
41 http://buildbot.rust-lang.org/builders/snap3-linux
42 * snapshot artifacts have to be manually approved by upstream, and
43 are identified by the SHA1 of the resulting content
44
45 Things should improve as the language is being stabilized.
46 We will re-evaluate this choice after 1.0.
47
48
49 Embedded libraries
50 ==================
51
52 This source package embeds several external libraries (foeked and managed
53 by rust upstream as git submodules).
54 In early stages, many more libraries were forked/emebedded but we are steadily
55 progressing in splitting them out.
56
57 Here below the remaining ones, with the technical reasons.
58
59 * jemalloc from https://github.com/rust-lang/jemalloc
60 -> system-wide one can't be used due to rust using a "je_" prefix.
61
62 This is intentional upstream design and won't change soon, see:
63 - https://github.com/rust-lang/rust/pull/18678
64 - http://smallcultfollowing.com/babysteps/blog/2014/11/14/allocators-in-rust/
65
66 * compiler-rt from https://github.com/rust-lang/compiler-rt
67 -> system-wide compiler-rt fails during linkage
68
69 Bug reported upstream, still to be fixed, see:
70 - https://github.com/rust-lang/rust/issues/15054
71 - https://github.com/rust-lang/rust/issues/15708
72
73 As a summary, we plan to:
74 * keep embedding jemalloc (probably forever)
75 * work with upstream to fix compiler-rt linkage soon.
76
77 -- Sylvestre Ledru <sylvestre@debian.org> Fri, 27 Mar 2015 14:27:12 +0100
78