source: general/prog/rust.xml@ 7dc165a5

10.0 10.1 11.0 11.1 11.2 11.3 12.0 12.1 kea ken/TL2024 ken/inkscape-core-mods ken/tuningfonts lazarus lxqt plabs/newcss plabs/python-mods python3.11 qt5new rahul/power-profiles-daemon renodr/vulkan-addition trunk upgradedb xry111/intltool xry111/llvm18 xry111/soup3 xry111/test-20220226 xry111/xf86-video-removal
Last change on this file since 7dc165a5 was 8cb68bb1, checked in by Ken Moffat <ken@…>, 4 years ago

Use the shipped version of llvm in rustc-1.39.0 becasue system llvm 10.0 does not build it.

git-svn-id: svn://svn.linuxfromscratch.org/BLFS/trunk/BOOK@22907 af4574ff-66df-0310-9fd7-8a98e5e911e0

  • Property mode set to 100644
File size: 25.2 KB
RevLine 
[03d537cd]1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
4 <!ENTITY % general-entities SYSTEM "../../general.ent">
5 %general-entities;
6
[614fc25f]7 <!ENTITY rust-download-http "https://static.rust-lang.org/dist/rustc-&rust-version;-src.tar.gz">
[d9bcc5f]8 <!ENTITY rust-download-ftp " ">
[ec2353a]9 <!ENTITY rust-md5sum "b348233fdbbf7858763bab7cb9c314ae">
10 <!ENTITY rust-size "146 MB">
[25997c4a]11 <!-- Gentle Reminder: buildsize is how much the user requires for the real
12 install, i.e. the source with its DESTDIR *plus* the DESTDIR. You
13 can 'mkdir /tmp/RUST ; cp -a install/* /tmp/RUST' and then run 'du -sch'
[8cb68bb1]14 to measure it, or du -sm to look at the size of the build tree before and
15 after the tests. -->
[25997c4a]16
[8cb68bb1]17 <!ENTITY rust-buildsize "9.0 GB (747 MB installed) including 344 MB of ~/.cargo files for the user building this. Add 2.3 GB if running the tests">
18 <!ENTITY rust-time "52 SBU (add 15 SBU for tests, both on a 4-core machine)">
[03d537cd]19]>
20
21<sect1 id="rust" xreflabel="rustc-&rust-version;">
22 <?dbhtml filename="rust.html"?>
23
24 <sect1info>
25 <othername>$LastChangedBy$</othername>
26 <date>$Date$</date>
27 </sect1info>
28
29 <title>Rustc-&rust-version;</title>
30
31 <indexterm zone="rust">
32 <primary sortas="a-rust">Rust</primary>
33 </indexterm>
34
35 <sect2 role="package">
36 <title>Introduction to Rust</title>
37
38 <para>
39 The <application>Rust</application> programming language is designed
40 to be a safe, concurrent, practical language.
41 </para>
42
[25997c4a]43 <para>
44 This package is updated on a six-weekly release cycle. Because it is
[ec2353a]45 such a large and slow package to build, is at the moment only required
46 by a few packages in this book, and particularly because newer versions
47 tend to break older mozilla packages, the BLFS editors take the view that
48 it should only be updated when that is necessary (either to fix problems,
49 or to allow a new version of a package to build).
[25997c4a]50 </para>
51
[03d537cd]52 <para>
53 As with many other programming languages, rustc (the rust compiler)
[a7b1bddc]54 needs a binary from which to bootstrap. It will download a stage0 binary
55 and many cargo crates (these are actually .tar.gz source archives) at
[03d537cd]56 the start of the build, so you cannot compile it without an internet
57 connection.
58 </para>
59
[25997c4a]60 <para>
61 These crates will then remain in various forms (cache, directories of
62 extracted source), in <filename class="directory">~/.cargo</filename> for
63 ever more. It is common for large <application>rust</application> packages
64 to use multiple versions of some crates. If you purge the files before
65 updating this package, very few crates will need to be updated by the
66 packages in this book which use it (and they will be downloaded as
67 required). But if you retain an older version as a fallback option and
[b05ea0b]68 then use it (when <emphasis>not</emphasis> building in
[25997c4a]69 <filename class="directory">/usr</filename>), it is likely that it will
[b05ea0b]70 then have to re-download some crates. For a full download (i.e. starting
[25997c4a]71 with an empty or missing <filename class="directory">~/.cargo</filename>)
72 downloading the external cargo files for this version only takes a minute
73 or so on a fast network.
74 </para>
75
76 <note>
77 <para>
[d396c65]78 Although BLFS usually installs in <filename
79 class="directory">/usr</filename>, when you later upgrade to a newer
80 version of <application>rust</application> the old libraries in <filename
81 class="directory">/usr/lib/rustlib</filename> will remain, with various
82 hashes in their names, but will not be usable and will waste space. The
83 editors recommend placing the files in the <filename
84 class="directory">/opt</filename> directory. In particular, if you
85 have reason to rebuild with a modified configuration (e.g. using the
[ec2353a]86 shipped LLVM after building with shared LLVM, or for the
87 reverse situation) it is possible for the install to leave a broken
[d396c65]88 <command>cargo</command> program. In such a situation, either remove
89 the existing installation first, or use a different prefix such as
90 /opt/rustc-&rust-version;-build2.
[25997c4a]91 </para>
[b05ea0b]92
93 <para>
[d396c65]94 If you prefer, you can of course change the prefix to <filename
95 class="directory">/usr</filename> and omit the
96 <command>ldconfig</command> and the actions to add rustc to the PATH.
[b05ea0b]97 </para>
[25997c4a]98 </note>
99
[03d537cd]100 <para>
101 The current <application>rustbuild</application> build-system will use
102 all available processors, although it does not scale well and often falls
103 back to just using one core while waiting for a library to compile.
104 </para>
105
106 <para>
107 At the moment <application>Rust</application> does not provide any
[4c6edac]108 guarantees of a stable ABI.
[03d537cd]109 </para>
110
[326f830]111 <note>
[7d259126]112 <para>
113 Rustc defaults to building for ALL supported architectures, using a
[4f8ca94]114 shipped copy of LLVM. In BLFS the build is only for the X86
115 architecture. Rustc still claims to require Python 2, but that is only
116 really necessary when building some other architectures with the
117 shipped LLVM.
[d396c65]118 If you intend to develop rust crates, this build may not be good
[b05ea0b]119 enough for your purposes.
[7d259126]120 </para>
[326f830]121 <para>
[4f9e45d9]122 The build times of this version when repeated on the same machine are
123 often reasonably consistent, but as with all compilations using
124 <command>rustc</command> there can be some very slow outliers.
[326f830]125 </para>
126 <para>
[bb0652ca]127 Unusually, a DESTDIR-style method is being used to install this package.
128 This is because running the install as root not only downloads all of the
[a7b1bddc]129 cargo files again (to <filename>/root/.cargo</filename>), it then spends
[7d259126]130 a very long time recompiling. Using this method saves a lot of time, at
131 the cost of extra disk space.
[326f830]132 </para>
133 </note>
134
[1119387]135 &lfs91_checked;
[03d537cd]136
137 <bridgehead renderas="sect3">Package Information</bridgehead>
138 <itemizedlist spacing="compact">
139 <listitem>
140 <para>
141 Download (HTTP): <ulink url="&rust-download-http;"/>
142 </para>
143 </listitem>
144 <listitem>
145 <para>
146 Download (FTP): <ulink url="&rust-download-ftp;"/>
147 </para>
148 </listitem>
149 <listitem>
150 <para>
151 Download MD5 sum: &rust-md5sum;
152 </para>
153 </listitem>
154 <listitem>
155 <para>
156 Download size: &rust-size;
157 </para>
158 </listitem>
159 <listitem>
160 <para>
161 Estimated disk space required: &rust-buildsize;
162 </para>
163 </listitem>
164 <listitem>
165 <para>
166 Estimated build time: &rust-time;
167 </para>
168 </listitem>
169 </itemizedlist>
170
[ec2353a]171<!--<bridgehead renderas="sect3">Additional Downloads</bridgehead>
[d7e8f67]172 <itemizedlist spacing="compact">
173 <listitem>
174 <para>
175 Required patch:
176 <ulink url="&patch-root;/rustc-&rust-version;-llvm9_fixes-1.patch"/>
177 </para>
178 </listitem>
[ec2353a]179 </itemizedlist>-->
[d7e8f67]180
[03d537cd]181 <bridgehead renderas="sect3">Rust Dependencies</bridgehead>
182
183 <bridgehead renderas="sect4">Required</bridgehead>
184 <para role="required">
185 <xref linkend="curl"/>,
[4f8ca94]186 <xref linkend="cmake"/>, and
187 <xref linkend="libssh2"/>
[03d537cd]188 </para>
189
[8cb68bb1]190<!--<bridgehead renderas="sect4">Recommended</bridgehead>
[a7b1bddc]191 <para role="recommended">
192 <package>clang</package> from <xref linkend="llvm"/>
[4f9e45d9]193 (built with -DLLVM_LINK_LLVM_DYLIB=ON so that rust can link to
[741231d]194 system LLVM instead of building its shipped version)
[8cb68bb1]195 </para> FIXME reinstate when next using system llvm -->
[a7b1bddc]196
[03d537cd]197 <bridgehead renderas="sect4">Optional</bridgehead>
198 <para role="optional">
[4f8ca94]199 <xref linkend="gdb"/> (used by the testsuite if it is present) and
[4f9e45d9]200 <xref linkend="python2"/> (used by the testsuite)
[03d537cd]201 </para>
202
203 <para condition="html" role="usernotes">
204 User Notes: <ulink url="&blfs-wiki;/rust"/>
205 </para>
206 </sect2>
207
208 <sect2 role="installation">
209 <title>Installation of Rust</title>
210
211 <para>
[d396c65]212 To install into the
213 <filename class="directory">/opt</filename> directory, remove the symlink
214 and create a new directory (i.e. with a different name if trying a
215 modified build).
[4f9e45d9]216 As the <systemitem class="username">root</systemitem>
[b05ea0b]217 user:
218 </para>
219
[d396c65]220<screen role="root"><userinput>mkdir /opt/rustc-&rust-version; &amp;&amp;
221ln -svfin rustc-&rust-version; /opt/rustc</userinput></screen>
[b05ea0b]222
223 <note>
224 <para>
225 If multiple versions of <application>Rust</application> are installed
226 in <filename class="directory">/opt</filename>, changing to another
227 version only requires changing the <filename> /opt/rustc</filename>
228 symbolic link and then running <command>ldconfig</command>.
229 </para>
230 </note>
231
232 <para>
233 Create a suitable <filename>config.toml</filename> file which will
[4f9e45d9]234 configure the build.
[4c6edac]235 </para>
236
[272f28b]237<screen><userinput>cat &lt;&lt; EOF &gt; config.toml
[51dfb3e]238<literal># see config.toml.example for more possible options
[8cb68bb1]239# See the 9.1 book for an example using system LLVM
240# e.g. if you are still using llvm-9.0.1
[4c6edac]241[llvm]
[4f9e45d9]242# by default, rust will build for a myriad of architectures
[25997c4a]243targets = "X86"
[4f9e45d9]244
[4c6edac]245[build]
[4f9e45d9]246# omit docs to save time and space (default is to build them)
[25997c4a]247docs = false
248
[4c6edac]249# install cargo as well as rust
250extended = true
251
252[install]
[ff803c4]253prefix = "/opt/rustc-&rust-version;"
254docdir = "share/doc/rustc-&rust-version;"
[326f830]255
256[rust]
[4c6edac]257channel = "stable"
[326f830]258rpath = false
[a7b1bddc]259
260# BLFS does not install the FileCheck executable from llvm,
261# so disable codegen tests
262codegen-tests = false
263
[51dfb3e]264</literal>
[4c6edac]265EOF</userinput></screen>
266
[ec2353a]267<!--<para>
[d7e8f67]268 Adapt rustc to allow it to build and function with the changes in LLVM-9:
269 </para>
270
[ec2353a]271<screen><userinput remap="pre">patch -Np1 -i ../rustc-&rust-version;-llvm9_fixes-1.patch</userinput></screen>-->
[d7e8f67]272
[4c6edac]273 <para>
[ec2353a]274 Compile <application>Rust</application> by running the following
[03d537cd]275 commands:
276 </para>
277
[bb0652ca]278<screen><userinput>export RUSTFLAGS="$RUSTFLAGS -C link-args=-lffi" &amp;&amp;
[4f8ca94]279python3 ./x.py build --exclude src/tools/miri</userinput></screen>
[a7b1bddc]280
[6bcd464]281 <note>
[a7b1bddc]282 <para>
[6bcd464]283 The testsuite will generate some messages in the
[a7b1bddc]284 <phrase revision="sysv">system log</phrase>
285 <phrase revision="systemd">systemd journal</phrase>
[6bcd464]286 for traps on invalid opcodes, and for segmentation faults.
[25997c4a]287 In themselves these are nothing to worry about, just a way for the
[4f9e45d9]288 test to be terminated.
[a7b1bddc]289 </para>
[6bcd464]290 </note>
[a7b1bddc]291
[03d537cd]292 <para>
[4f8ca94]293 To run the tests issue <command>python3 ./x.py test --verbose
294 --no-fail-fast | tee rustc-testlog</command>: as with the build, that
295 will use all available CPUs.
[03d537cd]296 </para>
297
298 <para>
[25997c4a]299 The instructions above do not build ARM compilers, so the testsuite
300 <emphasis>will</emphasis> fail and the tests will be reported to end in
301 error, with a backtrace of the last failing test. On a good run, 3 tests
[4f8ca94]302 which need Thumb (ARM) compilers will fail, all in <filename
[25997c4a]303 class="directory">ui/issues</filename> for issues 37131, 49851 and 50993.
[4f9e45d9]304 A fourth test,
[4f8ca94]305 <filename>run-make-fulldeps/sysroot-crates-are-unstable</filename>
[4f9e45d9]306 fails, presumably because we are using only stable features.
[ec2353a]307 <!-- https://github.com/rust-lang/rust/issues/63520 -->
308 A fifth test, run-make-fulldeps/linker-output-non-utf8, is broken.
309 <!-- gdb appears to be fixed now
[4f9e45d9]310 If gdb has been installed, in some circumstances tests in
[f7dd8651]311 <filename class="directory">debuginfo</filename> may fail.--> As with all
[4f8ca94]312 large testsuites, other tests might
[4cc77fbd]313 fail on some machines - if the number of failures is in the single digits,
[4f9e45d9]314 check the log for 'FAILED' and review lines above that, particularly the
315 'stderr:' lines. Any mention of
[4cc77fbd]316 SIGSEGV or signal 11 in a failing test is a cause for concern.
[25997c4a]317 </para>
318
[b6ff745e]319 <para>
[25997c4a]320 Therefore, you should determine the number of tests, failures, etc. The
321 total number of tests which were considered is found by running:
[03d537cd]322 </para>
323
[e7d4e823]324<screen remap="test"><userinput>grep 'running .* tests' rustc-testlog | awk '{ sum += $2 } END { print sum }'</userinput></screen>
[4c6edac]325
[03d537cd]326 <para>
[ec2353a]327 That should report 17349 tests. Similarly, the total tests which failed can
[4c6edac]328 be found by running:
[03d537cd]329 </para>
330
[e7d4e823]331<screen remap="test"><userinput>grep '^test result:' rustc-testlog | awk '{ sum += $6 } END { print sum }'</userinput></screen>
[03d537cd]332
[4c6edac]333 <para>
334 And similarly for the tests which passed use $4, for those which were ignored
335 (i.e. skipped) use $8 (and $10 for 'measured', $12 for 'filtered out' but both
[25997c4a]336 are probably zero). The breakdown does not quite match the overall total.
[4c6edac]337 </para>
338
339 <para>
[a7b1bddc]340 Still as your normal user, do a DESTDIR install:
[4c6edac]341 </para>
342
[fb940713]343<screen><userinput>export LIBSSH2_SYS_USE_PKG_CONFIG=1 &amp;&amp;
[4f8ca94]344DESTDIR=${PWD}/install python3 ./x.py install &amp;&amp;
[fb940713]345unset LIBSSH2_SYS_USE_PKG_CONFIG</userinput></screen>
[a7b1bddc]346
347 <para>
348 Now, as the <systemitem class="username">root</systemitem> user
349 install the files from the DESTDIR:
350 </para>
351
[bb0652ca]352<screen role="root"><userinput>chown -R root:root install &amp;&amp;
353cp -a install/* /</userinput></screen>
[a7b1bddc]354
[03d537cd]355 </sect2>
356
357 <sect2 role="commands">
358 <title>Command Explanations</title>
359
360 <para>
[d396c65]361 <command>ln -svfn rustc-&rust-version; /opt/rustc</command>: if this is
362 not the first use of the <filename class="directory">/opt/rustc</filename>
363 symlink, overwrite it by forcing, and use the '-n' flag to avoid getting
364 confusing results from e.g. <command>ls -l</command>.
365 </para>
366
367 <para>
[4c6edac]368 <command>targets = "X86"</command>: this avoids building all the available
[a7b1bddc]369 linux cross-compilers (Aarch64, MIPS, PowerPC, SystemZ, etc). Unfortunately,
370 rust insists on installing source files for these below
[21699c7e]371 <filename class="directory">/opt/rustc/lib/src</filename>.
[03d537cd]372 </para>
373
374 <para>
[4c6edac]375 <command>extended = true</command>: this installs Cargo alongside Rust.
[03d537cd]376 </para>
377
378 <para>
[4c6edac]379 <command>channel = "stable"</command>: this ensures only stable features
380 can be used, the default in <filename>config.toml</filename> is to use
381 development features, which is not appropriate for a released version.
[03d537cd]382 </para>
383
[326f830]384 <para>
385 <command>rpath = false</command>: by default, <command>rust</command> can
386 be run from where it was built, without being installed. That adds DT_RPATH
387 entries to all of the ELF files, which produces very messy output from
388 <command>ldd</command>, showing the libraries in the place they were built,
389 even if they have been deleted from there after the install.
390 </para>
391
[25997c4a]392 <!-- comment while using shipped LLVM
[a7b1bddc]393 <para>
394 <command>[target.x86_64-unknown-linux-gnu]</command>: the syntax of
395 <filename>config.toml</filename> requires an <literal>llvm-config</literal>
396 entry for each target for which system-llvm is to be used. Change the target
397 to <literal>[target.i686-unknown-linux-gnu]</literal> if you are building
398 on 32-bit x86. This whole section may be omitted if you wish to build
399 against the shipped llvm, or do not have clang, but the resulting build will
[7d259126]400 be larger and take longer.
[25997c4a]401 </para>-->
[a7b1bddc]402
[bb0652ca]403 <para>
404 <command>export RUSTFLAGS="$RUSTFLAGS -C link-args=-lffi"</command>:
405 This adds a link to libffi to any RUSTFLAGS you may already be passing
406 to the build. On some systems, linking fails to include libffi unless
407 this is used. The reason why this is needed is not clear.
408 </para>
409
[25997c4a]410 <para>
411 <command>--exclude src/tools/miri</command>: For a long time, the miri
412 crate (an interpreter for the Midlevel Intermediate Representation)
413 has failed to build on releases. It is optional, but the failure
[4f9e45d9]414 messages can persuade people that the whole build failed. However,
415 although it is not built in the main compile, with rustc-1.35.0 it
416 now gets compiled during the install, but it is broken in this version.
417 <!-- might be unbroken in 1.36.0, if so remove broken from description
418 of miri below. https://github.com/rust-lang/rust/issues/61830 -->
[25997c4a]419 </para>
420
[03d537cd]421 <para>
[4c6edac]422 <command>--verbose</command>: this switch can sometimes provide more
423 information about a test which fails.
[03d537cd]424 </para>
[4c6edac]425
426 <para>
427 <command>--no-fail-fast</command>: this switch ensures that the testsuite
428 will not stop at the first error.
429 </para>
430
[fb940713]431 <para>
432 <command>export LIBSSH2_SYS_USE_PKG_CONFIG=1</command>: On some systems,
433 cairo fails to link during the install because it cannot find libssh2.
434 This seems to fix it, but again the reason why the problem occurs is not
435 understood.
436 </para>
437
[326f830]438 <para>
[4f8ca94]439 <command>DESTDIR=${PWD}/install python3 ./x.py install</command>: This
440 effects a DESTDIR-style install in the source tree,creating an <filename
[bb0652ca]441 class="directory">install</filename> directory. Note that DESTDIR installs
442 need an absolute path, passing 'install' will not work.
[a7b1bddc]443 </para>
444
445 <para>
[bb0652ca]446 <command>chown -R root:root install</command>: the DESTDIR install
[a7b1bddc]447 was run by a regular user, who owns the files. For security, change their
448 owner before doing a simple copy to install them.
[326f830]449 </para>
450
[03d537cd]451 </sect2>
452
[b05ea0b]453 <sect2 role="configuration">
454 <title>Configuring Rust</title>
455
456 <sect3 id="rustc-config">
457 <title>Configuration Information</title>
458
459 <para>
460 If you installed <application>rustc</application> in
461 <filename class="directory">/opt</filename>, you need to update the
[de33b2a]462 following configuration files so that <application>rustc</application>
463 is correctly found by other packages and system processes.
[b05ea0b]464 </para>
465
466 <para>
467 As the <systemitem class="username">root</systemitem> user, update
468 the <filename>/etc/ld.so.conf</filename> file and the dynamic linker's
469 run-time cache file:
470 </para>
471
472<screen role="root"><userinput>cat &gt;&gt; /etc/ld.so.conf &lt;&lt; EOF
473<literal># Begin rustc addition
474
475/opt/rustc/lib
476
477# End rustc addition</literal>
478EOF
479
480ldconfig</userinput></screen>
481
482 <indexterm zone="rustc rustc-config">
483 <primary sortas="e-etc-ld.so.conf">/etc/ld.so.conf</primary>
484 </indexterm>
485
486 <para>
487 As the <systemitem class="username">root</systemitem> user, create
488 the <filename>/etc/profile.d/rustc.sh</filename> file:
489 </para>
490
491<screen role="root"><userinput>cat &gt; /etc/profile.d/rustc.sh &lt;&lt; "EOF"
492<literal># Begin /etc/profile.d/rustc.sh
493
494pathprepend /opt/rustc/bin PATH
495
496# End /etc/profile.d/rustc.sh</literal>
497EOF</userinput></screen>
498
[de33b2a]499 <para>
500 Immediately after installation, update the current PATH
501 for your current shell as a normal user:
502 </para>
[b05ea0b]503
504<screen><userinput>source /etc/profile.d/rustc.sh</userinput></screen>
505
506 </sect3>
507 </sect2>
508
509
[03d537cd]510 <sect2 role="content">
511 <title>Contents</title>
512
513 <segmentedlist>
[78399edc]514 <segtitle>Installed Programs</segtitle>
515 <segtitle>Installed Libraries</segtitle>
516 <segtitle>Installed Directories</segtitle>
[03d537cd]517
518 <seglistitem>
519 <seg>
[ec2353a]520 cargo-clippy, cargo-fmt, cargo-miri, cargo, clippy-driver, miri, rls, rust-gdb, rust-gdbgui, rust-lldb, rustc, rustdoc, rustfmt.
[03d537cd]521 </seg>
522 <seg>
[4c6edac]523 Many lib*&lt;16-byte-hash&gt;.so libraries.
[03d537cd]524 </seg>
525 <seg>
526 ~/.cargo,
[21699c7e]527 /opt/rustc/lib/rustlib,
528 /opt/rustc/share/doc/rustc-&rust-version;, and
529 /opt/rustc/share/zsh/site-functions
[03d537cd]530 </seg>
531 </seglistitem>
532 </segmentedlist>
533
534 <variablelist>
535 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
536 <?dbfo list-presentation="list"?>
537 <?dbhtml list-presentation="table"?>
538
[7d259126]539 <varlistentry id="cargo-clippy">
540 <term><command>cargo-clippy</command></term>
541 <listitem>
542 <para>
543 provides lint checks for a cargo package.
544 </para>
545 <indexterm zone="rust cargo-clippy">
546 <primary sortas="b-cargo-clippy">cargo-clippy</primary>
547 </indexterm>
548 </listitem>
549 </varlistentry>
550
[a7b1bddc]551 <varlistentry id="cargo-fmt">
552 <term><command>cargo-fmt</command></term>
553 <listitem>
554 <para>
555 formats all bin and lib files of the current crate using
556 rustfmt.
557 </para>
558 <indexterm zone="rust cargo-fmt">
559 <primary sortas="b-cargo-fmt">cargo-fmt</primary>
560 </indexterm>
561 </listitem>
562 </varlistentry>
563
[4f9e45d9]564 <varlistentry id="cargo-miri">
565 <term><command>cargo-miri</command></term>
566 <listitem>
567 <para>
568 <!-- FIXME reword to 'is used by' if Miri installed
569 AND works enough to report its \-\-help -->
570 is for use by Miri to interpret bin crates and tests
571 </para>
572 <indexterm zone="rust cargo-miri">
573 <primary sortas="b-cargo-miri">cargo-miri</primary>
574 </indexterm>
575 </listitem>
576 </varlistentry>
577
[4c6edac]578 <varlistentry id="cargo">
579 <term><command>cargo</command></term>
580 <listitem>
581 <para>
582 is the Package Manager for Rust.
583 </para>
584 <indexterm zone="rust cargo">
585 <primary sortas="b-cargo">cargo</primary>
586 </indexterm>
587 </listitem>
588 </varlistentry>
589
[7d259126]590 <varlistentry id="clippy-driver">
591 <term><command>clippy-driver</command></term>
592 <listitem>
593 <para>
594 provides lint checks for Rust.
595 </para>
596 <indexterm zone="rust clippy-driver">
597 <primary sortas="b-clippy-driver">clippy-driver</primary>
598 </indexterm>
599 </listitem>
600 </varlistentry>
601
[4f9e45d9]602 <varlistentry id="miri">
603 <term><command>miri</command></term>
604 <listitem>
605 <para>
606 is an interpreter for Rust's mid-level intermediate representation
607 (MIR). It is broken in this version.
608 </para>
609 <indexterm zone="rust miri">
610 <primary sortas="b-miri">miri</primary>
611 </indexterm>
612 </listitem>
613 </varlistentry>
614
[326f830]615 <varlistentry id="rls">
616 <term><command>rls</command></term>
617 <listitem>
618 <para>
619 is the Rust Language Server. This can run in the background to
620 provide IDEs, editors, and other tools with information about Rust
621 programs.
622 </para>
623 <indexterm zone="rust rls">
624 <primary sortas="b-rls">rls</primary>
625 </indexterm>
626 </listitem>
627 </varlistentry>
628
[03d537cd]629 <varlistentry id="rust-gdb">
630 <term><command>rust-gdb</command></term>
631 <listitem>
632 <para>
[a7b1bddc]633 is a wrapper script for gdb, pulling in Python
634 pretty-printing modules installed in <filename
635 class="directory">/usr/lib/rustlib/etc</filename>.
[03d537cd]636 </para>
637 <indexterm zone="rust rust-gdb">
638 <primary sortas="b-rust-gdb">rust-gdb</primary>
639 </indexterm>
640 </listitem>
641 </varlistentry>
642
[ec2353a]643 <varlistentry id="rust-gdbgui">
644 <term><command>rust-gdbgui</command></term>
645 <listitem>
646 <para>
647 is a wrapper script for a graphical front end to gdb that runs in a
648 browser.
649 </para>
650 <indexterm zone="rust rust-gdbgui">
651 <primary sortas="b-rust-gdbgui">rust-gdbgui</primary>
652 </indexterm>
653 </listitem>
654 </varlistentry>
655
[03d537cd]656 <varlistentry id="rust-lldb">
657 <term><command>rust-lldb</command></term>
658 <listitem>
659 <para>
[a7b1bddc]660 is a wrapper script for LLDB (the LLVM debugger)
661 pulling in the Python pretty-printing modules.
[03d537cd]662 </para>
663 <indexterm zone="rust rust-lldb">
664 <primary sortas="b-rust-lldb">rust=lldb</primary>
665 </indexterm>
666 </listitem>
667 </varlistentry>
668
669 <varlistentry id="rustc">
670 <term><command>rustc</command></term>
671 <listitem>
672 <para>
673 is the rust compiler.
674 </para>
675 <indexterm zone="rust rustc">
676 <primary sortas="b-rustc">rustc</primary>
677 </indexterm>
678 </listitem>
679 </varlistentry>
680
681 <varlistentry id="rustdoc">
682 <term><command>rustdoc</command></term>
683 <listitem>
684 <para>
685 generates documentation from rust source code.
686 </para>
687 <indexterm zone="rust rustdoc">
688 <primary sortas="b-rustdoc">rustdoc</primary>
689 </indexterm>
690 </listitem>
691 </varlistentry>
692
[a7b1bddc]693 <varlistentry id="rustfmt">
694 <term><command>rustfmt</command></term>
695 <listitem>
696 <para>
697 formats rust code.
698 </para>
699 <indexterm zone="rust rustfmt">
700 <primary sortas="b-rustfmt">rustfmt</primary>
701 </indexterm>
702 </listitem>
703 </varlistentry>
704
[03d537cd]705 <varlistentry id="libstd">
706 <term><filename class="libraryfile">libstd-&lt;16-byte-hash&gt;.so</filename></term>
707 <listitem>
708 <para>
709 is the Rust Standard Library, the foundation of portable Rust software.
710 </para>
711 <indexterm zone="rust libstd">
712 <primary sortas="c-libstd">libstd-&lt;16-byte-hash&gt;.so</primary>
713 </indexterm>
714 </listitem>
715 </varlistentry>
716 </variablelist>
717 </sect2>
718</sect1>
Note: See TracBrowser for help on using the repository browser.