Add support to send C coverage. Don't cache. Move hex plugin to Action

This commit is contained in:
Badlop
2021-06-30 09:21:41 +02:00
parent fb41900930
commit 9c49cf62a7
5 changed files with 105 additions and 25 deletions

View File

@@ -13,29 +13,29 @@ jobs:
runs-on: ubuntu-20.04 runs-on: ubuntu-20.04
container: container:
image: erlang:${{ matrix.otp }} image: erlang:${{ matrix.otp }}
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- name: Cache rebar3
uses: actions/cache@v2
with:
path: |
~/.cache/rebar3/
key: ${{matrix.otp}}-${{hashFiles('rebar.config')}}
- run: rebar3 compile - run: rebar3 compile
- run: rebar3 xref - run: rebar3 xref
- run: rebar3 dialyzer - run: rebar3 dialyzer
- run: rebar3 eunit -v - run: rebar3 eunit -v
cover:
name: Cover
needs: [tests]
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- run: ./configure --enable-gcov
- run: rebar3 compile
- run: rebar3 eunit -v
- run: pip install --user cpp-coveralls
- run: cpp-coveralls -b `pwd` --verbose --gcov-options '\-lp' --dump c.json
- name: Send to Coveralls - name: Send to Coveralls
if: matrix.otp == 24
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: | run: |
COVERALLS=true rebar3 as test coveralls send ADDJSONFILE=c.json COVERALLS=true rebar3 as test coveralls send
curl -v -k https://coveralls.io/webhook \ curl -v -k https://coveralls.io/webhook \
--header "Content-Type: application/json" \ --header "Content-Type: application/json" \
--data '{"repo_name":"$GITHUB_REPOSITORY", --data '{"repo_name":"$GITHUB_REPOSITORY",

View File

@@ -1,4 +1,4 @@
name: hexpm-release name: Hex
on: on:
push: push:
@@ -12,6 +12,11 @@ jobs:
- name: Check out - name: Check out
uses: actions/checkout@v2 uses: actions/checkout@v2
- name: Setup rebar3 hex
run: |
mkdir -p ~/.config/rebar3/
echo "{plugins, [rebar3_hex]}." > ~/.config/rebar3/rebar.config
- name: Publish to hex.pm - name: Publish to hex.pm
run: rebar3 hex publish --repo hexpm --yes || head rebar3.crashdump run: rebar3 hex publish --repo hexpm --yes || head rebar3.crashdump
env: env:

43
configure.ac Normal file
View File

@@ -0,0 +1,43 @@
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.53)
AC_PACKAGE_VERSION(1.0.0)
AC_INIT(sqlite3, 1.0.0, [], [])
# Checks for programs.
AC_PROG_CC
AC_PROG_MAKE_SET
if test "x$GCC" = "xyes"; then
CFLAGS="$CFLAGS -Wall"
fi
# Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
# Checks for library functions.
AC_FUNC_MALLOC
AC_HEADER_STDC
# Checks Erlang runtime and compiler
AC_ERLANG_NEED_ERL
AC_ERLANG_NEED_ERLC
# Checks and sets ERLANG_ROOT_DIR and ERLANG_LIB_DIR variable
# AC_ERLANG_SUBST_ROOT_DIR
# AC_ERLANG_SUBST_LIB_DIR
AC_ARG_ENABLE(gcov,
[AC_HELP_STRING([--enable-gcov], [compile with gcov enabled (default: no)])],
[case "${enableval}" in
yes) gcov=true ;;
no) gcov=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-gcov) ;;
esac],[gcov=false])
AC_SUBST(gcov)
AC_CONFIG_FILES([vars.config])
AC_OUTPUT

View File

