diff --git a/.travis.yml b/.travis.yml index 19dfddfc..a4b47493 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,12 @@ language: c os: linux dist: focal +addons: + apt: + sources: + - sourceline: 'deb https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable' + packages: + - docker-ce docker-ce-cli containerd.io docker-buildx-plugin services: - docker @@ -59,11 +65,10 @@ before_install: - if [ -d "${HOME}/buildx-cache/.buildx-cache-${POLICY}_${PLATFORM}" ]; then cp -rlf ${HOME}/buildx-cache/.buildx-cache-${POLICY}_${PLATFORM} ./; fi install: - - uptime - - nproc - - free - - cat /proc/cpuinfo - - ./travisci-install-buildx.sh + - docker version + - docker buildx version + - docker buildx create --name builder-manylinux --driver docker-container --use + - docker buildx inspect --bootstrap --builder builder-manylinux 2>&1 | tee /dev/null script: | BUILD_STATUS=success @@ -88,7 +93,3 @@ deploy: on: branch: main repo: pypa/manylinux - -after_script: - - if [ -f ${HOME}/dockerd-rootless.pid ]; then kill -15 $(cat ${HOME}/dockerd-rootless.pid); fi - - if [ -f /tmp/buildkitd.pid ]; then sudo kill -15 $(cat /tmp/buildkitd.pid); fi diff --git a/build.sh b/build.sh index d33379f6..e663ccee 100755 --- a/build.sh +++ b/build.sh @@ -99,17 +99,6 @@ elif [ "${MANYLINUX_BUILD_FRONTEND}" == "docker-buildx" ]; then --cache-from=type=local,src=$(pwd)/.buildx-cache-${POLICY}_${PLATFORM} \ --cache-to=type=local,dest=$(pwd)/.buildx-cache-staging-${POLICY}_${PLATFORM},mode=max \ ${BUILD_ARGS_COMMON} -elif [ "${MANYLINUX_BUILD_FRONTEND}" == "buildkit" ]; then - USE_LOCAL_CACHE=1 - buildctl build \ - --frontend=dockerfile.v0 \ - --local context=./docker/ \ - --local dockerfile=./docker/ \ - --import-cache type=local,src=$(pwd)/.buildx-cache-${POLICY}_${PLATFORM} \ - --export-cache type=local,dest=$(pwd)/.buildx-cache-staging-${POLICY}_${PLATFORM},mode=max \ - --opt build-arg:POLICY=${POLICY} --opt build-arg:PLATFORM=${PLATFORM} --opt build-arg:BASEIMAGE=${BASEIMAGE} \ - --opt "build-arg:DEVTOOLSET_ROOTPATH=${DEVTOOLSET_ROOTPATH}" --opt "build-arg:PREPEND_PATH=${PREPEND_PATH}" --opt "build-arg:LD_LIBRARY_PATH_ARG=${LD_LIBRARY_PATH_ARG}" \ - --output type=docker,name=quay.io/pypa/${POLICY}_${PLATFORM}:${COMMIT_SHA} | docker load else echo "Unsupported build frontend: '${MANYLINUX_BUILD_FRONTEND}'" exit 1 diff --git a/travisci-install-buildx.sh b/travisci-install-buildx.sh deleted file mode 100755 index 94915216..00000000 --- a/travisci-install-buildx.sh +++ /dev/null @@ -1,80 +0,0 @@ -#!/bin/bash - -# This script is used to install docker buildx in travis-ci - -# Stop at any error, show all commands -set -exuo pipefail - - -BUILDX_MACHINE=$(uname -m) -if [ ${BUILDX_MACHINE} == "x86_64" ]; then - BUILDX_MACHINE=amd64 -elif [ ${BUILDX_MACHINE} == "aarch64" ]; then - BUILDX_MACHINE=arm64 -fi - -if [ "${MANYLINUX_BUILD_FRONTEND:-}" == "buildkit" ]; then - sudo apt-get update - sudo apt-get remove -y fuse ntfs-3g - sudo apt-get install -y --no-install-recommends runc containerd uidmap slirp4netns fuse-overlayfs - curl -fsSL "https://github.com/moby/buildkit/releases/download/v0.11.3/buildkit-v0.11.3.linux-${BUILDX_MACHINE}.tar.gz" | sudo tar -C /usr/local -xz - cat < /tmp/start-buildkitd.sh -buildkitd &> /dev/null & -BUILDKITD_PID=\$! -echo "\${BUILDKITD_PID}" > /tmp/buildkitd.pid -EOF - sudo bash /tmp/start-buildkitd.sh - DOCKER_WAIT_COUNT=0 - while ! sudo buildctl du &>/dev/null; do - DOCKER_WAIT_COUNT=$(( ${DOCKER_WAIT_COUNT} + 1 )) - if [ ${DOCKER_WAIT_COUNT} -ge 12 ]; then - sudo buildctl du || true - echo "buildkitd is still not running." - sudo kill -15 $(cat /tmp/buildkitd.pid) - exit 1 - fi - sleep 5 - done - sudo chmod 777 /run/buildkit - sudo chmod 666 /run/buildkit/buildkitd.sock - if ! buildctl du &>/dev/null; then - buildctl du || true - echo "can't connect to buildkitd." - sudo kill -15 $(cat /tmp/buildkitd.pid) - exit 1 - fi - exit 0 -fi - -# default to docker-buildx frontend -# We need to update docker to get buildx support, c.f. https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository -sudo systemctl stop docker -sudo apt-get update -sudo apt-get purge -y docker docker.io containerd runc -sudo apt-get install -y --no-install-recommends ca-certificates curl gnupg lsb-release -curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg -echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null -sudo apt-get update -# prevent the docker service to start upon installation -echo -e '#!/bin/sh\nexit 101' | sudo tee /usr/sbin/policy-rc.d -sudo chmod +x /usr/sbin/policy-rc.d -# install docker -sudo apt-get install docker-ce docker-ce-cli docker-ce-rootless-extras -# "restore" policy-rc.d -sudo rm -f /usr/sbin/policy-rc.d -sudo sed -i 's;fd://;unix://;g' /lib/systemd/system/docker.service -sudo systemctl daemon-reload -sudo systemctl start docker - -if [ "${MANYLINUX_BUILD_FRONTEND:-}" == "docker" ]; then - exit 0 -fi - -# update buildx -mkdir -vp ~/.docker/cli-plugins/ -curl -sSL "https://github.com/docker/buildx/releases/download/v0.16.2/buildx-v0.16.2.linux-${BUILDX_MACHINE}" > ~/.docker/cli-plugins/docker-buildx -chmod a+x ~/.docker/cli-plugins/docker-buildx -docker buildx version -docker buildx create --name builder-manylinux --driver docker-container --use -# Force plain output done with 2>&1 | tee /dev/null -docker buildx inspect --bootstrap --builder builder-manylinux 2>&1 | tee /dev/null