diff --git a/.gitignore b/.gitignore index eb5a316cb..1de565933 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -target +target \ No newline at end of file diff --git a/ci/build_release.sh b/ci/build_release.sh index 3e9bfdcb0..858248d93 100755 --- a/ci/build_release.sh +++ b/ci/build_release.sh @@ -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}" diff --git a/docker/Dockerfile.aarch64-linux-android b/docker/Dockerfile.aarch64-linux-android index 2d5765ce1..935716025 100644 --- a/docker/Dockerfile.aarch64-linux-android +++ b/docker/Dockerfile.aarch64-linux-android @@ -1,6 +1,6 @@ FROM ubuntu:20.04 -COPY common.sh / +COPY common.sh lib.sh / RUN /common.sh COPY cmake.sh / diff --git a/docker/Dockerfile.aarch64-unknown-linux-gnu b/docker/Dockerfile.aarch64-unknown-linux-gnu index 27c1f170d..675d4bcd8 100644 --- a/docker/Dockerfile.aarch64-unknown-linux-gnu +++ b/docker/Dockerfile.aarch64-unknown-linux-gnu @@ -1,6 +1,6 @@ FROM ubuntu:16.04 -COPY common.sh / +COPY common.sh lib.sh / RUN /common.sh COPY cmake.sh / diff --git a/docker/Dockerfile.aarch64-unknown-linux-musl b/docker/Dockerfile.aarch64-unknown-linux-musl index 255471268..19c0023fd 100644 --- a/docker/Dockerfile.aarch64-unknown-linux-musl +++ b/docker/Dockerfile.aarch64-unknown-linux-musl @@ -1,6 +1,6 @@ FROM ubuntu:18.04 -COPY common.sh / +COPY common.sh lib.sh / RUN /common.sh COPY cmake.sh / diff --git a/docker/Dockerfile.arm-linux-androideabi b/docker/Dockerfile.arm-linux-androideabi index 7220d560d..bc8ed9032 100644 --- a/docker/Dockerfile.arm-linux-androideabi +++ b/docker/Dockerfile.arm-linux-androideabi @@ -1,6 +1,6 @@ FROM ubuntu:20.04 -COPY common.sh / +COPY common.sh lib.sh / RUN /common.sh COPY cmake.sh / diff --git a/docker/Dockerfile.arm-unknown-linux-gnueabi b/docker/Dockerfile.arm-unknown-linux-gnueabi index c57bf6fc1..95a794471 100644 --- a/docker/Dockerfile.arm-unknown-linux-gnueabi +++ b/docker/Dockerfile.arm-unknown-linux-gnueabi @@ -1,6 +1,6 @@ FROM ubuntu:16.04 -COPY common.sh / +COPY common.sh lib.sh / RUN /common.sh COPY cmake.sh / diff --git a/docker/Dockerfile.arm-unknown-linux-gnueabihf b/docker/Dockerfile.arm-unknown-linux-gnueabihf index 6aa7f2aeb..0edd07e56 100644 --- a/docker/Dockerfile.arm-unknown-linux-gnueabihf +++ b/docker/Dockerfile.arm-unknown-linux-gnueabihf @@ -1,6 +1,6 @@ FROM ubuntu:18.04 -COPY common.sh / +COPY common.sh lib.sh / RUN /common.sh COPY cmake.sh / diff --git a/docker/Dockerfile.arm-unknown-linux-musleabi b/docker/Dockerfile.arm-unknown-linux-musleabi index ada77066a..ce0fda9b5 100644 --- a/docker/Dockerfile.arm-unknown-linux-musleabi +++ b/docker/Dockerfile.arm-unknown-linux-musleabi @@ -1,6 +1,6 @@ FROM ubuntu:18.04 -COPY common.sh / +COPY common.sh lib.sh / RUN /common.sh COPY cmake.sh / diff --git a/docker/Dockerfile.arm-unknown-linux-musleabihf b/docker/Dockerfile.arm-unknown-linux-musleabihf index 32ac20a60..bf7ed657e 100644 --- a/docker/Dockerfile.arm-unknown-linux-musleabihf +++ b/docker/Dockerfile.arm-unknown-linux-musleabihf @@ -1,6 +1,6 @@ FROM ubuntu:18.04 -COPY common.sh / +COPY common.sh lib.sh / RUN /common.sh COPY cmake.sh / diff --git a/docker/Dockerfile.armv5te-unknown-linux-gnueabi b/docker/Dockerfile.armv5te-unknown-linux-gnueabi index db629e17e..c7f08cf83 100644 --- a/docker/Dockerfile.armv5te-unknown-linux-gnueabi +++ b/docker/Dockerfile.armv5te-unknown-linux-gnueabi @@ -1,6 +1,6 @@ FROM ubuntu:18.04 -COPY common.sh / +COPY common.sh lib.sh / RUN /common.sh COPY cmake.sh / diff --git a/docker/Dockerfile.armv5te-unknown-linux-musleabi b/docker/Dockerfile.armv5te-unknown-linux-musleabi index e63546610..4de543e23 100644 --- a/docker/Dockerfile.armv5te-unknown-linux-musleabi +++ b/docker/Dockerfile.armv5te-unknown-linux-musleabi @@ -1,6 +1,6 @@ FROM ubuntu:18.04 -COPY common.sh / +COPY common.sh lib.sh / RUN /common.sh COPY cmake.sh / diff --git a/docker/Dockerfile.armv7-linux-androideabi b/docker/Dockerfile.armv7-linux-androideabi index 7215344a1..79a900da4 100644 --- a/docker/Dockerfile.armv7-linux-androideabi +++ b/docker/Dockerfile.armv7-linux-androideabi @@ -1,6 +1,6 @@ FROM ubuntu:20.04 -COPY common.sh / +COPY common.sh lib.sh / RUN /common.sh COPY cmake.sh / diff --git a/docker/Dockerfile.armv7-unknown-linux-gnueabihf b/docker/Dockerfile.armv7-unknown-linux-gnueabihf index e641a552d..ba2c1842b 100644 --- a/docker/Dockerfile.armv7-unknown-linux-gnueabihf +++ b/docker/Dockerfile.armv7-unknown-linux-gnueabihf @@ -1,6 +1,6 @@ FROM ubuntu:16.04 -COPY common.sh / +COPY common.sh lib.sh / RUN /common.sh COPY cmake.sh / diff --git a/docker/Dockerfile.armv7-unknown-linux-musleabihf b/docker/Dockerfile.armv7-unknown-linux-musleabihf index 137860e54..155496156 100644 --- a/docker/Dockerfile.armv7-unknown-linux-musleabihf +++ b/docker/Dockerfile.armv7-unknown-linux-musleabihf @@ -1,6 +1,6 @@ FROM ubuntu:20.04 -COPY common.sh / +COPY common.sh lib.sh / RUN /common.sh COPY cmake.sh / diff --git a/docker/Dockerfile.asmjs-unknown-emscripten b/docker/Dockerfile.asmjs-unknown-emscripten index 7a93aa3b7..179954a3f 100644 --- a/docker/Dockerfile.asmjs-unknown-emscripten +++ b/docker/Dockerfile.asmjs-unknown-emscripten @@ -1,6 +1,6 @@ FROM ubuntu:16.04 -COPY common.sh / +COPY common.sh lib.sh / RUN /common.sh COPY cmake.sh / diff --git a/docker/Dockerfile.i586-unknown-linux-gnu b/docker/Dockerfile.i586-unknown-linux-gnu index 6a00d83e2..b91ac04f8 100644 --- a/docker/Dockerfile.i586-unknown-linux-gnu +++ b/docker/Dockerfile.i586-unknown-linux-gnu @@ -1,6 +1,6 @@ FROM ubuntu:16.04 -COPY common.sh / +COPY common.sh lib.sh / RUN /common.sh COPY cmake.sh / diff --git a/docker/Dockerfile.i586-unknown-linux-musl b/docker/Dockerfile.i586-unknown-linux-musl index 204ba3782..6950f3ef3 100644 --- a/docker/Dockerfile.i586-unknown-linux-musl +++ b/docker/Dockerfile.i586-unknown-linux-musl @@ -1,6 +1,6 @@ FROM ubuntu:18.04 -COPY common.sh / +COPY common.sh lib.sh / RUN /common.sh COPY cmake.sh / diff --git a/docker/Dockerfile.i686-linux-android b/docker/Dockerfile.i686-linux-android index a9fdb85d7..be8f68e6c 100644 --- a/docker/Dockerfile.i686-linux-android +++ b/docker/Dockerfile.i686-linux-android @@ -1,6 +1,6 @@ FROM ubuntu:20.04 -COPY common.sh / +COPY common.sh lib.sh / RUN /common.sh COPY cmake.sh / diff --git a/docker/Dockerfile.i686-pc-windows-gnu b/docker/Dockerfile.i686-pc-windows-gnu index 39d49613c..4a0dd3c8f 100644 --- a/docker/Dockerfile.i686-pc-windows-gnu +++ b/docker/Dockerfile.i686-pc-windows-gnu @@ -1,6 +1,6 @@ FROM ubuntu:18.04 -COPY common.sh / +COPY common.sh lib.sh / RUN /common.sh COPY cmake.sh / diff --git a/docker/Dockerfile.i686-unknown-freebsd b/docker/Dockerfile.i686-unknown-freebsd index 43abb86b0..382714ec8 100644 --- a/docker/Dockerfile.i686-unknown-freebsd +++ b/docker/Dockerfile.i686-unknown-freebsd @@ -1,6 +1,6 @@ FROM ubuntu:16.04 -COPY common.sh / +COPY common.sh lib.sh / RUN /common.sh COPY xargo.sh / diff --git a/docker/Dockerfile.i686-unknown-linux-gnu b/docker/Dockerfile.i686-unknown-linux-gnu index f76911341..1a7b98f0c 100644 --- a/docker/Dockerfile.i686-unknown-linux-gnu +++ b/docker/Dockerfile.i686-unknown-linux-gnu @@ -1,6 +1,6 @@ FROM ubuntu:16.04 -COPY common.sh / +COPY common.sh lib.sh / RUN /common.sh COPY cmake.sh / diff --git a/docker/Dockerfile.i686-unknown-linux-musl b/docker/Dockerfile.i686-unknown-linux-musl index d0d2c57e6..5d771bb49 100644 --- a/docker/Dockerfile.i686-unknown-linux-musl +++ b/docker/Dockerfile.i686-unknown-linux-musl @@ -1,6 +1,6 @@ FROM ubuntu:18.04 -COPY common.sh / +COPY common.sh lib.sh / RUN /common.sh COPY cmake.sh / diff --git a/docker/Dockerfile.mips-unknown-linux-gnu b/docker/Dockerfile.mips-unknown-linux-gnu index 04ae0b024..990642101 100644 --- a/docker/Dockerfile.mips-unknown-linux-gnu +++ b/docker/Dockerfile.mips-unknown-linux-gnu @@ -1,6 +1,6 @@ FROM ubuntu:16.04 -COPY common.sh / +COPY common.sh lib.sh / RUN /common.sh COPY cmake.sh / diff --git a/docker/Dockerfile.mips-unknown-linux-musl b/docker/Dockerfile.mips-unknown-linux-musl index bc23ce1ce..4d04fadcd 100644 --- a/docker/Dockerfile.mips-unknown-linux-musl +++ b/docker/Dockerfile.mips-unknown-linux-musl @@ -1,6 +1,6 @@ FROM ubuntu:18.04 -COPY common.sh / +COPY common.sh lib.sh / RUN /common.sh COPY cmake.sh / diff --git a/docker/Dockerfile.mips64-unknown-linux-gnuabi64 b/docker/Dockerfile.mips64-unknown-linux-gnuabi64 index d595b4e6b..e51089d73 100644 --- a/docker/Dockerfile.mips64-unknown-linux-gnuabi64 +++ b/docker/Dockerfile.mips64-unknown-linux-gnuabi64 @@ -1,6 +1,6 @@ FROM ubuntu:16.04 -COPY common.sh / +COPY common.sh lib.sh / RUN /common.sh COPY cmake.sh / diff --git a/docker/Dockerfile.mips64el-unknown-linux-gnuabi64 b/docker/Dockerfile.mips64el-unknown-linux-gnuabi64 index f6e60e67d..720ca2947 100644 --- a/docker/Dockerfile.mips64el-unknown-linux-gnuabi64 +++ b/docker/Dockerfile.mips64el-unknown-linux-gnuabi64 @@ -1,6 +1,6 @@ FROM ubuntu:16.04 -COPY common.sh / +COPY common.sh lib.sh / RUN /common.sh COPY cmake.sh / diff --git a/docker/Dockerfile.mipsel-unknown-linux-gnu b/docker/Dockerfile.mipsel-unknown-linux-gnu index e3efef738..c846da675 100644 --- a/docker/Dockerfile.mipsel-unknown-linux-gnu +++ b/docker/Dockerfile.mipsel-unknown-linux-gnu @@ -1,6 +1,6 @@ FROM ubuntu:16.04 -COPY common.sh / +COPY common.sh lib.sh / RUN /common.sh COPY cmake.sh / diff --git a/docker/Dockerfile.mipsel-unknown-linux-musl b/docker/Dockerfile.mipsel-unknown-linux-musl index b0cabb17c..01f406809 100644 --- a/docker/Dockerfile.mipsel-unknown-linux-musl +++ b/docker/Dockerfile.mipsel-unknown-linux-musl @@ -1,6 +1,6 @@ FROM ubuntu:18.04 -COPY common.sh / +COPY common.sh lib.sh / RUN /common.sh COPY cmake.sh / diff --git a/docker/Dockerfile.powerpc-unknown-linux-gnu b/docker/Dockerfile.powerpc-unknown-linux-gnu index 984d0119f..b56c45f78 100644 --- a/docker/Dockerfile.powerpc-unknown-linux-gnu +++ b/docker/Dockerfile.powerpc-unknown-linux-gnu @@ -1,6 +1,6 @@ FROM ubuntu:16.04 -COPY common.sh / +COPY common.sh lib.sh / RUN /common.sh COPY cmake.sh / diff --git a/docker/Dockerfile.powerpc64-unknown-linux-gnu b/docker/Dockerfile.powerpc64-unknown-linux-gnu index f6c9da519..70c845cb0 100644 --- a/docker/Dockerfile.powerpc64-unknown-linux-gnu +++ b/docker/Dockerfile.powerpc64-unknown-linux-gnu @@ -1,6 +1,6 @@ FROM ubuntu:16.04 -COPY common.sh / +COPY common.sh lib.sh / RUN /common.sh COPY cmake.sh / diff --git a/docker/Dockerfile.powerpc64le-unknown-linux-gnu b/docker/Dockerfile.powerpc64le-unknown-linux-gnu index 50e73063b..e6aa1634c 100644 --- a/docker/Dockerfile.powerpc64le-unknown-linux-gnu +++ b/docker/Dockerfile.powerpc64le-unknown-linux-gnu @@ -1,6 +1,6 @@ FROM ubuntu:16.04 -COPY common.sh / +COPY common.sh lib.sh / RUN /common.sh COPY cmake.sh / diff --git a/docker/Dockerfile.riscv64gc-unknown-linux-gnu b/docker/Dockerfile.riscv64gc-unknown-linux-gnu index 3d62c55ca..766ee9d0c 100644 --- a/docker/Dockerfile.riscv64gc-unknown-linux-gnu +++ b/docker/Dockerfile.riscv64gc-unknown-linux-gnu @@ -1,6 +1,6 @@ FROM ubuntu:18.04 -COPY common.sh / +COPY common.sh lib.sh / RUN /common.sh # COPY cmake.sh / diff --git a/docker/Dockerfile.s390x-unknown-linux-gnu b/docker/Dockerfile.s390x-unknown-linux-gnu index 0afeeca10..c12be7390 100644 --- a/docker/Dockerfile.s390x-unknown-linux-gnu +++ b/docker/Dockerfile.s390x-unknown-linux-gnu @@ -1,6 +1,6 @@ FROM ubuntu:16.04 -COPY common.sh / +COPY common.sh lib.sh / RUN /common.sh COPY cmake.sh / diff --git a/docker/Dockerfile.sparc64-unknown-linux-gnu b/docker/Dockerfile.sparc64-unknown-linux-gnu index 33fe9a755..254e061de 100644 --- a/docker/Dockerfile.sparc64-unknown-linux-gnu +++ b/docker/Dockerfile.sparc64-unknown-linux-gnu @@ -1,6 +1,6 @@ FROM ubuntu:16.04 -COPY common.sh / +COPY common.sh lib.sh / RUN /common.sh COPY cmake.sh / diff --git a/docker/Dockerfile.sparcv9-sun-solaris b/docker/Dockerfile.sparcv9-sun-solaris index 3ff9a3863..59302ecde 100644 --- a/docker/Dockerfile.sparcv9-sun-solaris +++ b/docker/Dockerfile.sparcv9-sun-solaris @@ -1,6 +1,6 @@ FROM ubuntu:16.04 -COPY common.sh / +COPY common.sh lib.sh / RUN /common.sh COPY cmake.sh / diff --git a/docker/Dockerfile.thumbv6m-none-eabi b/docker/Dockerfile.thumbv6m-none-eabi index dd7b0b91b..00af0c616 100644 --- a/docker/Dockerfile.thumbv6m-none-eabi +++ b/docker/Dockerfile.thumbv6m-none-eabi @@ -1,6 +1,6 @@ FROM ubuntu:16.04 -COPY common.sh / +COPY common.sh lib.sh / RUN /common.sh COPY cmake.sh / diff --git a/docker/Dockerfile.thumbv7em-none-eabi b/docker/Dockerfile.thumbv7em-none-eabi index d98b17d17..cea97bb17 100644 --- a/docker/Dockerfile.thumbv7em-none-eabi +++ b/docker/Dockerfile.thumbv7em-none-eabi @@ -1,6 +1,6 @@ FROM ubuntu:16.04 -COPY common.sh / +COPY common.sh lib.sh / RUN /common.sh COPY cmake.sh / diff --git a/docker/Dockerfile.thumbv7em-none-eabihf b/docker/Dockerfile.thumbv7em-none-eabihf index 495eb1974..f95d94deb 100644 --- a/docker/Dockerfile.thumbv7em-none-eabihf +++ b/docker/Dockerfile.thumbv7em-none-eabihf @@ -1,6 +1,6 @@ FROM ubuntu:16.04 -COPY common.sh / +COPY common.sh lib.sh / RUN /common.sh COPY cmake.sh / diff --git a/docker/Dockerfile.thumbv7m-none-eabi b/docker/Dockerfile.thumbv7m-none-eabi index a9a1d43fa..24fdb7552 100644 --- a/docker/Dockerfile.thumbv7m-none-eabi +++ b/docker/Dockerfile.thumbv7m-none-eabi @@ -1,6 +1,6 @@ FROM ubuntu:16.04 -COPY common.sh / +COPY common.sh lib.sh / RUN /common.sh COPY cmake.sh / diff --git a/docker/Dockerfile.wasm32-unknown-emscripten b/docker/Dockerfile.wasm32-unknown-emscripten index 59425eae5..7b0340faf 100644 --- a/docker/Dockerfile.wasm32-unknown-emscripten +++ b/docker/Dockerfile.wasm32-unknown-emscripten @@ -1,6 +1,6 @@ FROM ubuntu:16.04 -COPY common.sh / +COPY common.sh lib.sh / RUN /common.sh COPY cmake.sh / diff --git a/docker/Dockerfile.x86_64-linux-android b/docker/Dockerfile.x86_64-linux-android index ba4c4f1bc..b46e7a27a 100644 --- a/docker/Dockerfile.x86_64-linux-android +++ b/docker/Dockerfile.x86_64-linux-android @@ -1,6 +1,6 @@ FROM ubuntu:20.04 -COPY common.sh / +COPY common.sh lib.sh / RUN /common.sh COPY cmake.sh / diff --git a/docker/Dockerfile.x86_64-pc-windows-gnu b/docker/Dockerfile.x86_64-pc-windows-gnu index 18d8c0c6e..e2095b4d4 100644 --- a/docker/Dockerfile.x86_64-pc-windows-gnu +++ b/docker/Dockerfile.x86_64-pc-windows-gnu @@ -1,6 +1,6 @@ FROM ubuntu:18.04 -COPY common.sh / +COPY common.sh lib.sh / RUN /common.sh COPY cmake.sh / diff --git a/docker/Dockerfile.x86_64-sun-solaris b/docker/Dockerfile.x86_64-sun-solaris index b8b240b18..6ee020630 100644 --- a/docker/Dockerfile.x86_64-sun-solaris +++ b/docker/Dockerfile.x86_64-sun-solaris @@ -1,6 +1,6 @@ FROM ubuntu:16.04 -COPY common.sh / +COPY common.sh lib.sh / RUN /common.sh COPY cmake.sh / diff --git a/docker/Dockerfile.x86_64-unknown-freebsd b/docker/Dockerfile.x86_64-unknown-freebsd index 0679a7f07..63b1140a8 100644 --- a/docker/Dockerfile.x86_64-unknown-freebsd +++ b/docker/Dockerfile.x86_64-unknown-freebsd @@ -1,6 +1,6 @@ FROM ubuntu:16.04 -COPY common.sh / +COPY common.sh lib.sh / RUN /common.sh COPY xargo.sh / diff --git a/docker/Dockerfile.x86_64-unknown-linux-gnu b/docker/Dockerfile.x86_64-unknown-linux-gnu index 5faa687e2..7fefa0198 100644 --- a/docker/Dockerfile.x86_64-unknown-linux-gnu +++ b/docker/Dockerfile.x86_64-unknown-linux-gnu @@ -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 / @@ -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 / diff --git a/docker/Dockerfile.x86_64-unknown-linux-musl b/docker/Dockerfile.x86_64-unknown-linux-musl index eff3a25f0..80a514051 100644 --- a/docker/Dockerfile.x86_64-unknown-linux-musl +++ b/docker/Dockerfile.x86_64-unknown-linux-musl @@ -1,6 +1,6 @@ FROM ubuntu:20.04 -COPY common.sh / +COPY common.sh lib.sh / RUN /common.sh COPY cmake.sh / diff --git a/docker/Dockerfile.x86_64-unknown-netbsd b/docker/Dockerfile.x86_64-unknown-netbsd index 44d3d9cd1..310039ccf 100644 --- a/docker/Dockerfile.x86_64-unknown-netbsd +++ b/docker/Dockerfile.x86_64-unknown-netbsd @@ -1,6 +1,6 @@ FROM ubuntu:16.04 -COPY common.sh / +COPY common.sh lib.sh / RUN /common.sh COPY cmake.sh / diff --git a/docker/cmake.sh b/docker/cmake.sh index d16a41e44..d6ee2ca68 100755 --- a/docker/cmake.sh +++ b/docker/cmake.sh @@ -3,19 +3,13 @@ set -x set -euo pipefail +# shellcheck disable=SC1091 +. lib.sh + main() { local version=3.17.2 - local dependencies=(curl) - - apt-get update - local purge_list=() - for dep in "${dependencies[@]}"; do - if ! dpkg -L "${dep}"; then - apt-get install --assume-yes --no-install-recommends "${dep}" - purge_list+=( "${dep}" ) - fi - done + install_packages curl local td td="$(mktemp -d)" @@ -27,9 +21,7 @@ main() { popd - if (( ${#purge_list[@]} )); then - apt-get purge --assume-yes --auto-remove "${purge_list[@]}" - fi + purge_packages rm -rf "${td}" rm -rf /var/lib/apt/lists/* diff --git a/docker/common.sh b/docker/common.sh index 172e90baa..16396a8a9 100755 --- a/docker/common.sh +++ b/docker/common.sh @@ -3,26 +3,36 @@ set -x set -euo pipefail +# shellcheck disable=SC1091 +. lib.sh + # For architectures except amd64 and i386, look for packages on ports.ubuntu.com instead. # This is important if you enable additional architectures so you can install libraries to cross-compile against. # Look for 'dpkg --add-architecture' in the README for more details. -sed 's/http:\/\/\(.*\).ubuntu.com\/ubuntu\//[arch-=amd64,i386] http:\/\/ports.ubuntu.com\/ubuntu-ports\//g' /etc/apt/sources.list > /etc/apt/sources.list.d/ports.list -sed -i 's/http:\/\/\(.*\).ubuntu.com\/ubuntu\//[arch=amd64,i386] http:\/\/\1.archive.ubuntu.com\/ubuntu\//g' /etc/apt/sources.list +if grep -i ubuntu /etc/os-release >/dev/null; then + sed 's/http:\/\/\(.*\).ubuntu.com\/ubuntu\//[arch-=amd64,i386] http:\/\/ports.ubuntu.com\/ubuntu-ports\//g' /etc/apt/sources.list > /etc/apt/sources.list.d/ports.list + sed -i 's/http:\/\/\(.*\).ubuntu.com\/ubuntu\//[arch=amd64,i386] http:\/\/\1.archive.ubuntu.com\/ubuntu\//g' /etc/apt/sources.list +fi + +install_packages \ + autoconf \ + automake \ + binutils \ + ca-certificates \ + curl \ + file \ + gcc \ + git \ + libtool \ + m4 \ + make -apt-get update +if_centos install_packages \ + gcc-c++ \ + glibc-devel \ + pkgconfig -apt-get install --assume-yes --no-install-recommends \ - autoconf \ - automake \ - binutils \ - ca-certificates \ - curl \ - file \ - gcc \ - g++ \ - git \ - libc6-dev \ - libtool \ - m4 \ - make \ - pkg-config +if_ubuntu install_packages \ + g++ \ + libc6-dev \ + pkg-config diff --git a/docker/dropbear.sh b/docker/dropbear.sh index 0c9fffc4d..10392ef73 100755 --- a/docker/dropbear.sh +++ b/docker/dropbear.sh @@ -3,26 +3,21 @@ set -x set -euo pipefail +# shellcheck disable=SC1091 +. lib.sh + main() { local version=2020.80 - local dependencies=( - autoconf - automake - bzip2 - curl + install_packages \ + autoconf \ + automake \ + bzip2 \ + curl \ make - zlib1g-dev - ) - - apt-get update - local purge_list=() - for dep in "${dependencies[@]}"; do - if ! dpkg -L "${dep}"; then - apt-get install --assume-yes --no-install-recommends "${dep}" - purge_list+=( "${dep}" ) - fi - done + + if_centos install_packages zlib-devel + if_ubuntu install_packages zlib1g-dev local td td="$(mktemp -d)" @@ -50,9 +45,7 @@ main() { make "-j$(nproc)" PROGRAMS=dbclient cp dbclient /usr/local/bin/ - if (( ${#purge_list[@]} )); then - apt-get purge --assume-yes --auto-remove "${purge_list[@]}" - fi + purge_packages popd diff --git a/docker/lib.sh b/docker/lib.sh new file mode 100644 index 000000000..0d299b8a6 --- /dev/null +++ b/docker/lib.sh @@ -0,0 +1,45 @@ +purge_list=() + +install_packages() { + if grep -i ubuntu /etc/os-release; then + apt-get update + + for pkg in "${@}"; do + if ! dpkg -L "${pkg}" >/dev/null 2>/dev/null; then + apt-get install --assume-yes --no-install-recommends "${pkg}" + + purge_list+=( "${pkg}" ) + fi + done + else + for pkg in "${@}"; do + if ! yum list installed "${pkg}" >/dev/null 2>/dev/null; then + yum install -y "${pkg}" + + purge_list+=( "${pkg}" ) + fi + done + fi +} + +purge_packages() { + if (( ${#purge_list[@]} )); then + if grep -i ubuntu /etc/os-release; then + apt-get purge --assume-yes --auto-remove "${purge_list[@]}" + else + yum remove -y "${purge_list[@]}" + fi + fi +} + +if_centos() { + if grep -q -i centos /etc/os-release; then + eval "${@}" + fi +} + +if_ubuntu() { + if grep -q -i ubuntu /etc/os-release; then + eval "${@}" + fi +} diff --git a/docker/linux-image.sh b/docker/linux-image.sh index 7d4a5c80a..1fd03e95c 100755 --- a/docker/linux-image.sh +++ b/docker/linux-image.sh @@ -93,6 +93,8 @@ main() { esac local dependencies=( + ca-certificates + curl cpio sharutils gnupg @@ -101,7 +103,7 @@ main() { local purge_list=() apt-get update for dep in "${dependencies[@]}"; do - if ! dpkg -L "${dep}"; then + if ! dpkg -L "${dep}" >/dev/null 2>/dev/null; then apt-get install --assume-yes --no-install-recommends "${dep}" purge_list+=( "${dep}" ) fi diff --git a/docker/qemu.sh b/docker/qemu.sh index 747fcaa55..94c0a6ab3 100755 --- a/docker/qemu.sh +++ b/docker/qemu.sh @@ -3,6 +3,69 @@ set -x set -euo pipefail +# shellcheck disable=SC1091 +. lib.sh + +build_static_libattr() { + local version=2.4.46 + + local td + td="$(mktemp -d)" + + pushd "${td}" + + yum install -y gettext + + curl --retry 3 -sSfL "https://download.savannah.nongnu.org/releases/attr/attr-${version}.src.tar.gz" -O + tar --strip-components=1 -xzf "attr-${version}.src.tar.gz" + ./configure + make "-j$(nproc)" + install -m 644 ./libattr/.libs/libattr.a /usr/lib64/ + + yum remove -y gettext + + popd + + rm -rf "${td}" +} + +build_static_libcap() { + local version=2.22 + + local td + td="$(mktemp -d)" + + pushd "${td}" + + curl --retry 3 -sSfL "https://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2/libcap-${version}.tar.xz" -O + tar --strip-components=1 -xJf "libcap-${version}.tar.xz" + make "-j$(nproc)" + install -m 644 libcap/libcap.a /usr/lib64/ + + popd + + rm -rf "${td}" +} + +build_static_pixman() { + local version=0.34.0 + + local td + td="$(mktemp -d)" + + pushd "${td}" + + curl --retry 3 -sSfL "https://www.cairographics.org/releases/pixman-${version}.tar.gz" -O + tar --strip-components=1 -xzf "pixman-${version}.tar.gz" + ./configure + make "-j$(nproc)" + install -m 644 ./pixman/.libs/libpixman-1.a /usr/lib64/ + + popd + + rm -rf "${td}" +} + main() { local version=4.2.0 @@ -18,35 +81,47 @@ main() { local arch="${1}" \ softmmu="${2:-}" - local dependencies=( - autoconf - automake - bison - bzip2 - curl - flex - g++ - libglib2.0-dev - libtool - make - patch - pkg-config - python3 - zlib1g-dev - libcap-dev - libattr1-dev - libpixman-1-dev + install_packages \ + autoconf \ + automake \ + bison \ + bzip2 \ + curl \ + flex \ + libtool \ + make \ + patch \ + python3 \ + + if_centos install_packages \ + gcc-c++ \ + glib2-devel \ + pkgconfig \ + zlib-devel \ + libcap-devel \ + libattr-devel \ + pixman-devel \ + xz \ + libfdt-devel \ + glibc-static \ + glib2-static \ + pcre-static \ + zlib-static + + # these are not packaged as static libraries in centos; build them manually + if_centos build_static_libattr + if_centos build_static_libcap + if_centos build_static_pixman + + if_ubuntu install_packages \ + g++ \ + libglib2.0-dev \ + pkg-config \ + zlib1g-dev \ + libcap-dev \ + libattr1-dev \ + libpixman-1-dev \ xz-utils - ) - - apt-get update - local purge_list=() - for dep in "${dependencies[@]}"; do - if ! dpkg -L "${dep}"; then - apt-get install --assume-yes --no-install-recommends "${dep}" - purge_list+=( "${dep}" ) - fi - done local td td="$(mktemp -d)" @@ -90,9 +165,7 @@ main() { # in /usr/bin. Create an appropriate symlink ln -s "/usr/local/bin/qemu-${arch}" "/usr/bin/qemu-${arch}-static" - if (( ${#purge_list[@]} )); then - apt-get purge --assume-yes --auto-remove "${purge_list[@]}" - fi + purge_packages popd diff --git a/docker/xargo.sh b/docker/xargo.sh index c349d96d8..5f7e2dcd6 100755 --- a/docker/xargo.sh +++ b/docker/xargo.sh @@ -3,20 +3,11 @@ set -x set -euo pipefail +# shellcheck disable=SC1091 +. lib.sh + main() { - local dependencies=( - ca-certificates - curl - ) - - apt-get update - local purge_list=() - for dep in "${dependencies[@]}"; do - if ! dpkg -L "${dep}"; then - apt-get install --assume-yes --no-install-recommends "${dep}" - purge_list+=( "${dep}" ) - fi - done + install_packages ca-certificates curl export RUSTUP_HOME=/tmp/rustup export CARGO_HOME=/tmp/cargo @@ -29,9 +20,7 @@ main() { rm -r "${RUSTUP_HOME}" "${CARGO_HOME}" - if (( ${#purge_list[@]} )); then - apt-get purge --assume-yes --auto-remove "${purge_list[@]}" - fi + purge_packages rm "${0}" }