rustc/debian
2016-03-05 14:09:56 +01:00
..
bin Enable optional tests, and add verbosity/backtraces to tests 2016-02-09 21:24:26 +01:00
icons Replace 32x32 logo with local file 2015-07-20 10:26:40 +10:00
missing-sources jquery updated from 2.1.0 to 2.1.4 2015-09-19 19:48:47 +02:00
patches * Apply upstream fix to silent a valgrind issue in the test suite 2016-02-21 16:41:09 +01:00
source jquery updated from 2.1.0 to 2.1.4 2015-09-19 19:48:47 +02:00
upstream Update debian/watch file 2015-02-24 10:52:29 +01:00
.gitignore Ignore the generated files 2015-10-30 11:48:33 +01:00
architecture.mk Split out library packages for multiarch 2015-05-27 18:02:10 +10:00
build-preview-dsc.sh build-preview-dsc: check signature, add a NOCLOBBER and DPUT_HOST options 2016-02-11 14:09:45 +01:00
changelog New upstream release 2016-03-05 14:09:56 +01:00
compat debian: Update to debhelper 9 2015-01-19 10:07:45 -08:00
control New upstream release 2016-03-05 14:09:56 +01:00
copyright rm unneeded entry from Files-Excluded, removed upstream 2015-10-31 15:21:44 +01:00
docs Numerous minor rust-doc fixups 2015-02-27 09:50:00 +00:00
gbp.conf restore gbp.conf defaults, which is what we're using in practise anyways 2015-10-31 14:50:58 +01:00
libstd-rust-1.7.lintian-overrides New upstream release 2016-03-05 14:09:56 +01:00
libstd-rust-dev.install Split out library packages for multiarch 2015-05-27 18:02:10 +10:00
libstd-rust-dev.lintian-overrides Split out library packages for multiarch 2015-05-27 18:02:10 +10:00
make_orig-dl_tarball.py Use XZ instead of GZ compression for Debian products, it saves more space 2016-02-11 13:39:57 +01:00
README.Debian explain that this does not work 2015-03-14 08:04:16 +01:00
README.source about llvm 2015-03-27 14:28:01 +01:00
rules Work around rust bug https://github.com/rust-lang/rust/issues/31529 2016-02-10 10:50:58 +01:00
rust-doc.doc-base.book Numerous minor rust-doc fixups 2015-02-27 09:50:00 +00:00
rust-doc.doc-base.intro Remove EPUB from doc-base files 2015-07-19 22:50:26 +10:00
rust-doc.doc-base.reference Remove EPUB from doc-base files 2015-07-19 22:50:26 +10:00
rust-doc.doc-base.style Numerous minor rust-doc fixups 2015-02-27 09:50:00 +00:00
rust-doc.docs Split out library packages for multiarch 2015-05-27 18:02:10 +10:00
rust-doc.install Replace 32x32 logo with local file 2015-07-20 10:26:40 +10:00
rust-doc.links use rust-doc.links instead of explicit rule 2015-08-31 20:34:14 +02:00
rust-gdb.install Split out library packages for multiarch 2015-05-27 18:02:10 +10:00
rust-gdb.links Link rust-{gdb,lldb}.1 to {gdb,lldb}.1 manpages 2015-07-20 11:16:25 +10:00
rust-lldb.install Split out library packages for multiarch 2015-05-27 18:02:10 +10:00
rust-lldb.links Link rust-{gdb,lldb}.1 to {gdb,lldb}.1 manpages 2015-07-20 11:16:25 +10:00
rustc.install Fix architecture.mk install path 2015-05-27 18:02:10 +10:00
rustc.manpages Rename rust binary package to rustc 2015-02-27 09:50:00 +00:00
TODO.Debian alpha 2 removed emacs, kate & vim plugins 2015-02-23 14:05:08 +01:00
watch Use XZ instead of GZ compression for Debian products, it saves more space 2016-02-11 13:39:57 +01:00

Document by Luca Bruno & Sylvestre Ledru

This source package is unfortunately quite tricky and with
several cutting edges, due to the complexity of rust-lang
bootstrapping system and the high rate of language changes
still ongoing.

We try to describe here inner packaging details and the
reasons behind them.


Bootstrapping
=============

This package is composed of two upstream tarballs:
 * the rust-lang source
 * a minimal stage0 to start bootstrapping the system

This is an interim solution, in the long term we plan to have
rust bootstrap itself from an installed copy. However, we are 
currently forced to ship a stage0.

We have to that way, because:
 * upstream periodically snapshots stage0. This happens multiple times 
   between releases, so it is not currently possible to bootstrap using
   (only) released versions
 * requirements are pretty tight, and when a language feature change
   rustc cannot self-bootstrap (you need a stage0 before the change,
   which support the old set of features)
 * 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 snapshots/packages won't work

On the other hand:
 * stage0 is directly generated by the same infrastructure that
   packages the source tarball
 * Mozilla upstream directly provides it, and at least has some point 
   you have to trust it in order to break the boostrap cycle
 * builds are automated, and public build logs can be inspected at
   http://buildbot.rust-lang.org/builders/snap3-linux
 * snapshot artifacts have to be manually approved by upstream, and
   are identified by the SHA1 of the resulting content

Things should improve as the language is being stabilized. 
We will re-evaluate this choice after 1.0.


Embedded libraries
==================

This source package embeds several external libraries (foeked and managed 
by rust upstream as git submodules).
In early stages, many more libraries were forked/emebedded but we are steadily
progressing in splitting them out.

Here below the remaining ones, with the technical reasons.

 * jemalloc from https://github.com/rust-lang/jemalloc
   -> system-wide one can't be used due to rust using a "je_" prefix.

   This is intentional upstream design and won't change soon, see:
    - https://github.com/rust-lang/rust/pull/18678
    - http://smallcultfollowing.com/babysteps/blog/2014/11/14/allocators-in-rust/

 * compiler-rt from https://github.com/rust-lang/compiler-rt
   -> system-wide compiler-rt fails during linkage

   Bug reported upstream, still to be fixed, see:
    - https://github.com/rust-lang/rust/issues/15054
    - https://github.com/rust-lang/rust/issues/15708

As a summary, we plan to:
 * keep embedding jemalloc (probably forever)
 * work with upstream to fix compiler-rt linkage soon.

 -- Sylvestre Ledru <sylvestre@debian.org>  Fri, 27 Mar 2015 14:27:12 +0100