@@ -1,10 +1,10 @@
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
%%% File : rebar.config.script %%% File : rebar.config
%%% Author : Evgeniy Khramtsov <ekhramtsov@process-one.net> %%% Author : Mickael Remond <mremond@process-one.net>
%%% Purpose : Rebar build script. Compliant with rebar and rebar3. %%% Purpose : Rebar build script. Compliant with rebar and rebar3.
%%% Created : 8 May 2013 by Evgeniy Khramtsov <ekhramtsov@process-one.net> %%% Created : 15 Dec 2015 by Mickael Remond <mremond@process-one.net>
%%% %%%
%%% Copyright (C) 2002-2017 ProcessOne, SARL. All Rights Reserved. %%% Copyright (C) 2002-2021 ProcessOne, SARL. All Rights Reserved.
%%% %%%
%%% Licensed under the Apache License, Version 2.0 (the "License"); %%% Licensed under the Apache License, Version 2.0 (the "License");
%%% you may not use this file except in compliance with the License. %%% you may not use this file except in compliance with the License.
@@ -19,17 +19,28 @@
%%% limitations under the License. %%% limitations under the License.
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
Cfg = case file:consult(filename:join([filename:dirname(SCRIPT),"vars.config"])) of
{ok, Terms} ->
Terms;
_Err ->
[]
end ++ [{cflags, "-g -O2 -Wall"}, {ldflags, ""}, {with_gcov, "false"}],
{cflags, CfgCFlags} = lists:keyfind(cflags, 1, Cfg),
{ldflags, CfgLDFlags} = lists:keyfind(ldflags, 1, Cfg),
{with_gcov, CfgWithGCov} = lists:keyfind(with_gcov, 1, Cfg),
SysVersion = lists:map(fun erlang:list_to_integer/1,
string:tokens(erlang:system_info(version), ".")),
IsRebar3 = case application:get_key(rebar, vsn) of IsRebar3 = case application:get_key(rebar, vsn) of
{ok, VSN} -> {ok, VSN} ->
[VSN1 | _] = string:tokens(VSN, "-+"), [VSN1 | _] = string:tokens(VSN, "-"),
[Maj, Min, Patch] = string:tokens(VSN1, "."), [Maj|_] = string:tokens(VSN1, "."),
(list_to_integer(Maj) >= 3); (list_to_integer(Maj) >= 3);
undefined -> undefined ->
lists:keymember(mix, 1, application:loaded_applications()) lists:keymember(mix, 1, application:loaded_applications())
end, end,
ModCfg0 = fun(F, Cfg, [Key|Tail], Op, Default) -> ModCfg0 = fun(F, Cfg, [Key|Tail], Op, Default) ->
{OldVal,PartCfg} = case lists:keytake(Key, 1, Cfg) of {OldVal,PartCfg} = case lists:keytake(Key, 1, Cfg) of
{value, {_, V1}, V2} -> {V1, V2}; {value, {_, V1}, V2} -> {V1, V2};
@@ -110,10 +121,26 @@ GithubConfig = case {os:getenv("GITHUB_ACTIONS"), os:getenv("GITHUB_TOKEN")} of
end, end,
Rules = [ Rules = [
{[port_env, "CFLAGS"], SysVersion >= [7, 3],
AppendStr("-DHAS_ERTS_EXIT"), "$CFLAGS"},
{[port_env, "CFLAGS"], true,
AppendStr(CfgCFlags), "$CFLAGS"},
{[port_env, "LDFLAGS"], true,
AppendStr(CfgLDFlags), "$LDFLAGS"},
{[post_hooks], (not IsRebar3) and (CfgWithGCov == "true"),
AppendList([{eunit, "gcov -o c_src mqtree"},
{eunit, "mv *.gcov .eunit/"}]), []},
{[post_hooks], IsRebar3 and (CfgWithGCov == "true"),
AppendList([{eunit, "gcov -o c_src mqtree"},
{eunit, "mv *.gcov _build/test/cover/"}]), []},
{[port_env, "LDFLAGS"], CfgWithGCov == "true",
AppendStr("--coverage"), ""},
{[port_env, "CFLAGS"], CfgWithGCov == "true",
AppendStr("--coverage"), ""},
{[deps], IsRebar3, {[deps], IsRebar3,
Rebar3DepsFilter, []}, Rebar3DepsFilter, []},
{[plugins], IsRebar3, {[plugins], IsRebar3,
AppendList([rebar3_hex, pc]), []}, AppendList([pc]), []},
{[provider_hooks], IsRebar3, {[provider_hooks], IsRebar3,
AppendList([{pre, [ AppendList([{pre, [
{compile, {pc, compile}}, {compile, {pc, compile}},
@@ -121,15 +148,14 @@ Rules = [
]}]), []}, ]}]), []},
{[plugins], os:getenv("COVERALLS") == "true", {[plugins], os:getenv("COVERALLS") == "true",
AppendList([{coveralls, {git, AppendList([{coveralls, {git,
"https://github.com/RoadRunnr/coveralls-erl.git", "https://github.com/processone/coveralls-erl.git",
{branch, "feature/git-info"}}} ]), []}, {branch, "addjsonfile"}}} ]), []},
{[deps], os:getenv("USE_GLOBAL_DEPS") /= false, {[deps], os:getenv("USE_GLOBAL_DEPS") /= false,
GlobalDepsFilter, []} GlobalDepsFilter, []}
], ],
Config = FilterConfig(FilterConfig, CONFIG, Rules) Config = FilterConfig(FilterConfig, CONFIG, Rules) ++ GithubConfig,
++ GithubConfig,
%io:format("Rules:~n~p~n~nCONFIG:~n~p~n~nConfig:~n~p~n", [Rules, CONFIG, Config]), %io:format("Rules:~n~p~n~nCONFIG:~n~p~n~nConfig:~n~p~n", [Rules, CONFIG, Config]),

6
vars.config.in Normal file
View File

@@ -0,0 +1,6 @@
{with_gcov, "@gcov@"}.
%% Local Variables:
%% mode: erlang
%% End:
%% vim: set filetype=erlang tabstop=8: