Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Manual update dependencies in rust-vmm crates - and provide releases #136

Open
andreeaflorescu opened this issue Nov 10, 2022 · 12 comments
Open

Comments

@andreeaflorescu
Copy link
Member

This update is needed because otherwise there will be crates using vmm-sys-util 0.10.0 and others using 0.11.0. The reason behind this is the (wrong) way in which we specify dependencies in a few of the rust-vmm crates. Specifically, some crates will just pick up the latest available version of a crate even if it introduces breaking changes (i.e. picking up 0.11.0 because the dep is specified as >= 0.9.0). We're progressively fixing this by always having dependencies specified with caret, but this work was not yet completed for a few crates. As such, we need to:

  • fix the way we specify dependencies for the crates (use caret instead of >=)
  • provide a new release
    The order in which we provide releases matters because of the dependency between crates.

For example, we first need to update kvm-bindings, publish it, and then update kvm-ioctls by specifying a new version for both vmm-sys-util and kvm-bindings.

This issue is tracking this one time effort. We're not tracking here a saner way to do the updates, as this is going to happen afterwards. Tracking issues: #135 & TBD (for releases).

@roypat
Copy link
Collaborator

roypat commented Nov 10, 2022

I went through all of the rust-vmm crates and created the following table that keeps track of all their dependencies and whether they currently rely on (a) non-caret requirements and (b) outdated versions

Crate Version Uses caret deps? rust-vmm deps at fixed versions (outdated are bold) rust-vmm deps at non-caret versions
kvm-ioctl 0.11.0 yes vmm-sys-util@0.10.0 kvm-bindings@0.5.0 (MERGED)
vmm-sys-util 0.11.0 yes
kvm-bindings 0.5.0 yes vmm-sys-util@0.10.0 (MERGED)
event-manager 0.2.1 no vmm-sys-util>=0.8.0
vfio-ioctls 0.1.0 no kvm-bindings~0, kvm-ioctls~0, vm-memory>=0.6, vfio-bindings~0, vmm-sys-util>=0.8.0 (NO PR OPEN)
vfio-bindings 0.3.1 no vmm-sys-util>=0.8.0 (NO PR OPEN)
vhost-device-gpio 0.1.0 no virtio-queue@0.6. vhost-user-backend@0.7.0 vmm-sys-util=0.10.0. vm-memory>=0.8, virtio-binding>=0.1 (NO PR OPEN)
vhost-device-i2c 0.1.0 no vhost-user-backend@0.7.0, vhost@0.5, virtio-queue@0.6 vm-memory>=0.8, vmm-sys-util=0.10.0 (NO PR OPEN)
vhost-device-rng 0.1.0 no vhost@0.5, vhost-user-backend@0.7.0, virtio-queue@0.6 vm-memory>=0.8, vmm-sys-util=0.10.0, virtio-bindings>=0.1 (NO PR OPEN)
vhost-device-vsock 0.1.0 no vhost@0.5, vhost-user-backend@0.7.0*,* virtio-queue@0.6*, viortio-vsock@0.1.0* vm-memory>=0.8, vmm-sys-util=0.10.0, virtio-bindings>=0.1 (NO PR OPEN)
mshv-ioctls 0.1.1 no vmm-sys-util>=0.8.0 (NO PR)
mshv-bindings 0.1.1 no vmm-sys-util>=0.2.1 (NO PR)
virtio-blk 0.1.0 no vmm-sys-util@0.10.0, vm-memory@0.9.0, virtio-device, virtio-bindings(MERGED)
virtio-console 0.1.0 no virtio-queue@0.6.0, virtio-bindings@0.1.0, vm-memory@0.9.0(MERGED)
virtio-vsock 0.1.0 no virtio-queue@0.6.0, virtio-bindings@0.1.0, vm-memory@0.9.0(MERGED)
virtio-queue 0.6.1 no vm-memory@0.9.0, vmm-sys-util@0.10.0, virtio-bindings@0.1.0(MERGED)
virtio-queue-ser 0.3.0 no virtio-memory@0.9.0, virtio-queue@0.6.0(MERGED)
virtio-device 0.1.0 no vm-memory@0.9.0, virtio-queue@0.6.0, virtio-bindings (MERGED)
virtio-bindings 0.1.0 no
vm-fdt 0.2.0 yes
vm-device 0.1.0 yes
vm-allocator 0.1.0 no
vm-memory 0.9.0 yes vmm-sys-util@0.10.0 (MERGED)
vhost 0.5.0 yes vmm-sys-util@0.10.0 (No PR), vm-memory@0.9.0
vhost-user-backend 0.7.0 yes vmm-sys-util@0.10.0 (No PR), vm-memory@0.9.0, vhost@0.5, virtio-queue@0.6, virtio-bindings@0.1
vm-superio 0.6.0 no vmm-sys-util>=0.7.0 (MERGED)
vm-superio-ser 0.2.0 no vm-superio@=0.6.0 vmm-sys-util>=0.7.0 (MERGED)
linux-loader 0.7.0 yes vm-memory@0.9.0 (MERGED)

