diff --git a/.gitignore b/.gitignore index 0907d6e..6195b17 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ /linux-5.8.11.tar.xz /rd-agent-2.1.2.crate +/rd-agent-2.1.2-vendor.tar.gz diff --git a/rust-rd-agent.spec b/rust-rd-agent.spec index 61a5e25..1d80f74 100644 --- a/rust-rd-agent.spec +++ b/rust-rd-agent.spec @@ -4,6 +4,13 @@ %global crate rd-agent +%if 0%{?el8} +# el8 doesn't have these macros +%global __crates_url https://crates.io/api/v1/crates/ +%global crates_source %{__crates_url}%{crate}/%{version}/download#/%{crate}-%{version}.crate +%global version_no_tilde %{version} +%endif + %global selinuxtype targeted %bcond_without selinux @@ -18,6 +25,8 @@ URL: https://crates.io/crates/rd-agent Source: %{crates_source} # Used as a data file by rd-agent for the compile sideload Source1: https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.8.11.tar.xz +# Vendored dependencies for EPEL, update with ./update-vendor-tarball.sh +Source2: %{crate}-%{version}-vendor.tar.gz # SELinux policy Source10: %{crate}.fc Source11: %{crate}.if @@ -25,7 +34,12 @@ Source12: %{crate}.te ExclusiveArch: %{rust_arches} +%if 0%{?el8} +BuildRequires: rust-toolset +%else BuildRequires: rust-packaging +%endif + %if 0%{?with_selinux} BuildRequires: selinux-policy-devel %endif @@ -106,10 +120,14 @@ mkdir selinux cp -p %{SOURCE10} %{SOURCE11} %{SOURCE12} selinux %endif +%if 0%{?el8} +%cargo_prep -V 2 +%else %cargo_prep %generate_buildrequires %cargo_generate_buildrequires +%endif %build %cargo_build diff --git a/sources b/sources index cc27c9f..314aeaa 100644 --- a/sources +++ b/sources @@ -1,2 +1,3 @@ -SHA512 (linux-5.8.11.tar.xz) = bb6994f09aabfb0076f3023dd8359c5c569a4b398d3a3c3c8d6b27052092cab56ad675f45dd6ceba7fe431f2a6a587858f3c21415b5a00adb346bd2c68d85b0f SHA512 (rd-agent-2.1.2.crate) = 15dae4e8d6cb2466130eeb208e387e5cc2bc1c0179dd1261057f657738c7f1dc5b54cb29d4a37074aba7196d535b91ee5058b90403c27a12115dfa1ce87712d0 +SHA512 (linux-5.8.11.tar.xz) = bb6994f09aabfb0076f3023dd8359c5c569a4b398d3a3c3c8d6b27052092cab56ad675f45dd6ceba7fe431f2a6a587858f3c21415b5a00adb346bd2c68d85b0f +SHA512 (rd-agent-2.1.2-vendor.tar.gz) = 67bbbd761c7788c3689f1d67e720e4cafc38442b2f64e3ff384927a90ccad458b0e648224e1fa46c41550a554e17819cc7a23606d2598d1e40589fe02377ed39 diff --git a/update-vendor-tarball.sh b/update-vendor-tarball.sh new file mode 100755 index 0000000..189ec61 --- /dev/null +++ b/update-vendor-tarball.sh @@ -0,0 +1,25 @@ +#!/bin/sh + +name='rd-agent' +specfile="rust-${name}.spec" +version=$(rpm -q --qf '%{VERSION}\n' --specfile "$specfile" | head -1) +nv="${name}-${version}" +crate="${nv}.crate" +vendor_tarball="${nv}-vendor.tar.gz" + +if [ -f "$vendor_tarball" ]; then + echo "${vendor_tarball} already exists, aborting" + exit 1 +fi + +[ -f "$crate" ] || spectool -g "$specfile" +tardir="$PWD" +workdir=$(mktemp -d) +trap 'rm -rf "$workdir"' EXIT + +tar xvzf "$tardir/$crate" -C "$workdir" +(cd "${workdir}/${nv}" && \ + cargo vendor && \ + tar cvzf "${tardir}/${vendor_tarball}" vendor/) + +exit 0