1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- #!/bin/bash -eu
- # docker_env.sh
- #
- # Purpose
- # -------
- #
- # This is a helper script to enable running tests under a Docker container,
- # thus making it easier to get set up as well as isolating test dependencies
- # (which include legacy/insecure configurations of openssl and gnutls).
- #
- # Notes for users
- # ---------------
- # This script expects a Linux x86_64 system with a recent version of Docker
- # installed and available for use, as well as http/https access. If a proxy
- # server must be used, invoke this script with the usual environment variables
- # (http_proxy and https_proxy) set appropriately. If an alternate Docker
- # registry is needed, specify MBEDTLS_DOCKER_REGISTRY to point at the
- # host name.
- #
- #
- # Running this script directly will check for Docker availability and set up
- # the Docker image.
- # Copyright The Mbed TLS Contributors
- # SPDX-License-Identifier: Apache-2.0
- #
- # Licensed under the Apache License, Version 2.0 (the "License"); you may
- # not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- # default values, can be overridden by the environment
- : ${MBEDTLS_DOCKER_GUEST:=bionic}
- DOCKER_IMAGE_TAG="armmbed/mbedtls-test:${MBEDTLS_DOCKER_GUEST}"
- # Make sure docker is available
- if ! which docker > /dev/null; then
- echo "Docker is required but doesn't seem to be installed. See https://www.docker.com/ to get started"
- exit 1
- fi
- # Figure out if we need to 'sudo docker'
- if groups | grep docker > /dev/null; then
- DOCKER="docker"
- else
- echo "Using sudo to invoke docker since you're not a member of the docker group..."
- DOCKER="sudo docker"
- fi
- # Figure out the number of processors available
- if [ "$(uname)" == "Darwin" ]; then
- NUM_PROC="$(sysctl -n hw.logicalcpu)"
- else
- NUM_PROC="$(nproc)"
- fi
- # Build the Docker image
- echo "Getting docker image up to date (this may take a few minutes)..."
- ${DOCKER} image build \
- -t ${DOCKER_IMAGE_TAG} \
- --cache-from=${DOCKER_IMAGE_TAG} \
- --build-arg MAKEFLAGS_PARALLEL="-j ${NUM_PROC}" \
- --network host \
- ${http_proxy+--build-arg http_proxy=${http_proxy}} \
- ${https_proxy+--build-arg https_proxy=${https_proxy}} \
- ${MBEDTLS_DOCKER_REGISTRY+--build-arg MY_REGISTRY="${MBEDTLS_DOCKER_REGISTRY}/"} \
- tests/docker/${MBEDTLS_DOCKER_GUEST}
- run_in_docker()
- {
- ENV_ARGS=""
- while [ "$1" == "-e" ]; do
- ENV_ARGS="${ENV_ARGS} $1 $2"
- shift 2
- done
- ${DOCKER} container run -it --rm \
- --cap-add SYS_PTRACE \
- --user "$(id -u):$(id -g)" \
- --volume $PWD:$PWD \
- --workdir $PWD \
- -e MAKEFLAGS \
- -e PYLINTHOME=/tmp/.pylintd \
- ${ENV_ARGS} \
- ${DOCKER_IMAGE_TAG} \
- $@
- }
|