@roypat
Copy link
Collaborator

roypat commented Nov 10, 2022

Going through the dependency graph, updates need to be done in the following order (all crates on the same level can be updated in parallel):

  1. vm-superio, vm-memory and kvm-bindings, event-manager
  2. vhost, vm-superio-ser, virtio-queue, virtio-blk, kvm-ioctl
  3. vm-vhost-user-backend, the various vhost-*, vfio-* and mshv-* crates

@andreeaflorescu
Copy link
Member Author

andreeaflorescu commented Nov 10, 2022

Based on @roypat's analysis, we need to go through 3 stages (corresponding to the number list above).

Stage 1

vm-superio - DONE

Changes Needed:

Blocks: vm-superio-ser

event-manager - DONE

Changes Needed:

Blocks: N/A

vm-memory - DONE

Changes Needed:

Blocks:

  • vhost* crates
  • vfio-* crates
  • virtio-* crates

kvm-bindings - DONE

Changes Needed:

  • release - @roypat
  • publish release - @aghecenco

roypat added a commit to roypat/vm-superio that referenced this issue Nov 10, 2022
See rust-vmm/community#136

Signed-off-by: Patrick Roy <roypat@amazon.co.uk>
roypat added a commit to roypat/vm-superio that referenced this issue Nov 10, 2022
See rust-vmm/community#136

Signed-off-by: Patrick Roy <roypat@amazon.co.uk>
roypat added a commit to roypat/vm-superio that referenced this issue Nov 10, 2022
See rust-vmm/community#136

Signed-off-by: Patrick Roy <roypat@amazon.co.uk>
roypat added a commit to roypat/vm-superio that referenced this issue Nov 10, 2022
See rust-vmm/community#136

Signed-off-by: Patrick Roy <roypat@amazon.co.uk>
@roypat
Copy link
Collaborator

roypat commented Nov 10, 2022

At this point, all stage 1 crates have PRs open fixing this issues. Next step is their crates.io release, so we can start working on the Step 2 crates.

@alxiord
Copy link
Member

alxiord commented Nov 10, 2022

kvm-bindings v0.7.0 is released ✅
event-manager CI is repeatedly failing with a strange permissions issue on a local dir (seemingly unrelated to these releases, more likely a Buildkite thing and one more problem to fix)

andreeaflorescu pushed a commit to rust-vmm/vm-superio that referenced this issue Nov 11, 2022
See rust-vmm/community#136

Signed-off-by: Patrick Roy <roypat@amazon.co.uk>
roypat added a commit to roypat/vm-superio that referenced this issue Nov 11, 2022
See rust-vmm/community#136

Signed-off-by: Patrick Roy <roypat@amazon.co.uk>
@studychao
Copy link

kvm-bindings v0.7.0 is released ✅ event-manager CI is repeatedly failing with a strange permissions issue on a local dir (seemingly unrelated to these releases, more likely a Buildkite thing and one more problem to fix)

Is that v0.6.0 or a newer version of kvm-bindings is planned to release?

@andreeaflorescu
Copy link
Member Author

