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

build fails on Solaris #1877

Open
psumbera opened this issue May 22, 2024 · 4 comments
Open

build fails on Solaris #1877

psumbera opened this issue May 22, 2024 · 4 comments

Comments

@psumbera
Copy link
Contributor

   Compiling quinn-udp v0.5.1 (/home/psumbera/quinn/quinn-udp)
error[E0425]: cannot find value `IPV6_DONTFRAG` in crate `libc`
  --> quinn-udp/src/unix.rs:27:42
   |
27 | const IPV6_DONTFRAG: libc::c_int = libc::IPV6_DONTFRAG;
   |                                          ^^^^^^^^^^^^^ not found in `libc`

error[E0412]: cannot find type `in6_pktinfo` in crate `libc`
  --> quinn-udp/src/unix.rs:65:64
   |
65 |                 unsafe { libc::CMSG_SPACE(mem::size_of::<libc::in6_pktinfo>() as _) as usize };
   |                                                                ^^^^^^^^^^^ not found in `libc`

error[E0425]: cannot find value `IP_RECVTOS` in crate `libc`
  --> quinn-udp/src/unix.rs:87:79
   |
87 |             if let Err(err) = set_socket_option(&*io, libc::IPPROTO_IP, libc::IP_RECVTOS, OPTION_ON)
   |                                                                               ^^^^^^^^^^ not found in `libc`

error[E0425]: cannot find value `IPV6_RECVTCLASS` in crate `libc`
   --> quinn-udp/src/unix.rs:156:63
    |
156 |             set_socket_option(&*io, libc::IPPROTO_IPV6, libc::IPV6_RECVTCLASS, OPTION_ON)?;
    |                                                               ^^^^^^^^^^^^^^^ not found in `libc`

error[E0412]: cannot find type `mmsghdr` in crate `libc`
   --> quinn-udp/src/unix.rs:358:50
    |
358 |       let mut hdrs = unsafe { mem::zeroed::<[libc::mmsghdr; BATCH_SIZE]>() };
    |                                                    ^^^^^^^ help: a struct with a similar name exists: `cmsghdr`
    |
   ::: /builds/psumbera/HOME/.cargo/registry/src/index.crates.io-6f17d22bba15001f/libc-0.2.155/src/unix/solarish/mod.rs:76:1
    |
76  | / s! {
77  | |     pub struct in_addr {
78  | |         pub s_addr: ::in_addr_t,
79  | |     }
...   |
475 | |     }
476 | | }
    | |_- similarly named struct `cmsghdr` defined here

error[E0412]: cannot find type `mmsghdr` in crate `libc`
   --> quinn-udp/src/unix.rs:423:24
    |
423 |       msgvec: *mut libc::mmsghdr,
    |                          ^^^^^^^ help: a struct with a similar name exists: `cmsghdr`
    |
   ::: /builds/psumbera/HOME/.cargo/registry/src/index.crates.io-6f17d22bba15001f/libc-0.2.155/src/unix/solarish/mod.rs:76:1
    |
76  | / s! {
77  | |     pub struct in_addr {
78  | |         pub s_addr: ::in_addr_t,
79  | |     }
...   |
475 | |     }
476 | | }
    | |_- similarly named struct `cmsghdr` defined here

error[E0425]: cannot find function `syscall` in crate `libc`
   --> quinn-udp/src/unix.rs:432:19
    |
432 |             libc::syscall(libc::SYS_recvmmsg, sockfd, msgvec, vlen, flags, timeout) as libc::c_int;
    |                   ^^^^^^^ not found in `libc`

error[E0425]: cannot find value `SYS_recvmmsg` in crate `libc`
   --> quinn-udp/src/unix.rs:432:33
    |
432 |             libc::syscall(libc::SYS_recvmmsg, sockfd, msgvec, vlen, flags, timeout) as libc::c_int;
    |                                 ^^^^^^^^^^^^ not found in `libc`

error[E0412]: cannot find type `mmsghdr` in crate `libc`
   --> quinn-udp/src/unix.rs:464:24
    |
464 |       msgvec: *mut libc::mmsghdr,
    |                          ^^^^^^^ help: a struct with a similar name exists: `cmsghdr`
    |
   ::: /builds/psumbera/HOME/.cargo/registry/src/index.crates.io-6f17d22bba15001f/libc-0.2.155/src/unix/solarish/mod.rs:76:1
    |
76  | / s! {
77  | |     pub struct in_addr {
78  | |         pub s_addr: ::in_addr_t,
79  | |     }
...   |
475 | |     }
476 | | }
    | |_- similarly named struct `cmsghdr` defined here

error[E0425]: cannot find value `IP_TOS` in crate `libc`
    --> quinn-udp/src/unix.rs:519:50
     |
519  |             encoder.push(libc::IPPROTO_IP, libc::IP_TOS, ecn as IpTosTy);
     |                                                  ^^^^^^ help: a constant with a similar name exists: `IP_TTL`
     |
    ::: /builds/psumbera/HOME/.cargo/registry/src/index.crates.io-6f17d22bba15001f/libc-0.2.155/src/unix/solarish/mod.rs:1777:1
     |
1777 | pub const IP_TTL: ::c_int = 4;
     | ------------------------- similarly named constant `IP_TTL` defined here

error[E0425]: cannot find value `IPV6_TCLASS` in crate `libc`
   --> quinn-udp/src/unix.rs:522:48
    |
