Vendor rust dependencies on RHEL only & add coreos-installer-dracut subpackage

This commit is contained in:
Sohan Kunkerkar 2021-10-12 13:59:11 -04:00 committed by Sohan Kunkerkar
parent d99c1a3c7c
commit a23a0f036b
3 changed files with 71 additions and 5 deletions

1
.gitignore vendored
View File

@ -12,3 +12,4 @@
/coreos-installer-0.9.1.crate
/coreos-installer-0.10.0.crate
/coreos-installer-0.10.1.crate
/coreos-installer-dracut-bbefcb8.tar.gz

View File

@ -5,6 +5,9 @@
# The library is for internal code reuse and is not a public API
%global __cargo_is_lib 0
%global dracutcommit bbefcb88b9ea092be68baf191849a349b09a1f3b
%global dracutshortcommit %(c=%{dracutcommit}; echo ${c:0:7})
%global crate coreos-installer
Name: rust-%{crate}
@ -15,11 +18,23 @@ Summary: Installer for Fedora CoreOS and RHEL CoreOS
# Upstream license specification: Apache-2.0
License: ASL 2.0
URL: https://crates.io/crates/coreos-installer
Source: %{crates_source}
%if 0%{?rhel} && !0%{?eln}
Source0: https://crates.io/api/v1/crates/%{crate}/%{version}/download#/%{crate}-%{version}.crate
Source1: https://github.com/coreos/%{crate}/releases/download/v%{version}/%{crate}-%{version}-vendor.tar.gz
%else
Source0: %{crates_source}
%endif
Source2: https://github.com/coreos/coreos-installer-dracut/archive/%{dracutcommit}/coreos-installer-dracut-%{dracutshortcommit}.tar.gz
ExclusiveArch: %{rust_arches}
%if 0%{?rhel} && !0%{?eln}
BuildRequires: rust-toolset
BuildRequires: openssl-devel
# To ensure we're not bundling system libraries
BuildRequires: xz-devel
%else
BuildRequires: rust-packaging
%endif
BuildRequires: systemd-rpm-macros
# For tests
BuildRequires: gnupg2
@ -71,19 +86,49 @@ Obsoletes: coreos-installer-dracut < 0.0.1
%{_bindir}/coreos-installer
%prep
%autosetup -n %{crate}-%{version_no_tilde} -p1
%autosetup -n %{crate}-%{version} -p1 -a 2
%if 0%{?rhel} && !0%{?eln}
tar xvf %{SOURCE1}
mkdir -p .cargo
cat >.cargo/config << EOF
[source.crates-io]
replace-with = "vendored-sources"
[source.vendored-sources]
directory = "vendor"
EOF
%else
%cargo_prep
%endif
# Fix SIGSEGV in tests on s390x
# https://bugzilla.redhat.com/show_bug.cgi?id=1883457
sed -i 's/"-Ccodegen-units=1",//' .cargo/config
%if !0%{?rhel} || 0%{?eln}
%generate_buildrequires
%cargo_generate_buildrequires -f rdcore
%endif
%build
%if 0%{?rhel} && !0%{?eln}
%cargo_build
%else
%cargo_build -f rdcore
%endif
%install
%if 0%{?rhel} && !0%{?eln}
%make_install
# 51coreos-installer for coreos-installer-dracut
install -D -m 0755 -t %{buildroot}%{dracutlibdir}/modules.d/51coreos-installer coreos-installer-dracut-%{dracutcommit}/dracut/51coreos-installer/module-setup.sh
install -D -m 0755 -t %{buildroot}%{dracutlibdir}/modules.d/51coreos-installer coreos-installer-dracut-%{dracutcommit}/dracut/scripts/coreos-installer-service
install -D -m 0755 -t %{buildroot}%{dracutlibdir}/modules.d/51coreos-installer coreos-installer-dracut-%{dracutcommit}/dracut/scripts/coreos-installer-growfs
install -D -m 0644 -t %{buildroot}%{dracutlibdir}/modules.d/51coreos-installer coreos-installer-dracut-%{dracutcommit}/dracut/systemd/coreos-installer.service
install -D -m 0644 -t %{buildroot}%{dracutlibdir}/modules.d/51coreos-installer coreos-installer-dracut-%{dracutcommit}/dracut/systemd/coreos-installer-growfs.service
install -D -m 0644 -t %{buildroot}%{dracutlibdir}/modules.d/51coreos-installer coreos-installer-dracut-%{dracutcommit}/dracut/systemd/coreos-installer-reboot.service
install -D -m 0644 -t %{buildroot}%{dracutlibdir}/modules.d/51coreos-installer coreos-installer-dracut-%{dracutcommit}/dracut/systemd/coreos-installer-noreboot.service
install -D -m 0755 -t %{buildroot}%{dracutlibdir}/modules.d/51coreos-installer coreos-installer-dracut-%{dracutcommit}/dracut/systemd/coreos-installer-generator
%else
%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
@ -98,6 +143,7 @@ install -D -m 0644 -t %{buildroot}%{_unitdir} systemd/coreos-installer.target
install -D -m 0644 -t %{buildroot}%{_unitdir} systemd/coreos-installer-post.target
install -D -m 0755 -t %{buildroot}%{_systemdgeneratordir} systemd/coreos-installer-generator
mv %{buildroot}%{_bindir}/rdcore %{buildroot}%{dracutlibdir}/modules.d/50rdcore/
%endif
%package -n %{crate}-bootinfra
Summary: %{crate} boot-time infrastructure for use on Fedora/RHEL CoreOS
@ -124,14 +170,32 @@ RHEL CoreOS. It is not needed on other platforms.
%{_unitdir}/*
%{_systemdgeneratordir}/*
%if 0%{?rhel} && !0%{?eln}
%package -n %{crate}-dracut
Summary: Dracut module for running coreos-installer in the initrd
Requires: %{crate} = %{version}-%{release}
%description -n %{crate}-dracut
This subpackage contains files and configuration to run coreos-installer
from the initramfs.
%files -n %{crate}-dracut
%{dracutlibdir}/modules.d/51coreos-installer/*
%endif
%if %{with check}
%check
%if 0%{?rhel} && !0%{?eln}
%cargo_test
%else
%cargo_test -f rdcore
%endif
%endif
%changelog
* Tue Oct 12 2021 Benjamin Gilbert <bgilbert@redhat.com> - 0.10.1-2
- Rebuild for F33 bump
* Thu Nov 04 2021 Sohan Kunkerkar <skunkerk@redhat.com> - 0.10.1-2
- Vendor rust dependencies on RHEL only
- Add coreos-installer-dracut subpackage on RHEL only
* Mon Oct 11 2021 Benjamin Gilbert <bgilbert@redhat.com> - 0.10.1-1
- New release

View File

@ -1 +1,2 @@
SHA512 (coreos-installer-0.10.1.crate) = 33ca2d4d13ce6a0c42b4f2b8ef0206e8dd1a91b377363ce908f265540b40653be7e3d0baa0cd0b308877be656c3bfd40d1a368f94da2b619f71f5ba635af9076
SHA512 (coreos-installer-dracut-bbefcb8.tar.gz) = 79336d4cf779e4acfa012381de9ca7438345c9019b0a27fddbaf8df16333709d93a0fa4be6ff5e62d83cc2004bf5e5d9b189e49ef8c8eb9f04f1a713b62530f8