blob: 322d4d691c5169bedfb586eceeedc3b5297a7b72 [file] [log] [blame]
#!/bin/sh
set -e
set -x
source_dir=$PWD
distro="$1"
shift
test -f $source_dir/ci/docker/$distro.Dockerfile
build_dir=$source_dir/build/docker-$distro
docker_tag=$distro-apitrace
uid=$(id -u)
test -t 0 && interactive=true || interactive=false
docker_run () {
docker run \
--rm \
-i=$interactive \
--tty=$interactive \
-v "$PWD:$PWD" \
-w "$PWD" \
-u "$uid" \
$docker_tag \
"$@"
}
symbol_versions () {
# https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html
objdump -p "$@" | sed -n -e '/^Version References:/,$p'
}
if [ "$GITHUB_ACTIONS" = true ]
then
# See:
# - https://dev.to/dtinth/caching-docker-builds-in-github-actions-which-approach-is-the-fastest-a-research-18ei
# - https://github.com/dtinth/github-actions-docker-layer-caching-poc/blob/master/.github/workflows/dockerimage.yml
docker pull docker.pkg.github.com/$GITHUB_REPOSITORY/build-cache || true
docker build -t $docker_tag --cache-from=docker.pkg.github.com/$GITHUB_REPOSITORY/build-cache -f $source_dir/ci/docker/$distro.Dockerfile $source_dir/ci/docker
docker tag $docker_tag docker.pkg.github.com/$GITHUB_REPOSITORY/build-cache && docker push docker.pkg.github.com/$GITHUB_REPOSITORY/build-cache || true
else
docker build -t $docker_tag -f $source_dir/ci/docker/$distro.Dockerfile $source_dir/ci/docker
fi
if [ "$PACKAGE" = "true" ]
then
CMAKE_BUILD_TYPE=Release
else
CMAKE_BUILD_TYPE=Debug
fi
docker_run \
cmake \
-H$source_dir \
-B$build_dir \
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} \
"$@"
docker_run cmake --build $build_dir
if false
then
docker_run cmake --build $build_dir --target test
fi
symbol_versions $build_dir/glretrace
symbol_versions $build_dir/eglretrace
symbol_versions $build_dir/wrappers/glxtrace.so
if [ "$PACKAGE" = true ]
then
docker_run cmake --build $build_dir --target package
fi