From 4119c68b8b4c23724d3fbf0f85280decc12178d4 Mon Sep 17 00:00:00 2001 From: Lokesh Mandvekar Date: Fri, 26 Jan 2024 17:14:44 +0530 Subject: [PATCH] Packit/RPM: Initial add of config and rpm spec Include validate and unit tests using TMT. Also cleanup a leftover double quote in test.sh from previous commit. Signed-off-by: Lokesh Mandvekar --- .fmf/version | 1 + .packit.yaml | 60 ++++++++++++++++++++++++++++++++++ plans/main.fmf | 23 +++++++++++++ rpm/crun-vm.spec | 85 ++++++++++++++++++++++++++++++++++++++++++++++++ test.sh | 2 +- 5 files changed, 170 insertions(+), 1 deletion(-) create mode 100644 .fmf/version create mode 100644 .packit.yaml create mode 100644 plans/main.fmf create mode 100644 rpm/crun-vm.spec diff --git a/.fmf/version b/.fmf/version new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/.fmf/version @@ -0,0 +1 @@ +1 diff --git a/.packit.yaml b/.packit.yaml new file mode 100644 index 0000000..7fa734e --- /dev/null +++ b/.packit.yaml @@ -0,0 +1,60 @@ +--- +# See the documentation for more information: +# https://packit.dev/docs/configuration/ + +specfile_path: rpm/crun-vm.spec + +srpm_build_deps: + - cargo + - make + - openssl-devel + +jobs: + - job: copr_build + trigger: pull_request + notifications: + failure_comment: + message: "Ephemeral COPR build failed. @containers/packit-build please check." + targets: + fedora-all-x86_64: {} + fedora-all-aarch64: {} + fedora-eln-x86_64: + additional_repos: + - "https://kojipkgs.fedoraproject.org/repos/eln-build/latest/x86_64/" + fedora-eln-aarch64: + additional_repos: + - "https://kojipkgs.fedoraproject.org/repos/eln-build/latest/aarch64/" + additional_repos: + - "copr://rhcontainerbot/podman-next" + enable_net: true + + # Run on commit to main branch + - job: copr_build + trigger: commit + notifications: + failure_comment: + message: "podman-next COPR build failed. @containers/packit-build please check." + branch: main + owner: rhcontainerbot + project: podman-next + enable_net: true + + # Unit tests + - job: tests + trigger: pull_request + skip_build: true + targets: + - fedora-all-aarch64 + - fedora-all-x86_64 + identifier: unit_test + tmt_plan: "/plans/unit_test" + + # Validate test + - job: tests + trigger: pull_request + skip_build: true + targets: + # Only need to test on one target + - fedora-latest-stable-x86_64 + identifier: validate_test + tmt_plan: "/plans/validate_test" diff --git a/plans/main.fmf b/plans/main.fmf new file mode 100644 index 0000000..c34d04a --- /dev/null +++ b/plans/main.fmf @@ -0,0 +1,23 @@ +prepare: + - name: Install dependencies + how: install + package: + - cargo + - clippy + - make + - podman + - rustfmt + +/unit_test: + summary: Run unit tests + execute: + how: tmt + script: | + cargo install nextest + PATH=/root/.cargo/bin make unit + +/validate_test: + summary: Run validate test + execute: + how: tmt + script: make validate diff --git a/rpm/crun-vm.spec b/rpm/crun-vm.spec new file mode 100644 index 0000000..3a53413 --- /dev/null +++ b/rpm/crun-vm.spec @@ -0,0 +1,85 @@ +# trust-dns-{client,server} not available +# using vendored deps + +# RHEL doesn't include the package rust-packaging which provides %%__cargo macro, but EPEL +# does. So we set it separately here and skip rust-packaging dependency for RHEL. +# Buildability without EPEL is essential for packit builds. +# ELN doesn't need this. +%if %{defined rhel} && 0%{?rhel} < 10 +%define __cargo %{_bindir}/env CARGO_HOME=.cargo RUSTC_BOOTSTRAP=1 RUSTFLAGS='-Copt-level=3 -Cdebuginfo=2 -Ccodegen-units=1 -Clink-arg=-Wl,-z,relro -Clink-arg=-Wl,-z,now --cap-lints=warn' %{_bindir}/cargo +%endif + +%if %{defined copr_username} +%define copr_build 1 +%endif + +%global with_debug 1 + +%if 0%{?with_debug} +%global _find_debuginfo_dwz_opts %{nil} +%global _dwz_low_mem_die_limit 0 +%else +%global debug_package %{nil} +%endif + +Name: crun-vm +%if %{defined copr_build} +Epoch: 102 +%endif +# DO NOT TOUCH the Version string! +# The TRUE source of this specfile is: +# https://github.com/containers/crun-vm/blob/main/rpm/crun-vm.spec +# If that's what you're reading, Version must be 0, and will be updated by Packit for +# copr and koji builds. +# If you're reading this on dist-git, the version is automatically filled in by Packit. +Version: 0 +# The `AND` needs to be uppercase in the License for SPDX compatibility +License: (Apache-2.0 OR BSL-1.0) AND (Apache-2.0 OR MIT) AND (MIT OR Apache-2.0) AND (MIT OR Unlicense) AND Apache-2.0 AND GPL-2.0-or-later AND MIT AND MPL-2.0 AND MPL-2.0+ AND Unicode-DFS-2016 +Release: %autorelease +%if %{defined golang_arches_future} +ExclusiveArch: %{golang_arches_future} +%else +ExclusiveArch: aarch64 ppc64le s390x x86_64 +%endif +Summary: OCI Runtime to run QEMU-compatible VM images +URL: https://github.com/containers/%{name} +# Tarballs fetched from upstream's release page +Source0: %{url}/archive/%{version}.tar.gz +BuildRequires: cargo +BuildRequires: git-core +BuildRequires: libselinux-devel +BuildRequires: make +%if %{defined rhel} +# rust-toolset requires the `local` repo enabled on non-koji ELN build environments +BuildRequires: rust-toolset +%else +BuildRequires: rust-packaging +BuildRequires: rust-srpm-macros +%endif + +%description +%{summary} + +%prep +%autosetup -Sgit -n %{name}-%{version} + +%build +%{__make} CARGO="%{__cargo}" build + +%install +%{__make} DESTDIR=%{buildroot} PREFIX=%{_prefix} install + +%files +%license LICENSE +%{_bindir}/%{name} + +%changelog +%if %{defined autochangelog} +%autochangelog +%else +# NOTE: This changelog will be visible on CentOS Stream 8/9 builds +# Other envs are capable of handling autochangelog +* Mon Jan 16 2024 RH Container Bot +- Placeholder changelog for envs that are not autochangelog-ready +- Contact upstream if you need to report an issue with the build. +%endif diff --git a/test.sh b/test.sh index e9744c1..dc64aa3 100755 --- a/test.sh +++ b/test.sh @@ -43,7 +43,7 @@ done nextest_run=( nextest run \ --all-targets --all-features --failure-output=never \ - -- "${@/#/test_run::engine_}"" + -- "${@/#/test_run::engine_}" ) if command -v cargo-nextest &> /dev/null; then