Update vendoring logic to fix the epel8 build; Fixes: RHBZ#1978414

epel9
Davide Cavalca 3 years ago
parent 17b671b2b1
commit 105ebad6c2

@ -0,0 +1,29 @@
--- below-0.4.0/Cargo.toml 1970-01-01T00:00:01+00:00
+++ below-0.4.0/Cargo.toml 2021-10-27T17:40:41.373826+00:00
@@ -10,7 +10,7 @@
# See Cargo.toml.orig for the original contents.
[package]
-edition = "2021"
+edition = "2018"
name = "below"
version = "0.4.0"
authors = ["Daniel Xu <dlxu@fb.com>", "Facebook"]
@@ -108,3 +108,17 @@
[features]
enable_backtrace = []
+
+[patch.crates-io]
+cgroupfs = { path = "patched-crates/cgroupfs" }
+common = { path = "patched-crates/below-common", package = "below-common" }
+config = { path = "patched-crates/below-config", package = "below-config" }
+dump = { path = "patched-crates/below-dump", package = "below-dump" }
+libbpf-rs = { path = "patched-crates/libbpf-rs" }
+libbpf-cargo = { path = "patched-crates/libbpf-cargo" }
+model = { path = "patched-crates/below-model", package = "below-model" }
+procfs = { path = "patched-crates/fb_procfs", package = "fb_procfs" }
+store = { path = "patched-crates/below-store", package = "below-store" }
+view = { path = "patched-crates/below-view", package = "below-view" }
+derive = { path = "patched-crates/below_derive", package = "below_derive" }
+render = { path = "patched-crates/below-render", package = "below-render" }

