Skip to content

Commit

Permalink
Packit/RPM: Initial add of config and rpm spec
Browse files Browse the repository at this point in the history
Include validate and unit tests using TMT.

Also cleanup a leftover double quote in test.sh from previous commit.

Signed-off-by: Lokesh Mandvekar <[email protected]>
  • Loading branch information
lsm5 committed Jan 26, 2024
1 parent 5bdef8e commit 24a7274
Show file tree
Hide file tree
Showing 5 changed files with 170 additions and 1 deletion.
1 change: 1 addition & 0 deletions .fmf/version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
1
60 changes: 60 additions & 0 deletions .packit.yaml
Original file line number Diff line number Diff line change
@@ -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"
23 changes: 23 additions & 0 deletions plans/main.fmf
Original file line number Diff line number Diff line change
@@ -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
make unit

/validate_test:
summary: Run validate test
execute:
how: tmt
script: make validate
85 changes: 85 additions & 0 deletions rpm/crun-vm.spec
Original file line number Diff line number Diff line change
@@ -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 <[email protected]>
- Placeholder changelog for envs that are not autochangelog-ready
- Contact upstream if you need to report an issue with the build.
%endif
2 changes: 1 addition & 1 deletion test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 24a7274

Please sign in to comment.