Skip to content
This repository has been archived by the owner on Jan 9, 2020. It is now read-only.

nix 0.9.0 #24

Open
aep opened this issue Jul 21, 2017 · 3 comments
Open

nix 0.9.0 #24

aep opened this issue Jul 21, 2017 · 3 comments

Comments

@aep
Copy link

aep commented Jul 21, 2017

compilation fails with the upcoming nix 0.9.0 (required for android)

error[E0432]: unresolved import `nix::c_int`
 --> src/signals.rs:2:5
  |
2 | use nix::c_int;
  |     ^^^^^^^^^^ no `c_int` in the root

error[E0432]: unresolved import `nix::poll::poll`
  --> src/main.rs:41:17
   |
41 | use nix::poll::{poll, PollFd, POLLIN, POLLHUP, POLLNVAL, EventFlags};
   |                 ^^^^ Could not find `poll` in `nix`

error[E0432]: unresolved import `nix::poll::PollFd`
  --> src/main.rs:41:23
   |
41 | use nix::poll::{poll, PollFd, POLLIN, POLLHUP, POLLNVAL, EventFlags};
   |                       ^^^^^^ Could not find `poll` in `nix`

error[E0432]: unresolved import `nix::poll::POLLIN`
  --> src/main.rs:41:31
   |
41 | use nix::poll::{poll, PollFd, POLLIN, POLLHUP, POLLNVAL, EventFlags};
   |                               ^^^^^^ Could not find `poll` in `nix`

error[E0432]: unresolved import `nix::poll::POLLHUP`
  --> src/main.rs:41:39
   |
41 | use nix::poll::{poll, PollFd, POLLIN, POLLHUP, POLLNVAL, EventFlags};
   |                                       ^^^^^^^ Could not find `poll` in `nix`

error[E0432]: unresolved import `nix::poll::POLLNVAL`
  --> src/main.rs:41:48
   |
41 | use nix::poll::{poll, PollFd, POLLIN, POLLHUP, POLLNVAL, EventFlags};
   |                                                ^^^^^^^^ Could not find `poll` in `nix`

error[E0432]: unresolved import `nix::poll::EventFlags`
  --> src/main.rs:41:58
   |
41 | use nix::poll::{poll, PollFd, POLLIN, POLLHUP, POLLNVAL, EventFlags};
   |                                                          ^^^^^^^^^^ Could not find `poll` in `nix`

error[E0425]: cannot find function `lsetxattr` in module `libc`
  --> src/nix_ext.rs:16:15
   |