@ -0,0 +1,167 @@
diff -Naur a/patched-crates/below-common/Cargo.toml b/patched-crates/below-common/Cargo.toml
--- a/patched-crates/below-common/Cargo.toml 2021-10-27 13:13:54.321402732 -0700
+++ b/patched-crates/below-common/Cargo.toml 2021-10-27 13:14:01.866441582 -0700
@@ -10,7 +10,7 @@
# See Cargo.toml.orig for the original contents.
[package]
-edition = "2021"
+edition = "2018"
name = "below-common"
version = "0.4.0"
authors = ["Daniel Xu <dlxu@fb.com>", "Facebook"]
diff -Naur a/patched-crates/below-common/src/dateutil.rs b/patched-crates/below-common/src/dateutil.rs
--- a/patched-crates/below-common/src/dateutil.rs 2021-10-27 12:58:23.000000000 -0700
+++ b/patched-crates/below-common/src/dateutil.rs 2021-10-27 13:14:26.157566663 -0700
@@ -302,7 +302,7 @@
let mut default_format = String::new();
let mut date_with_defaults = date.clone();
let mut use_now = false;
- for part in ["S", "M", "HI", "d", "mb", "Yy"] {
+ for part in ["S", "M", "HI", "d", "mb", "Yy"].iter() {
if part
.chars()
.any(|ch| naive_format.contains(&format!("%{}", ch)))
diff -Naur a/patched-crates/below-config/Cargo.toml b/patched-crates/below-config/Cargo.toml
--- a/patched-crates/below-config/Cargo.toml 2021-10-27 13:13:54.322402737 -0700
+++ b/patched-crates/below-config/Cargo.toml 2021-10-27 13:14:01.867441588 -0700
@@ -10,7 +10,7 @@
# See Cargo.toml.orig for the original contents.
[package]
-edition = "2021"
+edition = "2018"
name = "below-config"
version = "0.4.0"
authors = ["Daniel Xu <dlxu@fb.com>", "Facebook"]
diff -Naur a/patched-crates/below_derive/Cargo.toml b/patched-crates/below_derive/Cargo.toml
--- a/patched-crates/below_derive/Cargo.toml 2021-10-27 13:13:54.322402737 -0700
+++ b/patched-crates/below_derive/Cargo.toml 2021-10-27 13:14:01.868441593 -0700
@@ -10,7 +10,7 @@
# See Cargo.toml.orig for the original contents.
[package]
-edition = "2021"
+edition = "2018"
name = "below_derive"
version = "0.4.0"
authors = ["Daniel Xu <dlxu@fb.com>", "Facebook"]
diff -Naur a/patched-crates/below-dump/Cargo.toml b/patched-crates/below-dump/Cargo.toml
--- a/patched-crates/below-dump/Cargo.toml 2021-10-27 13:13:54.323402742 -0700
+++ b/patched-crates/below-dump/Cargo.toml 2021-10-27 13:14:01.869441598 -0700
@@ -10,7 +10,7 @@
# See Cargo.toml.orig for the original contents.
[package]
-edition = "2021"
+edition = "2018"
name = "below-dump"
version = "0.4.0"
authors = ["Daniel Xu <dlxu@fb.com>", "Facebook"]
diff -Naur a/patched-crates/below-model/Cargo.toml b/patched-crates/below-model/Cargo.toml
--- a/patched-crates/below-model/Cargo.toml 2021-10-27 13:13:54.324402747 -0700
+++ b/patched-crates/below-model/Cargo.toml 2021-10-27 13:14:01.869441598 -0700
@@ -10,7 +10,7 @@
# See Cargo.toml.orig for the original contents.
[package]
-edition = "2021"
+edition = "2018"
name = "below-model"
version = "0.4.0"
authors = ["Daniel Xu <dlxu@fb.com>", "Facebook"]
diff -Naur a/patched-crates/below-render/Cargo.toml b/patched-crates/below-render/Cargo.toml
--- a/patched-crates/below-render/Cargo.toml 2021-10-27 13:13:54.324402747 -0700
+++ b/patched-crates/below-render/Cargo.toml 2021-10-27 13:14:01.869441598 -0700
@@ -10,7 +10,7 @@
# See Cargo.toml.orig for the original contents.
[package]
-edition = "2021"
+edition = "2018"
name = "below-render"
version = "0.4.0"
authors = ["Daniel Xu <dlxu@fb.com>", "Facebook"]
diff -Naur a/patched-crates/below-store/Cargo.toml b/patched-crates/below-store/Cargo.toml
--- a/patched-crates/below-store/Cargo.toml 2021-10-27 13:13:54.324402747 -0700
+++ b/patched-crates/below-store/Cargo.toml 2021-10-27 13:14:01.869441598 -0700
@@ -10,7 +10,7 @@
# See Cargo.toml.orig for the original contents.
[package]
-edition = "2021"
+edition = "2018"
name = "below-store"
version = "0.4.0"
authors = ["Daniel Xu <dlxu@fb.com>", "Facebook"]
diff -Naur a/patched-crates/below-view/Cargo.toml b/patched-crates/below-view/Cargo.toml
--- a/patched-crates/below-view/Cargo.toml 2021-10-27 13:13:54.324402747 -0700
+++ b/patched-crates/below-view/Cargo.toml 2021-10-27 13:14:01.870441603 -0700
@@ -10,7 +10,7 @@
# See Cargo.toml.orig for the original contents.
[package]
-edition = "2021"
+edition = "2018"
name = "below-view"
version = "0.4.0"
authors = ["Daniel Xu <dlxu@fb.com>", "Facebook"]
diff -Naur a/patched-crates/cgroupfs/Cargo.toml b/patched-crates/cgroupfs/Cargo.toml
--- a/patched-crates/cgroupfs/Cargo.toml 2021-10-27 13:13:54.324402747 -0700
+++ b/patched-crates/cgroupfs/Cargo.toml 2021-10-27 13:14:01.870441603 -0700
@@ -10,7 +10,7 @@
# See Cargo.toml.orig for the original contents.
[package]
-edition = "2021"
+edition = "2018"
name = "cgroupfs"
version = "0.4.0"
authors = ["Daniel Xu <dlxu@fb.com>", "Facebook"]
diff -Naur a/patched-crates/fb_procfs/Cargo.toml b/patched-crates/fb_procfs/Cargo.toml
--- a/patched-crates/fb_procfs/Cargo.toml 2021-10-27 13:13:54.325402752 -0700
+++ b/patched-crates/fb_procfs/Cargo.toml 2021-10-27 13:14:01.870441603 -0700
@@ -10,7 +10,7 @@
# See Cargo.toml.orig for the original contents.
[package]
-edition = "2021"
+edition = "2018"
name = "fb_procfs"
version = "0.4.0"
authors = ["Daniel Xu <dlxu@fb.com>", "Facebook"]
diff -Naur a/patched-crates/libbpf-cargo/Cargo.toml b/patched-crates/libbpf-cargo/Cargo.toml
--- a/patched-crates/libbpf-cargo/Cargo.toml 2021-10-27 13:13:54.325402752 -0700
+++ b/patched-crates/libbpf-cargo/Cargo.toml 2021-10-27 13:14:01.870441603 -0700
@@ -35,7 +35,7 @@
version = "0.12"
[dependencies.libbpf-sys]
-version = "0.5.0-1"
+version = "0.4.0-2"
[dependencies.memmap2]
version = "0.3"
diff -Naur a/patched-crates/libbpf-rs/Cargo.toml b/patched-crates/libbpf-rs/Cargo.toml
--- a/patched-crates/libbpf-rs/Cargo.toml 2021-10-27 13:13:54.325402752 -0700
+++ b/patched-crates/libbpf-rs/Cargo.toml 2021-10-27 13:14:01.870441603 -0700
@@ -24,7 +24,7 @@
version = "1.3"
[dependencies.libbpf-sys]
-version = "0.5.0-1"
+version = "0.4.0-2"
[dependencies.nix]
version = "0.22"
diff -Naur a/patched-crates/libbpf-rs/src/object.rs b/patched-crates/libbpf-rs/src/object.rs
--- a/patched-crates/libbpf-rs/src/object.rs 2021-10-27 12:58:23.000000000 -0700
+++ b/patched-crates/libbpf-rs/src/object.rs 2021-10-27 13:19:44.254204545 -0700
@@ -67,7 +67,6 @@
pin_root_path: ptr::null(),
attach_prog_fd: 0,
kconfig: ptr::null(),
- btf_custom_path: ptr::null(),
}
}

