util: rust: update to rustix 1.0.7

Latest tagged release.  Fedora uses it, and for it to
work on Android we'll need to latest release so a pure
libc backend can be used.

Reviewed-by: Marcin Radomski <dextero@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35768>
This commit is contained in:
Gurchetan Singh 2025-06-20 13:59:19 -07:00 committed by Marge Bot
parent 5fbb3817ba
commit 8a2f43c9bd
4 changed files with 26 additions and 20 deletions

View file

@ -3,6 +3,7 @@
use std::io::IoSlice;
use std::io::IoSliceMut;
use std::mem::MaybeUninit;
use std::os::fd::AsFd;
use std::path::Path;
@ -10,8 +11,8 @@ use rustix::cmsg_space;
use rustix::fs::fcntl_setfl;
use rustix::fs::OFlags;
use rustix::net::accept;
use rustix::net::bind_unix;
use rustix::net::connect_unix;
use rustix::net::bind;
use rustix::net::connect;
use rustix::net::listen;
use rustix::net::recvmsg;
use rustix::net::sendmsg;
@ -58,7 +59,7 @@ impl Tube {
};
let unix_addr = SocketAddrUnix::new(path)?;
connect_unix(&socket, &unix_addr)?;
connect(&socket, &unix_addr)?;
Ok(Tube {
socket: socket.into(),
@ -66,7 +67,7 @@ impl Tube {
}
pub fn send(&self, opaque_data: &[u8], descriptors: &[OwnedDescriptor]) -> MesaResult<usize> {
let mut space = [0; cmsg_space!(ScmRights(MAX_IDENTIFIERS))];
let mut space = [MaybeUninit::<u8>::uninit(); cmsg_space!(ScmRights(MAX_IDENTIFIERS))];
let mut cmsg_buffer = SendAncillaryBuffer::new(&mut space);
let borrowed_fds: Vec<_> = descriptors.iter().map(AsFd::as_fd).collect();
@ -87,7 +88,7 @@ impl Tube {
pub fn receive(&self, opaque_data: &mut [u8]) -> MesaResult<(usize, Vec<OwnedDescriptor>)> {
let mut iovecs = [IoSliceMut::new(opaque_data)];
let mut space = [0; cmsg_space!(ScmRights(MAX_IDENTIFIERS))];
let mut space = [MaybeUninit::<u8>::uninit(); cmsg_space!(ScmRights(MAX_IDENTIFIERS))];
let mut cmsg_buffer = RecvAncillaryBuffer::new(&mut space);
let r = recvmsg(
&self.socket,
@ -134,7 +135,7 @@ impl Listener {
)?;
let unix_addr = SocketAddrUnix::new(path)?;
bind_unix(&socket, &unix_addr)?;
bind(&socket, &unix_addr)?;
listen(&socket, 128)?;
fcntl_setfl(&socket, OFlags::NONBLOCK)?;

View file

@ -5,9 +5,10 @@ use std::os::fd::OwnedFd;
use rustix::event::epoll;
use rustix::event::epoll::CreateFlags;
use rustix::event::epoll::Event;
use rustix::event::epoll::EventData;
use rustix::event::epoll::EventFlags;
use rustix::event::epoll::EventVec;
use rustix::event::Timespec;
use rustix::io::Errno;
use crate::MesaResult;
@ -37,20 +38,24 @@ impl WaitContext {
}
pub fn wait(&mut self, timeout: WaitTimeout) -> MesaResult<Vec<WaitEvent>> {
let mut event_vec = EventVec::with_capacity(WAIT_CONTEXT_MAX);
let epoll_timeout = match timeout {
WaitTimeout::Finite(duration) => duration.as_millis().try_into()?,
WaitTimeout::NoTimeout => -1,
let mut events_buffer: [epoll::Event; WAIT_CONTEXT_MAX] = [Event {
flags: EventFlags::IN,
data: EventData::new_u64(0),
}; WAIT_CONTEXT_MAX];
let epoll_timeout: Option<Timespec> = match timeout {
WaitTimeout::Finite(duration) => Some(duration.try_into()?),
WaitTimeout::NoTimeout => None, // Indefinite wait
};
loop {
match epoll::wait(&self.epoll_ctx, &mut event_vec, epoll_timeout) {
let num_events = loop {
match epoll::wait(&self.epoll_ctx, &mut events_buffer, epoll_timeout.as_ref()) {
Err(Errno::INTR) => (), // Continue loop on EINTR
result => break result?,
}
}
};
let events = event_vec
let events = events_buffer[..num_events]
.iter()
.map(|e| {
let flags: EventFlags = e.flags;

View file

@ -4,7 +4,7 @@
project(
'rustix',
'rust',
version : '0.38.31',
version : '1.0.7',
license : 'Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT',
)

View file

@ -1,6 +1,6 @@
[wrap-file]
directory = rustix-0.38.31
source_url = https://crates.io/api/v1/crates/rustix/0.38.31/download
source_filename = rustix-0.38.31.tar.gz
source_hash = 6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949
directory = rustix-1.0.7
source_url = https://crates.io/api/v1/crates/rustix/1.0.7/download
source_filename = rustix-1.0.7.tar.gz
source_hash = c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266
patch_directory = rustix