#!/bin/bash set -e if [ -z $1 ] ; then echo "$0 " exit 1 fi DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" OCV="$( cd "${DIR}/../../../.." >/dev/null 2>&1 && pwd )" mkdir -p "${1}" # Docker creates non-existed mounts with 'root' owner, lets ensure that dir exists under the current user to avoid "Permission denied" problem DST="$( cd "$1" >/dev/null 2>&1 && pwd )" CFG=${2:-Release} do_build() { TAG=$1 D=$2 F=$3 shift 3 docker build \ --build-arg http_proxy \ --build-arg https_proxy \ $@ \ -t $TAG \ -f "${D}/${F}" \ "${D}" } do_run() { TAG=$1 shift 1 docker run \ -it \ --rm \ -v "${OCV}":/opencv:ro \ -v "${DST}":/dst \ -e CFG=$CFG \ --user $(id -u):$(id -g) \ $TAG \ "$@" } build_gtk2_ubuntu() { VER=$1 shift 1 TAG=opencv_highgui_ubuntu_gtk2_builder:${VER} do_build $TAG "${DIR}/plugin_gtk" Dockerfile-ubuntu-gtk2 --build-arg VER=${VER} do_run $TAG /opencv/modules/highgui/misc/plugins/plugin_gtk/build.sh /dst gtk2_ubuntu${VER} ${CFG} "$@" } build_gtk3_ubuntu() { VER=$1 shift 1 TAG=opencv_highgui_ubuntu_gtk3_builder:${VER} do_build $TAG "${DIR}/plugin_gtk" Dockerfile-ubuntu-gtk3 --build-arg VER=${VER} do_run $TAG /opencv/modules/highgui/misc/plugins/plugin_gtk/build.sh /dst gtk3_ubuntu${VER} ${CFG} "$@" } echo "OpenCV: ${OCV}" echo "Destination: ${DST}" build_gtk2_ubuntu 16.04 build_gtk2_ubuntu 16.04 -DOPENCV_PLUGIN_NAME=opencv_highgui_gtk2-opengl_ubuntu16.04 -DWITH_OPENGL=ON -DWITH_GTK_2_X=ON build_gtk2_ubuntu 18.04 build_gtk3_ubuntu 18.04 build_gtk3_ubuntu 20.04