From cfe961405ef1085d5e249014f11297a24894efaf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=9D=E5=80=89=E6=B0=B4=E5=B8=8C?= Date: Mon, 24 Nov 2025 14:22:33 +0800 Subject: [PATCH 1/3] fix: use `--cfg docsrs` for document --- .github/workflows/ci.yml | 7 ++-- Cargo.lock | 39 +++++++++++++---------- page_table_entry/Cargo.toml | 9 +++--- page_table_entry/src/arch/mod.rs | 12 ++++--- page_table_multiarch/Cargo.toml | 3 +- page_table_multiarch/tests/alloc_tests.rs | 4 +++ 6 files changed, 46 insertions(+), 28 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2b336bc..201eb7b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,8 +28,9 @@ jobs: - name: Unit test if: ${{ matrix.targets == 'x86_64-unknown-linux-gnu' }} env: - RUSTFLAGS: --cfg doc - run: cargo test --target ${{ matrix.targets }} -- --nocapture + # FIXME: workaround for `rand` crate, wait for 0.10 release + RUSTFLAGS: --cfg doc + run: cargo test --target ${{ matrix.targets }} --all-features -- --nocapture doc: runs-on: ubuntu-latest @@ -39,7 +40,7 @@ jobs: contents: write env: default-branch: ${{ format('refs/heads/{0}', github.event.repository.default_branch) }} - RUSTFLAGS: --cfg doc + RUSTFLAGS: --cfg docsrs RUSTDOCFLAGS: -Zunstable-options --enable-index-page -D rustdoc::broken_intra_doc_links -D missing-docs steps: - uses: actions/checkout@v4 diff --git a/Cargo.lock b/Cargo.lock index 8cdedf7..8e0cc9b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -13,9 +13,9 @@ dependencies = [ [[package]] name = "bit_field" -version = "0.10.2" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61" +checksum = "1e4b40c7323adcfc0a41c4b88143ed58346ff65a288fc144329c5c45e05d70c6" [[package]] name = "bitflags" @@ -25,9 +25,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.1" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" [[package]] name = "bitmaps" @@ -35,6 +35,12 @@ version = "3.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1d084b0137aaa901caf9f1e8b21daa6aa24d41cd806e111335541eff9683bd6" +[[package]] +name = "const_fn" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f8a2ca5ac02d09563609681103aada9e1777d54fc57a5acd7a41404f9c93b6e" + [[package]] name = "critical-section" version = "1.2.0" @@ -49,22 +55,22 @@ checksum = "361a90feb7004eca4019fb28352a9465666b24f840f5c3cddf0ff13920590b89" [[package]] name = "log" -version = "0.4.27" +version = "0.4.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" [[package]] name = "memory_addr" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d4054cba279515fa87761b101d857333ce06391dbe8f18a11347204a7111416" +checksum = "b1f0625c50adb5f6aaf47f05cae3c4dbc13a74c659241b06c4576f3d7e1da940" [[package]] name = "page_table_entry" version = "0.5.6" dependencies = [ "aarch64-cpu", - "bitflags 2.9.1", + "bitflags 2.10.0", "memory_addr", "x86_64", ] @@ -90,9 +96,9 @@ checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "rand" -version = "0.9.1" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" dependencies = [ "rand_core", ] @@ -132,9 +138,9 @@ checksum = "8188909339ccc0c68cfb5a04648313f09621e8b87dc03095454f1a11f6c5d436" [[package]] name = "rustversion" -version = "1.0.21" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "tock-registers" @@ -161,12 +167,13 @@ dependencies = [ [[package]] name = "x86_64" -version = "0.15.2" +version = "0.15.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f042214de98141e9c8706e8192b73f56494087cc55ebec28ce10f26c5c364ae" +checksum = "575f620d283cb63500b96c4bcaa12523c6a278d89b85ea35c97ad43ba754fd1e" dependencies = [ "bit_field", - "bitflags 2.9.1", + "bitflags 2.10.0", + "const_fn", "rustversion", "volatile", ] diff --git a/page_table_entry/Cargo.toml b/page_table_entry/Cargo.toml index 3f2f780..05b8b2e 100644 --- a/page_table_entry/Cargo.toml +++ b/page_table_entry/Cargo.toml @@ -19,11 +19,12 @@ arm-el2 = [] bitflags = "2.9" memory_addr.workspace = true -[target.'cfg(any(target_arch = "aarch64", doc))'.dependencies] +[target.'cfg(any(target_arch = "aarch64", doc, docsrs))'.dependencies] aarch64-cpu = "10.0" -[target.'cfg(any(target_arch = "x86_64", doc))'.dependencies] -x86_64 = "0.15.2" +[target.'cfg(any(target_arch = "x86_64", doc, docsrs))'.dependencies] +x86_64 = { version = "0.15", default-features = false } [package.metadata.docs.rs] -rustc-args = ["--cfg", "doc"] +rustc-args = ["--cfg", "docsrs"] +all-features = true diff --git a/page_table_entry/src/arch/mod.rs b/page_table_entry/src/arch/mod.rs index 1925eab..f2222d2 100644 --- a/page_table_entry/src/arch/mod.rs +++ b/page_table_entry/src/arch/mod.rs @@ -1,11 +1,15 @@ -#[cfg(any(target_arch = "x86_64", doc))] +#[cfg(any(target_arch = "x86_64", doc, docsrs))] +#[cfg_attr(doc, doc(cfg(target_arch = "x86_64")))] pub mod x86_64; -#[cfg(any(target_arch = "riscv32", target_arch = "riscv64", doc))] +#[cfg(any(target_arch = "riscv32", target_arch = "riscv64", doc, docsrs))] +#[cfg_attr(doc, doc(cfg(any(target_arch = "riscv32", target_arch = "riscv64"))))] pub mod riscv; -#[cfg(any(target_arch = "aarch64", doc))] +#[cfg(any(target_arch = "aarch64", doc, docsrs))] +#[cfg_attr(doc, doc(cfg(target_arch = "aarch64")))] pub mod aarch64; -#[cfg(any(target_arch = "loongarch64", doc))] +#[cfg(any(target_arch = "loongarch64", doc, docsrs))] +#[cfg_attr(doc, doc(cfg(target_arch = "loongarch64")))] pub mod loongarch64; diff --git a/page_table_multiarch/Cargo.toml b/page_table_multiarch/Cargo.toml index 6d47fd1..b138dc7 100644 --- a/page_table_multiarch/Cargo.toml +++ b/page_table_multiarch/Cargo.toml @@ -29,7 +29,8 @@ x86 = "0.52" riscv = { version = "0.14", default-features = false } [package.metadata.docs.rs] -rustc-args = ["--cfg", "doc"] +rustc-args = ["--cfg", "docsrs"] +all-features = true [dev-dependencies] rand = { version = "0.9.1", default-features = false, features = ["small_rng"] } diff --git a/page_table_multiarch/tests/alloc_tests.rs b/page_table_multiarch/tests/alloc_tests.rs index 8feae47..6680e46 100644 --- a/page_table_multiarch/tests/alloc_tests.rs +++ b/page_table_multiarch/tests/alloc_tests.rs @@ -91,6 +91,7 @@ fn run_test_for, PTE: GenericPTE>() -> Pa } #[test] +#[cfg(any(target_arch = "x86_64", doc))] fn test_dealloc_x86() -> PagingResult<()> { run_test_for::< page_table_multiarch::x86_64::X64PagingMetaData, @@ -100,6 +101,7 @@ fn test_dealloc_x86() -> PagingResult<()> { } #[test] +#[cfg(any(target_arch = "riscv32", target_arch = "riscv64", doc))] fn test_dealloc_riscv() -> PagingResult<()> { run_test_for::< page_table_multiarch::riscv::Sv39MetaData, @@ -113,6 +115,7 @@ fn test_dealloc_riscv() -> PagingResult<()> { } #[test] +#[cfg(any(target_arch = "aarch64", doc))] fn test_dealloc_aarch64() -> PagingResult<()> { run_test_for::< page_table_multiarch::aarch64::A64PagingMetaData, @@ -122,6 +125,7 @@ fn test_dealloc_aarch64() -> PagingResult<()> { } #[test] +#[cfg(any(target_arch = "loongarch64", doc))] fn test_dealloc_loongarch64() -> PagingResult<()> { run_test_for::< page_table_multiarch::loongarch64::LA64MetaData, From f60b82913658dca9705894728b201477a90b0d48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=9D=E5=80=89=E6=B0=B4=E5=B8=8C?= Date: Mon, 24 Nov 2025 14:38:11 +0800 Subject: [PATCH 2/3] fix: use `--cfg docsrs` for all --- .github/workflows/ci.yml | 3 +-- Cargo.lock | 8 ++++---- page_table_multiarch/Cargo.toml | 9 ++++++--- page_table_multiarch/src/arch/mod.rs | 12 ++++++++---- page_table_multiarch/tests/alloc_tests.rs | 8 ++++---- 5 files changed, 23 insertions(+), 17 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 201eb7b..940a2cf 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,8 +28,7 @@ jobs: - name: Unit test if: ${{ matrix.targets == 'x86_64-unknown-linux-gnu' }} env: - # FIXME: workaround for `rand` crate, wait for 0.10 release - RUSTFLAGS: --cfg doc + RUSTFLAGS: --cfg docsrs run: cargo test --target ${{ matrix.targets }} --all-features -- --nocapture doc: diff --git a/Cargo.lock b/Cargo.lock index 8e0cc9b..fc77d45 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -96,18 +96,18 @@ checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "rand" -version = "0.9.2" +version = "0.10.0-rc.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +checksum = "be866deebbade98028b705499827ad6967c8bb1e21f96a2609913c8c076e9307" dependencies = [ "rand_core", ] [[package]] name = "rand_core" -version = "0.9.3" +version = "0.10.0-rc-2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +checksum = "104a23e4e8b77312a823b6b5613edbac78397e2f34320bc7ac4277013ec4478e" [[package]] name = "raw-cpuid" diff --git a/page_table_multiarch/Cargo.toml b/page_table_multiarch/Cargo.toml index b138dc7..2342a16 100644 --- a/page_table_multiarch/Cargo.toml +++ b/page_table_multiarch/Cargo.toml @@ -22,10 +22,10 @@ memory_addr.workspace = true page_table_entry.workspace = true bitmaps = { version = "3.2", default-features = false, optional = true } -[target.'cfg(any(target_arch = "x86_64", doc))'.dependencies] +[target.'cfg(any(target_arch = "x86_64", doc, docsrs))'.dependencies] x86 = "0.52" -[target.'cfg(any(target_arch = "riscv32", target_arch = "riscv64", doc))'.dependencies] +[target.'cfg(any(target_arch = "riscv32", target_arch = "riscv64", doc, docsrs))'.dependencies] riscv = { version = "0.14", default-features = false } [package.metadata.docs.rs] @@ -33,4 +33,7 @@ rustc-args = ["--cfg", "docsrs"] all-features = true [dev-dependencies] -rand = { version = "0.9.1", default-features = false, features = ["small_rng"] } +# FIXME: use a released version when available +rand = { version = "0.10.0-rc.5", default-features = false, features = [ + "small_rng", +] } diff --git a/page_table_multiarch/src/arch/mod.rs b/page_table_multiarch/src/arch/mod.rs index 1925eab..f2222d2 100644 --- a/page_table_multiarch/src/arch/mod.rs +++ b/page_table_multiarch/src/arch/mod.rs @@ -1,11 +1,15 @@ -#[cfg(any(target_arch = "x86_64", doc))] +#[cfg(any(target_arch = "x86_64", doc, docsrs))] +#[cfg_attr(doc, doc(cfg(target_arch = "x86_64")))] pub mod x86_64; -#[cfg(any(target_arch = "riscv32", target_arch = "riscv64", doc))] +#[cfg(any(target_arch = "riscv32", target_arch = "riscv64", doc, docsrs))] +#[cfg_attr(doc, doc(cfg(any(target_arch = "riscv32", target_arch = "riscv64"))))] pub mod riscv; -#[cfg(any(target_arch = "aarch64", doc))] +#[cfg(any(target_arch = "aarch64", doc, docsrs))] +#[cfg_attr(doc, doc(cfg(target_arch = "aarch64")))] pub mod aarch64; -#[cfg(any(target_arch = "loongarch64", doc))] +#[cfg(any(target_arch = "loongarch64", doc, docsrs))] +#[cfg_attr(doc, doc(cfg(target_arch = "loongarch64")))] pub mod loongarch64; diff --git a/page_table_multiarch/tests/alloc_tests.rs b/page_table_multiarch/tests/alloc_tests.rs index 6680e46..2ce9550 100644 --- a/page_table_multiarch/tests/alloc_tests.rs +++ b/page_table_multiarch/tests/alloc_tests.rs @@ -91,7 +91,7 @@ fn run_test_for, PTE: GenericPTE>() -> Pa } #[test] -#[cfg(any(target_arch = "x86_64", doc))] +#[cfg(any(target_arch = "x86_64", docsrs))] fn test_dealloc_x86() -> PagingResult<()> { run_test_for::< page_table_multiarch::x86_64::X64PagingMetaData, @@ -101,7 +101,7 @@ fn test_dealloc_x86() -> PagingResult<()> { } #[test] -#[cfg(any(target_arch = "riscv32", target_arch = "riscv64", doc))] +#[cfg(any(target_arch = "riscv32", target_arch = "riscv64", docsrs))] fn test_dealloc_riscv() -> PagingResult<()> { run_test_for::< page_table_multiarch::riscv::Sv39MetaData, @@ -115,7 +115,7 @@ fn test_dealloc_riscv() -> PagingResult<()> { } #[test] -#[cfg(any(target_arch = "aarch64", doc))] +#[cfg(any(target_arch = "aarch64", docsrs))] fn test_dealloc_aarch64() -> PagingResult<()> { run_test_for::< page_table_multiarch::aarch64::A64PagingMetaData, @@ -125,7 +125,7 @@ fn test_dealloc_aarch64() -> PagingResult<()> { } #[test] -#[cfg(any(target_arch = "loongarch64", doc))] +#[cfg(any(target_arch = "loongarch64", docsrs))] fn test_dealloc_loongarch64() -> PagingResult<()> { run_test_for::< page_table_multiarch::loongarch64::LA64MetaData, From ed48373606ff52c66a71738160ad075b1b996afc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=9D=E5=80=89=E6=B0=B4=E5=B8=8C?= Date: Mon, 24 Nov 2025 18:41:47 +0800 Subject: [PATCH 3/3] ci: remove "--all-features" for testing --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 940a2cf..23e599c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -29,7 +29,7 @@ jobs: if: ${{ matrix.targets == 'x86_64-unknown-linux-gnu' }} env: RUSTFLAGS: --cfg docsrs - run: cargo test --target ${{ matrix.targets }} --all-features -- --nocapture + run: cargo test --target ${{ matrix.targets }} -- --nocapture doc: runs-on: ubuntu-latest