import rust-lv2-worker-0.1.1-4.el10

i10ce changed/i10ce/rust-lv2-worker-0.1.1-4.el10
MSVSphere Packaging Team 2 months ago
commit c2330d95ee
Signed by: sys_gitsync
GPG Key ID: B2B0B9F29E528FE8

1
.gitignore vendored

@ -0,0 +1 @@
SOURCES/lv2-worker-0.1.1.crate

@ -0,0 +1 @@
5b38a3c3c2198f7736b7dec820b05f65d42ce415 SOURCES/lv2-worker-0.1.1.crate

@ -0,0 +1,3 @@
# rust-lv2-worker
The rust-lv2-worker package

@ -0,0 +1,186 @@
From 88ba8d3860ee78de617b052086fa9fa5e6fec360 Mon Sep 17 00:00:00 2001
From: Hector Martin <marcan@marcan.st>
Date: Mon, 14 Oct 2024 01:18:22 +0900
Subject: [PATCH] Fix tests on Rust 1.81.0
Unwinding across functions with the extern "C" ABI is UB, but previously
worked. See: https://github.com/rust-lang/rust/issues/74990
Redo the tests so they don't rely on panics at all, using a
reference-counted counter instead.
Signed-off-by: Hector Martin <marcan@marcan.st>
---
worker/src/lib.rs | 84 +++++++++++++++--------------------------------
1 file changed, 26 insertions(+), 58 deletions(-)
diff --git a/src/lib.rs b/src/lib.rs
index 7b2ef1d3..0895cfc4 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -480,29 +480,23 @@ mod tests {
use std::mem;
use std::ops;
use std::ptr;
+ use std::sync::atomic::{AtomicU32, Ordering};
+ use std::sync::Arc;
// structure to test drooping issue
struct HasDrop {
- drop_count: u32,
- drop_limit: u32,
+ drop_count: Arc<AtomicU32>,
}
impl HasDrop {
- fn new(val: u32) -> Self {
- Self {
- drop_count: 0,
- drop_limit: val,
- }
+ fn new(val: Arc<AtomicU32>) -> Self {
+ Self { drop_count: val }
}
}
impl ops::Drop for HasDrop {
fn drop(&mut self) {
- if self.drop_count >= self.drop_limit {
- panic!("Dropped more than {} time", self.drop_limit);
- } else {
- self.drop_count += 1;
- }
+ self.drop_count.fetch_add(1, Ordering::Relaxed);
}
}
@@ -588,7 +582,8 @@ mod tests {
#[test]
fn schedule_must_not_drop() {
- let hd = HasDrop::new(0);
+ let ctr = Arc::new(AtomicU32::new(0));
+ let hd = HasDrop::new(ctr.clone());
let internal = lv2_sys::LV2_Worker_Schedule {
handle: ptr::null_mut(),
schedule_work: Some(extern_schedule),
@@ -598,12 +593,13 @@ mod tests {
phantom: PhantomData::<*const TestDropWorker>,
};
let _ = schedule.schedule_work(hd);
+ assert_eq!(ctr.load(Ordering::Relaxed), 0);
}
#[test]
- #[should_panic(expected = "Dropped")]
fn schedule_must_enable_drop_on_error() {
- let hd = HasDrop::new(0);
+ let ctr = Arc::new(AtomicU32::new(0));
+ let hd = HasDrop::new(ctr.clone());
let internal = lv2_sys::LV2_Worker_Schedule {
handle: ptr::null_mut(),
schedule_work: Some(faulty_schedule),
@@ -613,35 +609,39 @@ mod tests {
phantom: PhantomData::<*const TestDropWorker>,
};
let _ = schedule.schedule_work(hd);
+ assert_eq!(ctr.load(Ordering::Relaxed), 1);
}
#[test]
fn respond_must_not_drop() {
- let hd = HasDrop::new(0);
+ let ctr = Arc::new(AtomicU32::new(0));
+ let hd = HasDrop::new(ctr.clone());
let respond = ResponseHandler {
response_function: Some(extern_respond),
respond_handle: ptr::null_mut(),
phantom: PhantomData::<TestDropWorker>,
};
let _ = respond.respond(hd);
+ assert_eq!(ctr.load(Ordering::Relaxed), 0);
}
#[test]
- #[should_panic(expected = "Dropped")]
fn respond_must_enable_drop_on_error() {
- let hd = HasDrop::new(0);
+ let ctr = Arc::new(AtomicU32::new(0));
+ let hd = HasDrop::new(ctr.clone());
let respond = ResponseHandler {
response_function: Some(faulty_respond),
respond_handle: ptr::null_mut(),
phantom: PhantomData::<TestDropWorker>,
};
let _ = respond.respond(hd);
+ assert_eq!(ctr.load(Ordering::Relaxed), 1);
}
#[test]
- #[should_panic(expected = "Dropped")]
- fn extern_work_should_drop() {
- let hd = mem::ManuallyDrop::new(HasDrop::new(0));
+ fn extern_work_should_drop_once() {
+ let ctr = Arc::new(AtomicU32::new(0));
+ let hd = mem::ManuallyDrop::new(HasDrop::new(ctr.clone()));
let ptr_hd = &hd as *const _ as *const c_void;
let size = mem::size_of_val(&hd) as u32;
let mut tdw = TestDropWorker {};
@@ -657,46 +657,13 @@ mod tests {
ptr_hd,
);
}
+ assert_eq!(ctr.load(Ordering::Relaxed), 1);
}
#[test]
- fn extern_work_should_not_drop_twice() {
- let hd = mem::ManuallyDrop::new(HasDrop::new(1));
- let ptr_hd = &hd as *const _ as *const c_void;
- let size = mem::size_of_val(&hd) as u32;
- let mut tdw = TestDropWorker {};
-
- let ptr_tdw = &mut tdw as *mut _ as *mut c_void;
- //trash trick i use Plugin ptr insteas of Pluginstance ptr
- unsafe {
- WorkerDescriptor::<TestDropWorker>::extern_work(
- ptr_tdw,
- Some(extern_respond),
- ptr::null_mut(),
- size,
- ptr_hd,
- );
- }
- }
-
- #[test]
- #[should_panic(expected = "Dropped")]
- fn extern_work_response_should_drop() {
- let hd = mem::ManuallyDrop::new(HasDrop::new(0));
- let ptr_hd = &hd as *const _ as *const c_void;
- let size = mem::size_of_val(&hd) as u32;
- let mut tdw = TestDropWorker {};
-
- let ptr_tdw = &mut tdw as *mut _ as *mut c_void;
- //trash trick i use Plugin ptr insteas of Pluginstance ptr
- unsafe {
- WorkerDescriptor::<TestDropWorker>::extern_work_response(ptr_tdw, size, ptr_hd);
- }
- }
-
- #[test]
- fn extern_work_response_should_not_drop_twice() {
- let hd = mem::ManuallyDrop::new(HasDrop::new(1));
+ fn extern_work_response_should_drop_once() {
+ let ctr = Arc::new(AtomicU32::new(0));
+ let hd = mem::ManuallyDrop::new(HasDrop::new(ctr.clone()));
let ptr_hd = &hd as *const _ as *const c_void;
let size = mem::size_of_val(&hd) as u32;
let mut tdw = TestDropWorker {};
@@ -706,5 +673,6 @@ mod tests {
unsafe {
WorkerDescriptor::<TestDropWorker>::extern_work_response(ptr_tdw, size, ptr_hd);
}
+ assert_eq!(ctr.load(Ordering::Relaxed), 1);
}
}

@ -0,0 +1,4 @@
[package]
extra-patches = [
{ "number" = 2, file = "lv2-worker-fix-tests-rust-1.81.0.patch", comments = ["Fix tests on Rust 1.81.0", "https://github.com/RustAudio/rust-lv2/pull/126"] },
]

@ -0,0 +1,100 @@
## START: Set by rpmautospec
## (rpmautospec version 0.7.3)
## RPMAUTOSPEC: autorelease, autochangelog
%define autorelease(e:s:pb:n) %{?-p:0.}%{lua:
release_number = 4;
base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}"));
print(release_number + base_release_number - 1);
}%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}}
## END: Set by rpmautospec
# Generated by rust2rpm 26
%bcond_without check
%global debug_package %{nil}
%global crate lv2-worker
Name: rust-lv2-worker
Version: 0.1.1
Release: %autorelease
Summary: Rust-lv2's work offloading library
License: MIT OR Apache-2.0
URL: https://crates.io/crates/lv2-worker
Source: %{crates_source}
# * Fix tests on Rust 1.81.0
# * https://github.com/RustAudio/rust-lv2/pull/126
Patch2: lv2-worker-fix-tests-rust-1.81.0.patch
BuildRequires: cargo-rpm-macros >= 24
# Not supported by rust-lv2
ExcludeArch: ppc64le s390x
%global _description %{expand:
Rust-lv2's work offloading library.}
%description %{_description}
%package devel
Summary: %{summary}
BuildArch: noarch
%description devel %{_description}
This package contains library source intended for building other packages which
use the "%{crate}" crate.
%files devel
%license %{crate_instdir}/LICENSE-APACHE
%license %{crate_instdir}/LICENSE-MIT
%doc %{crate_instdir}/README.md
%{crate_instdir}/
%package -n %{name}+default-devel
Summary: %{summary}
BuildArch: noarch
%description -n %{name}+default-devel %{_description}
This package contains library source intended for building other packages which
use the "default" feature of the "%{crate}" crate.
%files -n %{name}+default-devel
%ghost %{crate_instdir}/Cargo.toml
%prep
%autosetup -n %{crate}-%{version} -p1
%cargo_prep
%generate_buildrequires
%cargo_generate_buildrequires
%build
%cargo_build
%install
%cargo_install
%if %{with check}
%check
%cargo_test
%endif
%changelog
* Fri Dec 20 2024 MSVSphere Packaging Team <packager@msvsphere-os.ru> - 0.1.1-4
- Rebuilt for MSVSphere 10
## START: Generated by rpmautospec
* Sun Oct 13 2024 Davide Cavalca <dcavalca@fedoraproject.org> - 0.1.1-4
- Fix tests on Rust 1.81.0; Fixes: RHBZ#2314195
* Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.1.1-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
* Fri Jan 26 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.1.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Sun Jul 23 2023 Davide Cavalca <dcavalca@fedoraproject.org> - 0.1.1-1
- Initial import; Fixes: RHBZ#2224771
## END: Generated by rpmautospec
Loading…
Cancel
Save