Re-enable android build jobs
This performs a `yes | ./sdk/tools/bin/sdkmanager --licenses` - the sole purpose of the `--licenses` flag is to allow the user to accept all licenses a priori, so that all other commands don't show any licenses.
For some reason, after all licenses have been accepted, the install step says that some licenses are still not accepted... so we need to accept those too... Why? I have no idea, and accepting licenses while installing still appears to make things hang a little, but it only does so for one non-accepted license, instead of for 5-6 like before, so now things do work.
Fix CMSG_DATA(3) and friends on BSD
PR #1098 added the CMSG_DATA(3) family of functions into libc. Because
they're defined as macros in C, they had to be rewritten as Rust
functions for libc. Also, they can't be tested in CI for the same
reason. But that PR erroneously used the same definitions in BSD as in
Linux.
This commit corrects the definitions for OSX, FreeBSD, DragonflyBSD,
OpenBSD, and NetBSD. I renamed a few variables and collapsed a few
macros in order to combine the definitions where possible.
Fixes#1210
PR #1098 added the CMSG_DATA(3) family of functions into libc. Because
they're defined as macros in C, they had to be rewritten as Rust
functions for libc. Also, they can't be tested in CI for the same
reason. But that PR erroneously used the same definitions in BSD as in
Linux.
This commit corrects the definitions for OSX, FreeBSD, DragonflyBSD,
OpenBSD, and NetBSD. I renamed a few variables and collapsed a few
macros in order to combine the definitions where possible.
Fixes#1210
Remove fexecve from netbsdlike as it's not implemented
Sometimes it causes confusion in downstream users of libc, for example it caused nix-rust/nix to fail to compile on OpenBSD 6.4 (see https://github.com/nix-rust/nix/pull/1000).
OpenBSD doesn't implement fexecve. The only reference of it that I can
find in the OpenBSD source is in the man pages of signal(3) and
sigaction(2) (where it's mentioned that it is not implemented).
OpenBSD official source code link:
https://cvsweb.openbsd.org/src/lib/libc/sys/sigaction.2?rev=1.75&content-type=text/x-cvsweb-markup
OpenBSD Github mirror:
https://github.com/openbsd/src/blob/master/lib/libc/sys/sigaction.2#L619
On NetBSD's unistd.h I see that it is under an ifdef. Calling it returns
78 / ENOSYS / Function not implemented.
NetBSD office source code link:
http://cvsweb.netbsd.org/bsdweb.cgi/src/include/unistd.h?rev=1.151&content-type=text/x-cvsweb-markup&only_with_tag=MAIN
NetBSD Github mirror:
https://github.com/NetBSD/src/blob/trunk/include/unistd.h#L319
Tests on OpenBSD 6.4 after the change:
```bash
user@openbsd64 ~/RUST/libc $ cargo build
Compiling libc v0.2.46 (/home/user/RUST/libc)
Finished dev [unoptimized + debuginfo] target(s) in 3.88s
user@openbsd64 ~/RUST/libc $ cargo build --release
Compiling libc v0.2.46 (/home/user/RUST/libc)
Finished release [optimized] target(s) in 2.21s
user@openbsd64 ~/RUST/libc/libc-test $ cargo test
Compiling proc-macro2 v0.4.24
Compiling unicode-xid v0.1.0
Compiling semver-parser v0.7.0
Compiling serde v1.0.84
Compiling libc v0.2.45
Compiling num-traits v0.2.6
Compiling ryu v0.2.7
Compiling cfg-if v0.1.6
Compiling itoa v0.4.3
Compiling term v0.4.6
Compiling bitflags v0.9.1
Compiling cc v1.0.28
Compiling libc v0.2.46 (/home/user/RUST/libc)
Compiling log v0.4.6
Compiling semver v0.9.0
Compiling log v0.3.9
Compiling rustc_version v0.2.3
Compiling rand v0.4.3
Compiling extprim v1.6.0
Compiling quote v0.6.10
Compiling syn v0.15.23
Compiling serde_derive v1.0.84
Compiling syntex_pos v0.59.1
Compiling serde_json v1.0.34
Compiling syntex_errors v0.59.1
Compiling syntex_syntax v0.59.1
Compiling ctest v0.2.8
Compiling libc-test v0.1.0 (/home/user/RUST/libc/libc-test)
Finished dev [unoptimized + debuginfo] target(s) in 2m 16s
Running /home/user/RUST/libc/target/debug/deps/linux_fcntl-08861a7cd96d1b94
RUNNING ALL TESTS
PASSED 0 tests
Running /home/user/RUST/libc/target/debug/deps/main-57e266d38aa58cce
RUNNING ALL TESTS
PASSED 7187 tests
```
I've tried running the tests on a NetBSD 8.0 box unfortunately there `libc-test` fails to compile even before this change.
NetBSD 8 adds new address family changing AF_MAX and new ifaddrs flags.
libc-test on NetBSD 8.0 fails without these changes.
ifa_addrflags was added to struct ifaddrs to support AF_CAN.
AF_MAX got bumped up one by AF_CAN.
RT_IFLIST format changed to support ifa_addrflags.
mincore has been removed from upcoming OpenBSD 6.5
remove test from CI on OpenBSD for "mincore" function.
it has been removed from upcoming 6.5:
- https://marc.info/?l=openbsd-cvs&m=154723400730318
- 54e4f6b9a1
I am only removing the test from CI, not touching exported function from Rust libc to avoid a breaking change.
Comment FIOSEEK* until they're in a NetBSD release
Accidentally included two constants that aren't in the current release of NetBSD.
While this doesn't impact libc-consumers, failing the testsuite on latest NetBSD isn't ideal.
I've commented them out; they can be reintroduced when the next NetBSD ships with them included.
Fix uname on FreeBSD
On FreeBSD, uname is an inline function. The uname that is present in
libc.so is for FreeBSD 1.0 compatibility. It expects a buffer of a
different size.
Fixes#1190
Reported-by: Alex Zepeda
On FreeBSD, uname is an inline function. The uname that is present in
libc.so is for FreeBSD 1.0 compatibility. It expects a buffer of a
different size.
Fixes#1190
Reported-by: Alex Zepeda
Add IP_RECVIF to BSD and IP_RECVDSTADDR to apple.
FreeBSD/OpenBSD do not support IP_PKTINFO for IPv4 but use IP_RECVIF for interface index and IP_RECVDSTADDR for destination address.
NetBSD and macOS also support IP_RECVIF and IP_RECVDSTADDR in addition to IP_PKTINFO.
(For IPv6, all use IPV6_PKTINFO)
Define missing F_RDLCK, F_WRLCK and F_UNLCK constants on linux-mips -and s390x
These are defined in the fcntl.h glibc header on MIPS and s390x
systems on Linux but missing in the libc crate, so add them as they
are required for the file locking API in rustc.
These are defined in the fcntl.h glibc header on s390x systems
on Linux but missing in the libc crate, so add them as they are
required for the file locking API in rustc.
These are defined in the fcntl.h glibc header on MIPS systems
on Linux but missing in the libc crate, so add them as they are
required for the file locking API in rustc.
make tm struct members public
This PR makes the members of `struct tm` public.
I see no reason why these fields should not be public fields. They are public in the other targets. I did a blame and it seems that they have been private since added a couple years ago.
53e0d387f8
add some socket functions and a SOCKET type for windows
This PR adds a few of the socket functions for windows. Some targets use the `stdcall` calling convention for these functions, so I put them in an `extern "system"` block ([see the nomicon](https://doc.rust-lang.org/nomicon/ffi.html#foreign-calling-conventions)).