Skip to content

Commit

Permalink
Upgrade nix to 0.28.0
Browse files Browse the repository at this point in the history
Not possible to make this change upstream yet, see
tokio-rs/tokio#6474.

Bug: 333427576
Test: TreeHugger
Change-Id: I950e3e7efc41e0e8e23db373ff918d11a4362359
  • Loading branch information
fkm3 committed Apr 10, 2024
1 parent dd5d06c commit ac496a9
Show file tree
Hide file tree
Showing 4 changed files with 124 additions and 24 deletions.
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,7 @@ optional = true
version = "0.2.149"

[target."cfg(unix)".dev-dependencies.nix]
version = "0.27.1"
version = "0.28.0"
features = [
"fs",
"socket",
Expand Down
2 changes: 1 addition & 1 deletion Cargo.toml.orig
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ signal-hook-registry = { version = "1.1.1", optional = true }

[target.'cfg(unix)'.dev-dependencies]
libc = { version = "0.2.149" }
nix = { version = "0.27.1", default-features = false, features = ["fs", "socket"] }
nix = { version = "0.28.0", default-features = false, features = ["fs", "socket"] }

[target.'cfg(windows)'.dependencies.windows-sys]
version = "0.48"
Expand Down
113 changes: 113 additions & 0 deletions patches/nix_0.28.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
diff --git a/Cargo.toml b/Cargo.toml
index 6728a901..5291a632 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -208,7 +208,7 @@ optional = true
version = "0.2.149"

[target."cfg(unix)".dev-dependencies.nix]
-version = "0.27.1"
+version = "0.28.0"
features = [
"fs",
"socket",
diff --git a/Cargo.toml.orig b/Cargo.toml.orig
index 069bb130..91fc4261 100644
--- a/Cargo.toml.orig
+++ b/Cargo.toml.orig
@@ -123,7 +123,7 @@ signal-hook-registry = { version = "1.1.1", optional = true }

[target.'cfg(unix)'.dev-dependencies]
libc = { version = "0.2.149" }
-nix = { version = "0.27.1", default-features = false, features = ["fs", "socket"] }
+nix = { version = "0.28.0", default-features = false, features = ["fs", "socket"] }

[target.'cfg(windows)'.dependencies.windows-sys]
version = "0.48"
diff --git a/tests/io_async_fd.rs b/tests/io_async_fd.rs
index 49b5a683..aca25462 100644
--- a/tests/io_async_fd.rs
+++ b/tests/io_async_fd.rs
@@ -1,7 +1,7 @@
#![warn(rust_2018_idioms)]
#![cfg(all(unix, feature = "full"))]

-use std::os::unix::io::{AsRawFd, IntoRawFd, RawFd};
+use std::os::unix::io::{AsRawFd, RawFd};
use std::sync::{
atomic::{AtomicBool, Ordering},
Arc,
@@ -13,7 +13,7 @@ use std::{
task::{Context, Waker},
};

-use nix::unistd::{close, read, write};
+use nix::unistd::{read, write};

use futures::poll;

@@ -57,18 +57,18 @@ impl TestWaker {

#[derive(Debug)]
struct FileDescriptor {
- fd: RawFd,
+ fd: std::os::fd::OwnedFd,
}

impl AsRawFd for FileDescriptor {
fn as_raw_fd(&self) -> RawFd {
- self.fd
+ self.fd.as_raw_fd()
}
}

impl Read for &FileDescriptor {
fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
- read(self.fd, buf).map_err(io::Error::from)
+ read(self.fd.as_raw_fd(), buf).map_err(io::Error::from)
}
}

@@ -80,7 +80,7 @@ impl Read for FileDescriptor {

impl Write for &FileDescriptor {
fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
- write(self.fd, buf).map_err(io::Error::from)
+ write(&self.fd, buf).map_err(io::Error::from)
}

fn flush(&mut self) -> io::Result<()> {
@@ -98,12 +98,6 @@ impl Write for FileDescriptor {
}
}

-impl Drop for FileDescriptor {
- fn drop(&mut self) {
- let _ = close(self.fd);
- }
-}
-
fn set_nonblocking(fd: RawFd) {
use nix::fcntl::{OFlag, F_GETFL, F_SETFL};

@@ -132,17 +126,10 @@ fn socketpair() -> (FileDescriptor, FileDescriptor) {
SockFlag::empty(),
)
.expect("socketpair");
- let fds = (
- FileDescriptor {
- fd: fd_a.into_raw_fd(),
- },
- FileDescriptor {
- fd: fd_b.into_raw_fd(),
- },
- );
+ let fds = (FileDescriptor { fd: fd_a }, FileDescriptor { fd: fd_b });

- set_nonblocking(fds.0.fd);
- set_nonblocking(fds.1.fd);
+ set_nonblocking(fds.0.fd.as_raw_fd());
+ set_nonblocking(fds.1.fd.as_raw_fd());

fds
}
31 changes: 9 additions & 22 deletions tests/io_async_fd.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#![warn(rust_2018_idioms)]
#![cfg(all(unix, feature = "full"))]

use std::os::unix::io::{AsRawFd, IntoRawFd, RawFd};
use std::os::unix::io::{AsRawFd, RawFd};
use std::sync::{
atomic::{AtomicBool, Ordering},
Arc,
Expand All @@ -13,7 +13,7 @@ use std::{
task::{Context, Waker},
};

use nix::unistd::{close, read, write};
use nix::unistd::{read, write};

use futures::poll;

Expand Down Expand Up @@ -57,18 +57,18 @@ impl TestWaker {

#[derive(Debug)]
struct FileDescriptor {
fd: RawFd,
fd: std::os::fd::OwnedFd,
}

impl AsRawFd for FileDescriptor {
fn as_raw_fd(&self) -> RawFd {
self.fd
self.fd.as_raw_fd()
}
}

impl Read for &FileDescriptor {
fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
read(self.fd, buf).map_err(io::Error::from)
read(self.fd.as_raw_fd(), buf).map_err(io::Error::from)
}
}

Expand All @@ -80,7 +80,7 @@ impl Read for FileDescriptor {

impl Write for &FileDescriptor {
fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
write(self.fd, buf).map_err(io::Error::from)
write(&self.fd, buf).map_err(io::Error::from)
}

fn flush(&mut self) -> io::Result<()> {
Expand All @@ -98,12 +98,6 @@ impl Write for FileDescriptor {
}
}

impl Drop for FileDescriptor {
fn drop(&mut self) {
let _ = close(self.fd);
}
}

fn set_nonblocking(fd: RawFd) {
use nix::fcntl::{OFlag, F_GETFL, F_SETFL};

Expand Down Expand Up @@ -132,17 +126,10 @@ fn socketpair() -> (FileDescriptor, FileDescriptor) {
SockFlag::empty(),
)
.expect("socketpair");
let fds = (
FileDescriptor {
fd: fd_a.into_raw_fd(),
},
FileDescriptor {
fd: fd_b.into_raw_fd(),
},
);
let fds = (FileDescriptor { fd: fd_a }, FileDescriptor { fd: fd_b });

set_nonblocking(fds.0.fd);
set_nonblocking(fds.1.fd);
set_nonblocking(fds.0.fd.as_raw_fd());
set_nonblocking(fds.1.fd.as_raw_fd());

fds
}
Expand Down

0 comments on commit ac496a9

Please sign in to comment.