diff --git a/.gitignore b/.gitignore index eb5a316cb..a0b704540 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ target +/docker/qemu \ No newline at end of file diff --git a/build-docker-image.sh b/build-docker-image.sh index eb0188457..ba32ad021 100755 --- a/build-docker-image.sh +++ b/build-docker-image.sh @@ -18,6 +18,21 @@ run() { fi fi + if grep -i centos "${dockerfile}" >/dev/null 2>/dev/null; then + # build debian sysroot in a separate ubuntu container + # (only done for x86-linux-gnu ATM) + rm -rf qemu + mkdir qemu + cp linux-image.sh qemu/ + docker run \ + --rm \ + -v "$(pwd)/qemu:/qemu:z" \ + -w /qemu \ + -i \ + -t "ubuntu:16.04" \ + sh -c "./linux-image.sh x86_64; chown -R $(id -u):$(id -g) /qemu" + fi + docker build ${cache_from_args[@]+"${cache_from_args[@]}"} --pull -t "${image_name}" -f "${dockerfile}" . if ! [[ "${version}" =~ alpha ]] && ! [[ "${version}" =~ dev ]]; then diff --git a/docker/Dockerfile.x86_64-unknown-linux-gnu b/docker/Dockerfile.x86_64-unknown-linux-gnu new file mode 100644 index 000000000..aaa668481 --- /dev/null +++ b/docker/Dockerfile.x86_64-unknown-linux-gnu @@ -0,0 +1,23 @@ +FROM centos:7 + +COPY common.sh lib.sh / +RUN /common.sh + +COPY cmake.sh / +RUN /cmake.sh + +COPY xargo.sh / +RUN /xargo.sh + +COPY qemu.sh / +RUN /qemu.sh x86_64 softmmu + +COPY dropbear.sh / +RUN /dropbear.sh + +# this folder is built by `build-docker-image.sh` +COPY qemu /qemu + +COPY linux-runner / + +ENV CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUNNER="/linux-runner x86_64" diff --git a/docker/linux-image.sh b/docker/linux-image.sh index 37c75dbc0..d71deec21 100755 --- a/docker/linux-image.sh +++ b/docker/linux-image.sh @@ -92,6 +92,8 @@ main() { esac local dependencies=( + ca-certificates + curl cpio sharutils gnupg @@ -100,7 +102,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