Skip to content

Instantly share code, notes, and snippets.

@zonggen
Last active November 19, 2019 20:27
Show Gist options
  • Save zonggen/655a08d86d2ed1dcbf046e85523ac402 to your computer and use it in GitHub Desktop.
Save zonggen/655a08d86d2ed1dcbf046e85523ac402 to your computer and use it in GitHub Desktop.
Build and Test Fedora-Coreos-Pinger Locally by Overriding RPM in FCOS
$ git clone https://src.fedoraproject.org/rpms/rust-fedora-coreos-pinger.git
$ cd rust-fedora-coreos-pinger && mkdir output

Then cargo package from the pinger repo and grab the .crate file into /rust-fedora-coreos-pinger.

Modify the spec file with correct version (attached below).

Create a Dockerfile which has the following:

FROM fedora:rawhide
WORKDIR /rpm
COPY . .
RUN dnf install -y rpmdevtools fedpkg dnf-plugins-core && \
    spectool -g rust-fedora-coreos-pinger.spec && \
    dnf -y builddep rust-fedora-coreos-pinger.spec
RUN fedpkg local; \
    dnf builddep -y *.nosrc.rpm; \
    fedpkg local; \
    exit 0
CMD yes | cp -r rust-fedora-coreos-pinger-0.0.5-2.fc32* ./output/ && \
    yes | cp -r x86_64/ ./output/

Replace the rust-fedora-coreos-pinger-0.0.5-2.fc32 with the corresponding output version.

$ podman run --rm -d --privileged -v ./output:/rpm/output --name rpm-container localhost/rpm-container

Copy the /output/x86 to overrides/rpm/ under FCOS directory and run cosa build.

# Generated by rust2rpm 10
%bcond_without check
%global __cargo_skip_build 0
%global crate fedora-coreos-pinger
Name: rust-%{crate}
Version: 0.0.5
Release: 2%{?dist}
Summary: Telemetry service for Fedora CoreOS
# Upstream license specification: Apache-2.0
License: ASL 2.0
URL: https://crates.io/crates/fedora-coreos-pinger
Source: fedora-coreos-pinger-0.0.5.crate
ExclusiveArch: %{rust_arches}
BuildRequires: rust-packaging
BuildRequires: systemd-rpm-macros
%global _description %{expand:
Telemetry service for Fedora CoreOS.}
%description %{_description}
%package -n %{crate}
Summary: %{summary}
%description -n %{crate} %{_description}
%files -n %{crate}
%doc README.md
%{_bindir}/fedora-coreos-pinger
%license LICENSE
%{_unitdir}/fedora-coreos-pinger.service
%dir %{_sysconfdir}/fedora-coreos-pinger
%dir %{_sysconfdir}/fedora-coreos-pinger/config.d
%attr(0775, fedora-coreos-pinger,fedora-coreos-pinger) %dir /run/fedora-coreos-pinger
%attr(0775, fedora-coreos-pinger,fedora-coreos-pinger) %dir /run/fedora-coreos-pinger/config.d
%dir %{_prefix}/lib/fedora-coreos-pinger
%dir %{_prefix}/lib/fedora-coreos-pinger/config.d
%{_prefix}/lib/fedora-coreos-pinger/config.d/10-default-enable.toml
%pre -n %{crate}
%post -n %{crate}
%systemd_post fedora-coreos-pinger.service
%preun -n %{crate}
%systemd_preun fedora-coreos-pinger.service
%postun -n %{crate}
%systemd_postun_with_restart fedora-coreos-pinger.service
%prep
%autosetup -n %{crate}-%{version_no_tilde} -p1
%cargo_prep
%generate_buildrequires
%cargo_generate_buildrequires
%build
%cargo_build
%install
%cargo_install
install -Dpm0644 -t %{buildroot}%{_unitdir} \
dist/systemd/*.service
mkdir -p %{buildroot}%{_sysconfdir}/fedora-coreos-pinger/config.d
mkdir -p %{buildroot}/run/fedora-coreos-pinger/config.d
mkdir -p %{buildroot}%{_prefix}/lib/fedora-coreos-pinger/config.d
install -Dpm0644 -t %{buildroot}%{_prefix}/lib/fedora-coreos-pinger/config.d \
dist/config.d/*.toml
%if %{with check}
%check
%cargo_test
%endif
%changelog
* Fri Jul 26 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.0.4-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Thu Jul 18 2019 Robert Fairley <rfairley@redhat.com> - 0.0.4-1
- Initial import (#1728378)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment