Upgrade to musl 1.1.24 in CI
This commit is contained in:
parent
779a08b91f
commit
b14e947de3
|
@ -2,16 +2,23 @@ FROM ubuntu:19.04
|
||||||
|
|
||||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||||
gcc libc6-dev qemu-user ca-certificates qemu-system-mips curl \
|
gcc libc6-dev qemu-user ca-certificates qemu-system-mips curl \
|
||||||
bzip2
|
xz-utils patch
|
||||||
|
|
||||||
RUN mkdir /toolchain
|
RUN mkdir /toolchain
|
||||||
|
|
||||||
# Note that this originally came from:
|
# Linux kernel version: 4.14.151
|
||||||
# https://downloads.openwrt.org/snapshots/trunk/ar71xx/generic/OpenWrt-SDK-ar71xx-generic_gcc-5.3.0_musl-1.1.15.Linux-x86_64.tar.bz2
|
# See build_dir/target-mips_24kc_musl/linux-ar71xx_generic/linux-4.14.151
|
||||||
RUN curl --retry 5 -L https://ci-mirrors.rust-lang.org/libc/OpenWrt-SDK-ar71xx-generic_gcc-5.3.0_musl-1.1.15.Linux-x86_64.tar.bz2 | \
|
# Musl version: 1.1.24
|
||||||
tar xjf - -C /toolchain --strip-components=1
|
# See staging_dir/toolchain-mips_24kc_gcc-7.4.0_musl/info.mk
|
||||||
|
RUN curl --retry 5 -L https://downloads.openwrt.org/releases/19.07.0-rc1/targets/ar71xx/generic/openwrt-sdk-19.07.0-rc1-ar71xx-generic_gcc-7.4.0_musl.Linux-x86_64.tar.xz | \
|
||||||
|
tar xJf - -C /toolchain --strip-components=1
|
||||||
|
|
||||||
ENV PATH=$PATH:/rust/bin:/toolchain/staging_dir/toolchain-mips_34kc_gcc-5.3.0_musl-1.1.15/bin \
|
# See https://lkml.org/lkml/2014/3/14/269
|
||||||
CC_mips_unknown_linux_musl=mips-openwrt-linux-gcc \
|
COPY sysinfo_guard.patch /toolchain
|
||||||
CARGO_TARGET_MIPS_UNKNOWN_LINUX_MUSL_LINKER=mips-openwrt-linux-gcc \
|
RUN patch /toolchain/staging_dir/toolchain-mips_24kc_gcc-7.4.0_musl/include/linux/kernel.h </toolchain/sysinfo_guard.patch
|
||||||
CARGO_TARGET_MIPS_UNKNOWN_LINUX_MUSL_RUNNER="qemu-mips -L /toolchain/staging_dir/toolchain-mips_34kc_gcc-5.3.0_musl-1.1.15"
|
|
||||||
|
ENV PATH=$PATH:/rust/bin:/toolchain/staging_dir/toolchain-mips_24kc_gcc-7.4.0_musl/bin \
|
||||||
|
STAGING_DIR=/toolchain/staging_dir \
|
||||||
|
CC_mips_unknown_linux_musl=mips-openwrt-linux-musl-gcc \
|
||||||
|
CARGO_TARGET_MIPS_UNKNOWN_LINUX_MUSL_LINKER=mips-openwrt-linux-musl-gcc \
|
||||||
|
CARGO_TARGET_MIPS_UNKNOWN_LINUX_MUSL_RUNNER="qemu-mips -L /toolchain/staging_dir/toolchain-mips_24kc_gcc-7.4.0_musl"
|
||||||
|
|
|
@ -1,17 +1,24 @@
|
||||||
FROM ubuntu:19.04
|
FROM ubuntu:19.04
|
||||||
|
|
||||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||||
gcc libc6-dev qemu-user ca-certificates qemu-system-mips curl \
|
gcc libc6-dev qemu-user ca-certificates qemu-system-mipsel curl \
|
||||||
bzip2
|
xz-utils patch
|
||||||
|
|
||||||
RUN mkdir /toolchain
|
RUN mkdir /toolchain
|
||||||
|
|
||||||
# Note that this originally came from:
|
# Linux kernel version: 4.14.151
|
||||||
# https://downloads.openwrt.org/snapshots/trunk/malta/generic/OpenWrt-Toolchain-malta-le_gcc-5.3.0_musl-1.1.15.Linux-x86_64.tar.bz2
|
# See build_dir/target-mipsel_mips32_musl/linux-brcm47xx_generic/linux-4.14.151
|
||||||
RUN curl --retry 5 -L https://ci-mirrors.rust-lang.org/libc/OpenWrt-Toolchain-malta-le_gcc-5.3.0_musl-1.1.15.Linux-x86_64.tar.bz2 | \
|
# Musl version: 1.1.24
|
||||||
tar xjf - -C /toolchain --strip-components=2
|
# See staging_dir/toolchain-mipsel_mips32_gcc-7.4.0_musl/info.mk
|
||||||
|
RUN curl --retry 5 -L https://downloads.openwrt.org/releases/19.07.0-rc1/targets/brcm47xx/generic/openwrt-sdk-19.07.0-rc1-brcm47xx-generic_gcc-7.4.0_musl.Linux-x86_64.tar.xz | \
|
||||||
|
tar xJf - -C /toolchain --strip-components=1
|
||||||
|
|
||||||
ENV PATH=$PATH:/rust/bin:/toolchain/bin \
|
# See https://lkml.org/lkml/2014/3/14/269
|
||||||
CC_mipsel_unknown_linux_musl=mipsel-openwrt-linux-gcc \
|
COPY sysinfo_guard.patch /toolchain
|
||||||
CARGO_TARGET_MIPSEL_UNKNOWN_LINUX_MUSL_LINKER=mipsel-openwrt-linux-gcc \
|
RUN patch /toolchain/staging_dir/toolchain-mipsel_mips32_gcc-7.4.0_musl/include/linux/kernel.h </toolchain/sysinfo_guard.patch
|
||||||
CARGO_TARGET_MIPSEL_UNKNOWN_LINUX_MUSL_RUNNER="qemu-mipsel -L /toolchain"
|
|
||||||
|
ENV PATH=$PATH:/rust/bin:/toolchain/staging_dir/toolchain-mipsel_mips32_gcc-7.4.0_musl/bin \
|
||||||
|
STAGING_DIR=/toolchain/staging_dir \
|
||||||
|
CC_mipsel_unknown_linux_musl=mipsel-openwrt-linux-musl-gcc \
|
||||||
|
CARGO_TARGET_MIPSEL_UNKNOWN_LINUX_MUSL_LINKER=mipsel-openwrt-linux-musl-gcc \
|
||||||
|
CARGO_TARGET_MIPSEL_UNKNOWN_LINUX_MUSL_RUNNER="qemu-mipsel -L /toolchain/staging_dir/toolchain-mipsel_mips32_gcc-7.4.0_musl"
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
set -ex
|
set -ex
|
||||||
|
|
||||||
MUSL_VERSION=1.1.22
|
MUSL_VERSION=1.1.24
|
||||||
MUSL="musl-${MUSL_VERSION}"
|
MUSL="musl-${MUSL_VERSION}"
|
||||||
|
|
||||||
# Download, configure, build, and install musl:
|
# Download, configure, build, and install musl:
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
@@ -2,7 +2,9 @@
|
||||||
|
#ifndef _LINUX_KERNEL_H
|
||||||
|
#define _LINUX_KERNEL_H
|
||||||
|
|
||||||
|
+#ifdef __GLIBC__
|
||||||
|
#include <linux/sysinfo.h>
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 'kernel.h' contains some often-used function prototypes etc
|
|
@ -2061,7 +2061,6 @@ fn test_linux(target: &str) {
|
||||||
let i686 = target.contains("i686");
|
let i686 = target.contains("i686");
|
||||||
let mips = target.contains("mips");
|
let mips = target.contains("mips");
|
||||||
let mips32 = mips && !target.contains("64");
|
let mips32 = mips && !target.contains("64");
|
||||||
let mips32_musl = mips32 && musl;
|
|
||||||
let mips64 = mips && target.contains("64");
|
let mips64 = mips && target.contains("64");
|
||||||
let ppc64 = target.contains("powerpc64");
|
let ppc64 = target.contains("powerpc64");
|
||||||
let s390x = target.contains("s390x");
|
let s390x = target.contains("s390x");
|
||||||
|
@ -2069,6 +2068,7 @@ fn test_linux(target: &str) {
|
||||||
let x32 = target.contains("x32");
|
let x32 = target.contains("x32");
|
||||||
let x86_32 = target.contains("i686");
|
let x86_32 = target.contains("i686");
|
||||||
let x86_64 = target.contains("x86_64");
|
let x86_64 = target.contains("x86_64");
|
||||||
|
let aarch64_musl = target.contains("aarch64") && musl;
|
||||||
|
|
||||||
let mut cfg = ctest_cfg();
|
let mut cfg = ctest_cfg();
|
||||||
cfg.define("_GNU_SOURCE", None);
|
cfg.define("_GNU_SOURCE", None);
|
||||||
|
@ -2132,8 +2132,7 @@ fn test_linux(target: &str) {
|
||||||
"sys/prctl.h",
|
"sys/prctl.h",
|
||||||
"sys/ptrace.h",
|
"sys/ptrace.h",
|
||||||
"sys/quota.h",
|
"sys/quota.h",
|
||||||
// FIXME: the mips-musl CI build jobs use ancient musl 1.0.15:
|
"sys/random.h",
|
||||||
[!mips32_musl]: "sys/random.h",
|
|
||||||
"sys/reboot.h",
|
"sys/reboot.h",
|
||||||
"sys/resource.h",
|
"sys/resource.h",
|
||||||
"sys/sem.h",
|
"sys/sem.h",
|
||||||
|
@ -2187,8 +2186,7 @@ fn test_linux(target: &str) {
|
||||||
"linux/fs.h",
|
"linux/fs.h",
|
||||||
"linux/futex.h",
|
"linux/futex.h",
|
||||||
"linux/genetlink.h",
|
"linux/genetlink.h",
|
||||||
// FIXME: musl version 1.0.15 used by mips build jobs is ancient
|
"linux/if.h",
|
||||||
[!mips32_musl]: "linux/if.h",
|
|
||||||
"linux/if_addr.h",
|
"linux/if_addr.h",
|
||||||
"linux/if_alg.h",
|
"linux/if_alg.h",
|
||||||
"linux/if_ether.h",
|
"linux/if_ether.h",
|
||||||
|
@ -2303,9 +2301,6 @@ fn test_linux(target: &str) {
|
||||||
// structs.
|
// structs.
|
||||||
"termios2" => true,
|
"termios2" => true,
|
||||||
|
|
||||||
// FIXME: musl version using by mips build jobs 1.0.15 is ancient:
|
|
||||||
"ifmap" | "ifreq" | "ifconf" if mips32_musl => true,
|
|
||||||
|
|
||||||
// FIXME: remove once Ubuntu 20.04 LTS is released, somewhere in 2020.
|
// FIXME: remove once Ubuntu 20.04 LTS is released, somewhere in 2020.
|
||||||
// ucontext_t added a new field as of glibc 2.28; our struct definition is
|
// ucontext_t added a new field as of glibc 2.28; our struct definition is
|
||||||
// conservative and omits the field, but that means the size doesn't match for newer
|
// conservative and omits the field, but that means the size doesn't match for newer
|
||||||
|
@ -2349,7 +2344,7 @@ fn test_linux(target: &str) {
|
||||||
// Require Linux kernel 5.1:
|
// Require Linux kernel 5.1:
|
||||||
"F_SEAL_FUTURE_WRITE" => true,
|
"F_SEAL_FUTURE_WRITE" => true,
|
||||||
|
|
||||||
// The musl version 1.0.22 used in CI does not
|
// The musl version 1.1.24 used in CI does not
|
||||||
// contain these glibc constants yet:
|
// contain these glibc constants yet:
|
||||||
| "RLIMIT_RTTIME" // should be in `resource.h`
|
| "RLIMIT_RTTIME" // should be in `resource.h`
|
||||||
| "TCP_COOKIE_TRANSACTIONS" // should be in the `netinet/tcp.h` header
|
| "TCP_COOKIE_TRANSACTIONS" // should be in the `netinet/tcp.h` header
|
||||||
|
@ -2371,10 +2366,6 @@ fn test_linux(target: &str) {
|
||||||
// - these constants are used by the glibc implementation.
|
// - these constants are used by the glibc implementation.
|
||||||
n if musl && n.contains("__SIZEOF_PTHREAD") => true,
|
n if musl && n.contains("__SIZEOF_PTHREAD") => true,
|
||||||
|
|
||||||
// FIXME: musl version 1.0.15 used by mips build jobs is ancient
|
|
||||||
t if mips32_musl && t.starts_with("IFF") => true,
|
|
||||||
"MFD_HUGETLB" | "AF_XDP" | "PF_XDP" if mips32_musl => true,
|
|
||||||
|
|
||||||
_ => false,
|
_ => false,
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -2458,7 +2449,17 @@ fn test_linux(target: &str) {
|
||||||
field == "_pad2" ||
|
field == "_pad2" ||
|
||||||
field == "ssi_syscall" ||
|
field == "ssi_syscall" ||
|
||||||
field == "ssi_call_addr" ||
|
field == "ssi_call_addr" ||
|
||||||
field == "ssi_arch"))
|
field == "ssi_arch")) ||
|
||||||
|
// FIXME: After musl 1.1.24, it have only one field `sched_priority`,
|
||||||
|
// while other fields become reserved.
|
||||||
|
(struct_ == "sched_param" && [
|
||||||
|
"sched_ss_low_priority",
|
||||||
|
"sched_ss_repl_period",
|
||||||
|
"sched_ss_init_budget",
|
||||||
|
"sched_ss_max_repl",
|
||||||
|
].contains(&field) && musl) ||
|
||||||
|
// FIXME: After musl 1.1.24, the type becomes `int` instead of `unsigned short`.
|
||||||
|
(struct_ == "ipc_perm" && field == "__seq" && aarch64_musl)
|
||||||
});
|
});
|
||||||
|
|
||||||
cfg.skip_roundtrip(move |s| match s {
|
cfg.skip_roundtrip(move |s| match s {
|
||||||
|
|
Loading…
Reference in New Issue