kvm-bindings v0.7.0 is released ✅ event-manager CI is repeatedly failing with a strange permissions issue on a local dir (seemingly unrelated to these releases, more likely a Buildkite thing and one more problem to fix)

Is that v0.6.0 or a newer version of kvm-bindings is planned to release?

It is 0.6.0.

roypat added a commit to roypat/vm-superio that referenced this issue Nov 11, 2022
See rust-vmm/community#136

Signed-off-by: Patrick Roy <roypat@amazon.co.uk>
roypat added a commit to roypat/vm-superio that referenced this issue Nov 11, 2022
See rust-vmm/community#136

Signed-off-by: Patrick Roy <roypat@amazon.co.uk>
roypat added a commit to roypat/vm-superio that referenced this issue Nov 11, 2022
See rust-vmm/community#136

Signed-off-by: Patrick Roy <roypat@amazon.co.uk>
roypat added a commit to roypat/vm-superio that referenced this issue Nov 11, 2022
See rust-vmm/community#136

Signed-off-by: Patrick Roy <roypat@amazon.co.uk>
roypat added a commit to roypat/kvm-ioctls that referenced this issue Nov 11, 2022
See rust-vmm/community#136

Signed-off-by: Patrick Roy <roypat@amazon.co.uk>
roypat added a commit to roypat/kvm-ioctls that referenced this issue Nov 11, 2022
See rust-vmm/community#136

Signed-off-by: Patrick Roy <roypat@amazon.co.uk>
roypat added a commit to roypat/kvm-ioctls that referenced this issue Nov 11, 2022
vmm-sys-util 0.10.0 -> 0.11.0
kvm-bindings 0.5.0 -> 0.6.0

See rust-vmm/community#136

Signed-off-by: Patrick Roy <roypat@amazon.co.uk>
roypat added a commit to roypat/kvm-ioctls that referenced this issue Nov 11, 2022
See rust-vmm/community#136

Signed-off-by: Patrick Roy <roypat@amazon.co.uk>
andreeaflorescu pushed a commit to rust-vmm/vm-superio that referenced this issue Nov 11, 2022
See rust-vmm/community#136

Signed-off-by: Patrick Roy <roypat@amazon.co.uk>
andreeaflorescu pushed a commit to rust-vmm/vm-superio that referenced this issue Nov 11, 2022
See rust-vmm/community#136

Signed-off-by: Patrick Roy <roypat@amazon.co.uk>
roypat added a commit to roypat/kvm-ioctls that referenced this issue Nov 11, 2022
See rust-vmm/community#136

Signed-off-by: Patrick Roy <roypat@amazon.co.uk>
andreeaflorescu pushed a commit to rust-vmm/kvm that referenced this issue Nov 11, 2022
vmm-sys-util 0.10.0 -> 0.11.0
kvm-bindings 0.5.0 -> 0.6.0

See rust-vmm/community#136

Signed-off-by: Patrick Roy <roypat@amazon.co.uk>
andreeaflorescu pushed a commit to rust-vmm/kvm that referenced this issue Nov 11, 2022
See rust-vmm/community#136

Signed-off-by: Patrick Roy <roypat@amazon.co.uk>
@andreeaflorescu
Copy link
Member Author

andreeaflorescu commented Nov 11, 2022

Stage 2

vm-superio-ser - DONE

kvm-ioctls - DONE

virtio-queue - DONE

linux-loader - DONE

  • update dependencies - @roypat
  • update rust-vmm-ci - @roypat
  • release - @roypat
  • publish release - @aghecenco

roypat added a commit to roypat/vm-virtio that referenced this issue Nov 14, 2022
See rust-vmm/community#136

Signed-off-by: Patrick Roy <roypat@amazon.co.uk>
roypat added a commit to roypat/vm-virtio that referenced this issue Nov 14, 2022
See rust-vmm/community#136

Signed-off-by: Patrick Roy <roypat@amazon.co.uk>
andreeaflorescu pushed a commit to rust-vmm/vm-virtio that referenced this issue Nov 14, 2022
See rust-vmm/community#136

