123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- #!/usr/bin/env sh
- # This file is using docker to run commands
- # Detect docker can run
- if ! which docker >/dev/null; then
- echo "Docker is not installed, please install docker first !"
- exit 1
- fi
- DOCKER_EXECUTABLE="docker"
- # shellcheck disable=SC2046
- if [ $(id -u) -ne 0 ]; then
- if ! docker info > /dev/null 2>&1; then
- if [ "$SPC_USE_SUDO" != "yes" ]; then
- echo "Docker command requires sudo"
- # shellcheck disable=SC2039
- echo -n 'To use sudo to run docker, run "export SPC_USE_SUDO=yes" and run command again'
- exit 1
- fi
- DOCKER_EXECUTABLE="sudo docker"
- fi
- fi
- # to check if qemu-docker run
- if [ "$SPC_USE_ARCH" = "" ]; then
- SPC_USE_ARCH=x86_64
- fi
- case $SPC_USE_ARCH in
- x86_64)
- ALPINE_FROM=alpine:edge
- ;;
- aarch64)
- ALPINE_FROM=multiarch/alpine:aarch64-edge
- # shellcheck disable=SC2039
- echo -e "\e[033m* Using different arch needs to setup qemu-static for docker !\e[0m"
- $DOCKER_EXECUTABLE run --rm --privileged multiarch/qemu-user-static:register --reset > /dev/null
- ;;
- *)
- echo "Current arch is not supported to run in docker: $SPC_USE_ARCH"
- exit 1
- ;;
- esac
- if [ "$SPC_USE_MIRROR" = "yes" ]; then
- SPC_USE_MIRROR="RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories"
- else
- SPC_USE_MIRROR="RUN echo 'Using original repo'"
- fi
- # Detect docker env is setup
- if ! $DOCKER_EXECUTABLE images | grep -q cwcc-spc-$SPC_USE_ARCH; then
- echo "Docker container does not exist. Building docker image ..."
- $DOCKER_EXECUTABLE build -t cwcc-spc-$SPC_USE_ARCH -f- . <<EOF
- FROM $ALPINE_FROM
- $SPC_USE_MIRROR
- RUN apk update; \
- apk add --no-cache \
- autoconf \
- automake \
- gettext \
- bash \
- binutils \
- bison \
- build-base \
- cmake \
- curl \
- file \
- flex \
- g++ \
- gcc \
- git \
- jq \
- libgcc \
- libtool \
- libstdc++ \
- linux-headers \
- m4 \
- make \
- php82 \
- php82-common \
- php82-pcntl \
- php82-phar \
- php82-posix \
- php82-sodium \
- php82-tokenizer \
- php82-dom \
- php82-xml \
- php82-xmlwriter \
- composer \
- pkgconfig \
- wget \
- xz
- WORKDIR /app
- ADD ./src /app/src
- COPY ./composer.* /app/
- ADD ./bin /app/bin
- RUN composer install --no-dev --classmap-authoritative
- EOF
- fi
- # Check if in ci (local terminal can execute with -it)
- if [ -t 0 ]; then
- INTERACT=-it
- else
- INTERACT=''
- fi
- # Run docker
- # shellcheck disable=SC2068
- $DOCKER_EXECUTABLE run --rm $INTERACT -e SPC_FIX_DEPLOY_ROOT="$(pwd)" -v "$(pwd)"/config:/app/config -v "$(pwd)"/src:/app/src -v "$(pwd)"/buildroot:/app/buildroot -v "$(pwd)"/source:/app/source -v "$(pwd)"/downloads:/app/downloads cwcc-spc-$SPC_USE_ARCH bin/spc $@
|