Compare commits
No commits in common. "rawhide" and "f41" have entirely different histories.
7 changed files with 116 additions and 98 deletions
8
.gitignore
vendored
8
.gitignore
vendored
|
|
@ -53,11 +53,3 @@
|
||||||
/dmpd1011-vendor.tar.gz
|
/dmpd1011-vendor.tar.gz
|
||||||
/v1.0.12.tar.gz
|
/v1.0.12.tar.gz
|
||||||
/dmpd1012-vendor.tar.gz
|
/dmpd1012-vendor.tar.gz
|
||||||
/v1.1.0.tar.gz
|
|
||||||
/dmpd110-vendor.tar.gz
|
|
||||||
/v1.2.1.tar.gz
|
|
||||||
/dmpd121-vendor.tar.gz
|
|
||||||
/v1.3.0.tar.gz
|
|
||||||
/dmpd130-vendor.tar.gz
|
|
||||||
/v1.3.1.tar.gz
|
|
||||||
/dmpd131-vendor.tar.gz
|
|
||||||
|
|
|
||||||
29
0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch
Normal file
29
0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
From 2a3a7ffa38a2e8ed7f9e89920deabd797ed961d5 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Marian Csontos <mcsontos@redhat.com>
|
||||||
|
Date: Thu, 27 Jul 2023 11:37:01 +0200
|
||||||
|
Subject: [PATCH] Tweak cargo.toml to work with vendor directory
|
||||||
|
|
||||||
|
Mock works offline, cargo would try to download the files from github.
|
||||||
|
So cargo vendor has to be run first, and then change the Cargo.toml to
|
||||||
|
make mock happy.
|
||||||
|
---
|
||||||
|
Cargo.toml | 3 ++-
|
||||||
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/Cargo.toml b/Cargo.toml
|
||||||
|
index b33b0a4b..2a87e432 100644
|
||||||
|
--- a/Cargo.toml
|
||||||
|
+++ b/Cargo.toml
|
||||||
|
@@ -33,7 +33,8 @@ quick-xml = "0.31"
|
||||||
|
rand = "0.8"
|
||||||
|
rangemap = "1.5"
|
||||||
|
roaring = "0.10"
|
||||||
|
-rio = { git = "https://github.com/jthornber/rio", branch = "master", optional = true }
|
||||||
|
+#rio = { git = "https://github.com/jthornber/rio", branch = "master", optional = true }
|
||||||
|
+rio = { version = "0.9.4", optional = true }
|
||||||
|
safemem = "0.3"
|
||||||
|
threadpool = "1.8"
|
||||||
|
thiserror = "1.0"
|
||||||
|
--
|
||||||
|
2.43.0
|
||||||
|
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
From 9e55217135b7543f13a5801aafda0fe0a1fb363a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ming-Hung Tsai <mtsai@redhat.com>
|
||||||
|
Date: Mon, 26 Feb 2024 21:11:27 +0800
|
||||||
|
Subject: [PATCH] [tests] Explicitly set the pipe size for triggering EPIPE
|
||||||
|
|
||||||
|
(cherry picked from commit 0b3c80efd7c627ce7d75397452f496b6329a90c0)
|
||||||
|
---
|
||||||
|
tests/thin_dump.rs | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
diff --git a/tests/thin_dump.rs b/tests/thin_dump.rs
|
||||||
|
index 81982188..9eade06e 100644
|
||||||
|
--- a/tests/thin_dump.rs
|
||||||
|
+++ b/tests/thin_dump.rs
|
||||||
|
@@ -154,6 +154,7 @@ fn test_no_stderr_on_broken_pipe(extra_args: &[&std::ffi::OsStr]) -> Result<()>
|
||||||
|
let mut pipefd = [0i32; 2];
|
||||||
|
unsafe {
|
||||||
|
ensure!(libc::pipe2(pipefd.as_mut_slice().as_mut_ptr(), libc::O_CLOEXEC) == 0);
|
||||||
|
+ ensure!(libc::fcntl(pipefd[0], libc::F_SETPIPE_SZ, 65536) == 65536);
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut args = args![&md].to_vec();
|
||||||
|
--
|
||||||
|
2.43.0
|
||||||
|
|
||||||
40
0003-tests-Fix-closing-the-pipe-fd-twice.patch
Normal file
40
0003-tests-Fix-closing-the-pipe-fd-twice.patch
Normal file
|
|
@ -0,0 +1,40 @@
|
||||||
|
From 54e7eaf002a2b07cd5571b5d3374eb760d727381 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ming-Hung Tsai <mtsai@redhat.com>
|
||||||
|
Date: Tue, 27 Feb 2024 01:24:01 +0800
|
||||||
|
Subject: [PATCH] [tests] Fix closing the pipe fd twice
|
||||||
|
|
||||||
|
The duct::Expression::stdout_file() takes the ownership of the
|
||||||
|
passed-in file descriptor, thus the caller doesn't need to close
|
||||||
|
the fd afterward. Closing a fd twice in tests might inadvertently
|
||||||
|
closing the fd recently opened by other test threads, leading to
|
||||||
|
unexpected bugs.
|
||||||
|
|
||||||
|
(cherry picked from commit 3b378b0e39a7ae111a81d394f8721bae89f9ca37)
|
||||||
|
---
|
||||||
|
tests/thin_dump.rs | 3 +--
|
||||||
|
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/tests/thin_dump.rs b/tests/thin_dump.rs
|
||||||
|
index 9eade06e..caae31ef 100644
|
||||||
|
--- a/tests/thin_dump.rs
|
||||||
|
+++ b/tests/thin_dump.rs
|
||||||
|
@@ -161,7 +161,7 @@ fn test_no_stderr_on_broken_pipe(extra_args: &[&std::ffi::OsStr]) -> Result<()>
|
||||||
|
args.extend_from_slice(extra_args);
|
||||||
|
let cmd = thin_dump_cmd(args)
|
||||||
|
.to_expr()
|
||||||
|
- .stdout_file(pipefd[1])
|
||||||
|
+ .stdout_file(pipefd[1]) // this transfers ownership of the fd
|
||||||
|
.stderr_capture();
|
||||||
|
let handle = cmd.unchecked().start()?;
|
||||||
|
|
||||||
|
@@ -169,7 +169,6 @@ fn test_no_stderr_on_broken_pipe(extra_args: &[&std::ffi::OsStr]) -> Result<()>
|
||||||
|
std::thread::sleep(std::time::Duration::from_millis(1000));
|
||||||
|
|
||||||
|
unsafe {
|
||||||
|
- libc::close(pipefd[1]); // close the unused write-end
|
||||||
|
libc::close(pipefd[0]); // causing broken pipe
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.43.0
|
||||||
|
|
||||||
54
README.md
54
README.md
|
|
@ -1,54 +1,24 @@
|
||||||
# Packaging device-mapper-persitent-data (AKA dmpd)
|
# Packaging dmpd
|
||||||
|
|
||||||
This is rust package using *vendor* file for dependencies. (Vendor file is an archive of dependencies' sources.)
|
This is mostly regular package except recent addition of rust to used languages.
|
||||||
|
|
||||||
For most of simple fixes, there is nothing special,
|
## rust-tools
|
||||||
to add a patches simply add them to dist-git,
|
|
||||||
add a corresponding `PatchN: 000N-...` lines,
|
|
||||||
increase `Release:` or `release_suffix` for Z-stream (or for test build use suffix like `.bzNNNNNN`),
|
|
||||||
add to `%changelog`,
|
|
||||||
commit,
|
|
||||||
push,
|
|
||||||
and build the package using `fedpkg build`.
|
|
||||||
|
|
||||||
Alternatively before committing anything use `fedpkg srpm` and `fedpkg scratch-build --srpm $SRPM [--arches x86_64]` to create a scratch build.
|
To build the rust-tools (`make rust-tools`) one needs:
|
||||||
|
|
||||||
However when building a new version of dmpd or when updating a dependency is
|
- rust >= 1.35
|
||||||
needed (e.g. because of CVE in the dependency) vendor file
|
- cargo with vendor subcommand (now upstream, included in latest Fedora and RHEL8)
|
||||||
has to be regenerated.
|
|
||||||
|
|
||||||
## Updating vendor file
|
### cargo vendpr
|
||||||
|
|
||||||
To build a new version of the package following tooling is needed:
|
- run `cargo vendor` in the disrectory with sources
|
||||||
|
- run `tar czf device-mapper-persistent-data-vendor-$VERSION.tar.gz ./vendor`
|
||||||
- `rust >= 1.35`
|
- copy the file (if version changed) and run the *fedpkg new-sources* command:
|
||||||
- `cargo` providing vendor subcommand (now upstream, included in latest Fedora and RHEL8+)
|
|
||||||
|
|
||||||
To create the vendor file:
|
|
||||||
|
|
||||||
In the upstream directory:
|
|
||||||
|
|
||||||
1. Run `cargo vendor` in the directory with upstream sources to create *vendor*
|
|
||||||
directory with sources.
|
|
||||||
- TODO: There is a *cargo-vendor-filterer* project used by *stratisd* to
|
|
||||||
filter out unnecessary dependencies for other operating systems.
|
|
||||||
2. Run `tar czf device-mapper-persistent-data-vendor-$VERSION.tar.gz ./vendor` to create a tarball.
|
|
||||||
3. Copy the vendor file to dist git directory.
|
|
||||||
|
|
||||||
In the dist-git directory:
|
|
||||||
|
|
||||||
1. Get the upstream tarball `wget https://github.com/jthornber/thin-provisioning-tools/archive/v$VERSION.tar.gz`
|
|
||||||
- NOTE: Migration to `https://github.com/device-mapper-utils/thin-provisioning-tools` is coming.
|
|
||||||
2. Update *Source0* and *Source1* to correct values.
|
|
||||||
3. Add the tarballs to koji/brew lookaside:
|
|
||||||
- `fedpkg new-sources v$VERSION.tar.gz device-mapper-persistent-data-vendor-$VERSION.tar.gz`
|
- `fedpkg new-sources v$VERSION.tar.gz device-mapper-persistent-data-vendor-$VERSION.tar.gz`
|
||||||
|
|
||||||
## TODO/NOTES
|
## TODO/NOTES
|
||||||
|
|
||||||
Some of the dependencies are already packaged by Fedora. Can we instruct *cargo vendor* to include only those which are not provided by Fedora?
|
Some of the dependencies may be already packaged by Fedora. Can we instruct *cargo vendor* to include only those which are not provided by Fedora?
|
||||||
It would be possible to include these as submodules, and the rest could be used from Fedora.
|
|
||||||
For RHEL and CentOS Stream using vendor file is the recommended way.
|
|
||||||
|
|
||||||
*%cargo_install* installs by default in */usr/bin* but the package expects */usr/sbin*. For now I run *make install-rust-tools*.
|
*%cargo_install* installs by defualt in */usr/bin* but the package expects */usr/sbin*. For now I run *make install-rust-tools*.
|
||||||
Now Fedora unified the */usr/sbin* and */usr/bin* directories, to this can be "fixed" in Fedora and later in CentOS Stream.
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,22 +2,25 @@
|
||||||
# Copyright (C) 2011-2017 Red Hat, Inc
|
# Copyright (C) 2011-2017 Red Hat, Inc
|
||||||
#
|
#
|
||||||
%bcond_without check
|
%bcond_without check
|
||||||
#%%global debug_package %%{nil}
|
%global debug_package %{nil}
|
||||||
|
|
||||||
#%%global version_suffix -rc2
|
#%%global version_suffix -rc2
|
||||||
#%%global release_suffix .test3
|
#%%global release_suffix .test3
|
||||||
|
|
||||||
Summary: Device-mapper Persistent Data Tools
|
Summary: Device-mapper Persistent Data Tools
|
||||||
Name: device-mapper-persistent-data
|
Name: device-mapper-persistent-data
|
||||||
Version: 1.3.1
|
Version: 1.0.12
|
||||||
Release: 1%{?dist}%{?release_suffix}
|
Release: 3%{?dist}%{?release_suffix}
|
||||||
License: GPL-3.0-only AND (0BSD OR MIT OR Apache-2.0) AND Apache-2.0 AND (Apache-2.0 OR MIT) AND (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT) AND BSD-3-Clause AND MIT AND (MIT OR Apache-2.0) AND (MIT OR Zlib OR Apache-2.0) AND (Unlicense OR MIT) AND (Zlib OR Apache-2.0 OR MIT)
|
License: GPL-3.0-only AND (0BSD OR MIT OR Apache-2.0) AND Apache-2.0 AND (Apache-2.0 OR MIT) AND (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT) AND BSD-3-Clause AND MIT AND (MIT OR Apache-2.0) AND (MIT OR Zlib OR Apache-2.0) AND (Unlicense OR MIT) AND (Zlib OR Apache-2.0 OR MIT)
|
||||||
|
|
||||||
#ExcludeArch: %%{ix86}
|
#ExcludeArch: %%{ix86}
|
||||||
URL: https://github.com/jthornber/thin-provisioning-tools
|
URL: https://github.com/jthornber/thin-provisioning-tools
|
||||||
#Source0: https://github.com/jthornber/thin-provisioning-tools/archive/thin-provisioning-tools-%%{version}.tar.gz
|
#Source0: https://github.com/jthornber/thin-provisioning-tools/archive/thin-provisioning-tools-%%{version}.tar.gz
|
||||||
Source0: https://github.com/jthornber/thin-provisioning-tools/archive/v%{version}%{?version_suffix}.tar.gz
|
Source0: https://github.com/jthornber/thin-provisioning-tools/archive/v%{version}%{?version_suffix}.tar.gz
|
||||||
Source1: dmpd131-vendor.tar.gz
|
Source1: dmpd1012-vendor.tar.gz
|
||||||
|
Patch1: 0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch
|
||||||
|
Patch2: 0002-tests-Explicitly-set-the-pipe-size-for-triggering-EP.patch
|
||||||
|
Patch3: 0003-tests-Fix-closing-the-pipe-fd-twice.patch
|
||||||
|
|
||||||
%if %{defined rhel}
|
%if %{defined rhel}
|
||||||
BuildRequires: rust-toolset
|
BuildRequires: rust-toolset
|
||||||
|
|
@ -27,12 +30,6 @@ BuildRequires: rust >= 1.35
|
||||||
BuildRequires: cargo
|
BuildRequires: cargo
|
||||||
%endif
|
%endif
|
||||||
BuildRequires: make
|
BuildRequires: make
|
||||||
BuildRequires: systemd-devel
|
|
||||||
BuildRequires: clang-libs
|
|
||||||
BuildRequires: glibc-static
|
|
||||||
BuildRequires: device-mapper-devel
|
|
||||||
BuildRequires: clang
|
|
||||||
#BuildRequires: gcc
|
|
||||||
|
|
||||||
%description
|
%description
|
||||||
thin-provisioning-tools contains check,dump,restore,repair,rmap
|
thin-provisioning-tools contains check,dump,restore,repair,rmap
|
||||||
|
|
@ -45,18 +42,6 @@ snapshot eras
|
||||||
%prep
|
%prep
|
||||||
%autosetup -p1 -n thin-provisioning-tools-%{version}%{?version_suffix} -a1
|
%autosetup -p1 -n thin-provisioning-tools-%{version}%{?version_suffix} -a1
|
||||||
%cargo_prep -v vendor
|
%cargo_prep -v vendor
|
||||||
|
|
||||||
# NOTE: Following could replace Cargo.toml patching, but some macros are not working well with it
|
|
||||||
# Notably at least one of cargo_license_summary, cargo_license_summary, or cargo_vendor_manifest
|
|
||||||
#cat >> .cargo/config.toml << EOF
|
|
||||||
#
|
|
||||||
#[source."git+https://github.com/jthornber/rio?branch=master"]
|
|
||||||
#git = "https://github.com/jthornber/rio"
|
|
||||||
#branch = "master"
|
|
||||||
#replace-with = "vendored-sources"
|
|
||||||
#
|
|
||||||
#EOF
|
|
||||||
|
|
||||||
echo %{version}-%{release} > VERSION
|
echo %{version}-%{release} > VERSION
|
||||||
|
|
||||||
%generate_buildrequires
|
%generate_buildrequires
|
||||||
|
|
@ -70,7 +55,7 @@ echo %{version}-%{release} > VERSION
|
||||||
|
|
||||||
%install
|
%install
|
||||||
# TODO: Check that MANDIR is unused and remove
|
# TODO: Check that MANDIR is unused and remove
|
||||||
%make_install STRIP=true MANDIR=%{_mandir} BINDIR=%{buildroot}%{_sbindir}
|
%make_install MANDIR=%{_mandir} BINDIR=%{buildroot}%{_sbindir}
|
||||||
|
|
||||||
%if %{with check}
|
%if %{with check}
|
||||||
%check
|
%check
|
||||||
|
|
@ -98,7 +83,6 @@ echo %{version}-%{release} > VERSION
|
||||||
%{_mandir}/man8/thin_dump.8.gz
|
%{_mandir}/man8/thin_dump.8.gz
|
||||||
%{_mandir}/man8/thin_ls.8.gz
|
%{_mandir}/man8/thin_ls.8.gz
|
||||||
%{_mandir}/man8/thin_metadata_size.8.gz
|
%{_mandir}/man8/thin_metadata_size.8.gz
|
||||||
%{_mandir}/man8/thin_migrate.8.gz
|
|
||||||
%{_mandir}/man8/thin_repair.8.gz
|
%{_mandir}/man8/thin_repair.8.gz
|
||||||
%{_mandir}/man8/thin_restore.8.gz
|
%{_mandir}/man8/thin_restore.8.gz
|
||||||
%{_mandir}/man8/thin_rmap.8.gz
|
%{_mandir}/man8/thin_rmap.8.gz
|
||||||
|
|
@ -121,7 +105,6 @@ echo %{version}-%{release} > VERSION
|
||||||
%{_sbindir}/thin_dump
|
%{_sbindir}/thin_dump
|
||||||
%{_sbindir}/thin_ls
|
%{_sbindir}/thin_ls
|
||||||
%{_sbindir}/thin_metadata_size
|
%{_sbindir}/thin_metadata_size
|
||||||
%{_sbindir}/thin_migrate
|
|
||||||
%{_sbindir}/thin_repair
|
%{_sbindir}/thin_repair
|
||||||
%{_sbindir}/thin_restore
|
%{_sbindir}/thin_restore
|
||||||
%{_sbindir}/thin_rmap
|
%{_sbindir}/thin_rmap
|
||||||
|
|
@ -131,27 +114,6 @@ echo %{version}-%{release} > VERSION
|
||||||
#% {_sbindir}/thin_show_duplicates
|
#% {_sbindir}/thin_show_duplicates
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
* Tue Dec 02 2025 Marian Csontos <mcsontos@redhat.com> - 1.3.1-1
|
|
||||||
- Update to latest upstream release 1.3.1.
|
|
||||||
|
|
||||||
* Wed Oct 22 2025 Marian Csontos <mcsontos@redhat.com> - 1.3.0-1
|
|
||||||
- Update to latest upstream release 1.3.0.
|
|
||||||
|
|
||||||
* Thu Sep 04 2025 Marian Csontos <mcsontos@redhat.com> - 1.2.1-1
|
|
||||||
- Update to latest upstream release 1.2.1.
|
|
||||||
|
|
||||||
* Wed Jul 23 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.1.0-4
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
|
|
||||||
|
|
||||||
* Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.1.0-3
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
|
|
||||||
|
|
||||||
* Sun Jan 12 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.1.0-2
|
|
||||||
- Rebuilt for the bin-sbin merge (2nd attempt)
|
|
||||||
|
|
||||||
* Mon Sep 02 2024 Marian Csontos <mcsontos@redhat.com> - 1.1.0-1
|
|
||||||
- Update to latest upstream release 1.1.0.
|
|
||||||
|
|
||||||
* Wed Jul 17 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.12-3
|
* Wed Jul 17 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.12-3
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
|
||||||
|
|
||||||
|
|
|
||||||
4
sources
4
sources
|
|
@ -1,2 +1,2 @@
|
||||||
SHA512 (v1.3.1.tar.gz) = ff0758b21b50702568cad88522ee4c2b6b4433cec0a5f5074c9d1791c13e630e5c516601d7a68c51ac34e036091fc82fe831dbe51e6776737571d90ed266878e
|
SHA512 (v1.0.12.tar.gz) = 2e960e5a0d11016c1131ed48678a44c54164b43811f8efaa7172d9df7f433b185fa4b2f8d3d430affff19ced672f74a1f17614efd00287f2c310a6a3745ff8e5
|
||||||
SHA512 (dmpd131-vendor.tar.gz) = 0e1b8e501e330b64415c9097c94dfc1f1b43d2900a66258e40b6c8f28c51fd61247d60495f594f14550fb349ed4ad435f8959a8808fea1d363a206c5ead7db1e
|
SHA512 (dmpd1012-vendor.tar.gz) = 02c0015545f05ac71c427f734a766e75a0f5a17a7edddae57abbb0d1277c0d91c6e26d59dd91aef2f2050aee6aef2e118478ca15183c36348e93185ebad3c1e0
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue