spiegel-keyman/resources/docker-images/run.sh
Eberhard Beilharz 72d8b705ff
maint(common): on Windows build as root inside docker container
This fixes a permission problem when we run docker from git bash.
On Windows we want to build as _root_ inside of the docker container.
This gives the necessary permissions due to the way the Windows user
is mapped to git bash/mingw and the docker container. On Linux
however we want to build as _build_ user inside the container so that
files we create are owned by the host user.

See https://github.com/keymanapp/keyman/pull/14154#issuecomment-2970577312
for further explanation.
2025-08-18 17:50:29 +02:00

86 lines
3.3 KiB
Bash
Executable file

#!/usr/bin/env bash
## START STANDARD BUILD SCRIPT INCLUDE
# adjust relative paths as necessary
THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
. "${THIS_SCRIPT%/*}/../../resources/build/builder-full.inc.sh"
## END STANDARD BUILD SCRIPT INCLUDE
. "${KEYMAN_ROOT}/resources/build/minimum-versions.inc.sh"
. "${KEYMAN_ROOT}/resources/docker-images/docker-build.inc.sh"
. "$KEYMAN_ROOT/resources/build/utils.inc.sh"
################################ Main script ################################
builder_describe \
"Run build.sh script inside of a docker image. Pass the build script and parameters after --." \
":android" \
":core" \
":developer" \
":linux" \
":web" \
"run+ Run command in docker image" \
"--distro=DISTRO The distribution (debian or ubuntu, default: ubuntu)" \
"--distro-version=DISTRO_VERSION The Ubuntu/Debian version (default: ${KEYMAN_DEFAULT_VERSION_UBUNTU_CONTAINER})"
builder_parse "$@"
check_for_default_values
convert_parameters_to_args
setup_docker
if is_default_values; then
image_version=default
build_dir=default
else
image_version=${build_version:-}
build_dir="${DISTRO:-}-${DISTRO_VERSION:-}"
fi
run_android() {
docker_wrapper run ${DOCKER_RUN_ARGS} -it --rm -v "${KEYMAN_ROOT}":/home/build/build \
-v "${KEYMAN_ROOT}/core/build/docker-core/${build_dir}":/home/build/build/core/build \
"keymanapp/keyman-android-ci:${image_version}" \
"${builder_extra_params[@]}"
}
run_core() {
docker_wrapper run ${DOCKER_RUN_ARGS} -it --rm -v "${KEYMAN_ROOT}":/home/build/build \
-v "${KEYMAN_ROOT}/core/build/docker-core/${build_dir}":/home/build/build/core/build \
"keymanapp/keyman-core-ci:${image_version}" \
"${builder_extra_params[@]}"
}
run_developer() {
docker_wrapper run ${DOCKER_RUN_ARGS} -it --rm -v "${KEYMAN_ROOT}":/home/build/build \
-v "${KEYMAN_ROOT}/core/build/docker-core/${build_dir}":/home/build/build/core/build \
"keymanapp/keyman-developer-ci:${image_version}" \
"${builder_extra_params[@]}"
}
run_linux() {
mkdir -p "${KEYMAN_ROOT}/linux/build/docker-linux/${build_dir}"
mkdir -p "${KEYMAN_ROOT}/linux/keyman-system-service/build/docker-linux/${build_dir}"
docker_wrapper run ${DOCKER_RUN_ARGS} -it --privileged --rm -v "${KEYMAN_ROOT}":/home/build/build \
-v "${KEYMAN_ROOT}/core/build/docker-core/${build_dir}":/home/build/build/core/build \
-v "${KEYMAN_ROOT}/linux/build/docker-linux/${build_dir}":/home/build/build/linux/build \
-v "${KEYMAN_ROOT}/linux/keyman-system-service/build/docker-linux/${build_dir}":/home/build/build/linux/keyman-system-service/build \
-e DESTDIR=/tmp \
"keymanapp/keyman-linux-ci:${image_version}" \
"${builder_extra_params[@]}"
}
run_web() {
docker_wrapper run ${DOCKER_RUN_ARGS} -it --privileged --rm -v "${KEYMAN_ROOT}":/home/build/build \
-v "${KEYMAN_ROOT}/core/build/docker-core/${build_dir}":/home/build/build/core/build \
"keymanapp/keyman-web-ci:${image_version}" \
"${builder_extra_params[@]}"
}
mkdir -p "${KEYMAN_ROOT}/core/build/docker-core/${build_dir}"
builder_run_action run:android run_android
builder_run_action run:core run_core
builder_run_action run:developer run_developer
builder_run_action run:linux run_linux
builder_run_action run:web run_web