@ -10,6 +10,7 @@
# 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 forgeurl https://github.com/facebookincubator/below
@ -23,12 +24,17 @@ Summary: Interactive tool to view and record historical system data
License: ASL 2.0
URL: https://crates.io/crates/below
Source: %{crates_source}
# Initial patched metadata
# Downgrade edition to 2018 and patch a number of crates to use the ones
# distributed in the vendor tarball; this is meant to to be applied only for
# EPEL builds
Patch0: below-fix-metadata.diff
# Get these from the repo as they aren't included in the crate
Source1: %{forgeurl}/raw/v%{version}/etc/below.service
Source2: %{forgeurl}/raw/v%{version}/etc/logrotate.conf
Source3: %{forgeurl}/raw/v%{version}/README.md#/README-upstream.md
# vendored dependencies for EPEL
# patched crates and vendored dependencies for EPEL
# update with ./update-vendor-tarball.sh after bumping the specfile version
Source4: %{crate}-%{version}-vendor.tar.gz
# EPEL specific doc
@ -38,6 +44,7 @@ ExclusiveArch: %{rust_arches}
%if 0%{?el8}
BuildRequires: rust-toolset
BuildRequires: sed
# for libbpf-sys
BuildRequires: kernel-headers
BuildRequires: elfutils-libelf-devel
@ -99,12 +106,16 @@ Recommends: logrotate
%systemd_postun_with_restart %{crate}.service
%prep
%setup -q -n %{crate}-%{version_no_tilde}
%if 0%{?el8}
%setup -q -n %{crate}-%{version}
%cargo_prep -V 4
%patch0 -p1
cp -p %{SOURCE5} README-epel.md
%ifarch s390x
# drop opt-level generation to fix s390x OOM problems
sed -i 's/opt-level=3/opt-level=1/' .cargo/config
%endif
%else
%autosetup -n %{crate}-%{version_no_tilde} -p1
%cargo_prep
%endif
cp -p %{SOURCE3} README.md

@ -1,2 +1,2 @@
SHA512 (below-0.4.0.crate) = ce536583048c4866b890f1298e3ca45071594f10c84b313f566725b747ccccd4ec39ad2d1560a63cebcc4c574989c57d73e64ec9e619ba93bea3b399271ed540
SHA512 (below-0.4.0-vendor.tar.gz) = b32e92a7b97e4a6dc139779b0435acfd04bc64258152ccc45ebc5d4bdd155d5975a02662bce7ff5af849db5816fd8c3be53d796ba723100977cb0c76d09fc439
SHA512 (below-0.4.0-vendor.tar.gz) = 841822049b8d3a42135b108a77c9c90e09ce55a8c26390e0e1ea05bab3581be6b05e954ffc49a2e3ca7db3c98048466f51807403847a8e40e222f279a714435f

@ -17,9 +17,35 @@ tardir="$PWD"
workdir=$(mktemp -d)
trap 'rm -rf "$workdir"' EXIT
# All the below crates use edition 2021, which isn't supported by rust in el8;
# moreover, libbpf-rs and libbpf-cargo transitively depend on libbpf 0.5.0, and
# el8 ships 0.4.0.
#
# So we cheat:
# - below-fix-metadata.diff (which is applied in %prep) downgrades the edition
# for below and sets up all the other crates to be replaced with patched
# versions under patched-crates/
# - below-patched-crates.patch contains the actual modifications of the patched
# crates (mostly the edition downgrades, a few pins and a couple of build
# fixes)
#
# We then build the vendored tarball as follows:
# - unpack the below crate and vendor
# - foreach patched crate, move it from vendor/ to patched-crates/
# - delete vendor/ as it's no longer needed, and so we can vendor again later
# - apply the two patches, to fix the below metadata and the patched crates
# - run vendor again, and then tar up *both* patched-crates/ and vendor/
tar xvzf "$tardir/$crate" -C "$workdir"
(cd "${workdir}/${nv}" && cargo vendor)
mkdir "${workdir}/${nv}/patched-crates"
for c in below_derive below-common below-config below-dump below-model below-render below-store below-view cgroupfs fb_procfs libbpf-cargo libbpf-rs; do
mv "${workdir}/${nv}/vendor/${c}" "${workdir}/${nv}/patched-crates/"
done
rm -r "${workdir}/${nv}/vendor"
(cd "${workdir}/${nv}" && \
patch -p1 < ${tardir}/below-fix-metadata.diff && \
patch -p1 < ${tardir}/below-patched-crates.patch && \
cargo vendor && \
tar cvzf "${tardir}/${vendor_tarball}" vendor/)
tar cvzf "${tardir}/${vendor_tarball}" patched-crates/ vendor/)
exit 0

Loading…
Cancel
Save