File chatterbox.spec of Package chatterbox

%define bname chatterbox
Name: %bname
Version: 0.8.0
Release: 5
Summary: HTTP/2 Server for Erlang
License: MIT
Group: Development/Tools/Other
URL: https://github.com/joedevivo/%bname
Source: %bname-%version.tar.xz
Patch0: %bname-%version-git.patch
Patch1: %bname-0.5.0-fix-test.patch
Patch2: %bname-0.8.0-ssl.patch
BuildArch: noarch
Provides: erlang-%bname = %version-%release
Provides: %bname-devel = %version-%release
Provides: erlang-%bname-devel = %version-%release

BuildRequires: rpm-macros-erlang rpm-build-erlang
BuildRequires: rebar >= 2.6.1-7
BuildRequires: erlang-lager-devel
# behaviour
BuildRequires: erlang-otpbp-devel >= 4.26.0
BuildRequires: erlang-otpbp >= 4.26.0
# check
%if_enabled ct
BuildRequires: erlang-lager erlang-ranch erlang-hpack
BuildRequires: erlang-common_test erlang-cth_readable
%endif

%description
Chatterbox is an HTTP/2 library for Erlang. Use as much of it as you want,
but the goal is to implement as much of RFC-7540 as possible, 100% of the time.


%package doc
Summary: Documentation of %bname
Group: Documentation/HTML
Provides: erlang-%bname-doc = %version-%release

%description doc
Documentation of %bname.


%prep
%setup -q -n %bname-%version
%patch0 -p1
%patch1 -p1
%patch2 -p1
erl -noshell -eval '
{ok, [{application, %bname, L}]} = file:consult("src/%bname.app.src"),
file:write_file("src/%bname.app.src",
                io_lib:format("{application, %bname, ~81p}.~n", [lists:keystore(vsn, 1, L, {vsn, "%version"})]),
                [raw]),
init:stop().'


%build
erl -noshell -eval '
{ok, L} = file:consult("rebar.config"),
file:write_file("%bname.rebar.config",
                lists:map(fun(E) -> [io_lib:print(E), ".\n"] end,
                          lists:keystore(edoc_opts, 1, lists:keydelete(deps, 1, L), {edoc_opts, [{preprocess, true}]})),
                [raw]),
init:stop().'
%if %_otp_release >= 19
ERL_COMPILER_OPTIONS="[inline,verbose]" \
%else
ERL_COMPILER_OPTIONS="[inline,verbose,{parse_transform,otpbp_pt}]" \
%endif
rebar %{?_smp_mflags} -C %bname.rebar.config compile -v
rebar %{?_smp_mflags} -C %bname.rebar.config doc -v


%install
install -d -m 0755 %buildroot%_otplibdir/%bname-%version/ebin
install -p -m 0644 ebin/* %buildroot%_otplibdir/%bname-%version/ebin/
install -d -m 0755 %buildroot%_otplibdir/%bname-%version/include
install -p -m 0644 include/* %buildroot%_otplibdir/%bname-%version/include/
install -d -m 0755 %buildroot%_otplibdir/%bname-%version/priv
install -p -m 0644 priv/* %buildroot%_otplibdir/%bname-%version/priv/
install -d -m 0755 %buildroot%_otplibdir/%bname-%version/config
install -p -m 0644 config/* %buildroot%_otplibdir/%bname-%version/config/
install -d -m 0755 %buildroot%_otplibdir/%bname-%version/doc
install -p -m 0644 doc/*.{css,html,png} %buildroot%_otplibdir/%bname-%version/doc/
install -d -m 0755 %buildroot%_docdir/%name
ln -sf %_otplibdir/%bname-%version/doc %buildroot%_docdir/%name/html
install -p -m 0644 README* %buildroot%_docdir/%name/


%check
%if %_otp_release >= 19
export ERL_COMPILER_OPTIONS="[inline,verbose,nowarn_export_all]"
%else
export ERL_COMPILER_OPTIONS="[inline,verbose,{parse_transform,otpbp_pt}]"
%endif
rebar -C %bname.rebar.config eunit -v
%{?_enable_ct:rebar -j1 -C %bname.rebar.config ct}


%files
%defattr(-,root,root)
%_otplibdir/*
%exclude %_otplibdir/%bname-*/doc


%files doc
%defattr(-,root,root)
%doc %_docdir/%name
%doc %dir %_otplibdir/%bname-*
%doc %_otplibdir/%bname-*/doc


%changelog
* Sat Aug 06 2022 Led <ledest@gmail.com> 0.8.0-5
- git c0506c7
- add nowarn_export_all to erl_opts on %%check

* Sat Aug 06 2022 Led <ledest@gmail.com> 0.8.0-4
- update BuildRequires

* Mon Sep 16 2019 Led <ledest@gmail.com> 0.8.0-3
- fix build doc

* Mon Sep 16 2019 Led <ledest@gmail.com> 0.8.0-2
- update BuildRequires

* Mon Sep 16 2019 Led <ledest@gmail.com> 0.8.0-1
- git ff0c2e0
- add patches:
  + chatterbox-0.8.0-ssl.patch

* Sun Oct 22 2017 Led <ledest@gmail.com> 0.5.0-1
- initial build
openSUSE Build Service is sponsored by