source: general/prog/rust.xml@ e59834d

12.0 12.1 kea ken/TL2024 ken/tuningfonts lazarus lxqt plabs/newcss python3.11 qt5new rahul/power-profiles-daemon renodr/vulkan-addition trunk xry111/llvm18 xry111/xf86-video-removal
Last change on this file since e59834d was e59834d, checked in by Xi Ruoyao <xry111@…>, 13 months ago

rust: Promote curl to required

It's needed for downloading the stage 0 binaries.

  • Property mode set to 100644
File size: 27.0 KB
Line 
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
7 <!ENTITY rust-download-http "https://static.rust-lang.org/dist/rustc-&rust-version;-src.tar.xz">
8 <!ENTITY rust-download-ftp " ">
9 <!ENTITY rust-md5sum "3b94faca83c0c56f2d04ea3b3a22699b">
10 <!ENTITY rust-size "141 MB">
11 <!ENTITY rust-buildsize "8.9 GB (308 MB installed); add 7.2 GB if running the tests">
12 <!ENTITY rust-time "24 SBU (including download time; add 17 SBU for tests, both using parallelism=4)">
13]>
14
15<sect1 id="rust" xreflabel="rustc-&rust-version;">
16 <?dbhtml filename="rust.html"?>
17
18
19 <title>Rustc-&rust-version;</title>
20
21 <indexterm zone="rust">
22 <primary sortas="a-rust">Rust</primary>
23 </indexterm>
24
25 <sect2 role="package">
26 <title>Introduction to Rust</title>
27 <para>
28 The <application>Rust</application> programming language is designed
29 to be a safe, concurrent, practical language.
30 </para>
31
32 <para>
33 This package is updated on a six-weekly release cycle. Because it is
34 such a large and slow package to build, is at the moment only required
35 by a few packages in this book, and particularly because newer versions
36 tend to break older mozilla packages, the BLFS editors take the view that
37 it should only be updated when that is necessary (either to fix problems,
38 or to allow a new version of a package to build).
39 </para>
40
41 <para>
42 As with many other programming languages, rustc (the rust compiler)
43 needs a binary from which to bootstrap. It will download a stage0
44 binary at the start of the build, so you cannot compile it without an
45 Internet connection.
46 </para>
47
48 <note>
49 <para>
50 Although BLFS usually installs in <filename
51 class="directory">/usr</filename>, when you later upgrade to a newer
52 version of <application>rust</application> the old libraries in <filename
53 class="directory">/usr/lib/rustlib</filename> will remain, with various
54 hashes in their names, but will not be usable and will waste space. The
55 editors recommend placing the files in the <filename
56 class="directory">/opt</filename> directory. In particular, if you
57 have reason to rebuild with a modified configuration (e.g. using the
58 shipped LLVM after building with shared LLVM, perhaps to compile crates
59 for architectures which the BLFS LLVM build does not support)
60 it is possible for the install to leave a broken
61 <command>cargo</command> program. In such a situation, either remove
62 the existing installation first, or use a different prefix such as
63 /opt/rustc-&rust-version;-build2.
64 </para>
65
66 <para>
67 If you prefer, you can of course change the prefix to <filename
68 class="directory">/usr</filename>.
69 </para>
70 </note>
71
72 <para>
73 The current <application>rustbuild</application> build-system will use
74 all processors, although it does not scale well and often falls
75 back to just using one core while waiting for a library to compile.
76 However it can be mostly limited to a specified number of processors by
77 a combination of adding the switch <literal>--jobs &lt;N&gt;</literal>
78 (e.g. '--jobs 4' to limit to 4 processors) on each invocation of
79 <command>python3 ./x.py</command> <emphasis>and</emphasis> using an
80 environment variable <envar>CARGO_BUILD_JOBS=&lt;N&gt;</envar>. At the
81 moment this is not effective when some of the rustc tests are run.
82 </para>
83
84 <para>
85 The current version of rust's num_cpus crate now recognizes that cgroups
86 can be used to restrict which processors it is allowed to use. So if your
87 machine lacks DRAM (typically, less than 2GB DRAM per core) that might be
88 an alternative to taking CPUs offline.
89 <phrase revision="sysv">In sysv systems cgroups requires <ulink
90 url="https://sourceforge.net/projects/libcg/">libcgroup</ulink>.</phrase>
91 <phrase revision="systemd">That can be achieved by using
92 <command>systemd-run</command> command with
93 <parameter>-p User=$(whoami)</parameter> and
94 <parameter>-p AllowedCPUs=0-<replaceable>x</replaceable></parameter>
95 (with <replaceable>x</replaceable> replaced with the number of CPU
96 cores you want to use minus one) options.</phrase>
97 </para>
98
99 <para>
100 At the moment <application>Rust</application> does not provide any
101 guarantees of a stable ABI.
102 </para>
103
104 <note>
105 <para>
106 Rustc defaults to building for ALL supported architectures, using a
107 shipped copy of LLVM. In BLFS the build is only for the X86
108 architecture.
109 If you intend to develop rust crates, this build may not be good
110 enough for your purposes.
111 </para>
112 <para>
113 The build times of this version when repeated on the same machine are
114 often reasonably consistent, but as with all compilations using
115 <command>rustc</command> there can be some very slow outliers.
116 </para>
117 </note>
118
119 &lfs113_checked;
120
121 <bridgehead renderas="sect3">Package Information</bridgehead>
122 <itemizedlist spacing="compact">
123 <listitem>
124 <para>
125 Download (HTTP): <ulink url="&rust-download-http;"/>
126 </para>
127 </listitem>
128 <listitem>
129 <para>
130 Download (FTP): <ulink url="&rust-download-ftp;"/>
131 </para>
132 </listitem>
133 <listitem>
134 <para>
135 Download MD5 sum: &rust-md5sum;
136 </para>
137 </listitem>
138 <listitem>
139 <para>
140 Download size: &rust-size;
141 </para>
142 </listitem>
143 <listitem>
144 <para>
145 Estimated disk space required: &rust-buildsize;
146 </para>
147 </listitem>
148 <listitem>
149 <para>
150 Estimated build time: &rust-time;
151 </para>
152 </listitem>
153 </itemizedlist>
154
155<!--<bridgehead renderas="sect3">Additional Downloads</bridgehead>
156 <itemizedlist spacing="compact">
157 <listitem>
158 <para>
159 Required patch:
160 <ulink url="&patch-root;/rustc-&rust-version;-llvm9_fixes-1.patch"/>
161 </para>
162 </listitem>
163 </itemizedlist>-->
164
165 <bridgehead renderas="sect3">Rust Dependencies</bridgehead>
166
167 <bridgehead renderas="sect4">Required</bridgehead>
168 <para role="required">
169 <xref linkend="cmake"/> and
170 <!-- Required for downloading stage 0 binaries.
171 Otherwise it's recommended (if not installed, a vendored copy
172 will be built). -->
173 <xref linkend="curl"/>
174 </para>
175
176 <bridgehead renderas="sect4">Recommended</bridgehead>
177 <para role="recommended">
178 <xref linkend="libssh2"/> and
179 <xref linkend="llvm"/>
180 (built with -DLLVM_LINK_LLVM_DYLIB=ON so that rust can link to
181 system LLVM instead of building its shipped version)
182 </para>
183
184 <note>
185 <para>
186 If a recommended dependency is not installed, a shipped copy in the
187 Rustc source tarball will be built and used.
188 </para>
189 </note>
190
191 <bridgehead renderas="sect4">Optional</bridgehead>
192 <para role="optional">
193 <xref linkend="gdb"/> (used by the test suite if it is present) and
194 <ulink url='https://libgit2.org/'>libgit2</ulink>
195 </para>
196
197 <para condition="html" role="usernotes">
198 User Notes: <ulink url="&blfs-wiki;/rust"/>
199 </para>
200 </sect2>
201
202 <sect2 role="installation">
203 <title>Installation of Rust</title>
204
205 <note>
206 <para>
207 Currently the rust compiler produces SSE2 instructions for 32-bit x86,
208 causing the generated code to be broken on 32-bit systems without a
209 SSE2-capable processor. All x86 processor models released after
210 2004 should be SSE2-capable. Run
211 <command>lscpu | grep sse2</command> as a test. If it outputs
212 anything, your CPU is SSE2-capable and OK. Otherwise you may try
213 to build this package <emphasis>on a SSE2-capable system</emphasis>
214 with the following fix applied:
215 </para>
216
217 <!-- computeroutput used deliberately to stop anyone from copying
218 blindly -->
219<screen role="nodump"><computeroutput>sed 's@pentium4@pentiumpro@' -i \
220 compiler/rustc_target/src/spec/i686_unknown_linux_gnu.rs</computeroutput></screen>
221
222 <para>
223 And copy the resulting
224 <filename class="directory">/opt/rustc-&rust-version;</filename>
225 to the system without SSE2 capability. But this change is still
226 under upstream review and not tested by BLFS editors.
227 </para>
228 </note>
229
230 <para>
231 To install into the
232 <filename class="directory">/opt</filename> directory, remove any
233 existing <filename>/opt/rustc</filename> symlink
234 and create a new directory (i.e. with a different name if trying a
235 modified build of the same version).
236 As the <systemitem class="username">root</systemitem>
237 user:
238 </para>
239
240<screen role="root"><userinput>mkdir -pv /opt/rustc-&rust-version; &amp;&amp;
241ln -svfn rustc-&rust-version; /opt/rustc</userinput></screen>
242
243 <note>
244 <para>
245 If multiple versions of <application>Rust</application> are installed
246 in <filename class="directory">/opt</filename>, changing to another
247 version only requires changing the <filename> /opt/rustc</filename>
248 symbolic link and then running <command>ldconfig</command>.
249 </para>
250 </note>
251
252 <para>
253 Create a suitable <filename>config.toml</filename> file which will
254 configure the build.
255 </para>
256
257<screen><userinput>cat &lt;&lt; EOF &gt; config.toml
258<literal># see config.toml.example for more possible options
259# See the 8.4 book for an old example using shipped LLVM
260# e.g. if not installing clang, or using a version before 13.0
261
262# tell x.py to not keep printing an annoying warning
263changelog-seen = 2
264
265[llvm]
266# by default, rust will build for a myriad of architectures
267targets = "X86"
268
269# When using system llvm prefer shared libraries
270link-shared = true
271
272[build]
273# omit docs to save time and space (default is to build them)
274docs = false
275
276# install extended tools: cargo, clippy, etc
277extended = true
278
279# Do not query new versions of dependencies online.
280locked-deps = true
281
282# Specify which extended tools (those from the default install).
283tools = ["cargo", "clippy", "rustfmt"]
284
285# Use the source code shipped in the tarball for the dependencies.
286# The combination of this and the "locked-deps" entry avoids downloading
287# many crates from Internet, and makes the Rustc build more stable.
288vendor = true
289
290[install]
291prefix = "/opt/rustc-&rust-version;"
292docdir = "share/doc/rustc-&rust-version;"
293
294[rust]
295channel = "stable"
296description = "for BLFS &version;"
297
298# BLFS used to not install the FileCheck executable from llvm,
299# so disabled codegen tests. The assembly tests rely on FileCheck
300# and cannot easily be disabled, so those will anyway fail if
301# FileCheck has not been installed.
302#codegen-tests = false
303
304[target.x86_64-unknown-linux-gnu]
305# NB the output of llvm-config (i.e. help options) may be
306# dumped to the screen when config.toml is parsed.
307llvm-config = "/usr/bin/llvm-config"
308
309[target.i686-unknown-linux-gnu]
310# NB the output of llvm-config (i.e. help options) may be
311# dumped to the screen when config.toml is parsed.
312llvm-config = "/usr/bin/llvm-config"
313
314</literal>
315EOF</userinput></screen>
316
317<!--<para>
318 Adapt rustc to allow it to build and function with the changes in LLVM-9:
319 </para>
320
321<screen><userinput remap="pre">patch -Np1 -i ../rustc-&rust-version;-llvm9_fixes-1.patch</userinput></screen>-->
322
323 <para>
324 Compile <application>Rust</application> by running the following
325 commands:
326 </para>
327
328<!-- fixed in 1.58.0, retain as a reminder that fixed crates can be used
329<screen><userinput>sed -i -e '/^curl /s/0.4.38/0.4.40/' \
330 -e '/^curl-sys /s/0.4.48/0.4.50/' \
331 src/tools/cargo/Cargo.toml &amp;&amp; -->
332
333<screen><userinput>{ [ ! -e /usr/include/libssh2.h ] ||
334 export LIBSSH2_SYS_USE_PKG_CONFIG=1; } &amp;&amp;
335python3 ./x.py build</userinput></screen>
336
337 <note>
338 <para>
339 The test suite will generate some messages in the
340 <phrase revision="sysv">system log</phrase>
341 <phrase revision="systemd">systemd journal</phrase>
342 for traps on invalid opcodes, and for segmentation faults.
343 In themselves these are nothing to worry about, just a way for the
344 test to be terminated.
345 </para>
346 </note>
347
348 <para>
349 To run the tests (again using all available CPUs) issue:
350 </para>
351
352<screen remap="test"><userinput>python3 ./x.py test --verbose --no-fail-fast | tee rustc-testlog</userinput></screen>
353
354 <para>
355 If <command>FileCheck</command> from <application>LLVM</application> has
356 not been installed, all 47 tests from the <quote>assembly</quote> suite
357 will fail.
358 </para>
359
360 <para>
361 As with all large test suites, other tests might fail on some machines -
362 if the number of additional failures is in the single digits,
363 check the log for 'failures:' and review lines above that, particularly the
364 'stderr:' lines. Any mention of
365 SIGSEGV or signal 11 in a failing test is a cause for concern.
366 </para>
367
368 <para>
369 If you get any <emphasis>other</emphasis> failing test which reports an
370 issue number then you should search for that issue. For example, when
371 rustc &gt;= 1.41.1 was built with a version of sysllvm before 10.0 the test
372 for issue 69225 failed <ulink
373 url="https://github.com/rust-lang/rust/issues/69225"/> and that should be
374 regarded as a critical failure (they released 1.41.1 because of it).
375 Most other failures will not be critical.
376 </para>
377
378 <para>
379 Therefore, you should determine the number of failures.
380 </para>
381
382 <para>
383 The number of tests which passed and failed can be found by running:
384 </para>
385
386<!-- split into two lines for narrower screen windows -->
387<screen remap="test"><userinput>grep '^test result:' rustc-testlog |
388 awk '{sum1 += $4; sum2 += $6} END { print sum1 " passed; " sum2 " failed" }'</userinput></screen>
389
390 <para>
391 The other available fields are $8 for those which were ignored
392 (i.e. skipped), $10 for 'measured' and $12 for 'filtered out' but both
393 those last two are probably zero.
394 </para>
395
396 <para>
397 Now, as the &root; user, install the package:
398 </para>
399
400 <note>
401 <para>
402 If <command>sudo</command> or <command>su</command> is invoked for
403 switching to the &root; user, ensure
404 <envar>LIBSSH2_SYS_USE_PKG_CONFIG</envar> is correctly passed or the
405 following command may completely rebuild this package. For
406 <command>sudo</command>, use the
407 <option>--preserve-env=LIBSSH2_SYS_USE_PKG_CONFIG</option> option.
408 For <command>su</command>, do <emphasis>not</emphasis> use the
409 <option>-</option> or <option>--login</option>.
410 </para>
411 </note>
412
413<screen role='root'><userinput>python3 ./x.py install</userinput></screen>
414
415 </sect2>
416
417 <sect2 role="commands">
418 <title>Command Explanations</title>
419
420 <para>
421 <command>ln -svfn rustc-&rust-version; /opt/rustc</command>: if this is
422 not the first use of the <filename class="directory">/opt/rustc</filename>
423 symlink, overwrite it by forcing, and use the '-n' flag to avoid getting
424 confusing results from e.g. <command>ls -l</command>.
425 </para>
426
427 <para>
428 <command>targets = "X86"</command>: this avoids building all the available
429 linux cross-compilers (AArch64, MIPS, PowerPC, SystemZ, etc). Unfortunately,
430 rust insists on installing source files for these below
431 <filename class="directory">/opt/rustc/lib/src</filename>.
432 </para>
433
434 <para>
435 <command>extended = true</command>: this installs several tools
436 (specified by the <literal>tools</literal> entry) alongside
437 <command>rustc</command>.
438 </para>
439
440 <para>
441 <command>tools = ["cargo", "clippy", "rustfmt"]</command>: if the tools
442 are not scecified, the absence of <application>Miri</application> now
443 causes the install to fail. But <application>Miri</application> is not
444 built in the stable channel. Some of the other tools are unlikely to
445 be useful unless using (old) code analyzers or editing the standard library.
446 This set match those from the 'default' profile in binary command
447 <command>rustup</command> which are recommended for most users, except that
448 the documentation was disabled at the start of the '[build]' section.
449 </para>
450
451 <para>
452 <command>channel = "stable"</command>: this ensures only stable features
453 can be used, the default in <filename>config.toml</filename> is to use
454 development features, which is not appropriate for a released version.
455 </para>
456
457 <!-- comment while using shipped LLVM -->
458 <para>
459 <command>[target.x86_64-unknown-linux-gnu]</command>: the syntax of
460 <filename>config.toml</filename> requires an <literal>llvm-config</literal>
461 entry for each target for which system-llvm is to be used. Change the target
462 to <literal>[target.i686-unknown-linux-gnu]</literal> if you are building
463 on 32-bit x86. This whole section may be omitted if you wish to build
464 against the shipped llvm, or do not have clang, but the resulting build will
465 be larger and take longer.
466 </para>
467
468<!--<para>
469 <command>sed -i -e '/^curl /s/0.4.38/0.4.40/' ... </command>: two crates
470 normally downloaded for this release do not correctly initialise
471 <application>curl</application> if using
472 <application>openssl-3.0.0</application>. Upstream has fixed that for a
473 future release, this sed causes the fixed versions to be used.
474 </para>-->
475
476 <!-- https://github.com/alexcrichton/ssh2-rs/issues/173 -->
477 <para>
478 <command>export LIBSSH2_SYS_USE_PKG_CONFIG=1</command>: Allow
479 <command>cargo</command> to link to system libssh2.
480 </para>
481
482<!--<para>
483 <command>export RUSTFLAGS="$RUSTFLAGS -C link-args=-lffi"</command>:
484 This adds a link to libffi to any RUSTFLAGS you may already be passing
485 to the build. On some systems, linking fails to include libffi unless
486 this is used. The reason why this is needed is not clear.
487 2023-01-14 : assumed to be no longer needed, but it is some years
488 since one person reported needing this, keep it commented for the moment.
489 </para>-->
490
491 <para>
492 <command>--verbose</command>: this switch can sometimes provide more
493 information about a test which fails.
494 </para>
495
496 <para>
497 <command>--no-fail-fast</command>: this switch ensures that the test suite
498 will not stop at the first error.
499 </para>
500
501 </sect2>
502
503 <sect2 role="configuration">
504 <title>Configuring Rust</title>
505
506 <sect3 id="rustc-config">
507 <title>Configuration Information</title>
508
509 <para>
510 If you installed <application>rustc</application> in
511 <filename class="directory">/opt</filename>, you need to update the
512 following configuration files so that <application>rustc</application>
513 is correctly found by other packages and system processes.
514 </para>
515
516 <para>
517 As the <systemitem class="username">root</systemitem> user, create
518 the <filename>/etc/profile.d/rustc.sh</filename> file:
519 </para>
520
521<screen role="root"><userinput>cat &gt; /etc/profile.d/rustc.sh &lt;&lt; "EOF"
522<literal># Begin /etc/profile.d/rustc.sh
523
524pathprepend /opt/rustc/bin PATH
525
526# Include /opt/rustc/man in the MANPATH variable to access manual pages
527pathappend /opt/rustc/share/man MANPATH
528
529# End /etc/profile.d/rustc.sh</literal>
530EOF</userinput></screen>
531
532 <para>
533 Immediately after installation, update the current PATH
534 for your current shell as a normal user:
535 </para>
536
537<screen><userinput>source /etc/profile.d/rustc.sh</userinput></screen>
538
539 </sect3>
540 </sect2>
541
542
543 <sect2 role="content">
544 <title>Contents</title>
545
546 <segmentedlist>
547 <segtitle>Installed Programs</segtitle>
548 <segtitle>Installed Libraries</segtitle>
549 <segtitle>Installed Directories</segtitle>
550
551 <seglistitem>
552 <seg>
553 cargo-clippy, cargo-fmt, cargo, clippy-driver, rust-gdb,
554 rust-gdbgui, rust-lldb, rustc, rustdoc, and rustfmt
555 </seg>
556 <seg>
557 librustc-driver-&lt;16-byte-hash&gt;.so,
558 libstd-&lt;16-byte-hash&gt;.so, and
559 libtest-&lt;16-byte-hash&gt;.so
560 </seg>
561 <seg>
562 ~/.cargo,
563 /opt/rustc, symbolic link to
564 /opt/rustc-&rust-version;
565 </seg>
566 </seglistitem>
567 </segmentedlist>
568
569 <variablelist>
570 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
571 <?dbfo list-presentation="list"?>
572 <?dbhtml list-presentation="table"?>
573
574 <varlistentry id="cargo-clippy">
575 <term><command>cargo-clippy</command></term>
576 <listitem>
577 <para>
578 provides lint checks for a cargo package
579 </para>
580 <indexterm zone="rust cargo-clippy">
581 <primary sortas="b-cargo-clippy">cargo-clippy</primary>
582 </indexterm>
583 </listitem>
584 </varlistentry>
585
586 <varlistentry id="cargo-fmt">
587 <term><command>cargo-fmt</command></term>
588 <listitem>
589 <para>
590 formats all bin and lib files of the current crate using
591 rustfmt
592 </para>
593 <indexterm zone="rust cargo-fmt">
594 <primary sortas="b-cargo-fmt">cargo-fmt</primary>
595 </indexterm>
596 </listitem>
597 </varlistentry>
598
599<!-- <varlistentry id="cargo-miri">
600 <term><command>cargo-miri</command></term>
601 <listitem>
602 <para>
603 is for use by Miri to interpret bin crates and tests. It is
604 not installed by default.
605 </para>
606 <indexterm zone="rust cargo-miri">
607 <primary sortas="b-cargo-miri">cargo-miri</primary>
608 </indexterm>
609 </listitem>
610 </varlistentry>-->
611
612 <varlistentry id="cargo">
613 <term><command>cargo</command></term>
614 <listitem>
615 <para>
616 is the Package Manager for Rust
617 </para>
618 <indexterm zone="rust cargo">
619 <primary sortas="b-cargo">cargo</primary>
620 </indexterm>
621 </listitem>
622 </varlistentry>
623
624 <varlistentry id="clippy-driver">
625 <term><command>clippy-driver</command></term>
626 <listitem>
627 <para>
628 provides lint checks for Rust
629 </para>
630 <indexterm zone="rust clippy-driver">
631 <primary sortas="b-clippy-driver">clippy-driver</primary>
632 </indexterm>
633 </listitem>
634 </varlistentry>
635
636<!-- <varlistentry id="miri">
637 <term><command>miri</command></term>
638 <listitem>
639 <para>
640 is an interpreter for Rust's mid-level intermediate representation
641 (MIR). It is not installed by default.
642 </para>
643 <indexterm zone="rust miri">
644 <primary sortas="b-miri">miri</primary>
645 </indexterm>
646 </listitem>
647 </varlistentry>
648
649 <varlistentry id="rls">
650 <term><command>rls</command></term>
651 <listitem>
652 <para>
653 is the Rust Language Server. This can run in the background to
654 provide IDEs, editors, and other tools with information about Rust
655 programs
656 </para>
657 <indexterm zone="rust rls">
658 <primary sortas="b-rls">rls</primary>
659 </indexterm>
660 </listitem>
661 </varlistentry>
662
663 <varlistentry id="rust-analyzer">
664 <term><command>rust-analyzer</command></term>
665 <listitem>
666 <para>
667 is an implementation of Language Server Protocol for the Rust
668 programming language.
669 </para>
670 <indexterm zone="rust rust-analyzer">
671 <primary sortas="b-rust-analyzer">rust-analyzer</primary>
672 </indexterm>
673 </listitem>
674 </varlistentry>
675
676 <varlistentry id="rust-demangler">
677 <term><command>rust-demangler</command></term>
678 <listitem>
679 <para>
680 converts a list of Rust mangled symbols into a
681 corresponding list of demangled symbols
682 </para>
683 <indexterm zone="rust rust-demangler">
684 <primary sortas="b-rust-demangler">rust-demangler</primary>
685 </indexterm>
686 </listitem>
687 </varlistentry> -->
688
689 <varlistentry id="rust-gdb">
690 <term><command>rust-gdb</command></term>
691 <listitem>
692 <para>
693 is a wrapper script for gdb, pulling in Python pretty-printing
694 modules installed in
695 <filename class="directory">/opt/rustc-&rust-version;/lib/rustlib/etc</filename>
696 </para>
697 <indexterm zone="rust rust-gdb">
698 <primary sortas="b-rust-gdb">rust-gdb</primary>
699 </indexterm>
700 </listitem>
701 </varlistentry>
702
703 <varlistentry id="rust-gdbgui">
704 <term><command>rust-gdbgui</command></term>
705 <listitem>
706 <para>
707 is a wrapper script for a graphical front end to gdb that runs in a
708 browser
709 </para>
710 <indexterm zone="rust rust-gdbgui">
711 <primary sortas="b-rust-gdbgui">rust-gdbgui</primary>
712 </indexterm>
713 </listitem>
714 </varlistentry>
715
716 <varlistentry id="rust-lldb">
717 <term><command>rust-lldb</command></term>
718 <listitem>
719 <para>
720 is a wrapper script for LLDB (the LLVM debugger)
721 pulling in the Python pretty-printing modules
722 </para>
723 <indexterm zone="rust rust-lldb">
724 <primary sortas="b-rust-lldb">rust=lldb</primary>
725 </indexterm>
726 </listitem>
727 </varlistentry>
728
729 <varlistentry id="rustc">
730 <term><command>rustc</command></term>
731 <listitem>
732 <para>
733 is the rust compiler
734 </para>
735 <indexterm zone="rust rustc">
736 <primary sortas="b-rustc">rustc</primary>
737 </indexterm>
738 </listitem>
739 </varlistentry>
740
741 <varlistentry id="rustdoc">
742 <term><command>rustdoc</command></term>
743 <listitem>
744 <para>
745 generates documentation from rust source code
746 </para>
747 <indexterm zone="rust rustdoc">
748 <primary sortas="b-rustdoc">rustdoc</primary>
749 </indexterm>
750 </listitem>
751 </varlistentry>
752
753 <varlistentry id="rustfmt">
754 <term><command>rustfmt</command></term>
755 <listitem>
756 <para>
757 formats rust code
758 </para>
759 <indexterm zone="rust rustfmt">
760 <primary sortas="b-rustfmt">rustfmt</primary>
761 </indexterm>
762 </listitem>
763 </varlistentry>
764
765 <varlistentry id="libstd">
766 <term><filename class="libraryfile">libstd-&lt;16-byte-hash&gt;.so</filename></term>
767 <listitem>
768 <para>
769 is the Rust Standard Library, the foundation of portable Rust software
770 </para>
771 <indexterm zone="rust libstd">
772 <primary sortas="c-libstd">libstd-&lt;16-byte-hash&gt;.so</primary>
773 </indexterm>
774 </listitem>
775 </varlistentry>
776 </variablelist>
777 </sect2>
778
779</sect1>
Note: See TracBrowser for help on using the repository browser.