Skip to content

Commit

Permalink
Auto merge of #2545 - JohnTitor:freebsd-14-ci, r=JohnTitor
Browse files Browse the repository at this point in the history
Add FreeBSD 14 CI

r? `@ghost`
  • Loading branch information
bors committed Nov 18, 2021
2 parents 83ffbee + 9f350fc commit aceeb60
Show file tree
Hide file tree
Showing 12 changed files with 791 additions and 114 deletions.
14 changes: 14 additions & 0 deletions .cirrus.yml
Expand Up @@ -40,3 +40,17 @@ task:
- . $HOME/.cargo/env
- LIBC_CI=1 sh ci/run.sh x86_64-unknown-freebsd
- sh ci/run.sh x86_64-unknown-freebsd

task:
name: nightly x86_64-unknown-freebsd-14
freebsd_instance:
image: freebsd-14-0-current-amd64-v20211111
setup_script:
- pkg install -y curl
- curl https://sh.rustup.rs -sSf --output rustup.sh
- sh rustup.sh -y --default-toolchain nightly --profile=minimal
- . $HOME/.cargo/env
test_script:
- . $HOME/.cargo/env
- LIBC_CI=1 sh ci/run.sh x86_64-unknown-freebsd
- sh ci/run.sh x86_64-unknown-freebsd
2 changes: 2 additions & 0 deletions build.rs
Expand Up @@ -31,6 +31,7 @@ fn main() {
Some(11) if libc_ci => println!("cargo:rustc-cfg=freebsd11"),
Some(12) if libc_ci => println!("cargo:rustc-cfg=freebsd12"),
Some(13) if libc_ci => println!("cargo:rustc-cfg=freebsd13"),
Some(14) if libc_ci => println!("cargo:rustc-cfg=freebsd14"),
Some(_) | None => println!("cargo:rustc-cfg=freebsd11"),
}

Expand Down Expand Up @@ -150,6 +151,7 @@ fn which_freebsd() -> Option<i32> {
s if s.starts_with("11") => Some(11),
s if s.starts_with("12") => Some(12),
s if s.starts_with("13") => Some(13),
s if s.starts_with("14") => Some(14),
_ => None,
}
}
2 changes: 2 additions & 0 deletions libc-test/build.rs
Expand Up @@ -1761,6 +1761,7 @@ fn test_freebsd(target: &str) {
Some(11) => cfg.cfg("freebsd11", None),
Some(12) => cfg.cfg("freebsd12", None),
Some(13) => cfg.cfg("freebsd13", None),
Some(14) => cfg.cfg("freebsd14", None),
_ => &mut cfg,
};

Expand Down Expand Up @@ -3381,6 +3382,7 @@ fn which_freebsd() -> Option<i32> {
s if s.starts_with("11") => Some(11),
s if s.starts_with("12") => Some(12),
s if s.starts_with("13") => Some(13),
s if s.starts_with("14") => Some(14),
_ => None,
}
}
Expand Down
2 changes: 2 additions & 0 deletions src/unix/bsd/freebsdlike/dragonfly/mod.rs
Expand Up @@ -1299,6 +1299,8 @@ pub const SF_XLINK: ::c_ulong = 0x01000000;
pub const UTIME_OMIT: c_long = -2;
pub const UTIME_NOW: c_long = -1;

pub const MINCORE_SUPER: ::c_int = 0x20;

