From 9c7fe8531299a955834d8ef4e2d87630caed2ca3 Mon Sep 17 00:00:00 2001 From: Falk Werner Date: Sat, 25 May 2019 01:57:04 +0200 Subject: [PATCH 1/3] replaces amd64-debian with amd64-alpine image --- CMakeLists.txt | 36 ++++++++-------- Makefile | 8 +++- ...erfile => amd64-alpine-builder.dockerfile} | 43 ++++++++++--------- 3 files changed, 48 insertions(+), 39 deletions(-) rename build/{amd64-debian-builder.dockerfile => amd64-alpine-builder.dockerfile} (74%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5ce597b..a1170c1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,24 +22,24 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) set(C_WARNINGS -Wall -Wextra) set(CMAKE_POSITION_INDEPENDENT_CODE ON) -if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug") - -add_definitions( - -pg - --coverage - -fprofile-arcs - -ftest-coverage -) - -if(CMAKE_C_COMPILER_ID STREQUAL "GNU") - link_libraries(gcov) -else() - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --coverage") -endif() - -set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fprofile-arcs") - -endif() +#if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug") +# +#add_definitions( +# -pg +# --coverage +# -fprofile-arcs +# -ftest-coverage +#) + +#if(CMAKE_C_COMPILER_ID STREQUAL "GNU") +# link_libraries(gcov) +#else() +# set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --coverage") +#endif() + +#set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pg -fprofile-arcs") + +#endif() include_directories( "include" diff --git a/Makefile b/Makefile index b0982c5..fe9c5d9 100644 --- a/Makefile +++ b/Makefile @@ -37,6 +37,7 @@ CONTAINER_GROUP ?= user UBUNTU_CODENAME ?= bionic DEBIAN_CODENAME ?= testing-slim +ALPINE_CODENAME ?= 3.9 SKIP_MD5SUM ?= $(call filter_out_command,md5sum) SKIP_MD5SUM := $(SKIP_MD5SUM) @@ -84,7 +85,7 @@ $(SKIP_MD5SUM)$(FETCHDIR)/qemu-arm-static-$(QEMU_VERSION): MD5 := 8ebd24e63fdfa0 # Architecture-specific rule target configuration CMAKE_TARGETS += amd64-ubuntu-builder -CMAKE_TARGETS += amd64-debian-builder +CMAKE_TARGETS += amd64-alpine-builder CMAKE_TARGETS += arm32v7-ubuntu-builder CMAKE_TARGETS += arm32v7-debian-builder @@ -96,6 +97,9 @@ UBUNTU_TARGETS = $(addprefix $(OUTDIR)/docker/,$(call filter_targets,$(UBUNTU_FI DEBIAN_FILTER = $(call regex_march_distro,'.*','debian') DEBIAN_TARGETS = $(addprefix $(OUTDIR)/docker/,$(call filter_targets,$(DEBIAN_FILTER),$(TARGETS))) +ALPINE_FILTER = $(call regex_march_distro,'.*','alpine') +ALPINE_TARGETS = $(addprefix $(OUTDIR)/docker/,$(call filter_targets,$(ALPINE_FILTER),$(TARGETS))) + ####################################################################################################################### # Common rule target configuration @@ -140,6 +144,8 @@ $(UBUNTU_TARGETS): CODENAME := $(UBUNTU_CODENAME) $(DEBIAN_TARGETS): CODENAME := $(DEBIAN_CODENAME) +$(ALPINE_TARGETS): CODENAME := $(ALPINE_CODENAME) + $(FETCH_TARGETS): | $(FETCHDIR) $(SILENT)$(call curl,$@,$(URL),$(MD5)) diff --git a/build/amd64-debian-builder.dockerfile b/build/amd64-alpine-builder.dockerfile similarity index 74% rename from build/amd64-debian-builder.dockerfile rename to build/amd64-alpine-builder.dockerfile index 5231e2d..7dd8194 100644 --- a/build/amd64-debian-builder.dockerfile +++ b/build/amd64-alpine-builder.dockerfile @@ -1,20 +1,23 @@ ARG REGISTRY_PREFIX='' -ARG CODENAME=testing-slim +ARG CODENAME=3.9 -FROM ${REGISTRY_PREFIX}debian:${CODENAME} as builder +FROM ${REGISTRY_PREFIX}alpine:${CODENAME} as builder RUN set -x \ - && apt update \ - && apt upgrade -y \ - && apt install --yes --no-install-recommends \ - build-essential \ + && apk add --no-cache \ + bash \ + coreutils \ + gcc \ + g++ \ + make \ cmake \ - ninja-build \ - pkg-config \ + ninja \ + pkgconf \ rsync \ gdb \ - gdbserver \ - valgrind + valgrind \ + util-linux \ + util-linux-dev COPY src /usr/local/src @@ -23,8 +26,8 @@ ARG PARALLELMFLAGS=-j2 ARG DUMB_INIT_VERSION=1.2.2 RUN set -x \ - && builddeps="xxd" \ - && apt install --yes --no-install-recommends $builddeps \ + && builddeps="vim" \ + && apk add --no-cache --virtual .build-deps $builddeps \ && builddir="/tmp/out" \ && mkdir -p "$builddir" \ && cd "$builddir" \ @@ -35,7 +38,7 @@ RUN set -x \ && mv dumb-init /usr/local/bin/dumb-init \ && dumb-init --version \ && rm -rf "$builddir" \ - && apt purge -y $builddeps + && apk del .build-deps ARG GTEST_VERSION=1.8.1 @@ -50,8 +53,8 @@ RUN set -x \ ARG FUSE_VERSION=3.1.1 RUN set -x \ - && builddeps="libtool automake gettext" \ - && apt install --yes --no-install-recommends $builddeps \ + && builddeps="libtool automake autoconf gettext-dev m4 linux-headers" \ + && apk add --no-cache --virtual .build-deps $builddeps \ && cd "/usr/local/src/libfuse-fuse-$FUSE_VERSION" \ && ./makeconf.sh \ && builddir="/tmp/out" \ @@ -60,15 +63,15 @@ RUN set -x \ && "/usr/local/src/libfuse-fuse-$FUSE_VERSION/configure" \ && make "$PARALLELMFLAGS" install \ && rm -rf "$builddir" \ - && apt purge -y $builddeps + && apk del .build-deps ARG WEBSOCKETS_VERSION=3.1.0 RUN set -x \ - && apt install --yes --no-install-recommends \ + && apk add --no-cache \ ca-certificates \ openssl \ - libssl-dev \ + openssl-dev \ && builddir="/tmp/out" \ && mkdir -p "$builddir" \ && cd "$builddir" \ @@ -87,6 +90,7 @@ RUN set -x \ && rm -rf "$builddir" ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/lib" +ENV PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig ARG USERID=1000 @@ -95,7 +99,7 @@ ARG OUTDIR=/workspace/out ARG SCRIPTDIR=/workspace/bin RUN set -x \ - && useradd -u "$USERID" -ms /bin/bash user \ + && adduser -u "$USERID" -s /bin/bash -D user \ && mkdir -p "$PROJECTDIR" "$OUTDIR" "$SCRIPTDIR" \ && chown user:user "$PROJECTDIR" "$OUTDIR" "$SCRIPTDIR" @@ -105,4 +109,3 @@ ENTRYPOINT ["dumb-init", "--"] # unused ARG QEMU_VERSION_=v3.1.0-2 - From 8ede6595d93743bc5db0bdbe4e29063f70976d2c Mon Sep 17 00:00:00 2001 From: Falk Werner Date: Sat, 25 May 2019 02:44:32 +0200 Subject: [PATCH 2/3] replaces arm32v7-debian by arm32v7-alpine image --- Makefile | 8 +--- ...file => arm32v7-alpine-builder.dockerfile} | 41 +++++++++++-------- 2 files changed, 24 insertions(+), 25 deletions(-) rename build/{arm32v7-debian-builder.dockerfile => arm32v7-alpine-builder.dockerfile} (75%) diff --git a/Makefile b/Makefile index fe9c5d9..8c74204 100644 --- a/Makefile +++ b/Makefile @@ -36,7 +36,6 @@ CONTAINER_USER ?= user CONTAINER_GROUP ?= user UBUNTU_CODENAME ?= bionic -DEBIAN_CODENAME ?= testing-slim ALPINE_CODENAME ?= 3.9 SKIP_MD5SUM ?= $(call filter_out_command,md5sum) @@ -87,16 +86,13 @@ $(SKIP_MD5SUM)$(FETCHDIR)/qemu-arm-static-$(QEMU_VERSION): MD5 := 8ebd24e63fdfa0 CMAKE_TARGETS += amd64-ubuntu-builder CMAKE_TARGETS += amd64-alpine-builder CMAKE_TARGETS += arm32v7-ubuntu-builder -CMAKE_TARGETS += arm32v7-debian-builder +CMAKE_TARGETS += arm32v7-alpine-builder MEMCHECK_FILTER = $(call regex_march_distro,'$(HOST_MARCH)','.*') UBUNTU_FILTER = $(call regex_march_distro,'.*','ubuntu') UBUNTU_TARGETS = $(addprefix $(OUTDIR)/docker/,$(call filter_targets,$(UBUNTU_FILTER),$(TARGETS))) -DEBIAN_FILTER = $(call regex_march_distro,'.*','debian') -DEBIAN_TARGETS = $(addprefix $(OUTDIR)/docker/,$(call filter_targets,$(DEBIAN_FILTER),$(TARGETS))) - ALPINE_FILTER = $(call regex_march_distro,'.*','alpine') ALPINE_TARGETS = $(addprefix $(OUTDIR)/docker/,$(call filter_targets,$(ALPINE_FILTER),$(TARGETS))) @@ -142,8 +138,6 @@ $(CHECK_TARGETS): GOALS := test $(UBUNTU_TARGETS): CODENAME := $(UBUNTU_CODENAME) -$(DEBIAN_TARGETS): CODENAME := $(DEBIAN_CODENAME) - $(ALPINE_TARGETS): CODENAME := $(ALPINE_CODENAME) $(FETCH_TARGETS): | $(FETCHDIR) diff --git a/build/arm32v7-debian-builder.dockerfile b/build/arm32v7-alpine-builder.dockerfile similarity index 75% rename from build/arm32v7-debian-builder.dockerfile rename to build/arm32v7-alpine-builder.dockerfile index b34fdfa..a60bc80 100644 --- a/build/arm32v7-debian-builder.dockerfile +++ b/build/arm32v7-alpine-builder.dockerfile @@ -1,23 +1,27 @@ ARG REGISTRY_PREFIX='' -ARG CODENAME=testing-slim +ARG CODENAME=3.9 -FROM ${REGISTRY_PREFIX}arm32v7/debian:${CODENAME} as builder +FROM ${REGISTRY_PREFIX}arm32v7/alpine:${CODENAME} as builder ARG QEMU_VERSION_=v3.1.0-2 COPY docker/qemu-arm-static-$QEMU_VERSION_ /usr/bin/qemu-arm-static RUN set -x \ - && apt update \ - && apt upgrade -y \ - && apt install --yes --no-install-recommends \ - build-essential \ + && apk add --no-cache \ + bash \ + coreutils \ + gcc \ + g++ \ + make \ cmake \ - ninja-build \ - pkg-config \ + ninja \ + pkgconf \ rsync \ gdb \ - gdbserver + valgrind \ + util-linux \ + util-linux-dev COPY src /usr/local/src @@ -26,8 +30,8 @@ ARG PARALLELMFLAGS=-j2 ARG DUMB_INIT_VERSION=1.2.2 RUN set -x \ - && builddeps="xxd" \ - && apt install --yes --no-install-recommends $builddeps \ + && builddeps="vim" \ + && apk add --no-cache --virtual .build-deps $builddeps \ && builddir="/tmp/out" \ && mkdir -p "$builddir" \ && cd "$builddir" \ @@ -38,7 +42,7 @@ RUN set -x \ && mv dumb-init /usr/local/bin/dumb-init \ && dumb-init --version \ && rm -rf "$builddir" \ - && apt purge -y $builddeps + && apk del .build-deps ARG GTEST_VERSION=1.8.1 @@ -53,8 +57,8 @@ RUN set -x \ ARG FUSE_VERSION=3.1.1 RUN set -x \ - && builddeps="libtool automake gettext" \ - && apt install --yes --no-install-recommends $builddeps \ + && builddeps="libtool automake autoconf gettext-dev m4 linux-headers" \ + && apk add --no-cache --virtual .build-deps $builddeps \ && cd "/usr/local/src/libfuse-fuse-$FUSE_VERSION" \ && ./makeconf.sh \ && builddir="/tmp/out" \ @@ -63,15 +67,15 @@ RUN set -x \ && "/usr/local/src/libfuse-fuse-$FUSE_VERSION/configure" \ && make "$PARALLELMFLAGS" install \ && rm -rf "$builddir" \ - && apt purge -y $builddeps + && apk del .build-deps ARG WEBSOCKETS_VERSION=3.1.0 RUN set -x \ - && apt install --yes --no-install-recommends \ + && apk add --no-cache \ ca-certificates \ openssl \ - libssl-dev \ + openssl-dev \ && builddir="/tmp/out" \ && mkdir -p "$builddir" \ && cd "$builddir" \ @@ -90,6 +94,7 @@ RUN set -x \ && rm -rf "$builddir" ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/lib" +ENV PKG_CONFIG_PATH=/usr/local/lib32/pkgconfig ARG USERID=1000 @@ -98,7 +103,7 @@ ARG OUTDIR=/workspace/out ARG SCRIPTDIR=/workspace/bin RUN set -x \ - && useradd -u "$USERID" -ms /bin/bash user \ + && adduser -u "$USERID" -s /bin/bash -D user \ && mkdir -p "$PROJECTDIR" "$OUTDIR" "$SCRIPTDIR" \ && chown user:user "$PROJECTDIR" "$OUTDIR" "$SCRIPTDIR" From 943499118471c99fc7f822d955bcbee8b911fd33 Mon Sep 17 00:00:00 2001 From: Falk Werner Date: Sat, 25 May 2019 03:18:25 +0200 Subject: [PATCH 3/3] enables coverage generation again (but uses guard) --- .travis.yml | 12 ++++++------ CMakeLists.txt | 35 ++++++++++++++++++----------------- Makefile | 3 +++ 3 files changed, 27 insertions(+), 23 deletions(-) diff --git a/.travis.yml b/.travis.yml index c4da690..9166367 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,13 +16,13 @@ env: - PARALLELMFLAGS="-j4" - PORTABLE_WORSPACE=1 matrix: - - BUILDTYPE=Debug MARCH=amd64 CHECK_TARGET=memcheck - - BUILDTYPE=Release MARCH=amd64 CHECK_TARGET=memcheck - - BUILDTYPE=Debug MARCH=arm32v7 CHECK_TARGET=check - - BUILDTYPE=MinSizeRel MARCH=arm32v7 CHECK_TARGET=check + - BUILDTYPE=Debug MARCH=amd64 CHECK_TARGET=memcheck COVERAGE=ON + - BUILDTYPE=Release MARCH=amd64 CHECK_TARGET=memcheck COVERAGE=OFF + - BUILDTYPE=Debug MARCH=arm32v7 CHECK_TARGET=check COVERAGE=OFF + - BUILDTYPE=MinSizeRel MARCH=arm32v7 CHECK_TARGET=check COVERAGE=OFF before_script: -- make BUILDTYPE=$BUILDTYPE MARCH=$MARCH +- make BUILDTYPE=$BUILDTYPE MARCH=$MARCH COVERAGE=$COVERAGE script: -- make BUILDTYPE=$BUILDTYPE MARCH=$MARCH $CHECK_TARGET +- make BUILDTYPE=$BUILDTYPE MARCH=$MARCH COVERAGE=$COVERAGE $CHECK_TARGET after_success: - bash <(curl -s https://codecov.io/bash) diff --git a/CMakeLists.txt b/CMakeLists.txt index a1170c1..58aac5d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,8 +1,9 @@ cmake_minimum_required (VERSION 3.10) project(webfuse VERSION 0.2.0 DESCRIPTION "Websocket filesystem based on libfuse") -option(WITHOUT_TESTS "disable unit tests" OFF) -option(WITHOUT_EXAMPLE "disable example" OFF) +option(WITHOUT_TESTS "disable unit tests" OFF) +option(WITHOUT_EXAMPLE "disable example" OFF) +option(WITH_COVERAGE "enable code coverage" OFF) set(THREADS_PREFER_PTHREAD_FLAG ON) find_package(Threads REQUIRED) @@ -22,24 +23,24 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) set(C_WARNINGS -Wall -Wextra) set(CMAKE_POSITION_INDEPENDENT_CODE ON) -#if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug") -# -#add_definitions( -# -pg -# --coverage -# -fprofile-arcs -# -ftest-coverage -#) +if(("${CMAKE_BUILD_TYPE}" STREQUAL "Debug") AND WITHOUT_COVERAGE) -#if(CMAKE_C_COMPILER_ID STREQUAL "GNU") -# link_libraries(gcov) -#else() -# set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --coverage") -#endif() +add_definitions( + -pg + --coverage + -fprofile-arcs + -ftest-coverage +) + +if(CMAKE_C_COMPILER_ID STREQUAL "GNU") + link_libraries(gcov) +else() + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --coverage") +endif() -#set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pg -fprofile-arcs") +set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pg -fprofile-arcs") -#endif() +endif() include_directories( "include" diff --git a/Makefile b/Makefile index 8c74204..2929f83 100644 --- a/Makefile +++ b/Makefile @@ -23,6 +23,7 @@ SCRIPTDIR ?= $(PROJECTDIR)/build/mkdocker OUTDIR ?= $(PROJECTDIR)/.build FETCHDIR ?= $(PROJECTDIR)/.deps BUILDTYPE ?= Debug +COVERAGE ?= OFF SKIP_FETCH ?= @@ -115,6 +116,8 @@ OUTDIRS += $(OUTDIR)/src EXTRACT_TARGETS += $(OUTDIR)/docker/qemu-arm-static-$(QEMU_VERSION) EXTRACT_TARGETS += $(patsubst $(FETCHDIR)/%.tar.gz,$(OUTDIR)/src/%,$(FETCH_TARGETS)) +CMAKEFLAGS += -DWITH_COVERAGE=$(COVERAGE) + ####################################################################################################################### # Makefile dependencies