Signed-off-by: Patrick Roy <roypat@amazon.co.uk>
andreeaflorescu pushed a commit to rust-vmm/vm-virtio that referenced this issue Nov 14, 2022
See rust-vmm/community#136

Signed-off-by: Patrick Roy <roypat@amazon.co.uk>
andreeaflorescu pushed a commit to rust-vmm/vm-virtio that referenced this issue Nov 14, 2022
See rust-vmm/community#136

Signed-off-by: Patrick Roy <roypat@amazon.co.uk>
roypat added a commit to roypat/linux-loader that referenced this issue Nov 14, 2022
See rust-vmm/community#136

Signed-off-by: Patrick Roy <roypat@amazon.co.uk>
andreeaflorescu pushed a commit to rust-vmm/linux-loader that referenced this issue Nov 14, 2022
See rust-vmm/community#136

Signed-off-by: Patrick Roy <roypat@amazon.co.uk>
roypat added a commit to roypat/linux-loader that referenced this issue Nov 14, 2022
See rust-vmm/community#136

Signed-off-by: Patrick Roy <roypat@amazon.co.uk>
@wllenyj
Copy link

wllenyj commented Nov 14, 2022

image

roypat added a commit to roypat/micro-http that referenced this issue Nov 15, 2022
vmm-sys-util 0.9.0 -> 0.11.0

See rust-vmm/community#136

Signed-off-by: Patrick Roy <roypat@amazon.co.uk>
rbradford added a commit to rbradford/vhost that referenced this issue Nov 16, 2022
Update dependencies to use recommended versions and version syntax.

See: rust-vmm/community#136

Signed-off-by: Rob Bradford <robert.bradford@intel.com>
rbradford added a commit to rbradford/vhost that referenced this issue Nov 16, 2022
Update dependencies to use recommended versions and version syntax.

See: rust-vmm/community#136

Signed-off-by: Rob Bradford <robert.bradford@intel.com>
slp pushed a commit to rust-vmm/vhost that referenced this issue Nov 17, 2022
Update dependencies to use recommended versions and version syntax.

See: rust-vmm/community#136

Signed-off-by: Rob Bradford <robert.bradford@intel.com>
dianpopa pushed a commit to firecracker-microvm/micro-http that referenced this issue Nov 22, 2022
vmm-sys-util 0.9.0 -> 0.11.0

See rust-vmm/community#136

Signed-off-by: Patrick Roy <roypat@amazon.co.uk>
@rbradford
Copy link

I know that a release is missing for (at least) vhost-user-backend.

@rbradford
Copy link

I know that a release is missing for (at least) vhost-user-backend.

This is all done now. Thanks to @stefano-garzarella. vfio-ioctls & vfio-bindings remain along with some of the virtio backend devices.

@andreeaflorescu
Copy link
Member Author

I know that a release is missing for (at least) vhost-user-backend.

This is all done now. Thanks to @stefano-garzarella. vfio-ioctls & vfio-bindings remain along with some of the virtio backend devices.

@jiangliu @liuw @sameo @sboeuf can one of you take care of the two crates as well? What is important is properly setting the crate requirements to caret (if they have any that are not properly specified), and provide a release.

rbradford added a commit to rbradford/vfio that referenced this issue Nov 30, 2022
And also bump the crate versions as well as the dependency versions.

See: rust-vmm/community#136

Signed-off-by: Rob Bradford <robert.bradford@intel.com>
rbradford added a commit to rbradford/vfio that referenced this issue Nov 30, 2022
And also bump the crate versions as well as the dependency versions.

See: rust-vmm/community#136

Signed-off-by: Rob Bradford <robert.bradford@intel.com>
rbradford added a commit to rbradford/vfio that referenced this issue Dec 6, 2022
And also bump the crate versions as well as the dependency versions.

See: rust-vmm/community#136

Signed-off-by: Rob Bradford <robert.bradford@intel.com>
rbradford added a commit to rust-vmm/vfio that referenced this issue Dec 6, 2022
And also bump the crate versions as well as the dependency versions.

See: rust-vmm/community#136

Signed-off-by: Rob Bradford <robert.bradford@intel.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants