1
0
mirror of https://github.com/falk-werner/webfuse synced 2024-10-27 20:34:10 +00:00

removes bash dependency

- simplifies scripts to support posix shell
- adds REGISTERY_PREFIX to support usage of local docker registry
- renames wrapper template
- adds discovery for tty and interactive for wrappers
This commit is contained in:
nosamad 2019-04-05 18:03:48 +02:00
parent f4bad5d72f
commit 9d0cffb31d
8 changed files with 81 additions and 49 deletions

View File

@ -26,8 +26,8 @@ OUT ?= $(PROJECT_ROOT)/.build
VERSION ?= $(shell cat $(PROJECT_ROOT)/VERSION)
VERSION := $(VERSION)
UID ?= $(shell id -u)
UID := $(UID)
USERID ?= $(shell id -u)
USERID := $(USERID)
CONTAINER_USER ?= user
CONTAINER_GROUP ?= user
@ -158,9 +158,10 @@ DOCKER_RUNFLAGS += --env NINJA_STATUS
DOCKER_BUILDARGS += CODENAME=$(CODENAME)
DOCKER_BUILDARGS += PARALLELMFLAGS=$(_PARALLELMFLAGS)
DOCKER_BUILDARGS += USERID=$(UID)
DOCKER_BUILDARGS += USERID=$(USERID)
DOCKER_BUILDARGS += PROJECT_ROOT=$(CONTAINER_PROJECT_ROOT)
DOCKER_BUILDARGS += OUT=$(CONTAINER_OUT)
DOCKER_BUILDARGS += REGISTRY_PREFIX=$(REGISTRY_PREFIX)
DOCKER_BUILDFLAGS += --rm
DOCKER_BUILDFLAGS += $(addprefix --build-arg ,$(DOCKER_BUILDARGS))
@ -277,7 +278,7 @@ discover_cc_rule = \
discover_cc = cat $<
wrapper_rule = \
$$(OUT)/$1/$$(BUILDTYPE)/gdbserver: $$(PROJECT_ROOT)/build/run_image.template $$(OUT)/docker/$1; \
$$(OUT)/$1/$$(BUILDTYPE)/gdbserver: $$(PROJECT_ROOT)/build/run_image.sh.template $$(OUT)/docker/$1; \
$$(SILENT)$$(call wrapper,$1)
wrapper = \
$(call echo_if_silent,generating $@) \

View File

@ -1,6 +1,7 @@
ARG REGISTRY_PREFIX=''
ARG CODENAME=testing-slim
FROM debian:$CODENAME as builder
FROM ${REGISTRY_PREFIX}debian:${CODENAME} as builder
RUN set -x \
&& apt update \

View File

@ -1,6 +1,7 @@
ARG REGISTRY_PREFIX=''
ARG CODENAME=bionic
FROM ubuntu:$CODENAME as builder
FROM ${REGISTRY_PREFIX}ubuntu:${CODENAME} as builder
RUN set -x \
&& apt update \

View File

@ -1,6 +1,7 @@
ARG REGISTRY_PREFIX=''
ARG CODENAME=testing-slim
FROM arm32v7/debian:$CODENAME as builder
FROM ${REGISTRY_PREFIX}arm32v7/debian:${CODENAME} as builder
ARG QEMU_VERSION_=v3.1.0-2

View File

@ -1,6 +1,7 @@
ARG REGISTRY_PREFIX=''
ARG CODENAME=bionic
FROM arm32v7/ubuntu:$CODENAME as builder
FROM ${REGISTRY_PREFIX}arm32v7/ubuntu:${CODENAME} as builder
ARG QEMU_VERSION_=v3.1.0-2

18
build/is_running_in_bg.sh Executable file
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 "$@"

View File

@ -0,0 +1,50 @@
#!/bin/sh
set -e
DOCKER="${DOCKER:-%DOCKER%}"
IMAGE="${IMAGE:-%IMAGE%}"
NETWORK="${NETWORK:-host}"
USERID="${USERID:-$(id -u)}"
PROJECT_ROOT="${PROJECT_ROOT:-%PROJECT_ROOT%}"
SCRIPT_ROOT="${SCRIPT_ROOT:-"$PROJECT_ROOT/build"}"
ENTRYPOINT="${ENTRYPOINT:-%RUNCMD%}"
if [ ! -d "$SCRIPT_ROOT" ]; then
echo "error:$0: $SCRIPT_ROOT not found; set project root (PROJECT_ROOT=)" 1>&2
exit 1
fi
HOST_CONTAINER="${HOST_CONTAINER:-"$("$SCRIPT_ROOT/get_container_id.sh")"}" || true
RUNFLAGS='%RUNFLAGS%'
if [ -n "$HOST_CONTAINER" ]; then
RUNFLAGS="$RUNFLAGS --volumes-from $HOST_CONTAINER"
fi
RUNFLAGS="$RUNFLAGS --network $NETWORK"
if [ -n "$CONTAINER_CGROUP_PARENT" ]; then
RUNFLAGS="$RUNFLAGS --cgroup-parent $CONTAINER_CGROUP_PARENT"
fi
RUNFLAGS="$RUNFLAGS --workdir $PWD"
# if STDIN piped or redirected
if [ -p /dev/stdin ] || { [ ! -t 0 ] && [ ! -p /dev/stdin ]; }; then
RUNFLAGS="$RUNFLAGS --interactive"
elif [ -t 1 ]; then
RUNFLAGS="$RUNFLAGS --tty"
fi
if [ -t 0 ] && ! "$SCRIPT_ROOT/is_running_in_bg.sh" $$; then
RUNFLAGS="$RUNFLAGS --interactive"
fi
RUNFLAGS="$RUNFLAGS --user $USERID:$USERID"
# shellcheck disable=SC2086
set -- $RUNFLAGS --entrypoint "$ENTRYPOINT" "$IMAGE" "$@"
exec "$DOCKER" run "$@"

View File

@ -1,41 +0,0 @@
#!/usr/bin/env bash
set -e
DOCKER="${DOCKER:-%DOCKER%}"
IMAGE="${IMAGE:-%IMAGE%}"
NETWORK="${NETWORK:-host}"
PROJECT_ROOT="${PROJECT_ROOT:-%PROJECT_ROOT%}"
CONTAINER_ID_CMD="$PROJECT_ROOT/build/get_container_id.sh"
if command -v "$CONTAINER_ID_CMD" 2>&1 1>/dev/null; then
HOST_CONTAINER="${HOST_CONTAINER:-"$("$CONTAINER_ID_CMD")"}" || true
else
echo "warning:$0: failed to discover host environment" 1>&2
fi
# shellcheck disable=SC2162
read -a ADDITIONAL_RUNFLAGS <<< "$RUNFLAGS"
RUNFLAGS=()
# shellcheck disable=SC2191
RUNFLAGS+=( %RUNFLAGS% )
if [[ -n "$HOST_CONTAINER" ]]; then
RUNFLAGS+=( --volumes-from "$HOST_CONTAINER" )
fi
RUNFLAGS+=( --network "$NETWORK" )
if [[ -n "$CONTAINER_CGROUP_PARENT" ]]; then
RUNFLAGS+=( --cgroup-parent "$CONTAINER_CGROUP_PARENT" )
fi
RUNFLAGS+=( --workdir "$PWD" )
RUNCMD=( %RUNCMD% )
set -- "${RUNFLAGS[@]}" "${ADDITIONAL_RUNFLAGS[@]}" "$IMAGE" "${RUNCMD[@]}" "$@"
exec "$DOCKER" run "$@"