rust icon indicating copy to clipboard operation
rust copied to clipboard

rustc offline build

Open deepa2015 opened this issue 9 months ago • 2 comments

Hello, I'm new to RUST and the build process. Going through the documents and scripts. It is required for us to build "rustc" offline. Following are the steps followed

  • Do a rustc build as given in https://rustc-dev-guide.rust-lang.org/building/how-to-build-and-run.html

  • List all Cargo project in "https://github.com/rust-lang/rust.git ". Searched the .toml files

  • In each project, do "cargo vendor". It creates "vendor" folder.

  • Add following to .cargo/config.toml [net] offline = true [source.crates-io] replace-with = "vendored-sources" [source.vendored-sources] directory = "vendor"

  • Rebuild the project (cargo build)

  • For "rust/library/core", it was succesful. Logs are attached. - How to identify that the build is done offline using the prebuilt downloads from "vendor" folder?

  • The same steps are followed for rust-analyzer but get build errors. Vendoring succeeded. error[E0599]: no variant or associated item named InvalidPrefix found for enum TokenKind in the current scope --> crates/parser/src/lexed_str.rs:181:41 | 181 | rustc_lexer::TokenKind::InvalidPrefix | rustc_lexer::TokenKind::InvalidIdent => { | ^^^^^^^^^^^^^ variant or associated item not found in TokenKind

    Compiling cfg v0.0.0 (/home/deepa/work/rust-build/rust/src/tools/rust-analyzer/crates/cfg) For more information about this error, try rustc --explain E0599. .. rust-analyzer-build-error.log

Can "cargo vendor" be added in build script which executes post build of each project? If it is feasible to do then can you please highlight spots in build scripts where changes can be added ? Are there any other issues that may arise ?

Thanks

core-build.log core-cargo-vendor.log core-carg-vendored-build.log

deepa2015 avatar May 10 '24 11:05 deepa2015

It looks like you are using cargo build and cargo vendor manually. The rust project is not intended to be used that way. The ./x script is the intended mechanism for both building the vendored set (./x vendor) and building (./x build rust-analyzer).

ehuss avatar May 10 '24 13:05 ehuss

You could also build from the dist-src tarball, which already has all submodules and vendored crates included:

e.g. https://static.rust-lang.org/dist/2024-05-10/rustc-nightly-src.tar.xz

Also set [build] vendor = true in your root config.toml. (the one for ./x, not .cargo/config.toml)

cuviper avatar May 10 '24 16:05 cuviper

It looks like you are using cargo build and cargo vendor manually. The rust project is not intended to be used that way. The ./x script is the intended mechanism for both building the vendored set (./x vendor) and building (./x build rust-analyzer).

Thanks for the inputs. It did work with "master" branch. For 1.78.0 branch, I do not see "vendor" option with x.py ./x vendor Building bootstrap Finished dev [unoptimized] target(s) in 0.02s error: 'x.py' requires a subcommand but one was not provided [subcommands: build, b, check, c, clippy, fix, fmt, doc, d, test, t, bench, clean, dist, install, run, r, setup, suggest]

Usage: x.py [options] [...]

For more information, try '--help'. Build completed unsuccessfully in 0:00:00

How to vendor sources for 1.77 , 1.78 ?

You could also build from the dist-src tarball, which already has all submodules and vendored crates included:

e.g. https://static.rust-lang.org/dist/2024-05-10/rustc-nightly-src.tar.xz

Also set [build] vendor = true in your root config.toml. (the one for ./x, not .cargo/config.toml)

The link has only the nightly src tar . Can you please share dist-src tarballs for 1.77, 1.78 ?

Thanks!

deepa2015 avatar May 15 '24 10:05 deepa2015

For 1.78.0 branch, I do not see "vendor" option with x.py

x vendor was implemented recently (https://github.com/rust-lang/rust/pull/123942), that's why it doesn't exist in the 1.78.0 source.

onur-ozkan avatar May 15 '24 11:05 onur-ozkan

Can you please share dist-src tarballs for 1.77, 1.78 ?

Those are available directly in the dist/ path, like: https://static.rust-lang.org/dist/rustc-1.78.0-src.tar.xz

cuviper avatar May 15 '24 17:05 cuviper