diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 997911292c5..114e2c279db 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -29,7 +29,7 @@ jobs: - build_std - clippy - msrv - - docs +# - docs - lockfile - resolver - rustfmt @@ -47,7 +47,7 @@ jobs: - build_std - clippy - msrv - - docs +# - docs - lockfile - resolver - rustfmt @@ -72,7 +72,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - run: rustup update stable && rustup default stable + - run: rustup toolchain install 1.79.0 && rustup default 1.79.0 - run: rustup component add clippy - run: cargo clippy --workspace --all-targets --no-deps -- -D warnings @@ -100,7 +100,7 @@ jobs: - uses: actions/checkout@v4 with: fetch-depth: 0 - - run: rustup update stable && rustup default stable + - run: rustup toolchain install 1.78.0 && rustup default 1.78.0 - name: Install cargo-semver-checks run: | mkdir installed-bins @@ -123,36 +123,32 @@ jobs: include: - name: Linux x86_64 stable os: ubuntu-latest - rust: stable - other: i686-unknown-linux-gnu - - name: Linux x86_64 beta - os: ubuntu-latest - rust: beta + rust: 1.79.0 other: i686-unknown-linux-gnu - - name: Linux x86_64 nightly - os: ubuntu-latest - rust: nightly - other: i686-unknown-linux-gnu - - name: macOS x86_64 stable - os: macos-13 - rust: stable - other: x86_64-apple-ios - - name: macOS x86_64 nightly - os: macos-13 - rust: nightly - other: x86_64-apple-ios +# - name: Linux x86_64 beta +# os: ubuntu-latest +# rust: beta +# other: i686-unknown-linux-gnu +# - name: Linux x86_64 nightly +# os: ubuntu-latest +# rust: nightly +# other: i686-unknown-linux-gnu - name: macOS aarch64 stable os: macos-14 - rust: stable + rust: 1.79.0 other: x86_64-apple-darwin +# - name: macOS x86_64 nightly +# os: macos-latest +# rust: nightly +# other: x86_64-apple-ios - name: Windows x86_64 MSVC stable os: windows-latest - rust: stable-msvc + rust: 1.79.0-msvc other: i686-pc-windows-msvc - - name: Windows x86_64 gnu nightly # runs out of space while trying to link the test suite - os: windows-latest - rust: nightly-gnu - other: i686-pc-windows-gnu +# - name: Windows x86_64 gnu nightly # runs out of space while trying to link the test suite +# os: windows-latest +# rust: nightly-gnu +# other: i686-pc-windows-gnu name: Tests ${{ matrix.name }} steps: - uses: actions/checkout@v4 @@ -217,7 +213,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - run: rustup update --no-self-update stable && rustup default stable + - run: rustup toolchain install 1.79.0 && rustup default 1.79.0 - run: rustup target add i686-unknown-linux-gnu - run: sudo apt update -y && sudo apt install gcc-multilib libsecret-1-0 libsecret-1-dev -y - run: rustup component add rustfmt || echo "rustfmt not available" @@ -229,33 +225,33 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - run: rustup update nightly && rustup default nightly + - run: rustup update stable && rustup default stable - run: rustup component add rust-src - run: cargo build - run: cargo test -p cargo --test build-std env: CARGO_RUN_BUILD_STD_TESTS: 1 - docs: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - run: rustup update nightly && rustup default nightly - - run: rustup update stable - - run: rustup component add rust-docs - - run: ci/validate-man.sh - # This requires rustfmt, use stable. - - name: Run semver-check - run: cargo +stable run -p semver-check - - name: Ensure intradoc links are valid - run: cargo doc --workspace --document-private-items --no-deps - env: - RUSTDOCFLAGS: -D warnings - - name: Install mdbook - run: | - mkdir mdbook - curl -Lf https://github.com/rust-lang/mdBook/releases/download/v0.4.37/mdbook-v0.4.37-x86_64-unknown-linux-gnu.tar.gz | tar -xz --directory=./mdbook - echo `pwd`/mdbook >> $GITHUB_PATH - - run: cd src/doc && mdbook build --dest-dir ../../target/doc +# docs: +# runs-on: ubuntu-latest +# steps: +# - uses: actions/checkout@v4 +# - run: rustup update nightly && rustup default nightly +# - run: rustup update stable +# - run: rustup component add rust-docs +# - run: ci/validate-man.sh +# # This requires rustfmt, use stable. +# - name: Run semver-check +# run: cargo +stable run -p semver-check +# - name: Ensure intradoc links are valid +# run: cargo doc --workspace --document-private-items --no-deps +# env: +# RUSTDOCFLAGS: -D warnings +# - name: Install mdbook +# run: | +# mkdir mdbook +# curl -Lf https://github.com/rust-lang/mdBook/releases/download/v0.4.37/mdbook-v0.4.37-x86_64-unknown-linux-gnu.tar.gz | tar -xz --directory=./mdbook +# echo `pwd`/mdbook >> $GITHUB_PATH +# - run: cd src/doc && mdbook build --dest-dir ../../target/doc # - name: Run linkchecker.sh # run: | # cd target @@ -267,4 +263,4 @@ jobs: steps: - uses: actions/checkout@v4 - uses: taiki-e/install-action@cargo-hack - - run: cargo hack check --all-targets --rust-version --workspace --ignore-private --locked + - run: cargo hack check --all-targets --workspace --ignore-private --locked diff --git a/crates/xtask-bump-check/src/xtask.rs b/crates/xtask-bump-check/src/xtask.rs index a53a0a8bcfb..e60805db640 100644 --- a/crates/xtask-bump-check/src/xtask.rs +++ b/crates/xtask-bump-check/src/xtask.rs @@ -174,6 +174,9 @@ fn bump_check(args: &clap::ArgMatches, gctx: &cargo::util::GlobalContext) -> Car gctx.shell().status("Running", &cmd)?; cmd.exec()?; + // This test does not work for Solana because we are running + // it against a too old version of cargo. + #[cfg(target_os = "solana")] if let Some(referenced_commit) = referenced_commit.as_ref() { let mut cmd = ProcessBuilder::new("cargo"); cmd.arg("semver-checks") @@ -293,8 +296,8 @@ fn beta_and_stable_branch(repo: &git2::Repository) -> CargoResult<[git2::Branch< for branch in repo.branches(Some(git2::BranchType::Remote))? { let (branch, _) = branch?; let name = branch.name()?.unwrap(); - let Some((_, version)) = name.split_once("/rust-") else { - tracing::trace!("branch `{name}` is not in the format of `/rust-`"); + let Some((_, version)) = name.split_once("/solana-") else { + tracing::trace!("branch `{name}` is not in the format of `/solana-`"); continue; }; let Ok(version) = version.parse::() else { diff --git a/src/cargo/core/compiler/standard_lib.rs b/src/cargo/core/compiler/standard_lib.rs index 684e4426c04..d09a02bd697 100644 --- a/src/cargo/core/compiler/standard_lib.rs +++ b/src/cargo/core/compiler/standard_lib.rs @@ -6,7 +6,7 @@ use crate::core::compiler::{CompileKind, CompileMode, RustcTargetData, Unit}; use crate::core::profiles::{Profiles, UnitFor}; use crate::core::resolver::features::{CliFeatures, FeaturesFor, ResolvedFeatures}; use crate::core::resolver::HasDevUnits; -use crate::core::{Dependency, PackageId, PackageSet, Resolve, SourceId, Workspace}; +use crate::core::{Dependency, GitReference, PackageId, PackageSet, Resolve, SourceId, Workspace}; use crate::ops::{self, Packages}; use crate::util::errors::CargoResult; use crate::GlobalContext; @@ -79,7 +79,7 @@ pub fn resolve_std<'gctx>( "rustc-std-workspace-alloc", "rustc-std-workspace-std", ]; - let patches = to_patch + let mut patches = to_patch .iter() .map(|&name| { let source_path = SourceId::for_path(&src_path.join("library").join(name))?; @@ -87,6 +87,14 @@ pub fn resolve_std<'gctx>( Ok(dep) }) .collect::>>()?; + patches.push(Dependency::parse( + "compiler_builtins", + None, + SourceId::for_git( + &("https://github.com/anza-xyz/compiler-builtins".parse()).unwrap(), + GitReference::Tag("solana-tools-v1.43".to_string()), + )?, + )?); let crates_io_url = crate::sources::CRATES_IO_INDEX.parse().unwrap(); let patch = HashMap::from([(crates_io_url, patches)]); let members = vec![ diff --git a/src/cargo/ops/cargo_compile/mod.rs b/src/cargo/ops/cargo_compile/mod.rs index 68f1df76ba6..49a053f4961 100644 --- a/src/cargo/ops/cargo_compile/mod.rs +++ b/src/cargo/ops/cargo_compile/mod.rs @@ -496,7 +496,10 @@ pub fn create_bcx<'a, 'gctx>( let plural = if incompatible.len() == 1 { "" } else { "s" }; let mut message = format!( - "rustc {rustc_version} is not supported by the following package{plural}:\n" + "rustc {rustc_version} is not supported by the following package{plural}:\n + Note that this is the rustc version that ships with Solana tools and \ + not your system's rustc version. Use `solana-install update` or head \ + over to https://docs.solanalabs.com/cli/install to install a newer version.\n", ); incompatible.sort_by_key(|(unit, _)| (unit.pkg.name(), unit.pkg.version())); for (unit, msrv) in incompatible { diff --git a/src/doc/src/reference/semver.md b/src/doc/src/reference/semver.md index 795442c00b8..565f455b6bc 100644 --- a/src/doc/src/reference/semver.md +++ b/src/doc/src/reference/semver.md @@ -1130,7 +1130,7 @@ pub enum E { fn main() { use updated_crate::E; let x = E::Variant1; - match x { // Error: `E::Variant2` not covered + match x { // Error: non-exhaustive patterns: `E::Variant2` not covered E::Variant1 => {} } } diff --git a/tests/build-std/main.rs b/tests/build-std/main.rs index 84915790851..2fdb5834cfa 100644 --- a/tests/build-std/main.rs +++ b/tests/build-std/main.rs @@ -113,8 +113,14 @@ fn basic() { // Importantly, this should not say [UPDATING] // There have been multiple bugs where every build triggers and update. .with_stderr( - "[COMPILING] foo v0.0.1 [..]\n\ - [FINISHED] `dev` profile [..]", + "[UPDATING] git repository `https://github.com/solana-labs/compiler-builtins`\n\ + warning: Patch `compiler_builtins v0.1.103 (https://github.com/solana-labs/compiler-builtins?tag=solana-tools-v1.40#81ef46f3)` was not used in the crate graph.\n\ + Check that the patched package version and available features are compatible\n\ + with the dependency requirements. If the patch has a different version from\n\ + what is locked in the Cargo.lock file, run `cargo update` to use the new\n\ + version. This may also occur with an optional dependency that is not enabled.\n\ + [COMPILING] foo v0.0.1 [..]\n\ + [FINISHED] dev [..]", ) .run(); p.cargo("run").build_std().target_host().run(); diff --git a/tests/testsuite/rust_version.rs b/tests/testsuite/rust_version.rs index 399779b19fe..646c21a9357 100644 --- a/tests/testsuite/rust_version.rs +++ b/tests/testsuite/rust_version.rs @@ -107,6 +107,10 @@ fn lint_self_incompatible_with_rust_version() { .with_stderr( "\ [ERROR] rustc [..] is not supported by the following package: + + Note that this is the rustc version that ships with Solana tools and \ + not your system's rustc version. Use `solana-install update` or head \ + over to https://docs.solanalabs.com/cli/install to install a newer version. foo@0.0.1 requires rustc 1.9876.0 ", @@ -166,6 +170,11 @@ fn lint_dep_incompatible_with_rust_version() { [DOWNLOADED] too_new_child v0.0.1 (registry `[..]`) [DOWNLOADED] rustc_compatible v0.0.1 (registry `[..]`) [ERROR] rustc [..] is not supported by the following packages: + + Note that this is the rustc version that ships with Solana \ + tools and not your system's rustc version. Use `solana-install \ + update` or head over to https://docs.solanalabs.com/cli/install \ + to install a newer version. too_new_child@0.0.1 requires rustc 1.2345.0 too_new_parent@0.0.1 requires rustc 1.2345.0 Either upgrade rustc or select compatible dependency versions with