diff --git a/Dockerfile b/Dockerfile index 126880b4..988781af 100644 --- a/Dockerfile +++ b/Dockerfile @@ -28,6 +28,8 @@ RUN chmod +x /tmp/install_build_dependencies.sh && /tmp/install_build_dependenci COPY docker/go_wrapper.sh /go/bin/go RUN chmod +x /go/bin/go +ENV GOPATH="/go" +ENV PATH="${GOPATH}/bin:${PATH}" ENV CGO_ENABLED 1 @@ -41,7 +43,7 @@ COPY api/go.mod api/go.sum /app/ RUN go mod download # Patch go-face -RUN sed -i 's/-march=native//g' /root/go/pkg/mod/github.com/!kagami/go-face*/face.go +RUN sed -i 's/-march=native//g' ${GOPATH}/pkg/mod/github.com/!kagami/go-face*/face.go # Build dependencies that use CGO RUN go install \ diff --git a/docker/go_wrapper.sh b/docker/go_wrapper.sh index e3887553..ee437137 100644 --- a/docker/go_wrapper.sh +++ b/docker/go_wrapper.sh @@ -66,39 +66,33 @@ fi if [ "$CGO_ENABLED" = "1" ]; then case "$GOARCH" in "amd64") - export CC="x86_64-linux-gnu-gcc" - export CXX="x86_64-linux-gnu-g++" + export COMPILER_ARCH="x86_64-linux-gnu" ;; "ppc64le") - export CC="powerpc64le-linux-gnu-gcc" - export CXX="powerpc64le-linux-gnu-g++" + export COMPILER_ARCH="powerpc64le-linux-gnu" ;; "s390x") - export CC="s390x-linux-gnu-gcc" - export CXX="s390x-linux-gnu-g++" + export COMPILER_ARCH="s390x-linux-gnu" ;; "arm64") - export CC="aarch64-linux-gnu-gcc" - export CXX="aarch64-linux-gnu-g++" + export COMPILER_ARCH="aarch64-linux-gnu" ;; "arm") case "$GOARM" in "5") - export CC="arm-linux-gnueabi-gcc" - export CXX="arm-linux-gnueabi-g++" + export COMPILER_ARCH="arm-linux-gnueabi" ;; *) - export CC="arm-linux-gnueabihf-gcc" - export CXX="arm-linux-gnueabihf-g++" + export COMPILER_ARCH="arm-linux-gnueabihf" ;; esac ;; esac fi -if [ "$GOOS" = "wasi" ]; then - export GOOS="js" -fi +export CC="${COMPILER_ARCH}-gcc" +export CXX="${COMPILER_ARCH}-g++" +export PKG_CONFIG_PATH="/usr/lib/${COMPILER_ARCH}/pkgconfig/" if [ -z "$GOBIN" ] && [ -n "$GOPATH" ] && [ -n "$GOARCH" ] && [ -n "$GOOS" ]; then export PATH=${GOPATH}/bin/${GOOS}_${GOARCH}:${PATH} diff --git a/docker/install_build_dependencies.sh b/docker/install_build_dependencies.sh index 0b71d39d..8df681fd 100644 --- a/docker/install_build_dependencies.sh +++ b/docker/install_build_dependencies.sh @@ -1,4 +1,5 @@ -#!/bin/sh +#!/bin/bash +set -e if [ "$TARGETPLATFORM" == "linux/arm64" ]; then dpkg --add-architecture arm64 @@ -12,26 +13,27 @@ fi apt-get update +# Install G++/GCC cross compilers +if [ "$DEBIAN_ARCH" == "arm64" ]; then + apt-get install -y \ + g++-aarch64-linux-gnu \ + libc6-dev-arm64-cross +elif [ "$DEBIAN_ARCH" == "armhf" ]; then + apt-get install -y \ + g++-arm-linux-gnueabihf \ + libc6-dev-armhf-cross +fi + # Install Golang apt-get install -y ca-certificates golang -# Install G++/GCC cross compilers +# Install go-face dependencies and libheif for HEIF media decoding apt-get install -y \ - g++-aarch64-linux-gnu \ - libc6-dev-arm64-cross \ - g++-arm-linux-gnueabihf \ - libc6-dev-armhf-cross - -# Install go-face dependencies -apt-get install -y \ - libdlib-dev:$DEBIAN_ARCH \ - libblas-dev:$DEBIAN_ARCH \ - liblapack-dev:$DEBIAN_ARCH \ - libjpeg62-turbo-dev:$DEBIAN_ARCH \ - -# Install libheif for HEIF media decoding -apt-get install -y \ - libheif-dev:$DEBIAN_ARCH + libdlib-dev:${DEBIAN_ARCH} \ + libblas-dev:${DEBIAN_ARCH} \ + liblapack-dev:${DEBIAN_ARCH} \ + libjpeg-dev:${DEBIAN_ARCH} \ + libheif-dev:${DEBIAN_ARCH} # Cleanup apt-get clean