%define dracutlibdir %{_prefix}/lib/dracut
%bcond_without check

%global __cargo_skip_build 0
# The library is for internal code reuse and is not a public API
%global __cargo_is_lib 0

%global crate nestos-installer

Name:           rust-nestos-installer
Version:        0.20.0
Release:        3
Summary:        Installer for NestOS

License:        Apache-2.0
URL:            https://gitee.com/openeuler/nestos-installer
Source0:        https://gitee.com/openeuler/nestos-installer/repository/archive/v%{version}.tar.gz
Source1:        %{crate}-%{version}-vendor.tar.gz
Patch01:        0001-Block-unsupported-functions-and-modify-the-coreos-to-nestos.patch

BuildRequires:  rust-packaging openssl-devel libzstd-devel
BuildRequires:  systemd gnupg2

%global _description %{expand:
nestos-installer installs NestOS to bare-metal
machines (or, occasionally, to virtual machines).

NestOS is a Variant in openEuler from Fedora CoreOS.
}

%description %{_description}

%package     -n nestos-installer
Summary:        %{summary}
License:        ASL 2.0 and MIT and zlib

Requires:       gnupg
Requires:       kpartx
Requires:       systemd-udev
Requires:       util-linux

# Since `rust-nestos-installer` creates a `nestos-installer`
# subpackage with a newer version number, which supersedes the
# deprecated `nestos-installer` package ,
# an explicit `Obsoletes:` for `nestos-installer` is not necessary.

# Obsolete dracut modules as they are not provided in this package.
Obsoletes:      nestos-installer-dracut < 0.0.1

%description -n nestos-installer %{_description}

%files       -n nestos-installer
%license LICENSE
%doc README.*
%{_bindir}/nestos-installer

%prep
%autosetup -n %{crate}-v%{version} -p1
tar xvf %{SOURCE1}
mkdir -p .cargo
cat >.cargo/config << EOF

[source.crates-io]
replace-with = "vendored-sources"

[source.vendored-sources]
directory = "vendor"
EOF

%build
%cargo_build -f rdcore

%install
%cargo_install -f rdcore
# Install binaries, dracut modules, units, targets, generators for running via systemd
install -D -m 0755 -t %{buildroot}%{dracutlibdir}/modules.d/50rdcore dracut/50rdcore/module-setup.sh
install -D -m 0755 -t %{buildroot}%{_libexecdir} scripts/nestos-installer-service
install -D -m 0755 -t %{buildroot}%{_libexecdir} scripts/nestos-installer-disable-device-auto-activation
install -D -m 0644 -t %{buildroot}%{_unitdir} systemd/nestos-installer-disable-device-auto-activation.service
install -D -m 0644 -t %{buildroot}%{_unitdir} systemd/nestos-installer.service
install -D -m 0644 -t %{buildroot}%{_unitdir} systemd/nestos-installer-reboot.service
install -D -m 0644 -t %{buildroot}%{_unitdir} systemd/nestos-installer-noreboot.service
install -D -m 0644 -t %{buildroot}%{_unitdir} systemd/nestos-installer-pre.target
install -D -m 0644 -t %{buildroot}%{_unitdir} systemd/nestos-installer.target
install -D -m 0644 -t %{buildroot}%{_unitdir} systemd/nestos-installer-post.target
install -D -m 0755 -t %{buildroot}%{_systemdgeneratordir} systemd/nestos-installer-generator

cp -r $RPM_BUILD_DIR/%{crate}-v%{version}/.cargo/bin  %{buildroot}/usr
mv %{buildroot}%{_bindir}/rdcore %{buildroot}%{dracutlibdir}/modules.d/50rdcore/

%package     -n nestos-installer-bootinfra
Summary:     %{crate} boot-time infrastructure for use on Fedora/RHEL CoreOS
Requires:    %{crate}%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}
License:     ASL 2.0 and MIT and zlib

Provides:    %{crate}-systemd = %{version}-%{release}
Obsoletes:   %{crate}-systemd <= 0.3.0-3

%description -n %{crate}-bootinfra
This subpackage contains boot-time infrastructure for NestOS.  It is not needed on other platforms.

%files       -n %{crate}-bootinfra
%{dracutlibdir}/modules.d/*
%{_libexecdir}/*
%{_unitdir}/*
%{_systemdgeneratordir}/*


%changelog
* Fri May 24 2024 duyiwei <duyiwei@kylinos.cn> - 0.20.0-3
- update patch 0001 to unsupport NestOS stream

* Fri May 10 2024 duyiwei <duyiwei@kylinos.cn> - 0.20.0-2
- Block unsupported functions and modify the coreos to nestos

* Thu Jan 25 2024 duyiwei <duyiwei@kylinos.cn> - 0.20.0-1
- upgrade version to 0.20.0

* Wed Jan 24 2024 duyiwei <duyiwei@kylinos.cn> - 0.18.0-1
- upgrade version to 0.18.0

* Tue Jan 23 2024 duyiwei <duyiwei@kylinos.cn> - 0.17.0-1
- upgrade version to 0.17.0

* Wed Dec 27 2023 wangyueliang <wangyueliang@kylinos.cn> - 0.16.0-5
- unify adapt to NestOS patches

* Fri Sep 22 2023 duyiwei7w <duyiwei@kylinos.cn> - 0.16.0-4
- modify-coreos-rootflags-to-fix-nestos-install-problem

* Thu Dec 15 2022 dingdingaaaaa <dingziwei@kylinos.cn> - 0.16.0-3
- License compliance rectification

* Thu Dec 08 2022 fushanqing <fushanqing@kylinos.cn> - 0.16.0-2
- Enable debuginfo for fix strip

* Wed Nov 16 2022 fushanqing <fushanqing@kylinos.cn> - 0.16.0-1
- update to 0.16.0

* Tue Aug 23 2022 fushanqing <fushanqing@kylinos.cn> - 0.14.0-2
- fix 'nestos-installer iso' command error

* Mon Jun 13 2022 duyiwei <duyiwei@kylinos.cn> - 0.14.0-1
- upgrade to 0.14.0

* Wed Jun 08 2022 duyiwei <duyiwei@kylinos.cn> - 0.10.0-2
- change tar.gz to be the same with upstream

* Thu Mar 17 2022  duyiwei <duyiwei@kylinos.cn> - 0.10.1-1
- init package
