Module dist

Source
Expand description

Implementation of the various distribution aspects of the compiler.

This module is responsible for creating tarballs of the standard library, compiler, and documentation. This ends up being what we distribute to everyone as well.

No tarball is actually created literally in this file, but rather we shell out to rust-installer still. This may one day be replaced with bits and pieces of rustup.rs!

StructsΒ§

Analysis
The rust-analysis component used to create a tarball of save-analysis metadata.
Bootstrap
Tarball intended for internal consumption to ease rustc/std development.
BuildManifest
Tarball containing a prebuilt version of the build-manifest tool, intended to be used by the release process to avoid cloning the monorepo and building stuff.
Cargo
Clippy
CraneliftCodegenBackend
DebuggerScripts
Copies debugger scripts for target into the given compiler sysroot.
Docs
Extended
Extended archive that contains the compiler, standard library and a bunch of tools.
Gcc
Tarball containing a prebuilt version of the libgccjit library, needed as a dependency for the GCC codegen backend (similarly to the LLVM backend needing a prebuilt libLLVM).
JsonDocs
Builds the rust-docs-json installer component. It contains the documentation of the standard library in JSON format.
LlvmBitcodeLinker
Distributes the llvm-bitcode-linker tool so that it can be used by a compiler whose host is target.
LlvmTools
Mingw
Builds the rust-mingw installer component.
Miri
PlainSourceTarball
ReproducibleArtifacts
Tarball containing artifacts necessary to reproduce the build of rustc.
RustAnalyzer
Distribute the rust-analyzer component, which is used as a LSP by various IDEs.
RustDev
Tarball intended for internal consumption to ease rustc/std development.
Rustc
Creates the rustc installer component.
RustcDev
Tarball containing the compiler that gets downloaded and used by rust.download-rustc.
RustcDocs
Builds the rustc-docs installer component. Apart from the documentation of the rustc_* crates, it also includes the documentation of various in-tree helper tools (bootstrap, build_helper, tidy), and also rustc_private tools like rustdoc, clippy, miri or rustfmt.
Rustfmt
Src
Std
Builds the standard library (rust-std) dist component for a given target. This includes the standard library dynamic library file (e.g. .so/.dll), along with stdlib .rlibs.

FunctionsΒ§

add_env πŸ”’
copy_src_dirs πŸ”’
Use the builder to make a filtered copy of base/X for X in (src_dirs - exclude_dirs) to dst_dir.
copy_target_libs πŸ”’
Copy stamped files into an image’s target/lib directory.
distdir πŸ”’
find_files πŸ”’
generate_target_spec_json_schema πŸ”’
get_cc_search_dirs πŸ”’
install_llvm_file πŸ”’
make_win_dist πŸ”’
maybe_install_llvm πŸ”’
Maybe add LLVM object files to the given destination lib-dir. Allows either static or dynamic linking.
maybe_install_llvm_runtime
Maybe add libLLVM.so to the runtime lib-dir for rustc itself.
maybe_install_llvm_target
Maybe add libLLVM.so to the target lib-dir for linking.
pkgname
runtime_dll_dist πŸ”’
should_build_extended_tool πŸ”’
skip_host_target_lib πŸ”’
tmpdir
verify_uefi_rlib_format πŸ”’
Check that all objects in rlibs for UEFI targets are COFF. This ensures that the C compiler isn’t producing ELF objects, which would not link correctly with the COFF objects.