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

feat(webfuse): eclipse cdt project (#17)

adds convenience run and discovery targets (for first build target)
allows usage of host container (volume mount/ dind)
fixes portable workspace configuration
adds makefile targets to CDT configuration
fixes localization

* adds eclipse-cdt project and necessary discovery for toolchain settings

* extends targets and fixes discovery

* renames CDT Eclipse project

* enables portable workspace docker-build on build server
This commit is contained in:
nosamad
2019-03-28 07:43:21 +01:00
committed by Falk Werner
parent 66a585ecf1
commit 0ac03b6150
11 changed files with 404 additions and 66 deletions

View File

@@ -10,6 +10,7 @@ RUN set -x \
cmake \
ninja-build \
pkg-config \
rsync \
valgrind \
&& rm -rf /var/lib/apt/lists/*
@@ -70,12 +71,13 @@ ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/lib"
ARG USERID=1000
ARG WORKSPACE=/workspace
ARG PROJECT_ROOT=/workspace/src
ARG OUT=/workspace/out
RUN set -x \
&& useradd -u "$USERID" -ms /bin/bash user \
&& mkdir -p "$WORKSPACE" \
&& chown user:user "$WORKSPACE"
&& mkdir -p "$PROJECT_ROOT" "$OUT" \
&& chown user:user "$PROJECT_ROOT" "$OUT"
WORKDIR "$WORKSPACE"
WORKDIR "$OUT"

View File

@@ -12,6 +12,7 @@ RUN set -x \
cmake \
ninja-build \
pkg-config \
rsync \
&& rm -rf /var/lib/apt/lists/*
COPY src /usr/local/src
@@ -71,12 +72,13 @@ ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/lib"
ARG USERID=1000
ARG WORKSPACE=/workspace
ARG PROJECT_ROOT=/workspace/src
ARG OUT=/workspace/out
RUN set -x \
&& useradd -u "$USERID" -ms /bin/bash user \
&& mkdir -p "$WORKSPACE" \
&& chown user:user "$WORKSPACE"
&& mkdir -p "$PROJECT_ROOT" "$OUT" \
&& chown user:user "$PROJECT_ROOT" "$OUT"
WORKDIR "$WORKSPACE"
WORKDIR "$OUT"

56
build/discover_cc_settings.sh Executable file
View File

@@ -0,0 +1,56 @@
#!/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:'
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

39
build/get_container_id.sh Executable file
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 "$@")" || true
fi
echo "$CONTAINER"

View File

@@ -1,25 +1,27 @@
#!/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" ]
[ -e .git ] || return 1
SOURCE_DATE_EPOCH="$(git log -1 --format=format:%ct)"
[ -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" ]
[ -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" ]
perl -e 'print((stat $ARGV[0])[9])' "$0"
[ -n "$SOURCE_DATE_EPOCH" ]
}
try_git || try_hg || try_mtime || SOURCE_DATE_EPOCH=""