diff --git a/rust-zincati.spec b/rust-zincati.spec new file mode 100644 index 0000000..f91076b --- /dev/null +++ b/rust-zincati.spec @@ -0,0 +1,124 @@ +%bcond_without check +%global __cargo_skip_build 0 +%define debug_package %{nil} +%global crate zincati + +Name: rust-%{crate} +Version: 0.0.18 +Release: 1 +Summary: Update agent for NestOS +License: ASL 2.0 +URL: https://crates.io/crates/%{crate} +Source0: %{crate}-%{version}.crate +Source1: https://github.com/coreos/%{crate}/releases/download/v%{version}/%{crate}-%{version}-vendor.tar.gz +Patch0: zincati-fix-metadata.diff + +BuildRequires: rust-packaging +BuildRequires: systemd openssl-devel + +Requires: polkit + +%global _description %{expand: +Update agent for NestOS.} + +%description %{_description} + +%package -n %{crate} +Summary: %{summary} +License: ASL 2.0 and BSD and MIT and MPLv2.0 and zlib + +%description -n %{crate} %{_description} + +%files -n %{crate} +%{_libexecdir}/zincati +%doc README.md +%license COPYRIGHT LICENSE +%dir %{_prefix}/lib/%{crate} +%dir %{_prefix}/lib/%{crate}/config.d +%{_prefix}/lib/%{crate}/config.d/*.toml +%attr(0775, zincati, zincati) %dir /run/%{crate} +%attr(0775, zincati, zincati) %dir /run/%{crate}/config.d +%attr(0770, zincati, zincati) %dir /run/%{crate}/private +%attr(0775, zincati, zincati) %dir /run/%{crate}/public +%verify(not size mtime md5) /run/%{crate}/public/metrics.promsock +%verify(not size mtime md5) /run/%{crate}/private/metrics.promsock +%dir %{_sysconfdir}/%{crate} +%dir %{_sysconfdir}/%{crate}/config.d +%{_unitdir}/zincati.service +%{_sysusersdir}/50-zincati.conf +%{_tmpfilesdir}/zincati.conf +%{_datadir}/polkit-1/rules.d/zincati.rules +%{_datadir}/polkit-1/actions/org.coreos.zincati.* + +%post -n %{crate} +%systemd_post zincati.service + +%preun -n %{crate} +%systemd_preun zincati.service + +%postun -n %{crate} +%systemd_postun_with_restart zincati.service + +%prep +%autosetup -n %{crate}-%{version} -p1 +%patch0 -R -p1 +%cargo_prep +tar xvf %{SOURCE1} +mv $RPM_BUILD_DIR/zincati-0.0.18/target/vendor $RPM_BUILD_DIR/zincati-0.0.18 +mkdir -p .cargo +cat >.cargo/config << EOF + +[build] +rustc = "%{__rustc}" +rustdoc = "%{__rustdoc}" +rustflags = %{__global_rustflags_toml} + +[install] +root = "%{buildroot}%{_prefix}" + +[term] +verbose = true + +[source.crates-io] +replace-with = "vendored-sources" + +[source.vendored-sources] +directory = "vendor" +EOF + +%build +%cargo_build + +%install +%cargo_install +# `zincati` should not be executed directly by users, so we move the binary +# out of `/usr/bin`. See: https://github.com/coreos/fedora-coreos-tracker/issues/244 +mkdir -p %{buildroot}%{_libexecdir} +mv %{buildroot}%{_bindir}/zincati %{buildroot}%{_libexecdir}/zincati +install -Dpm0644 -t %{buildroot}%{_prefix}/lib/%{crate}/config.d \ + dist/config.d/*.toml +mkdir -p %{buildroot}/run/%{crate}/config.d +mkdir -p %{buildroot}/run/%{crate}/private +mkdir -p %{buildroot}/run/%{crate}/public +touch %{buildroot}/run/%{crate}/public/metrics.promsock +mkdir -p %{buildroot}%{_sysconfdir}/%{crate}/config.d +install -Dpm0644 -t %{buildroot}%{_unitdir} \ + dist/systemd/system/*.service +install -Dpm0644 -t %{buildroot}%{_sysusersdir} \ + dist/sysusers.d/*.conf +install -Dpm0644 -t %{buildroot}%{_tmpfilesdir} \ + dist/tmpfiles.d/*.conf +install -Dpm0644 -t %{buildroot}%{_datadir}/polkit-1/rules.d \ + dist/polkit-1/rules.d/*.rules +install -Dpm0644 -t %{buildroot}%{_datadir}/polkit-1/actions \ + dist/polkit-1/actions/org.coreos.zincati.* +ln -snf /run/%{crate}/public/metrics.promsock %{buildroot}/run/%{crate}/private/metrics.promsock + +%if %{with check} +%check +%cargo_test +%endif + +%changelog +* Mon Dec 27 2021 duyiwei - 0.0.18-1 +- Package init diff --git a/zincati-0.0.18-vendor.tar.gz b/zincati-0.0.18-vendor.tar.gz new file mode 100644 index 0000000..9d4e24a Binary files /dev/null and b/zincati-0.0.18-vendor.tar.gz differ diff --git a/zincati-0.0.18.crate b/zincati-0.0.18.crate new file mode 100644 index 0000000..751eb70 Binary files /dev/null and b/zincati-0.0.18.crate differ diff --git a/zincati-fix-metadata.diff b/zincati-fix-metadata.diff new file mode 100644 index 0000000..4a2e063 --- /dev/null +++ b/zincati-fix-metadata.diff @@ -0,0 +1,25 @@ + +--- zincati-0.0.18/Cargo.toml ++++ zincati-0.0.18/Cargo.toml +@@ -89,7 +89,7 @@ version = "2.1" + features = ["serde"] + + [dependencies.prometheus] +-version = "0.11" ++version = "0.10" + default-features = false + + [dependencies.rand] +@@ -128,10 +128,10 @@ features = ["serde"] + version = "0.2" + + [dev-dependencies.mockito] +-version = "0.29" ++version = "0.28" + + [dev-dependencies.proptest] +-version = "1.0" ++version = "0.10" + + [features] + failpoints = ["fail/failpoints"]