const_fn! {
{const} fn _CMSG_ALIGN(n: usize) -> usize {
(n + 3) & !3
Expand Down
98 changes: 98 additions & 0 deletions src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs
Expand Up @@ -29,6 +29,103 @@ s! {
pub shm_dtime: ::time_t,
pub shm_ctime: ::time_t,
}

pub struct kinfo_proc {
pub ki_structsize: ::c_int,
pub ki_layout: ::c_int,
pub ki_args: *mut ::pargs,
// This is normally "struct proc".
pub ki_paddr: *mut ::c_void,
// This is normally "struct user".
pub ki_addr: *mut ::c_void,
// This is normally "struct vnode".
pub ki_tracep: *mut ::c_void,
// This is normally "struct vnode".
pub ki_textvp: *mut ::c_void,
// This is normally "struct filedesc".
pub ki_fd: *mut ::c_void,
// This is normally "struct vmspace".
pub ki_vmspace: *mut ::c_void,
pub ki_wchan: *mut ::c_void,
pub ki_pid: ::pid_t,
pub ki_ppid: ::pid_t,
pub ki_pgid: ::pid_t,
pub ki_tpgid: ::pid_t,
pub ki_sid: ::pid_t,
pub ki_tsid: ::pid_t,
pub ki_jobc: ::c_short,
pub ki_spare_short1: ::c_short,
pub ki_tdev: ::dev_t,
pub ki_siglist: ::sigset_t,
pub ki_sigmask: ::sigset_t,
pub ki_sigignore: ::sigset_t,
pub ki_sigcatch: ::sigset_t,
pub ki_uid: ::uid_t,
pub ki_ruid: ::uid_t,
pub ki_svuid: ::uid_t,
pub ki_rgid: ::gid_t,
pub ki_svgid: ::gid_t,
pub ki_ngroups: ::c_short,
pub ki_spare_short2: ::c_short,
pub ki_groups: [::gid_t; ::KI_NGROUPS],
pub ki_size: ::vm_size_t,
pub ki_rssize: ::segsz_t,
pub ki_swrss: ::segsz_t,
pub ki_tsize: ::segsz_t,
pub ki_dsize: ::segsz_t,
pub ki_ssize: ::segsz_t,
pub ki_xstat: ::u_short,
pub ki_acflag: ::u_short,
pub ki_pctcpu: ::fixpt_t,
pub ki_estcpu: ::u_int,
pub ki_slptime: ::u_int,
pub ki_swtime: ::u_int,
pub ki_cow: ::u_int,
pub ki_runtime: u64,
pub ki_start: ::timeval,
pub ki_childtime: ::timeval,
pub ki_flag: ::c_long,
pub ki_kiflag: ::c_long,
pub ki_traceflag: ::c_int,
pub ki_stat: ::c_char,
pub ki_nice: i8, // signed char
pub ki_lock: ::c_char,
pub ki_rqindex: ::c_char,
pub ki_oncpu_old: ::c_uchar,
pub ki_lastcpu_old: ::c_uchar,
pub ki_tdname: [::c_char; ::TDNAMLEN + 1],
pub ki_wmesg: [::c_char; ::WMESGLEN + 1],
pub ki_login: [::c_char; ::LOGNAMELEN + 1],
pub ki_lockname: [::c_char; ::LOCKNAMELEN + 1],
pub ki_comm: [::c_char; ::COMMLEN + 1],
pub ki_emul: [::c_char; ::KI_EMULNAMELEN + 1],
pub ki_loginclass: [::c_char; ::LOGINCLASSLEN + 1],
pub ki_moretdname: [::c_char; ::MAXCOMLEN - ::TDNAMLEN + 1],
pub ki_sparestrings: [[::c_char; 23]; 2], // little hack to allow PartialEq
pub ki_spareints: [::c_int; ::KI_NSPARE_INT],
pub ki_oncpu: ::c_int,
pub ki_lastcpu: ::c_int,
pub ki_tracer: ::c_int,
pub ki_flag2: ::c_int,
pub ki_fibnum: ::c_int,
pub ki_cr_flags: ::u_int,
pub ki_jid: ::c_int,
pub ki_numthreads: ::c_int,
pub ki_tid: ::lwpid_t,
pub ki_pri: ::priority,
pub ki_rusage: ::rusage,
pub ki_rusage_ch: ::rusage,
// This is normally "struct pcb".
pub ki_pcb: *mut ::c_void,
pub ki_kstack: *mut ::c_void,
pub ki_udata: *mut ::c_void,
// This is normally "struct thread".
pub ki_tdaddr: *mut ::c_void,
pub ki_spareptrs: [*mut ::c_void; ::KI_NSPARE_PTR],
pub ki_sparelongs: [::c_long; ::KI_NSPARE_LONG],
pub ki_sflag: ::c_long,
pub ki_tdflags: ::c_long,
}
}

s_no_extra_traits! {
Expand Down Expand Up @@ -192,6 +289,7 @@ cfg_if! {
pub const ELAST: ::c_int = 96;
pub const RAND_MAX: ::c_int = 0x7fff_fffd;
pub const KI_NSPARE_PTR: usize = 6;
pub const MINCORE_SUPER: ::c_int = 0x20;

extern "C" {
// Return type ::c_int was removed in FreeBSD 12
Expand Down
100 changes: 100 additions & 0 deletions src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs
Expand Up @@ -36,6 +36,104 @@ s! {
pub offset: ::u_long,
pub len: ::size_t,
}

pub struct kinfo_proc {
pub ki_structsize: ::c_int,
pub ki_layout: ::c_int,
pub ki_args: *mut ::pargs,
// This is normally "struct proc".
pub ki_paddr: *mut ::c_void,
// This is normally "struct user".
pub ki_addr: *mut ::c_void,
// This is normally "struct vnode".
pub ki_tracep: *mut ::c_void,
// This is normally "struct vnode".
pub ki_textvp: *mut ::c_void,
// This is normally "struct filedesc".
pub ki_fd: *mut ::c_void,
// This is normally "struct vmspace".
pub ki_vmspace: *mut ::c_void,
pub ki_wchan: *mut ::c_void,
pub ki_pid: ::pid_t,
pub ki_ppid: ::pid_t,
pub ki_pgid: ::pid_t,
pub ki_tpgid: ::pid_t,
pub ki_sid: ::pid_t,
pub ki_tsid: ::pid_t,
pub ki_jobc: ::c_short,
pub ki_spare_short1: ::c_short,
pub ki_tdev_freebsd11: u32,
pub ki_siglist: ::sigset_t,
pub ki_sigmask: ::sigset_t,
pub ki_sigignore: ::sigset_t,
pub ki_sigcatch: ::sigset_t,
pub ki_uid: ::uid_t,
pub ki_ruid: ::uid_t,
pub ki_svuid: ::uid_t,
pub ki_rgid: ::gid_t,
pub ki_svgid: ::gid_t,
pub ki_ngroups: ::c_short,
pub ki_spare_short2: ::c_short,
pub ki_groups: [::gid_t; ::KI_NGROUPS],
pub ki_size: ::vm_size_t,
pub ki_rssize: ::segsz_t,
pub ki_swrss: ::segsz_t,
pub ki_tsize: ::segsz_t,
pub ki_dsize: ::segsz_t,
pub ki_ssize: ::segsz_t,
pub ki_xstat: ::u_short,
pub ki_acflag: ::u_short,
pub ki_pctcpu: ::fixpt_t,
pub ki_estcpu: ::u_int,
pub ki_slptime: ::u_int,
pub ki_swtime: ::u_int,
pub ki_cow: ::u_int,
pub ki_runtime: u64,
pub ki_start: ::timeval,
pub ki_childtime: ::timeval,
pub ki_flag: ::c_long,
pub ki_kiflag: ::c_long,
pub ki_traceflag: ::c_int,
pub ki_stat: ::c_char,
pub ki_nice: i8, // signed char
pub ki_lock: ::c_char,
pub ki_rqindex: ::c_char,
pub ki_oncpu_old: ::c_uchar,
pub ki_lastcpu_old: ::c_uchar,
pub ki_tdname: [::c_char; ::TDNAMLEN + 1],
pub ki_wmesg: [::c_char; ::WMESGLEN + 1],
pub ki_login: [::c_char; ::LOGNAMELEN + 1],
pub ki_lockname: [::c_char; ::LOCKNAMELEN + 1],
pub ki_comm: [::c_char; ::COMMLEN + 1],
pub ki_emul: [::c_char; ::KI_EMULNAMELEN + 1],
pub ki_loginclass: [::c_char; ::LOGINCLASSLEN + 1],
pub ki_moretdname: [::c_char; ::MAXCOMLEN - ::TDNAMLEN + 1],
pub ki_sparestrings: [[::c_char; 23]; 2], // little hack to allow PartialEq
pub ki_spareints: [::c_int; ::KI_NSPARE_INT],
pub ki_tdev: ::dev_t,
pub ki_oncpu: ::c_int,
pub ki_lastcpu: ::c_int,
pub ki_tracer: ::c_int,
pub ki_flag2: ::c_int,
pub ki_fibnum: ::c_int,
pub ki_cr_flags: ::u_int,
pub ki_jid: ::c_int,
pub ki_numthreads: ::c_int,
pub ki_tid: ::lwpid_t,
pub ki_pri: ::priority,
pub ki_rusage: ::rusage,
pub ki_rusage_ch: ::rusage,
// This is normally "struct pcb".
pub ki_pcb: *mut ::c_void,
pub ki_kstack: *mut ::c_void,
pub ki_udata: *mut ::c_void,
// This is normally "struct thread".
pub ki_tdaddr: *mut ::c_void,
pub ki_spareptrs: [*mut ::c_void; ::KI_NSPARE_PTR],
pub ki_sparelongs: [::c_long; ::KI_NSPARE_LONG],
pub ki_sflag: ::c_long,
pub ki_tdflags: ::c_long,
}
}

s_no_extra_traits! {
Expand Down Expand Up @@ -207,6 +305,8 @@ pub const ELAST: ::c_int = 97;
pub const SPECNAMELEN: ::c_int = 63;
pub const KI_NSPARE_PTR: usize = 6;

pub const MINCORE_SUPER: ::c_int = 0x20;

extern "C" {
pub fn setgrent();
pub fn mprotect(addr: *mut ::c_void, len: ::size_t, prot: ::c_int) -> ::c_int;
Expand Down

0 comments on commit aceeb60

Please sign in to comment.