File rust-alfis.spec of Package rust-alfis

# rust-alfis.spec
# Generated by rust2rpm 16
%bcond_with check
%global __cargo_skip_build 0

%global crate alfis

Name:           rust-%{crate}
Version:        0.8.4
Release:        1%{?dist}
Summary:        Alternative Free Identity System

# Upstream license specification: None
License:        AGPLv3+

URL:            https://github.com/Revertron/Alfis
Source:         https://github.com/Revertron/Alfis/archive/v%{version}/%{crate}-%{version}.tar.gz
# Automatically generated patch to strip foreign dependencies
Patch0:         alfis-fix-metadata-auto.diff
Patch1:         alfis-fix-deps.patch

ExclusiveArch:  %{rust_arches}
%if %{__cargo_skip_build}
BuildArch:      noarch
%endif

BuildRequires:  systemd-rpm-macros
BuildRequires:  rust-packaging >= 21

%global _description %{expand:
%{summary}.}

%description %{_description}

%if ! %{__cargo_skip_build}
%package     -n %{crate}
Summary:        %{summary}
Requires:       systemd
Requires(pre):  %{_bindir}/getent
Requires(pre):  %{_sbindir}/useradd
Requires(pre):  %{_sbindir}/groupadd

%description -n %{crate} %{_description}

%pre         -n %{crate}
%{_bindir}/getent group alfis >/dev/null || %{_sbindir}/groupadd -r alfis
%{_bindir}/getent passwd alfis >/dev/null || \
    %{_sbindir}/useradd -r -g alfis -d /var/lib/alfis -s /sbin/nologin \
                        -c 'Alfis User' alfis

%post        -n %{crate}
%systemd_post alfis.service

%preun       -n %{crate}
%systemd_preun alfis.service

%postun      -n %{crate}
%systemd_postun_with_restart alfis.service

%files       -n %{crate}
%license LICENSE
%doc README.md
%{_bindir}/alfis
%{_unitdir}/alfis.service
%{_unitdir}/alfis-default-config.service
%{_sysusersdir}/alfis.conf
%{_tmpfilesdir}/alfis.conf
%attr(0750,alfis,alfis) %dir /var/lib/alfis
%endif

%package        devel
Summary:        %{summary}
BuildArch:      noarch

%description    devel %{_description}

This package contains library source intended for building other packages
which use "%{crate}" crate.

%files          devel
%license LICENSE
%doc README.md
%{crate_instdir}/

%package     -n %{name}+default-devel
Summary:        %{summary}
BuildArch:      noarch

%description -n %{name}+default-devel %{_description}

This package contains library source intended for building other packages
which use "default" feature of "%{crate}" crate.

%files       -n %{name}+default-devel
%ghost %{crate_instdir}/Cargo.toml

%package     -n %{name}+doh-devel
Summary:        %{summary}
BuildArch:      noarch

%description -n %{name}+doh-devel %{_description}

This package contains library source intended for building other packages which
use the "doh" feature of the "%{crate}" crate.

%files       -n %{name}+doh-devel
%ghost %{crate_instdir}/Cargo.toml

%package     -n %{name}+edge-devel
Summary:        %{summary}
BuildArch:      noarch

%description -n %{name}+edge-devel %{_description}

This package contains library source intended for building other packages
which use "edge" feature of "%{crate}" crate.

%files       -n %{name}+edge-devel
%ghost %{crate_instdir}/Cargo.toml

%package     -n %{name}+open-devel
Summary:        %{summary}
BuildArch:      noarch

%description -n %{name}+open-devel %{_description}

This package contains library source intended for building other packages
which use "open" feature of "%{crate}" crate.

%files       -n %{name}+open-devel
%ghost %{crate_instdir}/Cargo.toml

%package     -n %{name}+tinyfiledialogs-devel
Summary:        %{summary}
BuildArch:      noarch

%description -n %{name}+tinyfiledialogs-devel %{_description}

This package contains library source intended for building other packages
which use "tinyfiledialogs" feature of "%{crate}" crate.

%files       -n %{name}+tinyfiledialogs-devel
%ghost %{crate_instdir}/Cargo.toml

%package     -n %{name}+ureq-devel
Summary:        %{summary}
BuildArch:      noarch

%description -n %{name}+ureq-devel %{_description}

This package contains library source intended for building other packages which
use the "ureq" feature of the "%{crate}" crate.

%files       -n %{name}+ureq-devel
%ghost %{crate_instdir}/Cargo.toml

%package     -n %{name}+web-view-devel
Summary:        %{summary}
BuildArch:      noarch

%description -n %{name}+web-view-devel %{_description}

This package contains library source intended for building other packages
which use "web-view" feature of "%{crate}" crate.

%files       -n %{name}+web-view-devel
%ghost %{crate_instdir}/Cargo.toml

%package     -n %{name}+webgui-devel
Summary:        %{summary}
BuildArch:      noarch

%description -n %{name}+webgui-devel %{_description}

This package contains library source intended for building other packages
which use "webgui" feature of "%{crate}" crate.

%files       -n %{name}+webgui-devel
%ghost %{crate_instdir}/Cargo.toml

%prep
%autosetup -n Alfis-%{version_no_tilde} -p1
%cargo_prep

%generate_buildrequires
%cargo_generate_buildrequires

%build
%cargo_build

%install
%cargo_install
install -m 0644 -D contrib/systemd/alfis.service \
        %{buildroot}/%{_unitdir}/alfis.service
install -m 0644 -D contrib/systemd/alfis-default-config.service \
        %{buildroot}/%{_unitdir}/alfis-default-config.service
install -m 0644 -D contrib/systemd/alfis.sysusers \
        %{buildroot}/%{_sysusersdir}/alfis.conf
install -m 0644 -D contrib/systemd/alfis.tmpfiles \
        %{buildroot}/%{_tmpfilesdir}/alfis.conf
install -m 0750 -d %{buildroot}/var/lib/alfis

%if %{with check}
%check
%cargo_test
%endif