1
0
mirror of https://github.com/falk-werner/webfuse-provider synced 2026-03-02 04:09:18 +00:00

refactor(mkdockerbuild): extracts common parts (#24)

* fixes mount of project in wrapper scripts, when not running in container

* refactors makefile in preparation to extract common parts

* refactors makefiles and scripts

* fix git ignore matches

* adds support to disable fetch

* update

* fixes docker warning about unused build argument

* adds support to force offline build

fixes shell escaping
changes paths to relative where possible

* moves make docker builder support files

* removes unnecessary configuration elements

* fixes initial download directory creation

* adds missing rule for initial download directory creation

* fixes docker error: unable to prepare context

copies dockerfile to build context, in order to remove dependency to
unsupported/new docker feature
This commit is contained in:
nosamad
2019-04-17 17:25:56 +02:00
committed by Falk Werner
parent 500353115c
commit 979ff1e689
18 changed files with 518 additions and 353 deletions

View File

@@ -0,0 +1,57 @@
#!/bin/sh
set -e
export LANG=C
export LC_ALL=C
cleanup() {
rm -rf "$INCLUDE_DIRS_TMPFILE"
}
trap cleanup TERM INT EXIT
DEST="${DEST:-$PWD}"
CMAKE_CACHE_FILE="${1:-CMakeCache.txt}"
CMAKE_CXX_COMPILER="$(sed -n -e 's/CMAKE_CXX_COMPILER:FILEPATH=\(.*\)$/\1/p' "$CMAKE_CACHE_FILE")"
CMAKE_C_COMPILER="$(sed -n -e 's/CMAKE_C_COMPILER:FILEPATH=\(.*\)$/\1/p' "$CMAKE_CACHE_FILE")"
INCLUDE_DIRS_PREFIX="${2:-$DEST}"
INCLUDE_DIRS_TMPFILE="$(mktemp -p "$DEST" include_dirs_XXXXXXXXXX.txt)"
INCLUDE_DIRS_FILE="${INCLUDE_DIRS_FILE:-$DEST/include_dirs.txt}"
C_BUILTIN_FILE="${C_BUILTIN_FILE:-$DEST/builtins.h}"
CXX_BUILTIN_FILE="${CXX_BUILTIN_FILE:-$DEST/builtins.hpp}"
if [ -z "${RSYNC+x}" ]; then
RSYNC=rsync
fi
{
{
echo | "$CMAKE_CXX_COMPILER" -xc++ -E -Wp,-v - 2>&1;
echo | "$CMAKE_C_COMPILER" -xc -E -Wp,-v - 2>&1;
} \
| sed -n -e 's/\s\+\(\/.*$\).*/\1/p';
sed -n -e 's/.*_INCLUDE_DIRS:INTERNAL=\(.*\)$/\1/p' "$CMAKE_CACHE_FILE";
} \
| sed 's/;/\n/g' | sed '/^$/d' | sort -u 2>/dev/null 1> "$INCLUDE_DIRS_TMPFILE"
{
echo '#include <...> search starts here:'
# shellcheck disable=SC1117
sed -n -e "s@\(.*\)@$INCLUDE_DIRS_PREFIX\1@p" "$INCLUDE_DIRS_TMPFILE"
echo 'End of search list.'
} > "$INCLUDE_DIRS_FILE"
if [ -n "$RSYNC" ]; then
"$RSYNC" -arR --files-from="$INCLUDE_DIRS_TMPFILE" / "$DEST"
echo "Include folders copied to $DEST" >&2
fi
"$CMAKE_C_COMPILER" -xc -dM -E - < /dev/null > "$C_BUILTIN_FILE"
echo "C Compiler built-ins written to $C_BUILTIN_FILE" >&2
"$CMAKE_CXX_COMPILER" -xc++ -dM -E - < /dev/null > "$CXX_BUILTIN_FILE"
echo "C++ Compiler built-ins written to $CXX_BUILTIN_FILE" >&2

View File

@@ -0,0 +1,56 @@
#!/bin/sh
set -e
DOCKER="${DOCKER:-docker}"
DOCKER_HOST="${DOCKER_HOST:-/var/run/docker.sock}"
VERSION="${VERSION:-1.24.0}"
IMAGE="${IMAGE:-${REGISTRY_PREFIX}docker/compose:${VERSION}}"
NETWORK="${NETWORK:-host}"
USERID="${USERID:-$(id -u)}"
SCRIPTDIR="${SCRIPTDIR:-"$(cd "$(dirname "$0")" && echo "$PWD")"}"
PROJECTDIR="${PROJECTDIR:-"$PWD"}"
ENTRYPOINT="${ENTRYPOINT:-docker-compose}"
HOST_ENVFILTER="${HOST_ENVFILTER:-^DOCKER_\|^COMPOSE_}"
PATH="${SCRIPTDIR}:$PATH"
set -- --entrypoint "$ENTRYPOINT" "$IMAGE" "$@"
set -- --user "$USERID:$USERID" --network "$NETWORK" --workdir "$PWD" "$@"
ENVFLAGS="$(printenv | grep -e "$HOST_ENVFILTER" | sed -n -e 's/\([^=]*\)=.*/-e \1/p')" || true
#shellcheck disable=SC2086
set -- $ENVFLAGS "$@"
if [ -n "$CONTAINER_CGROUP_PARENT" ]; then
set -- --cgroup-parent "$CONTAINER_CGROUP_PARENT" "$@"
fi
HOST_CONTAINER="${HOST_CONTAINER:-"$(get_container_id.sh)"}" || true
if [ -n "$HOST_CONTAINER" ]; then
set -- --volumes-from "$HOST_CONTAINER" "$@"
else
set -- --volume "$PROJECTDIR:$PROJECTDIR:cached" "$@"
fi
# setup options for connection to docker host
if [ -S "$DOCKER_HOST" ]; then
DOCKER_SOCK_GROUP="$(stat -c '%g' "$DOCKER_HOST")"
set -- -e DOCKER_SOCK_GROUP="$DOCKER_SOCK_GROUP" --group-add "$DOCKER_SOCK_GROUP" "$@"
else
set -- -e DOCKER_HOST -e DOCKER_TLS_VERIFY -e DOCKER_CERT_PATH "$@"
fi
if [ -t 0 ] && ! is_running_in_bg.sh $$; then
set -- --interactive "$@"
fi
# if STDIN piped or redirected
if [ -p /dev/stdin ] || { [ ! -t 0 ] && [ ! -p /dev/stdin ]; }; then
set -- --interactive "$@"
elif [ -t 1 ]; then
set -- --tty "$@"
fi
set -- --rm "$@"
exec "$DOCKER" run "$@"

View File

@@ -0,0 +1,39 @@
#!/bin/sh
set -e
container_id() {
if [ "$#" -le 0 ]; then
# shellcheck disable=SC2119
container_id_by_cgroup
else
"$DOCKER" inspect --format='{{.Id}}' "$@"
fi
}
# shellcheck disable=SC2120
container_id_by_cgroup() {
impl_container_id_by_cgroup "$@" || return "$?"
}
impl_container_id_by_cgroup() {
file="${1:-/proc/self/cgroup}"
while IFS= read -r cmd; do
id="$(echo "$cmd" | sed -n -e 's/[^:]*:[^:]*:.*\/\([0-9a-fA-F]\+\)$/\1/p')"
if container_id "$id" >/dev/null 2>&1; then
echo "$id"
return 0
fi
done < "$file"
return 1
}
DOCKER="${DOCKER:-docker}"
if [ -z "${CONTAINER+x}" ] && [ -n "$DOCKER" ]; then
CONTAINER="$(container_id "$@")"
fi
echo "$CONTAINER"

View File

@@ -0,0 +1,34 @@
#!/bin/sh
set -e
export LANG=C
export LC_ALL=C
[ -n "$TOPDIR" ] && cd "$TOPDIR"
try_git() {
[ -e .git ] || return 1
SOURCE_DATE_EPOCH="$(git log -1 --format=format:%ct)"
[ -n "$SOURCE_DATE_EPOCH" ]
}
try_svn() {
[ -d .svn ] || return 1
SOURCE_DATE_EPOCH="$(date -d "$(svn info | sed -n -e 's/^Last Changed Date: //p')" +%s)"
[ -n "$SOURCE_DATE_EPOCH" ]
}
try_hg() {
[ -d .hg ] || return 1
SOURCE_DATE_EPOCH="$(hg log --template '{date}' -l 1 | cut -d. -f1)"
[ -n "$SOURCE_DATE_EPOCH" ]
}
try_mtime() {
perl -e 'print((stat $ARGV[0])[9])' "$0"
[ -n "$SOURCE_DATE_EPOCH" ]
}
try_git || try_svn || try_hg || try_mtime || SOURCE_DATE_EPOCH=""
echo "$SOURCE_DATE_EPOCH"

View File

@@ -0,0 +1,18 @@
#!/bin/sh
set -e
running_in_background() {
pid="$1"
case "$("$PS" -o stat= -p "$pid" 2>/dev/null || echo '+')" in
*+*) ;;
*) return 0 ;;
esac
return 1
}
PS="${PS:-ps}"
running_in_background "$@"