16 |         libc::lsetxattr(
   |               ^^^^^^^^^ did you mean `tcsetattr`?
   |
help: possible candidate is found in another module, you can import it into scope
   | use nix_ext::lsetxattr;

error[E0425]: cannot find function `set_dumpable` in module `prctl`
   --> src/main.rs:906:28
    |
906 |     if let Err(e) = prctl::set_dumpable(false) {
    |                            ^^^^^^^^^^^^ not found in `prctl`

error[E0425]: cannot find function `set_child_subreaper` in module `prctl`
   --> src/main.rs:975:32
    |
975 |         if let Err(e) = prctl::set_child_subreaper(true) {
    |                                ^^^^^^^^^^^^^^^^^^^ not found in `prctl`

error[E0425]: cannot find function `set_no_new_privileges` in module `prctl`
    --> src/main.rs:1143:32
     |
1143 |         if let Err(e) = prctl::set_no_new_privileges(true) {
     |                                ^^^^^^^^^^^^^^^^^^^^^ not found in `prctl`

error[E0425]: cannot find function `set_keep_capabilities` in module `prctl`
    --> src/main.rs:1602:28
     |
1602 |     if let Err(e) = prctl::set_keep_capabilities(true) {
     |                            ^^^^^^^^^^^^^^^^^^^^^ not found in `prctl`

error[E0425]: cannot find function `set_keep_capabilities` in module `prctl`
    --> src/main.rs:1611:28
     |
1611 |     if let Err(e) = prctl::set_keep_capabilities(false) {
     |                            ^^^^^^^^^^^^^^^^^^^^^ not found in `prctl`

error[E0425]: cannot find function `set_name` in module `prctl`
    --> src/main.rs:1639:28
     |
1639 |     if let Err(e) = prctl::set_name(name) {
     |                            ^^^^^^^^ not found in `prctl`
     |
help: possible candidate is found in another module, you can import it into scope
     | use set_name;

error[E0599]: no method named `errno` found for type `nix::Error` in the current scope
   --> src/main.rs:637:22
    |
637 |                 if e.errno() != Errno::ENOENT {
    |                      ^^^^^

error[E0599]: no method named `errno` found for type `nix::Error` in the current scope
   --> src/main.rs:648:18
    |
648 |             if e.errno() != Errno::ENOENT {
    |                  ^^^^^

error[E0599]: no method named `errno` found for type `nix::Error` in the current scope
   --> src/main.rs:759:26
    |
759 |                     if n.errno() == Errno::ESRCH {
    |                          ^^^^^

error[E0308]: mismatched types
   --> src/main.rs:860:59
    |
860 |                     let (exit_code, sig) = wait_for_child(child)?;
    |                                                           ^^^^^ expected i32, found struct `nix::unistd::Pid`
    |
    = note: expected type `i32`
               found type `nix::unistd::Pid`

error[E0308]: mismatched types
   --> src/main.rs:885:49
    |
885 |             let (exit_code, _) = wait_for_child(child)?;
    |                                                 ^^^^^ expected i32, found struct `nix::unistd::Pid`
    |
    = note: expected type `i32`
               found type `nix::unistd::Pid`

error[E0308]: mismatched types
    --> src/main.rs:1250:45
     |
1250 |                 let (_, _) = wait_for_child(child)?;
     |                                             ^^^^^ expected i32, found struct `nix::unistd::Pid`
     |
     = note: expected type `i32`
                found type `nix::unistd::Pid`

error[E0599]: no method named `errno` found for type `nix::Error` in the current scope
    --> src/main.rs:1419:18
     |
1419 |             if e.errno() != Errno::ENOENT {
     |                  ^^^^^

error[E0277]: the trait bound `std::option::Option<nix::unistd::Pid>: std::convert::From<{integer}>` is not satisfied
    --> src/main.rs:1529:28
     |
1529 |         let result = match waitpid(-1, None) {
     |                            ^^^^^^^ the trait `std::convert::From<{integer}>` is not implemented for `std::option::Option<nix::unistd::Pid>`
     |
     = help: the following implementations were found:
               <std::option::Option<T> as std::convert::From<T>>
     = note: required because of the requirements on the impl of `std::convert::Into<std::option::Option<nix::unistd::Pid>>` for `{integer}`
     = note: required by `nix::sys::wait::waitpid`

error[E0599]: no method named `errno` found for type `nix::Error` in the current scope
    --> src/main.rs:1532:22
     |
1532 |                 if e.errno() == Errno::EINTR {
     |                      ^^^^^

error[E0308]: mismatched types
    --> src/main.rs:1542:42
     |
1542 |                 if child != -1 && pid != child {
     |                                          ^^^^^ expected struct `nix::unistd::Pid`, found i32
     |
     = note: expected type `nix::unistd::Pid`
                found type `i32`

error[E0308]: mismatched types
    --> src/main.rs:1549:42
     |
1549 |                 if child != -1 && pid != child {
     |                                          ^^^^^ expected struct `nix::unistd::Pid`, found i32
     |
     = note: expected type `nix::unistd::Pid`
                found type `i32`

error[E0308]: mismatched types
    --> src/main.rs:1579:41
     |
1579 |     let mut result = WaitStatus::Exited(0, 0);
     |                                         ^ expected struct `nix::unistd::Pid`, found integral variable
     |
     = note: expected type `nix::unistd::Pid`
                found type `{integer}`

error[E0277]: the trait bound `std::option::Option<nix::unistd::Pid>: std::convert::From<{integer}>` is not satisfied
    --> src/main.rs:1581:15
     |
1581 |         match waitpid(-1, Some(WNOHANG)) {
     |               ^^^^^^^ the trait `std::convert::From<{integer}>` is not implemented for `std::option::Option<nix::unistd::Pid>`
     |
     = help: the following implementations were found:
               <std::option::Option<T> as std::convert::From<T>>
     = note: required because of the requirements on the impl of `std::convert::Into<std::option::Option<nix::unistd::Pid>>` for `{integer}`
     = note: required by `nix::sys::wait::waitpid`

error[E0599]: no method named `errno` found for type `nix::Error` in the current scope
    --> src/main.rs:1583:22
     |
1583 |                 if e.errno() != Errno::ECHILD {
     |                      ^^^^^

error[E0308]: mismatched types
    --> src/main.rs:1605:15
     |
1605 |     setresgid(gid, gid, gid)?;
     |               ^^^ expected struct `nix::unistd::Gid`, found u32
     |
     = note: expected type `nix::unistd::Gid`
                found type `u32`

error[E0308]: mismatched types
    --> src/main.rs:1605:20
     |
1605 |     setresgid(gid, gid, gid)?;
     |                    ^^^ expected struct `nix::unistd::Gid`, found u32
     |
     = note: expected type `nix::unistd::Gid`
                found type `u32`

error[E0308]: mismatched types
    --> src/main.rs:1605:25
     |
1605 |     setresgid(gid, gid, gid)?;
     |                         ^^^ expected struct `nix::unistd::Gid`, found u32
     |
     = note: expected type `nix::unistd::Gid`
                found type `u32`

error[E0308]: mismatched types
    --> src/main.rs:1606:15
     |
1606 |     setresuid(uid, uid, uid)?;
     |               ^^^ expected struct `nix::unistd::Uid`, found u32
     |
     = note: expected type `nix::unistd::Uid`
                found type `u32`

error[E0308]: mismatched types
    --> src/main.rs:1606:20
     |
1606 |     setresuid(uid, uid, uid)?;
     |                    ^^^ expected struct `nix::unistd::Uid`, found u32
     |
     = note: expected type `nix::unistd::Uid`
                found type `u32`

error[E0308]: mismatched types
    --> src/main.rs:1606:25
     |
1606 |     setresuid(uid, uid, uid)?;
     |                         ^^^ expected struct `nix::unistd::Uid`, found u32
     |
     = note: expected type `nix::unistd::Uid`
                found type `u32`

error[E0599]: no method named `errno` found for type `nix::Error` in the current scope
   --> src/mounts.rs:343:14
    |
343 |         if e.errno() != Errno::EINVAL {
    |              ^^^^^

error[E0308]: mismatched types
   --> src/mounts.rs:443:34
    |
443 |         Mode::from_bits_truncate(dev.file_mode.unwrap_or(0)),
    |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^ expected u16, found u32

error[E0308]: mismatched types
   --> src/mounts.rs:444:9
    |
444 |         makedev(dev.major, dev.minor),
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected u32, found u64
    |
    = help: here are some functions which might fulfill your needs:
            - .count_ones()
            - .count_zeros()
            - .leading_zeros()
            - .trailing_zeros()

error[E0308]: mismatched types
   --> src/mounts.rs:446:27
    |
446 |     chown(&dev.path[1..], dev.uid, dev.gid)?;
    |                           ^^^^^^^ expected struct `nix::unistd::Uid`, found u32
    |
    = note: expected type `std::option::Option<nix::unistd::Uid>`
               found type `std::option::Option<u32>`
    = help: here are some functions which might fulfill your needs:
            - .take()
            - .unwrap()
            - .unwrap_or_default()

error[E0308]: mismatched types
   --> src/mounts.rs:446:36
    |
446 |     chown(&dev.path[1..], dev.uid, dev.gid)?;
    |                                    ^^^^^^^ expected struct `nix::unistd::Gid`, found u32
    |
    = note: expected type `std::option::Option<nix::unistd::Gid>`
               found type `std::option::Option<u32>`
    = help: here are some functions which might fulfill your needs:
            - .take()
            - .unwrap()
            - .unwrap_or_default()

error[E0599]: no method named `errno` found for type `nix::Error` in the current scope
   --> src/mounts.rs:482:14
    |
482 |         if e.errno() != Errno::ENOENT && e.errno() != Errno::ENOTDIR {
    |              ^^^^^

error[E0599]: no method named `errno` found for type `nix::Error` in the current scope
   --> src/mounts.rs:482:44
    |
482 |         if e.errno() != Errno::ENOENT && e.errno() != Errno::ENOTDIR {
    |                                            ^^^^^

error[E0599]: no method named `errno` found for type `nix::Error` in the current scope
   --> src/mounts.rs:505:14
    |
505 |         if e.errno() != Errno::ENOENT {
    |              ^^^^^

error[E0308]: mismatched types
  --> src/signals.rs:24:22
   |
24 |         let _ = kill(CHILD_PID, Signal::from_c_int(signo).unwrap());
   |                      ^^^^^^^^^ expected struct `nix::unistd::Pid`, found i32
   |
   = note: expected type `nix::unistd::Pid`
              found type `i32`

error[E0308]: mismatched types
  --> src/signals.rs:56:10
   |
56 |     kill(0, signal)?;
   |          ^ expected struct `nix::unistd::Pid`, found integral variable
   |
   = note: expected type `nix::unistd::Pid`
              found type `{integer}`

error[E0308]: mismatched types
   --> src/signals.rs:102:10
    |
102 |     kill(pid, signal)?;
    |          ^^^ expected struct `nix::unistd::Pid`, found i32
    |
    = note: expected type `nix::unistd::Pid`
               found type `i32`

error[E0308]: mismatched types
  --> src/nix_ext.rs:46:19
   |
46 |         rlim_cur: soft,
   |                   ^^^^ expected u32, found u64
   |
   = help: here are some functions which might fulfill your needs:
           - .count_ones()
           - .count_zeros()
           - .leading_zeros()
           - .trailing_zeros()

error[E0308]: mismatched types
  --> src/nix_ext.rs:47:19
   |
47 |         rlim_max: hard,
   |                   ^^^^ expected u32, found u64
   |
   = help: here are some functions which might fulfill your needs:
           - .count_ones()
           - .count_zeros()
           - .leading_zeros()
           - .trailing_zeros()


@Susurrus
Copy link

This is indeed a breaking release. Please see the changelog for things that have been changed. They should all be documented there so that upgrading should be easy.

@bachp
Copy link

bachp commented Jun 5, 2018

I think this was fixed with #26

@drahnr
Copy link
Contributor

drahnr commented Aug 15, 2018

See #39 for an update to nix 0.11.0

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants