Skip to content

Commit

Permalink
Merge #501
Browse files Browse the repository at this point in the history
501: x86_64-linux: lower glibc version requirement to 2.17 (compatible with centos 7) r=reitermarkus a=japaric

This PR lowers the glibc version requirement of the x86_64-linux-gnu binaries produced by cross to v2.17 (from v2.23). With this change x86_64-linux applications build with cross can run on LTS distributions like centos 7.

The implementation consists of changing the base image of the x86_64-gnu image from ubuntu:16.04 to centos:7
The existing scripts were adapted as follows:

- package management has been refactored into `install_packages` and `purge_packages` functions that work under ubuntu and centos
- added `if_centos` and `if_ubuntu` helper functions to handle steps specific to either distribution
- `qemu.sh`: centos doesn't provide libattr, libcap and libpixman as static libraries so those libraries have to be compiled when the script runs on centos
- `linux-image.sh`: this script is very ubuntu/debian specific as it relies on apt-get to build a minimal debian sysroot. Instead of modifying the script to make it work on centos, I opted for running the script in a fresh ubuntu:16.04 docker container and copying the output debian sysroot (`/qemu`) into the centos based image

Co-authored-by: Jorge Aparicio <jorge.aparicio@ferrous-systems.com>
Co-authored-by: Jorge Aparicio <jorge@japaric.io>
  • Loading branch information
3 people authored Dec 17, 2020
2 parents 0d818c6 + 9cf7ada commit a88e094
Show file tree
Hide file tree
Showing 55 changed files with 265 additions and 147 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1 @@
target
target
10 changes: 10 additions & 0 deletions ci/build_release.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,16 @@
set -eux

cargo install --path . --force

if [[ "${TARGET}" = "x86_64-unknown-linux-gnu" ]]; then
# for this particular target, `cross` command below will try to reuse the artifacts (e.g. build
# script binaries) generated by the previous `cargo` command. that will fail to run because the
# cross environment has glibc 2.17 and the CI env (ubuntu 20.04) produces binaries that depend
# on glibc 2.18+
# to avoid the issue discard the build script artifacts produced by the previous command
cargo clean
fi

cross build --target "${TARGET}" --release

rm -rf "${BUILD_BINARIESDIRECTORY}"
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.aarch64-linux-android
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM ubuntu:20.04

COPY common.sh /
COPY common.sh lib.sh /
RUN /common.sh

COPY cmake.sh /
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.aarch64-unknown-linux-gnu
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM ubuntu:16.04

COPY common.sh /
COPY common.sh lib.sh /
RUN /common.sh

COPY cmake.sh /
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.aarch64-unknown-linux-musl
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM ubuntu:18.04

COPY common.sh /
COPY common.sh lib.sh /
RUN /common.sh

COPY cmake.sh /
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.arm-linux-androideabi
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM ubuntu:20.04

COPY common.sh /
COPY common.sh lib.sh /
RUN /common.sh

COPY cmake.sh /
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.arm-unknown-linux-gnueabi
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM ubuntu:16.04

COPY common.sh /
COPY common.sh lib.sh /
RUN /common.sh

COPY cmake.sh /
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.arm-unknown-linux-gnueabihf
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM ubuntu:18.04

COPY common.sh /
COPY common.sh lib.sh /
RUN /common.sh

COPY cmake.sh /
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.arm-unknown-linux-musleabi
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM ubuntu:18.04

COPY common.sh /
COPY common.sh lib.sh /
RUN /common.sh

COPY cmake.sh /
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.arm-unknown-linux-musleabihf
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM ubuntu:18.04

COPY common.sh /
COPY common.sh lib.sh /
RUN /common.sh

COPY cmake.sh /
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.armv5te-unknown-linux-gnueabi
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM ubuntu:18.04

COPY common.sh /
COPY common.sh lib.sh /
RUN /common.sh

COPY cmake.sh /
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.armv5te-unknown-linux-musleabi
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM ubuntu:18.04

COPY common.sh /
COPY common.sh lib.sh /
RUN /common.sh

COPY cmake.sh /
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.armv7-linux-androideabi
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM ubuntu:20.04

COPY common.sh /
COPY common.sh lib.sh /
RUN /common.sh

COPY cmake.sh /
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.armv7-unknown-linux-gnueabihf
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM ubuntu:16.04

COPY common.sh /
COPY common.sh lib.sh /
RUN /common.sh

COPY cmake.sh /
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.armv7-unknown-linux-musleabihf
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM ubuntu:20.04

COPY common.sh /
COPY common.sh lib.sh /
RUN /common.sh

COPY cmake.sh /
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.asmjs-unknown-emscripten
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM ubuntu:16.04

COPY common.sh /
COPY common.sh lib.sh /
RUN /common.sh

COPY cmake.sh /
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.i586-unknown-linux-gnu
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM ubuntu:16.04

COPY common.sh /
COPY common.sh lib.sh /
RUN /common.sh

COPY cmake.sh /
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.i586-unknown-linux-musl
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM ubuntu:18.04

COPY common.sh /
COPY common.sh lib.sh /
RUN /common.sh

COPY cmake.sh /
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.i686-linux-android
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM ubuntu:20.04

COPY common.sh /
COPY common.sh lib.sh /
RUN /common.sh

COPY cmake.sh /
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.i686-pc-windows-gnu
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM ubuntu:18.04

COPY common.sh /
COPY common.sh lib.sh /
RUN /common.sh