522 |         encoder.push(libc::IPPROTO_IPV6, libc::IPV6_TCLASS, ecn);
    |                                                ^^^^^^^^^^^ not found in `libc`

error[E0422]: cannot find struct, variant or union type `in6_pktinfo` in crate `libc`
   --> quinn-udp/src/unix.rs:559:37
    |
559 |                 let pktinfo = libc::in6_pktinfo {
    |                                     ^^^^^^^^^^^ not found in `libc`

error[E0425]: cannot find value `IPV6_PKTINFO` in crate `libc`
    --> quinn-udp/src/unix.rs:565:56
     |
565  |                 encoder.push(libc::IPPROTO_IPV6, libc::IPV6_PKTINFO, pktinfo);
     |                                                        ^^^^^^^^^^^^ help: a constant with a similar name exists: `IPV6_RECVPKTINFO`
     |
    ::: /builds/psumbera/HOME/.cargo/registry/src/index.crates.io-6f17d22bba15001f/libc-0.2.155/src/unix/solarish/mod.rs:1247:1
     |
1247 | pub const IPV6_RECVPKTINFO: ::c_int = 0x12;
     | ----------------------------------- similarly named constant `IPV6_RECVPKTINFO` defined here

error[E0531]: cannot find unit struct, unit variant or constant `IP_TOS` in crate `libc`
    --> quinn-udp/src/unix.rs:602:38
     |
602  |             (libc::IPPROTO_IP, libc::IP_TOS) => unsafe {
     |                                      ^^^^^^ help: a constant with a similar name exists: `IP_TTL`
     |
    ::: /builds/psumbera/HOME/.cargo/registry/src/index.crates.io-6f17d22bba15001f/libc-0.2.155/src/unix/solarish/mod.rs:1777:1
     |
1777 | pub const IP_TTL: ::c_int = 4;
     | ------------------------- similarly named constant `IP_TTL` defined here

error[E0531]: cannot find unit struct, unit variant or constant `IP_RECVTOS` in crate `libc`
   --> quinn-udp/src/unix.rs:607:38
    |
607 |             (libc::IPPROTO_IP, libc::IP_RECVTOS) => unsafe {
    |                                      ^^^^^^^^^^ not found in `libc`

error[E0531]: cannot find unit struct, unit variant or constant `IPV6_TCLASS` in crate `libc`
   --> quinn-udp/src/unix.rs:610:40
    |
610 |             (libc::IPPROTO_IPV6, libc::IPV6_TCLASS) => unsafe {
    |                                        ^^^^^^^^^^^ not found in `libc`

error[E0531]: cannot find unit struct, unit variant or constant `IPV6_PKTINFO` in crate `libc`
    --> quinn-udp/src/unix.rs:639:40
     |
639  |             (libc::IPPROTO_IPV6, libc::IPV6_PKTINFO) => {
     |                                        ^^^^^^^^^^^^ help: a constant with a similar name exists: `IPV6_RECVPKTINFO`
     |
    ::: /builds/psumbera/HOME/.cargo/registry/src/index.crates.io-6f17d22bba15001f/libc-0.2.155/src/unix/solarish/mod.rs:1247:1
     |
1247 | pub const IPV6_RECVPKTINFO: ::c_int = 0x12;
     | ----------------------------------- similarly named constant `IPV6_RECVPKTINFO` defined here

error[E0412]: cannot find type `in6_pktinfo` in crate `libc`
   --> quinn-udp/src/unix.rs:640:61
    |
640 |                 let pktinfo = unsafe { cmsg::decode::<libc::in6_pktinfo, libc::cmsghdr>(cmsg) };
    |                                                             ^^^^^^^^^^^ not found in `libc`

error[E0699]: cannot call a method on a raw pointer with an unknown pointee type
   --> quinn-udp/src/unix.rs:472:50
    |
472 |     let n = libc::recvmsg(sockfd, &mut (*msgvec).msg_hdr, flags);
    |                                                  ^^^^^^^

error[E0699]: cannot call a method on a raw pointer with an unknown pointee type
   --> quinn-udp/src/unix.rs:478:19
    |
478 |         (*msgvec).msg_len = n as _;
    |                   ^^^^^^^
@djc
Copy link
Member

djc commented May 22, 2024

Thanks for the report! Would you be able to submit a PR addressing these issues in quinn-udp? #1863 might serve as an example of another recent PR adding platform support. It would be great if there would be a way to test that this doesn't regress in CI, if you know of a way doing that.

@psumbera
Copy link
Contributor Author

psumbera commented Jul 4, 2024

I will do that. But before that following need to be resolved.
rust-lang/libc#3717

@Ralith
Copy link
Collaborator

Ralith commented Jul 4, 2024

It's okay to vendor those definitions in quinn-udp as a stopgap until libc updates.

@mxinden
Copy link
Contributor

mxinden commented Jul 8, 2024

For the sake of completeness, corresponding discussion on Mozilla's Bugzilla: https://bugzilla.mozilla.org/show_bug.cgi?id=1901295#c9

psumbera added a commit to psumbera/quinn that referenced this issue Jul 8, 2024
psumbera added a commit to psumbera/quinn that referenced this issue Jul 8, 2024
psumbera added a commit to psumbera/quinn that referenced this issue Jul 11, 2024
psumbera added a commit to psumbera/quinn that referenced this issue Jul 11, 2024
psumbera added a commit to psumbera/quinn that referenced this issue Aug 20, 2024
github-merge-queue bot pushed a commit that referenced this issue Aug 20, 2024
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

4 participants