diff --git a/.github/workflows/basic.yml b/.github/workflows/basic.yml index 5a73c8f7f9..79567513e7 100644 --- a/.github/workflows/basic.yml +++ b/.github/workflows/basic.yml @@ -16,7 +16,7 @@ jobs: outputs: any_modified: ${{ steps.filter.outputs.any_modified }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: tj-actions/changed-files@v41 id: filter with: @@ -40,7 +40,7 @@ jobs: arch: [ "x86_64", "aarch64" ] libc: [ "gnu", "musl" ] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup Rust toolchain and cache uses: actions-rust-lang/setup-rust-toolchain@v1 with: @@ -59,6 +59,8 @@ jobs: echo "TARGET=${{ matrix.arch }}-unknown-linux-${{ matrix.libc }}" >> ${GITHUB_ENV} - name: Check formatting and lints run: just lint + - name: Check unused deps + uses: bnjbvr/cargo-machete@v0.7.0 tests: needs: [changes] @@ -70,7 +72,7 @@ jobs: arch: [ "x86_64" ] libc: [ "gnu", "musl" ] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup Rust toolchain and cache uses: actions-rust-lang/setup-rust-toolchain@v1 - name: Install just @@ -86,31 +88,34 @@ jobs: - name: Run feature tests run: just test-features - coverage: - needs: [changes] - if: needs.changes.outputs.any_modified == 'true' - runs-on: ubuntu-22.04 - timeout-minutes: 20 - name: Run test coverage - steps: - - uses: actions/checkout@v3 - - name: Setup Rust toolchain and cache - uses: actions-rust-lang/setup-rust-toolchain@v1.3.7 - - name: Install llvm-tools-preview - run: rustup component add llvm-tools-preview - - name: install cargo-llvm-cov - uses: taiki-e/install-action@v1 - with: - tool: cargo-llvm-cov@0.4.0 - - uses: taiki-e/install-action@just - - name: Install requirements - run: sudo env PATH=$PATH just ci-prepare - - name: Run Test Coverage for youki - run: | - cargo llvm-cov clean --workspace - cargo llvm-cov --no-report -- --test-threads=1 - cargo llvm-cov --no-run --lcov --output-path ./coverage.lcov - - name: Upload Youki Code Coverage Results - uses: codecov/codecov-action@v3 - with: - file: ./coverage.lcov + # We do not yet enforce some minimum coverage, and there were come codecov issues + # so commenting this out for now. When we are ready to enforce coverage, uncomment + # and check this works or not. + # coverage: + # needs: [changes] + # if: needs.changes.outputs.any_modified == 'true' + # runs-on: ubuntu-22.04 + # timeout-minutes: 20 + # name: Run test coverage + # steps: + # - uses: actions/checkout@v4 + # - name: Setup Rust toolchain and cache + # uses: actions-rust-lang/setup-rust-toolchain@v1.3.7 + # - name: Install llvm-tools-preview + # run: rustup component add llvm-tools-preview + # - name: install cargo-llvm-cov + # uses: taiki-e/install-action@v2 + # with: + # tool: cargo-llvm-cov@0.4.0 + # - uses: taiki-e/install-action@just + # - name: Install requirements + # run: sudo env PATH=$PATH just ci-prepare + # - name: Run Test Coverage for youki + # run: | + # cargo llvm-cov clean --workspace + # cargo llvm-cov --no-report -- --test-threads=1 + # cargo llvm-cov --no-run --lcov --output-path ./coverage.lcov + # - name: Upload Youki Code Coverage Results + # uses: codecov/codecov-action@v4 + # with: + # file: ./coverage.lcov diff --git a/.github/workflows/benchmark_execution_time.yml b/.github/workflows/benchmark_execution_time.yml index 585b655b59..ebeadd728d 100644 --- a/.github/workflows/benchmark_execution_time.yml +++ b/.github/workflows/benchmark_execution_time.yml @@ -12,7 +12,7 @@ jobs: steps: - name: Checkout to PR branch - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Install requirements run: sudo ./.github/scripts/dependency.sh @@ -27,7 +27,7 @@ jobs: run: just youki-release - name: Uploading PR build to artifact - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: pr-youki path: ./youki @@ -39,7 +39,7 @@ jobs: steps: - name: Checkout to main branch - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: ref: main @@ -55,7 +55,7 @@ jobs: run: just youki-release - name: Uploading main build to artifact - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: main-youki path: ./youki @@ -75,16 +75,16 @@ jobs: sudo apt install jq podman - name: Checkout to PR branch - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Downloading PR build from artifact - uses: actions/download-artifact@v2 + uses: actions/download-artifact@v4 with: name: pr-youki path: ./pr_youki - name: Downloading main build from artifact - uses: actions/download-artifact@v2 + uses: actions/download-artifact@v4 with: name: main-youki path: ./main_youki diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml index 3bcff1808c..ae812e0c12 100644 --- a/.github/workflows/docs.yaml +++ b/.github/workflows/docs.yaml @@ -12,7 +12,7 @@ jobs: outputs: dirs: ${{ steps.filter.outputs.changes }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: dorny/paths-filter@v2 id: filter with: @@ -26,7 +26,7 @@ jobs: concurrency: group: ${{ github.workflow }}-${{ github.ref }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup mdBook uses: peaceiris/actions-mdbook@v1 with: diff --git a/.github/workflows/e2e.yaml b/.github/workflows/e2e.yaml index fb2f3f628a..713ab9b6d6 100644 --- a/.github/workflows/e2e.yaml +++ b/.github/workflows/e2e.yaml @@ -17,7 +17,7 @@ jobs: arch: [ "x86_64", "aarch64" ] libc: [ "gnu", "musl" ] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup Rust toolchain and cache uses: actions-rust-lang/setup-rust-toolchain@v1.3.7 env: @@ -34,7 +34,7 @@ jobs: run: just youki-release - name: Upload youki binary if: ${{ matrix.arch == 'x86_64' }} - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: youki-${{ matrix.arch }}-${{ matrix.libc }} path: youki @@ -48,11 +48,11 @@ jobs: arch: [ "x86_64" ] libc: [ "gnu", "musl" ] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: repository: containerd/containerd ref: v1.7.11 - - uses: actions/setup-go@v4 + - uses: actions/setup-go@v5 with: go-version: '1.20.12' cache: true @@ -66,7 +66,7 @@ jobs: ./script/setup/install-cni ./script/setup/install-critools - name: Download youki binary - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: youki-${{ matrix.arch }}-${{ matrix.libc }} - name: Replace runc to youki @@ -87,9 +87,9 @@ jobs: arch: [ "x86_64" ] libc: [ "gnu", "musl" ] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Download youki binary - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: youki-${{ matrix.arch }}-${{ matrix.libc }} - name: Add the permission to run @@ -108,20 +108,20 @@ jobs: arch: [ "x86_64" ] libc: [ "gnu", "musl" ] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: submodules: recursive - name: Setup Rust toolchain and cache uses: actions-rust-lang/setup-rust-toolchain@v1 - name: Install just uses: taiki-e/install-action@just - - uses: actions/setup-go@v4 + - uses: actions/setup-go@v5 with: go-version: '1.20' cache: true cache-dependency-path: tests/oci-runtime-tests/src/github.com/opencontainers/runtime-tools/go.sum - name: Download youki binary - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: youki-${{ matrix.arch }}-${{ matrix.libc }} - name: Add the permission to run @@ -138,7 +138,7 @@ jobs: arch: [ "x86_64" ] libc: [ "gnu", "musl" ] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: submodules: recursive - name: Setup Rust toolchain and cache @@ -148,7 +148,7 @@ jobs: - name: Install requirements run: sudo env PATH=$PATH just ci-prepare - name: Download youki binary - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: youki-${{ matrix.arch }}-${{ matrix.libc }} - name: Add the permission to run @@ -165,7 +165,7 @@ jobs: arch: [ "x86_64" ] libc: [ "gnu", "musl" ] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: submodules: recursive - name: Setup Rust toolchain and cache @@ -175,7 +175,7 @@ jobs: - name: Install requirements run: sudo env PATH=$PATH just ci-prepare - name: Download youki binary - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: youki-${{ matrix.arch }}-${{ matrix.libc }} - name: Add the permission to run @@ -193,11 +193,11 @@ jobs: # ubuntu 22.04 has cgroups-v2 os: [ "ubuntu-22.04", "ubuntu-20.04" ] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Install just uses: taiki-e/install-action@just - name: Download youki binary - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: youki-x86_64-musl - name: Add the permission to run diff --git a/.github/workflows/integration_tests_validation.yaml b/.github/workflows/integration_tests_validation.yaml index 88ba697d76..d4d7892821 100644 --- a/.github/workflows/integration_tests_validation.yaml +++ b/.github/workflows/integration_tests_validation.yaml @@ -16,7 +16,7 @@ jobs: outputs: any_modified: ${{ steps.filter.outputs.any_modified }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: tj-actions/changed-files@v41 id: filter with: @@ -36,7 +36,7 @@ jobs: runs-on: ubuntu-20.04 timeout-minutes: 30 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup Rust toolchain and cache uses: actions-rust-lang/setup-rust-toolchain@v1.3.7 - name: Install just diff --git a/.github/workflows/podman_tests.yaml b/.github/workflows/podman_tests.yaml index 6c13f26611..edded9a860 100644 --- a/.github/workflows/podman_tests.yaml +++ b/.github/workflows/podman_tests.yaml @@ -48,7 +48,7 @@ jobs: # build podman - name: Clone podman repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: repository: containers/podman - name: Build podman diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 3846502635..1865cb694a 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -26,7 +26,7 @@ jobs: arch: [ "x86_64", "aarch64" ] libc: [ "gnu", "musl" ] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: submodules: recursive - name: Setup Rust toolchain and cache @@ -53,7 +53,7 @@ jobs: - name: Create artifact run: tar -zcvf youki-${{ needs.parse.outputs.version }}-${{ matrix.arch }}-${{ matrix.libc }}.tar.gz youki README.md LICENSE - name: Upload artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: youki-${{ matrix.arch }}-${{ matrix.libc }} path: youki-${{ needs.parse.outputs.version }}-${{ matrix.arch }}-${{ matrix.libc }}.tar.gz @@ -69,11 +69,11 @@ jobs: - parse - build steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Create artifacts directory run: mkdir -p artifacts - name: Download artifacts - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: path: artifacts - name: Show artifacts @@ -98,7 +98,7 @@ jobs: env: CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup Rust toolchain and cache uses: actions-rust-lang/setup-rust-toolchain@v1 - name: Publish libcgroups diff --git a/.github/workflows/tagpr.yaml b/.github/workflows/tagpr.yaml index 58ae64df0f..6d42782973 100644 --- a/.github/workflows/tagpr.yaml +++ b/.github/workflows/tagpr.yaml @@ -7,7 +7,7 @@ jobs: tagpr: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: token: ${{ secrets.GITHUB_TOKEN }} - name: Install just @@ -26,4 +26,4 @@ jobs: repo: context.repo.repo, workflow_id: 'release.yaml', ref: "refs/tags/${{ steps.tagpr.outputs.tag }}", - }) \ No newline at end of file + }) diff --git a/.github/workflows/update_version_config.yaml b/.github/workflows/update_version_config.yaml index 6ddb689ae5..5a0ce04ce4 100644 --- a/.github/workflows/update_version_config.yaml +++ b/.github/workflows/update_version_config.yaml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-20.04 steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 - name: Update tagpr config diff --git a/.tagpr b/.tagpr index 114798e080..994afd208f 100644 --- a/.tagpr +++ b/.tagpr @@ -2,6 +2,6 @@ vPrefix = true releaseBranch = main versionFile = .tagpr - command = just version-up 0.3.3 + command = just version-up 0.4.1 release = false changelog = true diff --git a/CHANGELOG.md b/CHANGELOG.md index be4875cf48..0f02715bf6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,47 @@ # Changelog +## [v0.4.1](https://github.com/containers/youki/compare/v0.4.0...v0.4.1) - 2024-09-02 +### ๐Ÿงช Test improvements and Misc Fixes +- prepare for version 0.4.1 by @YJDoc2 in https://github.com/containers/youki/pull/2897 + +## [v0.4.0](https://github.com/containers/youki/compare/v0.3.3...v0.4.0) - 2024-08-23 +### ๐Ÿ’ช Improvements +- Export max_usage in cgroups v2 mode by @HeRaNO in https://github.com/containers/youki/pull/2802 +- Add new `setup_envs` method for the `Executor` trait by @musaprg in https://github.com/containers/youki/pull/2820 +### ๐Ÿ’ฅ Breaking Changes +- Rename to improve readability by @utam0k in https://github.com/containers/youki/pull/2818 +### ๐Ÿ› Bug Fixes +- Fix/dbus call issue by @YJDoc2 in https://github.com/containers/youki/pull/2838 +### ๐Ÿ“– Documentation improvements +- Add the governance by @utam0k in https://github.com/containers/youki/pull/2806 +- optimization runtime_tools.md doc by @lengrongfu in https://github.com/containers/youki/pull/2816 +- Update README.md by @utam0k in https://github.com/containers/youki/pull/2822 +- Fix typo by @utam0k in https://github.com/containers/youki/pull/2836 +- docs: fix `with_executor` method description by @Andreagit97 in https://github.com/containers/youki/pull/2834 +### ๐Ÿงช Test improvements and Misc Fixes +- Update nix to 0.28.0 by @omprakaash in https://github.com/containers/youki/pull/2728 +- Fix word order in README sentence justifying Rust usage by @andrewimeson in https://github.com/containers/youki/pull/2805 +- move macro define youki_version to use before by @lengrongfu in https://github.com/containers/youki/pull/2813 +- Use HashMap for envs in container_init_process by @musaprg in https://github.com/containers/youki/pull/2817 +- Ignore linter for MOUNT_ATTR__ATIME by @yihuaf in https://github.com/containers/youki/pull/2819 +- Update go version in podman CI and vagrantfile by @YJDoc2 in https://github.com/containers/youki/pull/2828 +- Fix typos and bump version for typos ci by @Jerrypoi in https://github.com/containers/youki/pull/2839 +- Install nightly for running linter inside devcontainer by @musaprg in https://github.com/containers/youki/pull/2845 +- Add issue templates by @YJDoc2 in https://github.com/containers/youki/pull/2829 +- chore(deps): update oci-spec to v0.6.7 by @Mossaka in https://github.com/containers/youki/pull/2847 +- Bump oci-spec by @keisku in https://github.com/containers/youki/pull/2854 +- Update devcontainer.json by @keisku in https://github.com/containers/youki/pull/2857 +- Apply building best practices to `.devcontainer/Dockerfile` by @keisku in https://github.com/containers/youki/pull/2856 +- Fix markdown format in experiment/selinux/README.md by @keisku in https://github.com/containers/youki/pull/2855 +- initial progress on supporting OwnedFd by @zahash in https://github.com/containers/youki/pull/2809 +- Rust 1.80.0 by @utam0k in https://github.com/containers/youki/pull/2869 +- Update nc dependency to 0.9.2 by @posutsai in https://github.com/containers/youki/pull/2884 +- Prepare for v0.4.0 by @utam0k in https://github.com/containers/youki/pull/2880 +### Other Changes +- Init a selinux project by @Gekko0114 in https://github.com/containers/youki/pull/2800 +- selinux: write xattr related codes. by @Gekko0114 in https://github.com/containers/youki/pull/2825 +- selinux: implemented remaining selinux functions by @Gekko0114 in https://github.com/containers/youki/pull/2850 + ## [v0.3.3](https://github.com/containers/youki/compare/v0.3.2...v0.3.3) - 2024-05-16 ### ๐Ÿ’ช Improvements - Add support for rsvd hugetlb cgroup by @omprakaash in https://github.com/containers/youki/pull/2719 diff --git a/Cargo.lock b/Cargo.lock index 14b8e1349d..1ba00c86ef 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -11,12 +11,27 @@ dependencies = [ "gimli 0.28.1", ] +[[package]] +name = "addr2line" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" +dependencies = [ + "gimli 0.29.0", +] + [[package]] name = "adler" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + [[package]] name = "ahash" version = "0.7.8" @@ -126,9 +141,9 @@ checksum = "70033777eb8b5124a81a1889416543dddef2de240019b674c81285a2635a7e1e" [[package]] name = "anyhow" -version = "1.0.86" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" +checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" [[package]] name = "arbitrary" @@ -142,12 +157,6 @@ version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" -[[package]] -name = "ascii" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ae7d751998c189c1d4468cf0a39bb2eae052a9c58d50ebb3b9591ee3813ad50" - [[package]] name = "async-trait" version = "0.1.79" @@ -159,6 +168,26 @@ dependencies = [ "syn 2.0.58", ] +[[package]] +name = "async-wasi" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9abe3a40b90f239a8a9141aff1a1b98befb36d5aa23a89ed33e030e520bfd20" +dependencies = [ + "bitflags 2.6.0", + "cfg-if", + "futures", + "getrandom", + "libc", + "log", + "parking_lot", + "path-absolutize", + "serde", + "slab", + "socket2 0.4.10", + "tokio", +] + [[package]] name = "atomic-polyfill" version = "1.0.3" @@ -180,11 +209,11 @@ version = "0.3.71" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" dependencies = [ - "addr2line", + "addr2line 0.21.0", "cc", "cfg-if", "libc", - "miniz_oxide", + "miniz_oxide 0.7.2", "object 0.32.2", "rustc-demangle", ] @@ -225,7 +254,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "rustc-hash", + "rustc-hash 1.1.0", "shlex", "syn 2.0.58", ] @@ -383,12 +412,13 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.6" +version = "1.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2aba8f4e9906c7ce3c73463f62a7f0c65183ada1a2d47e397cc8810827f9694f" +checksum = "72db2f7947ecee9b03b510377e8bb9077afa27176fdbff55c51027e976fdcc48" dependencies = [ "jobserver", "libc", + "shlex", ] [[package]] @@ -514,12 +544,12 @@ checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" [[package]] name = "combine" -version = "2.5.2" +version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1645a65a99c7c8d345761f4b75a6ffe5be3b3b27a93ee731fccc5050ba6be97c" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" dependencies = [ - "ascii", - "byteorder", + "bytes", + "memchr", ] [[package]] @@ -533,9 +563,7 @@ name = "contest" version = "0.1.0" dependencies = [ "anyhow", - "chrono", "clap", - "clap_derive", "flate2", "libcgroups", "libcontainer", @@ -555,7 +583,7 @@ dependencies = [ "tracing", "tracing-subscriber", "uuid", - "which 6.0.2", + "which 6.0.3", ] [[package]] @@ -622,18 +650,18 @@ dependencies = [ [[package]] name = "cranelift-bforest" -version = "0.110.2" +version = "0.112.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "305d51c180ebdc46ef61bc60c54ae6512db3bc9a05842a1f1e762e45977019ab" +checksum = "a6e376bd92bddd03dcfc443b14382611cae5d10012aa0b1628bbf18bb73f12f7" dependencies = [ - "cranelift-entity 0.110.2", + "cranelift-entity 0.112.1", ] [[package]] name = "cranelift-bitset" -version = "0.110.2" +version = "0.112.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3247afacd9b13d620033f3190d9e49d1beefc1acb33d5604a249956c9c13709" +checksum = "45ecbe07f25a8100e5077933516200e97808f1d7196b5a073edb85fa08fde32e" dependencies = [ "serde", "serde_derive", @@ -662,23 +690,23 @@ dependencies = [ [[package]] name = "cranelift-codegen" -version = "0.110.2" +version = "0.112.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd7ca95e831c18d1356da783765c344207cbdffea91e13e47fa9327dbb2e0719" +checksum = "bc60913f32c1de18538c28bef74b8c87cf16de7841a1b0956fcf01b23237853a" dependencies = [ "bumpalo", - "cranelift-bforest 0.110.2", + "cranelift-bforest 0.112.1", "cranelift-bitset", - "cranelift-codegen-meta 0.110.2", - "cranelift-codegen-shared 0.110.2", + "cranelift-codegen-meta 0.112.1", + "cranelift-codegen-shared 0.112.1", "cranelift-control", - "cranelift-entity 0.110.2", - "cranelift-isle 0.110.2", - "gimli 0.28.1", + "cranelift-entity 0.112.1", + "cranelift-isle 0.112.1", + "gimli 0.29.0", "hashbrown 0.14.3", "log", - "regalloc2 0.9.3", - "rustc-hash", + "regalloc2 0.10.2", + "rustc-hash 2.0.0", "smallvec", "target-lexicon", ] @@ -694,11 +722,11 @@ dependencies = [ [[package]] name = "cranelift-codegen-meta" -version = "0.110.2" +version = "0.112.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "450c105fa1e51bfba4e95a86e926504a867ad5639d63f31d43fe3b7ec1f1c9ef" +checksum = "bae009e7822f47aa55e7dcef846ccf3aa4eb102ca6b4bcb8a44b36f3f49aa85c" dependencies = [ - "cranelift-codegen-shared 0.110.2", + "cranelift-codegen-shared 0.112.1", ] [[package]] @@ -709,15 +737,15 @@ checksum = "278e52e29c53fcf32431ef08406c295699a70306d05a0715c5b1bf50e33a9ab7" [[package]] name = "cranelift-codegen-shared" -version = "0.110.2" +version = "0.112.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5479117cd1266881479908d383086561cee37e49affbea9b1e6b594cc21cc220" +checksum = "0c78f01a852536c68e34444450f845ed6e0782a1f047f85397fe460b8fbce8f1" [[package]] name = "cranelift-control" -version = "0.110.2" +version = "0.112.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34378804f0abfdd22c068a741cfeed86938b92375b2a96fb0b42c878e0141bfb" +checksum = "7a061b22e00a9e36b31f2660dfb05a9617b7775bd54b79754d3bb75a990dac06" dependencies = [ "arbitrary", ] @@ -744,9 +772,9 @@ checksum = "9a59bcbca89c3f1b70b93ab3cbba5e5e0cbf3e63dadb23c7525cb142e21a9d4c" [[package]] name = "cranelift-entity" -version = "0.110.2" +version = "0.112.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a48cb0a194c9ba82fec35a1e492055388d89b2e3c03dee9dcf2488892be8004d" +checksum = "95e2b261a3e74ae42f4e606906d5ffa44ee2684e8b1ae23bdf75d21908dc9233" dependencies = [ "cranelift-bitset", "serde", @@ -767,11 +795,11 @@ dependencies = [ [[package]] name = "cranelift-frontend" -version = "0.110.2" +version = "0.112.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8327afc6c1c05f4be62fefce5b439fa83521c65363a322e86ea32c85e7ceaf64" +checksum = "fe14abba0e6bab42aca0f9ce757f96880f9187e88bc6cb975ed6acd8a42f7770" dependencies = [ - "cranelift-codegen 0.110.2", + "cranelift-codegen 0.112.1", "log", "smallvec", "target-lexicon", @@ -785,34 +813,34 @@ checksum = "393bc73c451830ff8dbb3a07f61843d6cb41a084f9996319917c0b291ed785bb" [[package]] name = "cranelift-isle" -version = "0.110.2" +version = "0.112.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56b08621c00321efcfa3eee6a3179adc009e21ea8d24ca7adc3c326184bc3f48" +checksum = "311d91ae72b37d4262b51217baf8c9e01f1afd5148931468da1fdb7e9d011347" [[package]] name = "cranelift-native" -version = "0.110.2" +version = "0.112.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d51180b147c8557c1196c77b098f04140c91962e135ea152cd2fcabf40cf365c" +checksum = "2a3f84c75e578189ff7a716c24ad83740b553bf583f2510b323bfe4c1a74bb93" dependencies = [ - "cranelift-codegen 0.110.2", + "cranelift-codegen 0.112.1", "libc", "target-lexicon", ] [[package]] name = "cranelift-wasm" -version = "0.110.2" +version = "0.112.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "019e3dccb7f15e0bc14f0ddc034ec608a66df8e05c9e1e16f75a7716f8461799" +checksum = "f56b7b2476c47b2091eee5a20bc54a80fbb29ca5313ae2bd0dea52621abcfca1" dependencies = [ - "cranelift-codegen 0.110.2", - "cranelift-entity 0.110.2", - "cranelift-frontend 0.110.2", + "cranelift-codegen 0.112.1", + "cranelift-entity 0.112.1", + "cranelift-frontend 0.112.1", "itertools", "log", "smallvec", - "wasmparser 0.212.0", + "wasmparser 0.217.0", "wasmtime-types", ] @@ -1020,11 +1048,11 @@ dependencies = [ [[package]] name = "derive_builder" -version = "0.20.0" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0350b5cb0331628a5916d6c5c0b72e97393b8b6b03b47a9284f4e7f5a405ffd7" +checksum = "cd33f37ee6a119146a1781d3356a7c26028f83d779b2e04ecd45fdc75c76877b" dependencies = [ - "derive_builder_macro 0.20.0", + "derive_builder_macro 0.20.1", ] [[package]] @@ -1041,9 +1069,9 @@ dependencies = [ [[package]] name = "derive_builder_core" -version = "0.20.0" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d48cda787f839151732d396ac69e3473923d54312c070ee21e9effcaa8ca0b1d" +checksum = "7431fa049613920234f22c47fdc33e6cf3ee83067091ea4277a3f8c4587aae38" dependencies = [ "darling 0.20.8", "proc-macro2", @@ -1063,11 +1091,11 @@ dependencies = [ [[package]] name = "derive_builder_macro" -version = "0.20.0" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "206868b8242f27cecce124c19fd88157fbd0dd334df2587f36417bafbc85097b" +checksum = "4abae7035bf79b9877b779505d8cf3749285b80c43941eda66604841889451dc" dependencies = [ - "derive_builder_core 0.20.0", + "derive_builder_core 0.20.1", "syn 2.0.58", ] @@ -1259,9 +1287,9 @@ checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" [[package]] name = "fastrand" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" +checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" [[package]] name = "fd-lock" @@ -1274,6 +1302,20 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "fiber-for-wasmedge" +version = "14.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03d7057d9db6e5266b609656724393781a1d75beb1159134420e0a47a7d1fae6" +dependencies = [ + "cc", + "cfg-if", + "rustix", + "wasmtime-asm-macros 14.0.4", + "wasmtime-versioned-export-macros 14.0.4", + "windows-sys 0.48.0", +] + [[package]] name = "filetime" version = "0.2.23" @@ -1300,12 +1342,12 @@ checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" [[package]] name = "flate2" -version = "1.0.31" +version = "1.0.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f211bbe8e69bbd0cfdea405084f128ae8b4aaa6b0b522fc8f2b009084797920" +checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" dependencies = [ "crc32fast", - "miniz_oxide", + "miniz_oxide 0.8.0", ] [[package]] @@ -1407,7 +1449,6 @@ dependencies = [ "futures-core", "futures-task", "futures-util", - "num_cpus", ] [[package]] @@ -1530,6 +1571,12 @@ name = "gimli" version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" + +[[package]] +name = "gimli" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" dependencies = [ "fallible-iterator 0.3.0", "indexmap 2.2.6", @@ -1585,15 +1632,6 @@ dependencies = [ "ahash 0.7.8", ] -[[package]] -name = "hashbrown" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" -dependencies = [ - "ahash 0.8.11", -] - [[package]] name = "hashbrown" version = "0.14.3" @@ -1716,7 +1754,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2", + "socket2 0.5.6", "tokio", "tower-service", "tracing", @@ -1930,9 +1968,9 @@ dependencies = [ [[package]] name = "libbpf-sys" -version = "1.4.3+v1.4.5" +version = "1.4.5+v1.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef4996061dea5bd75d12b149b37d84ce7bfd0246997aa5ccc4fdd97ea8f72ee3" +checksum = "5cabee52b6f7e73308d6fd4f8e6bbbdcb97670f49f6e581c5897e4d2410b6019" dependencies = [ "cc", "nix 0.29.0", @@ -1941,13 +1979,13 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.156" +version = "0.2.159" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5f43f184355eefb8d17fc948dbecf6c13be3c141f20d834ae842193a448c72a" +checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" [[package]] name = "libcgroups" -version = "0.3.3" +version = "0.4.1" dependencies = [ "anyhow", "clap", @@ -1972,14 +2010,12 @@ dependencies = [ [[package]] name = "libcontainer" -version = "0.3.3" +version = "0.4.1" dependencies = [ "anyhow", - "bitflags 2.6.0", "caps", "chrono", "fastrand", - "futures", "libc", "libcgroups", "libseccomp", @@ -1989,7 +2025,6 @@ dependencies = [ "once_cell", "prctl", "procfs", - "protobuf", "quickcheck", "rand", "regex", @@ -2021,7 +2056,7 @@ checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" [[package]] name = "liboci-cli" -version = "0.3.3" +version = "0.4.1" dependencies = [ "clap", ] @@ -2071,9 +2106,9 @@ dependencies = [ [[package]] name = "linux-raw-sys" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" [[package]] name = "lock_api" @@ -2196,6 +2231,15 @@ dependencies = [ "adler", ] +[[package]] +name = "miniz_oxide" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +dependencies = [ + "adler2", +] + [[package]] name = "mio" version = "0.8.11" @@ -2259,9 +2303,9 @@ dependencies = [ [[package]] name = "nc" -version = "0.8.23" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44b24115ea9683b6fd45d99c7e83002a739601faea67908edb02737497fabdd3" +checksum = "721559b113013cfac8a82e5ea97b4cdd190319b1cf3465b06a630beeecec6da0" dependencies = [ "cc", ] @@ -2406,13 +2450,12 @@ dependencies = [ [[package]] name = "oci-spec" -version = "0.6.8" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f5a3fe998d50101ae009351fec56d88a69f4ed182e11000e711068c2f5abf72" +checksum = "5cee185ce7cf1cce45e194e34cd87c0bad7ff0aa2e8917009a2da4f7b31fb363" dependencies = [ - "derive_builder 0.20.0", + "derive_builder 0.20.1", "getset", - "once_cell", "quickcheck", "regex", "serde", @@ -2424,9 +2467,12 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "82881c4be219ab5faaf2ad5e5e5ecdff8c66bd7402ca3160975c93b24961afd1" +dependencies = [ + "portable-atomic", +] [[package]] name = "openssl" @@ -2507,12 +2553,30 @@ version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" +[[package]] +name = "path-absolutize" +version = "3.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4af381fe79fa195b4909485d99f73a80792331df0625188e707854f0b3383f5" +dependencies = [ + "path-dedot", +] + [[package]] name = "path-clean" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17359afc20d7ab31fdb42bb844c8b3bb1dabd7dcf7e68428492da7f16966fcef" +[[package]] +name = "path-dedot" +version = "3.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07ba0ad7e047712414213ff67533e6dd477af0a4e1d14fb52343e53d30ea9397" +dependencies = [ + "once_cell", +] + [[package]] name = "pentacle" version = "1.0.0" @@ -2651,6 +2715,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "portable-atomic" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2" + [[package]] name = "postcard" version = "1.0.8" @@ -2954,13 +3024,14 @@ dependencies = [ [[package]] name = "rbpf" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b536dc5c7e3a730d06c578a41df1fbcccd66240a7a9bd5f150a0826291f01c66" +checksum = "463d0b79f93dd962cc115e33f11971bf025c85943d726322c812d98c9f8ecb5b" dependencies = [ "byteorder", "combine", "libc", + "log", "time 0.2.27", ] @@ -2998,13 +3069,13 @@ dependencies = [ [[package]] name = "regalloc2" -version = "0.9.3" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad156d539c879b7a24a363a2016d77961786e71f48f2e2fc8302a92abd2429a6" +checksum = "12908dbeb234370af84d0579b9f68258a0f67e201412dd9a2814e6f45b2fc0f0" dependencies = [ - "hashbrown 0.13.2", + "hashbrown 0.14.3", "log", - "rustc-hash", + "rustc-hash 2.0.0", "slice-group-by", "smallvec", ] @@ -3204,6 +3275,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" +[[package]] +name = "rustc-hash" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" + [[package]] name = "rustc_version" version = "0.2.3" @@ -3224,9 +3301,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.32" +version = "0.38.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65e04861e65f21776e67888bfbea442b3642beaa0138fdb1dd7a84a52dffdb89" +checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" dependencies = [ "bitflags 2.6.0", "errno", @@ -3399,9 +3476,9 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.208" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff085d2cb684faa248efb494c39b68e522822ac0de72ccf08109abde717cfb2" +checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" dependencies = [ "serde_derive", ] @@ -3429,9 +3506,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.208" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24008e81ff7613ed8e5ba0cfaf24e2c2f1e5b8a0495711e44fcd4882fca62bcf" +checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" dependencies = [ "proc-macro2", "quote", @@ -3440,9 +3517,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.125" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83c8e735a073ccf5be70aa8066aa984eaf2fa000db6c8d0100ae605b366d31ed" +checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" dependencies = [ "itoa", "memchr", @@ -3648,6 +3725,16 @@ dependencies = [ "serde", ] +[[package]] +name = "socket2" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" +dependencies = [ + "libc", + "winapi", +] + [[package]] name = "socket2" version = "0.5.6" @@ -3850,9 +3937,9 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tar" -version = "0.4.41" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb797dad5fb5b76fcf519e702f4a589483b5ef06567f160c392832c1f5e44909" +checksum = "4ff6c40d3aedb5e06b57c6f669ad17ab063dd1e63d977c6a88e7f4dfa4f04020" dependencies = [ "filetime", "libc", @@ -3861,15 +3948,15 @@ dependencies = [ [[package]] name = "target-lexicon" -version = "0.12.14" +version = "0.12.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "tempfile" -version = "3.12.0" +version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" +checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" dependencies = [ "cfg-if", "fastrand", @@ -3922,18 +4009,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.63" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" +checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.63" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" dependencies = [ "proc-macro2", "quote", @@ -4047,9 +4134,10 @@ dependencies = [ "libc", "mio", "num_cpus", + "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2", + "socket2 0.5.6", "tokio-macros", "windows-sys 0.48.0", ] @@ -4366,12 +4454,12 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "vergen" -version = "9.0.0" +version = "9.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c32e7318e93a9ac53693b6caccfb05ff22e04a44c7cf8a279051f24c09da286f" +checksum = "349ed9e45296a581f455bc18039878f409992999bc1d5da12a6800eb18c8752f" dependencies = [ "anyhow", - "derive_builder 0.20.0", + "derive_builder 0.20.1", "rustversion", "time 0.3.36", "vergen-lib", @@ -4379,12 +4467,12 @@ dependencies = [ [[package]] name = "vergen-gitcl" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bbdc9746577cb4767f218d320ee0b623d415e8130332f8f562b910b61cc2c4e" +checksum = "2a3a7f91caabecefc3c249fd864b11d4abe315c166fbdb568964421bccfd2b7a" dependencies = [ "anyhow", - "derive_builder 0.20.0", + "derive_builder 0.20.1", "rustversion", "time 0.3.36", "vergen", @@ -4393,13 +4481,12 @@ dependencies = [ [[package]] name = "vergen-lib" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e06bee42361e43b60f363bad49d63798d0f42fb1768091812270eca00c784720" +checksum = "229eaddb0050920816cf051e619affaf18caa3dd512de8de5839ccbc8e53abb0" dependencies = [ "anyhow", - "derive_builder 0.20.0", - "getset", + "derive_builder 0.20.1", "rustversion", ] @@ -4586,9 +4673,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasi-common" -version = "23.0.2" +version = "25.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c19d0b2b2f88ef39e8f5fd0e29e8b00d129e0824cc8c06d2caf9866a6a72b6b" +checksum = "4738c7ff6d16fa9f21efa1982a23d428072a930a50d7f1dcb2638e36a0a52085" dependencies = [ "anyhow", "bitflags 2.6.0", @@ -4701,18 +4788,9 @@ checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" [[package]] name = "wasm-encoder" -version = "0.212.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501940df4418b8929eb6d52f1aade1fdd15a5b86c92453cb696e3c906bd3fc33" -dependencies = [ - "leb128", -] - -[[package]] -name = "wasm-encoder" -version = "0.214.0" +version = "0.217.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff694f02a8d7a50b6922b197ae03883fbf18cdb2ae9fbee7b6148456f5f44041" +checksum = "7b88b0814c9a2b323a9b46c687e726996c255ac8b64aa237dd11c81ed4854760" dependencies = [ "leb128", ] @@ -4734,11 +4812,12 @@ dependencies = [ [[package]] name = "wasmedge-sdk" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f477f3b515760c6f7fa734dae5b97c030ee443969f1c30ed12d3a09bea783a2" +checksum = "852257498e8524cb0e2e8e9c7f1540afc2f24f2c3dd77806cf583feba8c19e99" dependencies = [ "anyhow", + "async-wasi", "cfg-if", "num-derive", "num-traits", @@ -4750,16 +4829,19 @@ dependencies = [ [[package]] name = "wasmedge-sys" -version = "0.17.5" +version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32d8e2276d63bb6f0c36871218643d193d2da6da3db36c1c1227547da465ed58" +checksum = "8ebcb49955b8b2e08fe8c3416fe4df61ecf30654db4b8f6f2418a0450cb5ada3" dependencies = [ + "async-wasi", "bindgen", "cfg-if", "cmake", + "fiber-for-wasmedge", "flate2", "lazy_static", "libc", + "log", "parking_lot", "paste", "phf", @@ -4777,9 +4859,9 @@ dependencies = [ [[package]] name = "wasmedge-types" -version = "0.4.4" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d4e7c8aebe2c513bb389beebc148253eb6f5904a6f9327179bbf2014c0efd52" +checksum = "17315f552d26bcfe01fc185b874177592d30aab86a10ed898cc8a3f29815c9c4" dependencies = [ "thiserror", "wat", @@ -5020,9 +5102,9 @@ dependencies = [ [[package]] name = "wasmparser" -version = "0.212.0" +version = "0.217.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d28bc49ba1e5c5b61ffa7a2eace10820443c4b7d1c0b144109261d14570fdf8" +checksum = "ca917a21307d3adf2b9857b94dd05ebf8496bdcff4437a9b9fb3899d3e6c74e7" dependencies = [ "ahash 0.8.11", "bitflags 2.6.0", @@ -5034,22 +5116,22 @@ dependencies = [ [[package]] name = "wasmprinter" -version = "0.212.0" +version = "0.217.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfac65326cc561112af88c3028f6dfdb140acff67ede33a8e86be2dc6b8956f7" +checksum = "50dc568b3e0d47e8f96ea547c90790cfa783f0205160c40de894a427114185ce" dependencies = [ "anyhow", "termcolor", - "wasmparser 0.212.0", + "wasmparser 0.217.0", ] [[package]] name = "wasmtime" -version = "23.0.2" +version = "25.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07232e0b473af36112da7348f51e73fa8b11047a6cb546096da3812930b7c93a" +checksum = "03601559991d459a228236a49135364eac85ac00dc07b65fb95ae61a957793af" dependencies = [ - "addr2line", + "addr2line 0.22.0", "anyhow", "async-trait", "bitflags 2.6.0", @@ -5058,7 +5140,7 @@ dependencies = [ "cfg-if", "encoding_rs", "fxprof-processed-profile", - "gimli 0.28.1", + "gimli 0.29.0", "hashbrown 0.14.3", "indexmap 2.2.6", "ittapi", @@ -5081,9 +5163,9 @@ dependencies = [ "smallvec", "sptr", "target-lexicon", - "wasm-encoder 0.212.0", - "wasmparser 0.212.0", - "wasmtime-asm-macros", + "wasm-encoder", + "wasmparser 0.217.0", + "wasmtime-asm-macros 25.0.1", "wasmtime-cache", "wasmtime-component-macro", "wasmtime-component-util", @@ -5093,7 +5175,7 @@ dependencies = [ "wasmtime-jit-debug", "wasmtime-jit-icache-coherence", "wasmtime-slab", - "wasmtime-versioned-export-macros", + "wasmtime-versioned-export-macros 25.0.1", "wasmtime-winch", "wat", "windows-sys 0.52.0", @@ -5101,18 +5183,27 @@ dependencies = [ [[package]] name = "wasmtime-asm-macros" -version = "23.0.2" +version = "14.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54984bc0b5689da87a43d7c181d23092b4d5cfcbb7ae3eb6b917dd55865d95e6" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "wasmtime-asm-macros" +version = "25.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5a9c42562d879c749288d9a26acc0d95d2ca069e30c2ec2efce84461c4d62b3" +checksum = "e453b3bde07312874c0c6703e2de9281daab46646172c1b71fa59a97226f858e" dependencies = [ "cfg-if", ] [[package]] name = "wasmtime-cache" -version = "23.0.2" +version = "25.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d5d5aac98c8ae87cf5244495da7722e3fa022aa6f3f4fcd5e3d6e5699ce422" +checksum = "a35e1d7cce7b536cc71955e5898b099104a577d2583694b7b31a6f38c14c04a3" dependencies = [ "anyhow", "base64", @@ -5130,9 +5221,9 @@ dependencies = [ [[package]] name = "wasmtime-component-macro" -version = "23.0.2" +version = "25.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0c3f57c4bc96f9b4a6ff4d6cb6e837913eff32e98d09e2b6d79b5c4647b415b" +checksum = "4a6faeabbdbfd27e24e8d5204207ba9c247a13cf84181ea721b5f209f281fe01" dependencies = [ "anyhow", "proc-macro2", @@ -5145,45 +5236,46 @@ dependencies = [ [[package]] name = "wasmtime-component-util" -version = "23.0.2" +version = "25.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1da707969bc31a565da9b32d087eb2370c95c6f2087c5539a15f2e3b27e77203" +checksum = "6b1b24db4aa3dc7c0d3181d1833b4fe9ec0cd3f08780b746415c84c0a9ec9011" [[package]] name = "wasmtime-cranelift" -version = "23.0.2" +version = "25.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62cb6135ec46994299be711b78b03acaa9480de3715f827d450f0c947a84977c" +checksum = "c737bef9ea94aab874e29ac6a8688b89ceb43c7b51f047079c43387972c07ee3" dependencies = [ "anyhow", "cfg-if", - "cranelift-codegen 0.110.2", + "cranelift-codegen 0.112.1", "cranelift-control", - "cranelift-entity 0.110.2", - "cranelift-frontend 0.110.2", + "cranelift-entity 0.112.1", + "cranelift-frontend 0.112.1", "cranelift-native", "cranelift-wasm", - "gimli 0.28.1", + "gimli 0.29.0", "log", "object 0.36.0", + "smallvec", "target-lexicon", "thiserror", - "wasmparser 0.212.0", + "wasmparser 0.217.0", "wasmtime-environ", - "wasmtime-versioned-export-macros", + "wasmtime-versioned-export-macros 25.0.1", ] [[package]] name = "wasmtime-environ" -version = "23.0.2" +version = "25.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bcaa3b42a0718e9123da7fb75e8e13fc95df7db2a7e32e2f2f4f0d3333b7d6f" +checksum = "817bfa9ea878ec37aa24f85fd6912844e8d87d321662824cf920d561b698cdfd" dependencies = [ "anyhow", "cpp_demangle", "cranelift-bitset", - "cranelift-entity 0.110.2", - "gimli 0.28.1", + "cranelift-entity 0.112.1", + "gimli 0.29.0", "indexmap 2.2.6", "log", "object 0.36.0", @@ -5193,8 +5285,8 @@ dependencies = [ "serde", "serde_derive", "target-lexicon", - "wasm-encoder 0.212.0", - "wasmparser 0.212.0", + "wasm-encoder", + "wasmparser 0.217.0", "wasmprinter", "wasmtime-component-util", "wasmtime-types", @@ -5202,36 +5294,36 @@ dependencies = [ [[package]] name = "wasmtime-fiber" -version = "23.0.2" +version = "25.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1c805515f4bc157f70f998038951009d21a19c1ef8c5fbb374a11b1d56672" +checksum = "5070971b479b4e4879dbae8a8e1efee738a36d047c5738acfedb38d6740b79d1" dependencies = [ "anyhow", "cc", "cfg-if", "rustix", - "wasmtime-asm-macros", - "wasmtime-versioned-export-macros", + "wasmtime-asm-macros 25.0.1", + "wasmtime-versioned-export-macros 25.0.1", "windows-sys 0.52.0", ] [[package]] name = "wasmtime-jit-debug" -version = "23.0.2" +version = "25.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "118e141e52f3898a531a612985bd09a5e05a1d646cad2f30a3020b675c21cd49" +checksum = "26fd0000903068c13465b9c023f56f0664f433035cbbd8eae69aa7c755f97637" dependencies = [ "object 0.36.0", "once_cell", "rustix", - "wasmtime-versioned-export-macros", + "wasmtime-versioned-export-macros 25.0.1", ] [[package]] name = "wasmtime-jit-icache-coherence" -version = "23.0.2" +version = "25.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cfee42dac5148fc2664ab1f5cb8d7fa77a28d1a2cf1d9483abc2c3d751a58b9" +checksum = "48011232c0da424f89c3752a378d0b7f512fae321ea414a43e1e7a302a6a1f7e" dependencies = [ "anyhow", "cfg-if", @@ -5241,29 +5333,40 @@ dependencies = [ [[package]] name = "wasmtime-slab" -version = "23.0.2" +version = "25.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42eb8f6515708ec67974998c3e644101db4186308985f5ef7c2ef324ff33c948" +checksum = "d9858a22e656ae8574631221b474b8bebf63f1367fcac3f179873833eabc2ced" [[package]] name = "wasmtime-types" -version = "23.0.2" +version = "25.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "046873fb8fb3e9652f3fd76fe99c8c8129007695c3d73b2e307fdae40f6e324c" +checksum = "4d14b8a9206fe94485a03edb1654cd530dbd2a859a85a43502cb4e99653a568c" dependencies = [ "anyhow", - "cranelift-entity 0.110.2", + "cranelift-entity 0.112.1", "serde", "serde_derive", "smallvec", - "wasmparser 0.212.0", + "wasmparser 0.217.0", +] + +[[package]] +name = "wasmtime-versioned-export-macros" +version = "14.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09b5575a75e711ca6c36bb9ad647c93541cdc8e34218031acba5da3f35919dd3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", ] [[package]] name = "wasmtime-versioned-export-macros" -version = "23.0.2" +version = "25.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99c02af2e9dbeb427304d1a08787d70ed0dbfec1af2236616f84c9f1f03e7969" +checksum = "e9bb1f01efb8b542eadfda511e8ea1cc54309451aba97b69969e5b1a59cb7ded" dependencies = [ "proc-macro2", "quote", @@ -5272,16 +5375,16 @@ dependencies = [ [[package]] name = "wasmtime-winch" -version = "23.0.2" +version = "25.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ceddc47a49af10908a288fdfdc296ab3932062cab62a785e3705bbb3709c59" +checksum = "b238eeaf55652df0e63a6829d1ca9ef726d63517f56194faa0f6b9941f8d9151" dependencies = [ "anyhow", - "cranelift-codegen 0.110.2", - "gimli 0.28.1", + "cranelift-codegen 0.112.1", + "gimli 0.29.0", "object 0.36.0", "target-lexicon", - "wasmparser 0.212.0", + "wasmparser 0.217.0", "wasmtime-cranelift", "wasmtime-environ", "winch-codegen", @@ -5289,9 +5392,9 @@ dependencies = [ [[package]] name = "wasmtime-wit-bindgen" -version = "23.0.2" +version = "25.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75f528f8b8a2376a3dacaf497d960216dd466d324425361e1e00e26de0a7705c" +checksum = "eb1596caa67b31ac675fd3da61685c4260f8b10832021db42c85d227b7ba8133" dependencies = [ "anyhow", "heck 0.4.1", @@ -5310,24 +5413,24 @@ dependencies = [ [[package]] name = "wast" -version = "214.0.0" +version = "217.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "694bcdb24c49c8709bd8713768b71301a11e823923eee355d530f1d8d0a7f8e9" +checksum = "79004ecebded92d3c710d4841383368c7f04b63d0992ddd6b0c7d5029b7629b7" dependencies = [ "bumpalo", "leb128", "memchr", "unicode-width", - "wasm-encoder 0.214.0", + "wasm-encoder", ] [[package]] name = "wat" -version = "1.214.0" +version = "1.217.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "347249eb56773fa728df2656cfe3a8c19437ded61a922a0b5e0839d9790e278e" +checksum = "c126271c3d92ca0f7c63e4e462e40c69cca52fd4245fcda730d1cf558fb55088" dependencies = [ - "wast 214.0.0", + "wast 217.0.0", ] [[package]] @@ -5398,9 +5501,9 @@ dependencies = [ [[package]] name = "which" -version = "6.0.2" +version = "6.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d9c5ed668ee1f17edb3b627225343d210006a90bb1e3745ce1f30b1fb115075" +checksum = "b4ee928febd44d98f2f459a4a79bd4d928591333a494a10a868418ac1b39cf1f" dependencies = [ "either", "home", @@ -5410,9 +5513,9 @@ dependencies = [ [[package]] name = "wiggle" -version = "23.0.2" +version = "25.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af4a61a764e5c4f0cb8c1796859d266e75828c244089e77c81c6158dd8c4fda4" +checksum = "e998c11dd3f293a8f657ce14e9c8fdc5cddd858f1e6448290d4ec04ca7ffe5b7" dependencies = [ "anyhow", "async-trait", @@ -5425,9 +5528,9 @@ dependencies = [ [[package]] name = "wiggle-generate" -version = "23.0.2" +version = "25.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2d45f4c50cfcbc222fb5221142fa65aa834d0a54b77b5760be0ea0a1ccad52d" +checksum = "d0d8db385e5207c1ac431837868c8e48fc3f7e81f3a146793086d661875520ec" dependencies = [ "anyhow", "heck 0.4.1", @@ -5440,9 +5543,9 @@ dependencies = [ [[package]] name = "wiggle-macro" -version = "23.0.2" +version = "25.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12e0fbccad12e5b406effb8676eb3713fdbe366975fb65d56f960ace6da118e4" +checksum = "2706ee9e7d1e106de80a3b3c6ec2f42920149e2def3e8060187c8e61f99bc0ef" dependencies = [ "proc-macro2", "quote", @@ -5483,17 +5586,17 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "winch-codegen" -version = "0.21.2" +version = "0.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a41b67a37ea74e83c38ef495cc213aba73385236b1deee883dc869e835003b9" +checksum = "4ac790aaeff15764481c731239a45346df3f0af966839ac1575f49989fdbb542" dependencies = [ "anyhow", - "cranelift-codegen 0.110.2", - "gimli 0.28.1", - "regalloc2 0.9.3", + "cranelift-codegen 0.112.1", + "gimli 0.29.0", + "regalloc2 0.10.2", "smallvec", "target-lexicon", - "wasmparser 0.212.0", + "wasmparser 0.217.0", "wasmtime-cranelift", "wasmtime-environ", ] @@ -5744,9 +5847,9 @@ dependencies = [ [[package]] name = "wit-parser" -version = "0.212.0" +version = "0.217.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ceeb0424aa8679f3fcf2d6e3cfa381f3d6fa6179976a2c05a6249dd2bb426716" +checksum = "fb893dcd6d370cfdf19a0d9adfcd403efb8e544e1a0ea3a8b81a21fe392eaa78" dependencies = [ "anyhow", "id-arena", @@ -5757,7 +5860,7 @@ dependencies = [ "serde_derive", "serde_json", "unicode-xid", - "wasmparser 0.212.0", + "wasmparser 0.217.0", ] [[package]] @@ -5803,7 +5906,7 @@ dependencies = [ [[package]] name = "youki" -version = "0.3.3" +version = "0.4.1" dependencies = [ "anyhow", "caps", @@ -5814,11 +5917,9 @@ dependencies = [ "libcontainer", "liboci-cli", "nix 0.28.0", - "once_cell", "pentacle", "procfs", "scopeguard", - "serde", "serde_json", "serial_test", "tabwriter", diff --git a/README.md b/README.md index 2da8381e78..1098c48983 100644 --- a/README.md +++ b/README.md @@ -124,7 +124,6 @@ $ sudo apt-get install \ libelf-dev \ libseccomp-dev \ libclang-dev \ - glibc-static \ libssl-dev ``` diff --git a/crates/libcgroups/Cargo.toml b/crates/libcgroups/Cargo.toml index 7caeb0f00a..19417b2f49 100644 --- a/crates/libcgroups/Cargo.toml +++ b/crates/libcgroups/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "libcgroups" -version = "0.3.3" # MARK: Version +version = "0.4.1" # MARK: Version description = "Library for cgroup" license-file = "../../LICENSE" repository = "https://github.com/containers/youki" @@ -22,19 +22,19 @@ cgroupsv2_devices = ["rbpf", "libbpf-sys", "errno", "libc", "nix/dir"] [dependencies] nix = { version = "0.28.0", features = ["signal", "user", "fs"] } procfs = "0.16.0" -oci-spec = { version = "~0.6.8", features = ["runtime"] } +oci-spec = { version = "~0.7.0", features = ["runtime"] } fixedbitset = "0.5.7" serde = { version = "1.0", features = ["derive"] } -rbpf = { version = "0.2.0", optional = true } -libbpf-sys = { version = "1.4.3", optional = true } +rbpf = { version = "0.3.0", optional = true } +libbpf-sys = { version = "1.4.5", optional = true } errno = { version = "0.3.9", optional = true } -libc = { version = "0.2.156", optional = true } -thiserror = "1.0.63" +libc = { version = "0.2.159", optional = true } +thiserror = "1.0.64" tracing = { version = "0.1.40", features = ["attributes"] } [dev-dependencies] anyhow = "1.0" -oci-spec = { version = "~0.6.8", features = ["proptests", "runtime"] } +oci-spec = { version = "~0.7.0", features = ["proptests", "runtime"] } quickcheck = "1" mockall = { version = "0.13.0", features = [] } clap = "4.1.6" diff --git a/crates/libcontainer/Cargo.toml b/crates/libcontainer/Cargo.toml index 0097f5ca38..e1b68030e3 100644 --- a/crates/libcontainer/Cargo.toml +++ b/crates/libcontainer/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "libcontainer" -version = "0.3.3" # MARK: Version +version = "0.4.1" # MARK: Version description = "Library for container control" license-file = "../../LICENSE" repository = "https://github.com/containers/youki" @@ -20,15 +20,13 @@ v1 = ["libcgroups/v1"] cgroupsv2_devices = ["libcgroups/cgroupsv2_devices"] [dependencies] -bitflags = "2.6.0" caps = "0.5.5" chrono = { version = "0.4", default-features = false, features = [ "clock", "serde", ] } -fastrand = "^2.1.0" -futures = { version = "0.3", features = ["thread-pool"] } -libc = "0.2.156" +fastrand = "^2.1.1" +libc = "0.2.159" nix = { version = "0.28.0", features = [ "socket", "sched", @@ -39,24 +37,23 @@ nix = { version = "0.28.0", features = [ "term", "hostname", ] } -oci-spec = { version = "0.6.8", features = ["runtime"] } -once_cell = "1.19.0" +oci-spec = { version = "0.7.0", features = ["runtime"] } +once_cell = "1.20.1" procfs = "0.16.0" prctl = "1.0.0" -libcgroups = { path = "../libcgroups", default-features = false, version = "0.3.3" } # MARK: Version +libcgroups = { path = "../libcgroups", default-features = false, version = "0.4.1" } # MARK: Version libseccomp = { version = "0.3.0", optional = true } serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" rust-criu = "0.4.0" -protobuf = "= 3.2.0" # https://github.com/checkpoint-restore/rust-criu/issues/19 regex = { version = "1.10.6", default-features = false, features = ["std", "unicode-perl"] } -thiserror = "1.0.63" +thiserror = "1.0.64" tracing = { version = "0.1.40", features = ["attributes"] } safe-path = "0.1.0" -nc = "0.8.23" +nc = "0.9.3" [dev-dependencies] -oci-spec = { version = "~0.6.8", features = ["proptests", "runtime"] } +oci-spec = { version = "~0.7.0", features = ["proptests", "runtime"] } quickcheck = "1" serial_test = "3.1.1" tempfile = "3" diff --git a/crates/libcontainer/src/process/container_init_process.rs b/crates/libcontainer/src/process/container_init_process.rs index 4b2ef65b91..64182c1c7b 100644 --- a/crates/libcontainer/src/process/container_init_process.rs +++ b/crates/libcontainer/src/process/container_init_process.rs @@ -782,7 +782,7 @@ fn setup_scheduler(sc_op: &Option) -> Result<()> { } } } - let mut a = nc::sched_attr_t { + let a = nc::sched_attr_t { // size of the structure should always be within u32 bounds, // so this unwrap should never fail size: mem::size_of::().try_into().unwrap(), @@ -798,7 +798,7 @@ fn setup_scheduler(sc_op: &Option) -> Result<()> { }; // TODO when nix or libc support this function, replace nx crates. unsafe { - let result = nc::sched_setattr(0, &mut a, 0); + let result = nc::sched_setattr(0, &a, 0); match result { Ok(_) => {} Err(err) => { diff --git a/crates/libcontainer/src/seccomp/mod.rs b/crates/libcontainer/src/seccomp/mod.rs index b36d41aa6b..4e9872076f 100644 --- a/crates/libcontainer/src/seccomp/mod.rs +++ b/crates/libcontainer/src/seccomp/mod.rs @@ -70,6 +70,7 @@ fn translate_arch(arch: Arch) -> ScmpArch { Arch::ScmpArchPpc64le => ScmpArch::Ppc64Le, Arch::ScmpArchS390 => ScmpArch::S390, Arch::ScmpArchS390x => ScmpArch::S390X, + Arch::ScmpArchRiscv64 => ScmpArch::Riscv64, } } @@ -89,6 +90,7 @@ fn translate_action(action: LinuxSeccompAction, errno: Option) -> Result ScmpAction::KillProcess, LinuxSeccompAction::ScmpActNotify => ScmpAction::Notify, LinuxSeccompAction::ScmpActLog => ScmpAction::Log, + LinuxSeccompAction::ScmpActKillThread => ScmpAction::KillThread, }; tracing::trace!(?action, "translated action"); diff --git a/crates/libcontainer/src/tty.rs b/crates/libcontainer/src/tty.rs index 4ca06b2efe..b9a7531278 100644 --- a/crates/libcontainer/src/tty.rs +++ b/crates/libcontainer/src/tty.rs @@ -1,5 +1,6 @@ //! tty (teletype) for user-system interaction +use std::env; use std::io::IoSlice; use std::os::unix::fs::symlink; use std::os::unix::io::AsRawFd; @@ -75,7 +76,14 @@ pub fn setup_console_socket( console_socket_path: &Path, socket_name: &str, ) -> Result { - let linked = container_dir.join(socket_name); + // Move into the container directory to avoid sun family conflicts with long socket path names. + // ref: https://github.com/containers/youki/issues/2910 + + let prev_dir = env::current_dir().unwrap(); + let _ = env::set_current_dir(container_dir); + + let linked = PathBuf::from(socket_name); + symlink(console_socket_path, &linked).map_err(|err| TTYError::Symlink { source: err, linked: linked.to_path_buf().into(), @@ -105,6 +113,8 @@ pub fn setup_console_socket( })?, Ok(()) => csocketfd.as_raw_fd(), }; + + let _ = env::set_current_dir(prev_dir); Ok(csocketfd) } diff --git a/crates/liboci-cli/Cargo.toml b/crates/liboci-cli/Cargo.toml index 941b5f628f..99fcb8c992 100644 --- a/crates/liboci-cli/Cargo.toml +++ b/crates/liboci-cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "liboci-cli" -version = "0.3.3" # MARK: Version +version = "0.4.1" # MARK: Version description = "Parse command line arguments for OCI container runtimes" license-file = "../../LICENSE" repository = "https://github.com/containers/youki" diff --git a/crates/youki/Cargo.toml b/crates/youki/Cargo.toml index 4077341e67..16353bea72 100644 --- a/crates/youki/Cargo.toml +++ b/crates/youki/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "youki" -version = "0.3.3" # MARK: Version +version = "0.4.1" # MARK: Version description = "A container runtime written in Rust" license-file = "../../LICENSE" repository = "https://github.com/containers/youki" @@ -27,25 +27,23 @@ default-features = false features = ["std", "suggestions", "derive", "cargo", "help", "usage", "error-context"] [dependencies] -anyhow = "1.0.86" +anyhow = "1.0.89" chrono = { version = "0.4", default-features = false, features = ["clock", "serde"] } -libcgroups = { path = "../libcgroups", default-features = false, version = "0.3.3" } # MARK: Version -libcontainer = { path = "../libcontainer", default-features = false, version = "0.3.3" } # MARK: Version -liboci-cli = { path = "../liboci-cli", version = "0.3.3" } # MARK: Version +libcgroups = { path = "../libcgroups", default-features = false, version = "0.4.1" } # MARK: Version +libcontainer = { path = "../libcontainer", default-features = false, version = "0.4.1" } # MARK: Version +liboci-cli = { path = "../liboci-cli", version = "0.4.1" } # MARK: Version nix = "0.28.0" -once_cell = "1.19.0" pentacle = "1.0.0" procfs = "0.16.0" -serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" tabwriter = "1" clap_complete = "4.1.3" caps = "0.5.5" wasmer = { version = "4.0.0", optional = true } wasmer-wasix = { version = "0.9.0", optional = true } -wasmedge-sdk = { version = "0.13.2", optional = true } -wasmtime = { version = "23.0.2", optional = true } -wasi-common = { version = "23.0.2", optional = true } +wasmedge-sdk = { version = "0.14.0", optional = true } +wasmtime = { version = "25.0.1", optional = true } +wasi-common = { version = "25.0.1", optional = true } tracing = { version = "0.1.40", features = ["attributes"] } tracing-subscriber = { version = "0.3.18", features = ["json", "env-filter"] } tracing-journald = "0.3.0" @@ -56,5 +54,5 @@ tempfile = "3" scopeguard = "1.2.0" [build-dependencies] -anyhow = "1.0.86" -vergen-gitcl = { version = "1.0.0", features = ["build"] } +anyhow = "1.0.89" +vergen-gitcl = { version = "1.0.1", features = ["build"] } diff --git a/crates/youki/src/workload/wasmedge.rs b/crates/youki/src/workload/wasmedge.rs index 1c2e5a2396..7b6a4b4396 100644 --- a/crates/youki/src/workload/wasmedge.rs +++ b/crates/youki/src/workload/wasmedge.rs @@ -1,7 +1,9 @@ +use std::collections::HashMap; + use libcontainer::oci_spec::runtime::Spec; use libcontainer::workload::{Executor, ExecutorError, ExecutorValidationError}; -use wasmedge_sdk::config::{CommonConfigOptions, ConfigBuilder, HostRegistrationConfigOptions}; -use wasmedge_sdk::{params, VmBuilder}; +use wasmedge_sdk::wasi::WasiModule; +use wasmedge_sdk::{params, Module, Store, Vm}; const EXECUTOR_NAME: &str = "wasmedge"; @@ -24,36 +26,26 @@ impl Executor for WasmedgeExecutor { } let envs = env_to_wasi(spec); - // create configuration with `wasi` option enabled - let config = ConfigBuilder::new(CommonConfigOptions::default()) - .with_host_registration_config(HostRegistrationConfigOptions::default().wasi(true)) - .build() - .map_err(|err| { - ExecutorError::Other(format!("failed to create wasmedge config: {}", err)) - })?; - - // create a vm with the config settings - let mut vm = VmBuilder::new() - .with_config(config) - .build() - .map_err(|err| ExecutorError::Other(format!("failed to create wasmedge vm: {}", err)))? - .register_module_from_file("main", cmd) - .map_err(|err| { - ExecutorError::Other(format!( - "failed to register wasmedge module from the file: {}", - err - )) - })?; // initialize the wasi module with the parsed parameters - let wasi_instance = vm - .wasi_module_mut() - .expect("config doesn't contain HostRegistrationConfigOptions"); - wasi_instance.initialize( + let mut wasi_module = WasiModule::create( Some(args.iter().map(|s| s as &str).collect()), Some(envs.iter().map(|s| s as &str).collect()), None, + ) + .map_err(|err| ExecutorError::Other(format!("failed to create wasi module: {:?}", err)))?; + + let mut instances = HashMap::new(); + instances.insert(wasi_module.name().to_string(), wasi_module.as_mut()); + + // create a vm + let mut vm = Vm::new( + Store::new(None, instances) + .map_err(|err| ExecutorError::Other(format!("failed to create store: {}", err)))?, ); + let module = Module::from_file(None, cmd).unwrap(); + vm.register_module(Some("main"), module).unwrap(); + vm.run_func(Some("main"), "_start", params!()) .map_err(|err| ExecutorError::Execution(err))?; diff --git a/docs/src/user/basic_setup.md b/docs/src/user/basic_setup.md index 36ae20f4ed..96359345b1 100644 --- a/docs/src/user/basic_setup.md +++ b/docs/src/user/basic_setup.md @@ -83,7 +83,7 @@ Install from the GitHub release as root: ```console -# curl -sSfL https://github.com/containers/youki/releases/download/v0.3.3/youki-0.3.3-$(uname -m)-musl.tar.gz | tar -xzvC /usr/bin/ youki +# curl -sSfL https://github.com/containers/youki/releases/download/v0.4.1/youki-0.4.1-$(uname -m)-musl.tar.gz | tar -xzvC /usr/bin/ youki ``` diff --git a/experiment/selinux/Cargo.lock b/experiment/selinux/Cargo.lock index 5a515cc41c..ca9ba1bd13 100644 --- a/experiment/selinux/Cargo.lock +++ b/experiment/selinux/Cargo.lock @@ -2,12 +2,6 @@ # It is not intended for manual editing. version = 3 -[[package]] -name = "anyhow" -version = "1.0.86" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" - [[package]] name = "autocfg" version = "1.3.0" @@ -117,7 +111,6 @@ dependencies = [ name = "selinux" version = "0.1.0" dependencies = [ - "anyhow", "nix", "rustix", "tempfile", diff --git a/experiment/selinux/Cargo.toml b/experiment/selinux/Cargo.toml index 785c7cd755..35107f76ae 100644 --- a/experiment/selinux/Cargo.toml +++ b/experiment/selinux/Cargo.toml @@ -12,7 +12,6 @@ autoexamples = true keywords = ["youki", "container", "selinux"] [dependencies] -anyhow = "1.0.86" nix = { version = "0.29.0", features = ["process", "fs", "socket"] } rustix = { version = "0.38.34", features = ["fs"] } tempfile = "3.10.1" diff --git a/experiment/selinux/README.md b/experiment/selinux/README.md index a477944276..7b089d7825 100644 --- a/experiment/selinux/README.md +++ b/experiment/selinux/README.md @@ -10,3 +10,9 @@ Please import and use this project. ```console $ cargo run ``` + +You can create an selinux environment via the Vagrantfile. + +```console +$ vagrant up +``` diff --git a/experiment/selinux/Vagrantfile b/experiment/selinux/Vagrantfile new file mode 100644 index 0000000000..0b06307989 --- /dev/null +++ b/experiment/selinux/Vagrantfile @@ -0,0 +1,19 @@ +# -*- mode: ruby -*- +# vi: set ft=ruby : + +Vagrant.configure("2") do |config| + config.vm.box = "generic/centos8" + config.vm.synced_folder '.', '/vagrant/youki', disabled: false + + config.vm.provider "virtualbox" do |v| + v.memory = 4096 + v.cpus = 4 + end + + config.vm.provision "shell", privileged: false, inline: <<-SHELL + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y + . "$HOME/.cargo/env" + sudo sed -i -e 's|^mirrorlist|#mirrorlist|g' -e 's|^#baseurl=http://mirror|baseurl=http://vault|g' /etc/yum.repos.d/CentOS-*repo + sudo yum -y install gcc curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker autoconf wget make + SHELL +end diff --git a/experiment/selinux/src/main.rs b/experiment/selinux/src/main.rs index 35d5a4e165..9a437a3b23 100644 --- a/experiment/selinux/src/main.rs +++ b/experiment/selinux/src/main.rs @@ -1,10 +1,9 @@ -use anyhow::Result; use selinux::selinux::*; use selinux::selinux_label::*; use std::fs::File; use std::path::Path; -fn main() -> Result<()> { +fn main() -> Result<(), SELinuxError> { let mut selinux_instance: SELinux = SELinux::new(); if selinux_instance.get_enabled() { @@ -32,9 +31,9 @@ fn main() -> Result<()> { } let file_path = Path::new("./test_file.txt"); - let _file = File::create(file_path)?; + let _file = File::create(file_path).unwrap(); let selinux_label = - SELinuxLabel::try_from("unconfined_u:object_r:public_content_t:s1".to_string())?; + SELinuxLabel::try_from("system_u:object_r:public_content_t:s0".to_string())?; SELinux::set_file_label(file_path, selinux_label)?; let current_label = SELinux::file_label(file_path)?; println!("file label is {}", current_label); diff --git a/experiment/selinux/src/selinux.rs b/experiment/selinux/src/selinux.rs index e724cf9974..ac2c91da2e 100644 --- a/experiment/selinux/src/selinux.rs +++ b/experiment/selinux/src/selinux.rs @@ -489,7 +489,7 @@ mod tests { fn create_temp_file(content: &[u8], file_name: &str) { let path = Path::new(file_name); - let mut file = File::create(&path).expect("Failed to create file"); + let mut file = File::create(path).expect("Failed to create file"); file.write_all(content).expect("Failed to write to file"); file.sync_all().expect("Failed to sync file"); } @@ -570,7 +570,7 @@ mod tests { let expected = PathBuf::from(expected_array[i]); match SELinux::check_line_include_selinux_fs_mount_point(input) { Some(output) => assert_eq!(expected, output), - None => assert_eq!(succeeded_array[i], false), + None => assert!(!succeeded_array[i]), } } } diff --git a/experiment/selinux/src/tools/xattr.rs b/experiment/selinux/src/tools/xattr.rs index 2e44ce0060..786c5b1d8c 100644 --- a/experiment/selinux/src/tools/xattr.rs +++ b/experiment/selinux/src/tools/xattr.rs @@ -34,7 +34,11 @@ where // set_xattr sets extended attributes on a file specified by its path. fn set_xattr(&self, attr: &str, data: &[u8]) -> Result<(), XattrError> { let path = self.as_ref(); - match rfs::setxattr(path, attr, data, rfs::XattrFlags::CREATE) { + let op = match path.get_xattr(attr) { + Ok(_) => rfs::XattrFlags::REPLACE, + Err(_) => rfs::XattrFlags::CREATE, + }; + match rfs::setxattr(path, attr, data, op) { Ok(_) => Ok(()), Err(e) => { let errno = e.raw_os_error(); @@ -50,7 +54,11 @@ where // lset_xattr sets extended attributes on a symbolic link. fn lset_xattr(&self, attr: &str, data: &[u8]) -> Result<(), XattrError> { let path = self.as_ref(); - match rfs::lsetxattr(path, attr, data, rfs::XattrFlags::CREATE) { + let op = match path.lget_xattr(attr) { + Ok(_) => rfs::XattrFlags::REPLACE, + Err(_) => rfs::XattrFlags::CREATE, + }; + match rfs::lsetxattr(path, attr, data, op) { Ok(_) => Ok(()), Err(e) => { let errno = e.raw_os_error(); @@ -128,6 +136,15 @@ mod tests { let temp_file = NamedTempFile::new().expect("Failed to create temp file"); let file_path = temp_file.path(); + // Verify that the first "set_xattr" operation succeeds, which means it doesn't have xattr yet. + file_path + .set_xattr(attr_name, attr_value.as_bytes()) + .expect("Failed to set xattr"); + let actual = file_path.get_xattr(attr_name).expect("Failed to get xattr"); + assert_eq!(actual, attr_value); + + // Verify that the second "set_xattr" operation succeeds, which means it already has xattr. + let attr_value = "system_u:object_r:another_label_t"; file_path .set_xattr(attr_name, attr_value.as_bytes()) .expect("Failed to set xattr"); diff --git a/tests/contest/contest/Cargo.toml b/tests/contest/contest/Cargo.toml index c5bf8b4f6b..81aa81c4da 100644 --- a/tests/contest/contest/Cargo.toml +++ b/tests/contest/contest/Cargo.toml @@ -5,14 +5,13 @@ edition = "2021" [dependencies] anyhow = "1.0" -chrono = { version = "0.4", default-features = false, features = ["clock"] } flate2 = "1.0" libcgroups = { path = "../../../crates/libcgroups" } libcontainer = { path = "../../../crates/libcontainer" } nix = "0.28.0" num_cpus = "1.16" -oci-spec = { version = "0.6.4", features = ["runtime"] } -once_cell = "1.19.0" +oci-spec = { version = "0.7.0", features = ["runtime"] } +once_cell = "1.20.1" pnet_datalink = "0.35.0" procfs = "0.16.0" rand = "0.8.5" @@ -21,7 +20,7 @@ serde_json = "1.0" tar = "0.4" test_framework = { path = "../test_framework" } uuid = "1.10" -which = "6.0.2" +which = "6.0.3" tempfile = "3" scopeguard = "1.2.0" tracing = { version = "0.1.40", features = ["attributes"]} @@ -32,6 +31,3 @@ version = "4.1.6" default-features = false features = ["std", "suggestions", "derive", "cargo", "help", "usage", "error-context"] -[dependencies.clap_derive] -version = "4.0.21" -default-features = true diff --git a/tests/contest/runtimetest/Cargo.toml b/tests/contest/runtimetest/Cargo.toml index 43622b5f0d..7b2cd4adf1 100644 --- a/tests/contest/runtimetest/Cargo.toml +++ b/tests/contest/runtimetest/Cargo.toml @@ -4,8 +4,8 @@ version = "0.0.1" edition = "2021" [dependencies] -oci-spec = { version = "0.6.8", features = ["runtime"] } +oci-spec = { version = "0.7.0", features = ["runtime"] } nix = "0.28.0" anyhow = "1.0" -libc = "0.2.156" # TODO (YJDoc2) upgrade to latest -nc = "0.8.23" +libc = "0.2.159" # TODO (YJDoc2) upgrade to latest +nc = "0.9.3" diff --git a/tests/contest/runtimetest/src/tests.rs b/tests/contest/runtimetest/src/tests.rs index a52eb4e4c7..40f5ad29c9 100644 --- a/tests/contest/runtimetest/src/tests.rs +++ b/tests/contest/runtimetest/src/tests.rs @@ -1,5 +1,4 @@ use std::fs::{self, read_dir}; -use std::mem; use std::os::linux::fs::MetadataExt; use std::os::unix::fs::{FileTypeExt, PermissionsExt}; use std::path::Path; @@ -340,7 +339,6 @@ pub fn validate_scheduler_policy(spec: &Spec) { let proc = spec.process().as_ref().unwrap(); let sc = proc.scheduler().as_ref().unwrap(); println!("schedule is {:?}", spec); - let size = mem::size_of::().try_into().unwrap(); let mut get_sched_attr = nc::sched_attr_t { size: 0, sched_policy: 0, @@ -354,7 +352,7 @@ pub fn validate_scheduler_policy(spec: &Spec) { sched_util_max: 0, }; unsafe { - match nc::sched_getattr(0, &mut get_sched_attr, size, 0) { + match nc::sched_getattr(0, &mut get_sched_attr, 0) { Ok(_) => { println!("sched_getattr get success"); } diff --git a/tests/contest/test_framework/Cargo.toml b/tests/contest/test_framework/Cargo.toml index f5edd98298..de033fbbf6 100644 --- a/tests/contest/test_framework/Cargo.toml +++ b/tests/contest/test_framework/Cargo.toml @@ -6,5 +6,5 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -anyhow = "1.0.86" +anyhow = "1.0.89" crossbeam = "0.8.4"