COPY cmake.sh /
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.i686-unknown-freebsd
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM ubuntu:16.04

COPY common.sh /
COPY common.sh lib.sh /
RUN /common.sh

COPY xargo.sh /
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.i686-unknown-linux-gnu
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM ubuntu:16.04

COPY common.sh /
COPY common.sh lib.sh /
RUN /common.sh

COPY cmake.sh /
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.i686-unknown-linux-musl
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM ubuntu:18.04

COPY common.sh /
COPY common.sh lib.sh /
RUN /common.sh

COPY cmake.sh /
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.mips-unknown-linux-gnu
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM ubuntu:16.04

COPY common.sh /
COPY common.sh lib.sh /
RUN /common.sh

COPY cmake.sh /
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.mips-unknown-linux-musl
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM ubuntu:18.04

COPY common.sh /
COPY common.sh lib.sh /
RUN /common.sh

COPY cmake.sh /
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.mips64-unknown-linux-gnuabi64
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM ubuntu:16.04

COPY common.sh /
COPY common.sh lib.sh /
RUN /common.sh

COPY cmake.sh /
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.mips64el-unknown-linux-gnuabi64
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM ubuntu:16.04

COPY common.sh /
COPY common.sh lib.sh /
RUN /common.sh

COPY cmake.sh /
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.mipsel-unknown-linux-gnu
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM ubuntu:16.04

COPY common.sh /
COPY common.sh lib.sh /
RUN /common.sh

COPY cmake.sh /
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.mipsel-unknown-linux-musl
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM ubuntu:18.04

COPY common.sh /
COPY common.sh lib.sh /
RUN /common.sh

COPY cmake.sh /
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.powerpc-unknown-linux-gnu
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM ubuntu:16.04

COPY common.sh /
COPY common.sh lib.sh /
RUN /common.sh

COPY cmake.sh /
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.powerpc64-unknown-linux-gnu
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM ubuntu:16.04

COPY common.sh /
COPY common.sh lib.sh /
RUN /common.sh

COPY cmake.sh /
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.powerpc64le-unknown-linux-gnu
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM ubuntu:16.04

COPY common.sh /
COPY common.sh lib.sh /
RUN /common.sh

COPY cmake.sh /
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.riscv64gc-unknown-linux-gnu
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM ubuntu:18.04

COPY common.sh /
COPY common.sh lib.sh /
RUN /common.sh

# COPY cmake.sh /
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.s390x-unknown-linux-gnu
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM ubuntu:16.04

COPY common.sh /
COPY common.sh lib.sh /
RUN /common.sh

COPY cmake.sh /
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.sparc64-unknown-linux-gnu
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM ubuntu:16.04

COPY common.sh /
COPY common.sh lib.sh /
RUN /common.sh

COPY cmake.sh /
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.sparcv9-sun-solaris
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM ubuntu:16.04

COPY common.sh /
COPY common.sh lib.sh /
RUN /common.sh

COPY cmake.sh /
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.thumbv6m-none-eabi
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM ubuntu:16.04

COPY common.sh /
COPY common.sh lib.sh /
RUN /common.sh

COPY cmake.sh /
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.thumbv7em-none-eabi
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM ubuntu:16.04

COPY common.sh /
COPY common.sh lib.sh /
RUN /common.sh

COPY cmake.sh /
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.thumbv7em-none-eabihf
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM ubuntu:16.04

COPY common.sh /
COPY common.sh lib.sh /
RUN /common.sh

COPY cmake.sh /
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.thumbv7m-none-eabi
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM ubuntu:16.04

COPY common.sh /
COPY common.sh lib.sh /
RUN /common.sh

COPY cmake.sh /
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.wasm32-unknown-emscripten
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM ubuntu:16.04

COPY common.sh /
COPY common.sh lib.sh /
RUN /common.sh

COPY cmake.sh /
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.x86_64-linux-android
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM ubuntu:20.04

COPY common.sh /
COPY common.sh lib.sh /
RUN /common.sh

COPY cmake.sh /
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.x86_64-pc-windows-gnu
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM ubuntu:18.04

COPY common.sh /
COPY common.sh lib.sh /
RUN /common.sh

COPY cmake.sh /
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.x86_64-sun-solaris
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM ubuntu:16.04

COPY common.sh /
COPY common.sh lib.sh /
RUN /common.sh

COPY cmake.sh /
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.x86_64-unknown-freebsd
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM ubuntu:16.04

COPY common.sh /
COPY common.sh lib.sh /
RUN /common.sh

COPY xargo.sh /
Expand Down
10 changes: 7 additions & 3 deletions docker/Dockerfile.x86_64-unknown-linux-gnu
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
FROM ubuntu:16.04

COPY common.sh /
COPY linux-image.sh /
RUN /linux-image.sh x86_64

FROM centos:7

COPY common.sh lib.sh /
RUN /common.sh

COPY cmake.sh /
Expand All @@ -15,8 +20,7 @@ RUN /qemu.sh x86_64 softmmu
COPY dropbear.sh /
RUN /dropbear.sh

COPY linux-image.sh /
RUN /linux-image.sh x86_64
COPY --from=0 /qemu /qemu

COPY linux-runner /

Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.x86_64-unknown-linux-musl
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM ubuntu:20.04

COPY common.sh /
COPY common.sh lib.sh /
RUN /common.sh

COPY cmake.sh /
Expand Down
Loading

0 comments on commit a88e094

Please sign in to comment.