File hyper.spec of Package hyper

%define bname hyper
Name: %bname
Version: 1.0.0
Release: 1
Summary: HyperLogLog for Erlang
License: MIT
Group: Development/Tools/Other
URL: https://github.com/basho/%bname
Source: %bname-%version.tar.xz
#Patch: %bname-%version-git.patch
Provides: erlang-%bname = %version-release

BuildRequires: rpm-macros-erlang rpm-build-erlang
BuildRequires: rebar >= 2.6.1-7
# check
BuildRequires: erlang-proper

%description
This is an implementation of the HyperLogLog algorithm in Erlang.
Using HyperLogLog you can estimate the cardinality of very large data sets using
constant memory. The relative error is 1.04 * sqrt(2^P).
When creating a new HyperLogLog filter, you provide the precision P, allowing you
to trade memory for accuracy. The union of two filters is lossless.


%prep
%setup -q -n %bname-%version
#patch -p1
sed -i '/^-spec/d' src/hyper_gb.erl
sed -i '/^%%%%/s/@doc: //' src/hyper_register.erl
erl -noshell -eval '
A = "src/%bname.app.src",
{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, lists:keystore(modules, 1, L, {modules, []}), {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,
                          [{erl_opts, [slim, inline, no_debug_info|lists:delete(debug_info, proplists:get_value(erl_opts, L, []))]}
                           |lists:foldl(fun proplists:delete/2, L, [erl_opts, deps, cover_enabled])]),
                [raw]),
init:stop().'
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/doc
install -p -m 0644 doc/*.{css,html,png} %buildroot%_otplibdir/%bname-%version/doc/
install -d -m 0755 %buildroot%_docdir/%name
ln -sf %_otplibdir/%name-%version/doc %buildroot%_docdir/%name/html
install -p -m 0644 *.md %buildroot%_docdir/%name/


%check
rebar -C %bname.rebar.config eunit


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


%changelog
* Sun Aug 13 2017 Led <ledest@gmail.com> 1.0.0-1
- initial build
openSUSE Build Service is sponsored by