From 3a6c7c6f8e6120921f303f04253ddfeb8312d460 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Mon, 27 Jul 2020 15:17:54 +0000 Subject: [PATCH 01/50] - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- device-mapper-persistent-data.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/device-mapper-persistent-data.spec b/device-mapper-persistent-data.spec index b30c346..2496c15 100644 --- a/device-mapper-persistent-data.spec +++ b/device-mapper-persistent-data.spec @@ -5,7 +5,7 @@ Summary: Device-mapper Persistent Data Tools Name: device-mapper-persistent-data Version: 0.8.5 -Release: 3%{?dist} +Release: 4%{?dist} License: GPLv3+ URL: https://github.com/jthornber/thin-provisioning-tools #Source0: https://github.com/jthornber/thin-provisioning-tools/archive/thin-provisioning-tools-% {version}.tar.gz @@ -80,6 +80,9 @@ make DESTDIR=%{buildroot} MANDIR=%{_mandir} install #% {_sbindir}/thin_show_duplicates %changelog +* Mon Jul 27 2020 Fedora Release Engineering - 0.8.5-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + * Tue Jan 28 2020 Fedora Release Engineering - 0.8.5-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild From 00ee8c1bd221db95ca1455abba90727e9d6f6445 Mon Sep 17 00:00:00 2001 From: Marian Csontos Date: Tue, 1 Sep 2020 15:02:56 +0200 Subject: [PATCH 02/50] Update to upstream release 0.9.0 --- .gitignore | 3 ++ 0001-Update-dependencies.patch | 25 ++++++++++++++++ README.md | 24 ++++++++++++++++ device-mapper-persistent-data.spec | 46 ++++++++++++++++++++++++++---- sources | 2 +- 5 files changed, 94 insertions(+), 6 deletions(-) create mode 100644 0001-Update-dependencies.patch create mode 100644 README.md diff --git a/.gitignore b/.gitignore index 18aaa44..15172ca 100644 --- a/.gitignore +++ b/.gitignore @@ -33,3 +33,6 @@ /v0.8.0.tar.gz /v0.8.1.tar.gz /v0.8.5.tar.gz +/v0.9.0-rc2.tar.gz +/device-mapper-persistent-data-0.9.0-rc2-vendor.tar.gz +/v0.9.0.tar.gz diff --git a/0001-Update-dependencies.patch b/0001-Update-dependencies.patch new file mode 100644 index 0000000..aaca7ac --- /dev/null +++ b/0001-Update-dependencies.patch @@ -0,0 +1,25 @@ +From 4a45e1d7eafb83ec9c76f0b3278f4bc7efbdde9d Mon Sep 17 00:00:00 2001 +From: Marian Csontos +Date: Tue, 1 Sep 2020 14:55:48 +0200 +Subject: [PATCH] Update dependencies + +--- + Cargo.toml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Cargo.toml b/Cargo.toml +index 892ea4c..93fc807 100644 +--- a/Cargo.toml ++++ b/Cargo.toml +@@ -9,7 +9,7 @@ license = "GPL3" + anyhow = "1.0" + byteorder = "1.3" + clap = "2.33" +-crc32c = "0.4" ++crc32c = "0.5" + flate2 = "1.0" + fixedbitset = "0.3" + libc = "0.2.71" +-- +1.8.3.1 + diff --git a/README.md b/README.md new file mode 100644 index 0000000..4c77f74 --- /dev/null +++ b/README.md @@ -0,0 +1,24 @@ +# Packaging dmpd + +This is mostly regular package except recent addition of rust to used languages. + +## rust-tools + +To build the rust-tools (`make rust-tools`) one needs: + +- rust >= 1.35 +- cargo with vendor subcommand (now upstream, included in latest Fedora and RHEL8) + +### cargo vendpr + +- run `cargo vendor` in the disrectory with sources +- run `tar czf device-mapper-persistent-data-vendor-$VERSION.tar.gz ./vendor` +- copy the file (if version changed) and run the *fedpkg new-sources* command: + - `fedpkg new-sources v$VERSION.tar.gz device-mapper-persistent-data-vendor-$VERSION.tar.gz` + +## TODO/NOTES + +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? + +*%cargo_install* installs by defualt in */usr/bin* but the package expects */usr/sbin*. For now I run *make install-rust-tools*. + diff --git a/device-mapper-persistent-data.spec b/device-mapper-persistent-data.spec index 2496c15..2878e32 100644 --- a/device-mapper-persistent-data.spec +++ b/device-mapper-persistent-data.spec @@ -2,18 +2,27 @@ # Copyright (C) 2011-2017 Red Hat, Inc # +#%%global version_suffix -rc2 +%global release_suffix .test2 + Summary: Device-mapper Persistent Data Tools Name: device-mapper-persistent-data -Version: 0.8.5 -Release: 4%{?dist} +Version: 0.9.0 +Release: 0.2%{?dist}%{?release_suffix} License: GPLv3+ 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/v%{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 Patch0: device-mapper-persistent-data-avoid-strip.patch +Patch1: 0001-Update-dependencies.patch BuildRequires: autoconf, expat-devel, libaio-devel, libstdc++-devel, boost-devel, gcc-c++ Requires: expat +%ifarch %{rust_arches} +BuildRequires: rust-packaging +BuildRequires: rust >= 1.35 +BuildRequires: cargo +%endif %description thin-provisioning-tools contains check,dump,restore,repair,rmap @@ -24,17 +33,32 @@ are included and era check, dump, restore and invalidate to manage snapshot eras %prep -%setup -q -n thin-provisioning-tools-%{version} +%setup -q -n thin-provisioning-tools-%{version}%{version_suffix} +%ifarch %{rust_arches} +%cargo_prep +%endif %patch0 -p1 -b .avoid_strip +%patch1 -p1 -b .toml_update echo %{version}-%{release} > VERSION +%generate_buildrequires +%cargo_generate_buildrequires + %build autoconf %configure --with-optimisation= make %{?_smp_mflags} V= +%ifarch %{rust_arches} +%cargo_build +%endif %install make DESTDIR=%{buildroot} MANDIR=%{_mandir} install +%ifarch %{rust_arches} +make DESTDIR=%{buildroot} MANDIR=%{_mandir} install-rust-tools +# cargo_install installs into /usr/bin +#%%cargo_install +%endif %files %doc COPYING README.md @@ -57,6 +81,10 @@ make DESTDIR=%{buildroot} MANDIR=%{_mandir} install %{_mandir}/man8/thin_restore.8.gz %{_mandir}/man8/thin_rmap.8.gz %{_mandir}/man8/thin_trim.8.gz +%ifarch %{rust_arches} +%{_mandir}/man8/thin_metadata_pack.8.gz +%{_mandir}/man8/thin_metadata_unpack.8.gz +%endif %{_sbindir}/pdata_tools %{_sbindir}/cache_check %{_sbindir}/cache_dump @@ -77,9 +105,17 @@ make DESTDIR=%{buildroot} MANDIR=%{_mandir} install %{_sbindir}/thin_restore %{_sbindir}/thin_rmap %{_sbindir}/thin_trim +%ifarch %{rust_arches} +%{_sbindir}/thin_metadata_pack +%{_sbindir}/thin_metadata_unpack +%endif #% {_sbindir}/thin_show_duplicates %changelog +* Tue Sep 01 2020 Marian Csontos - 0.9.0-0.2 +- Update to latest upstream version +- New tools thin_metadata_pack and thin_metadata_unpack + * Mon Jul 27 2020 Fedora Release Engineering - 0.8.5-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild diff --git a/sources b/sources index db03cfa..1219fce 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (v0.8.5.tar.gz) = 11e8f6bccaa1d5ccc622a356995f60afa45bba5f4dd80e2fbd7e980963d856a15a32d7b3305e445291936d5207af72fac85d9956680ed7c651383cc57a945451 +SHA512 (v0.9.0.tar.gz) = e1796fb3948847d72ca8247cae58017507c0a847a00201b93668eeb8fbfea4107c4c2affa5c211c149798a89b10474e83d2bd61a5545a668299be97aed591e0f From 17d784aa7f2421481f493b0dc88f4155167ad1bb Mon Sep 17 00:00:00 2001 From: Marian Csontos Date: Thu, 17 Sep 2020 17:21:56 +0200 Subject: [PATCH 03/50] Update to ustrream release 0.9.0 --- .gitignore | 1 + device-mapper-persistent-data.spec | 29 ++++++++++++++++++++--------- sources | 1 + 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index 15172ca..a2c13b7 100644 --- a/.gitignore +++ b/.gitignore @@ -36,3 +36,4 @@ /v0.9.0-rc2.tar.gz /device-mapper-persistent-data-0.9.0-rc2-vendor.tar.gz /v0.9.0.tar.gz +/dmpd090-vendor.tar.gz diff --git a/device-mapper-persistent-data.spec b/device-mapper-persistent-data.spec index 2878e32..4eb06e1 100644 --- a/device-mapper-persistent-data.spec +++ b/device-mapper-persistent-data.spec @@ -3,18 +3,19 @@ # #%%global version_suffix -rc2 -%global release_suffix .test2 +#%%global release_suffix .test3 Summary: Device-mapper Persistent Data Tools Name: device-mapper-persistent-data Version: 0.9.0 -Release: 0.2%{?dist}%{?release_suffix} +Release: 1%{?dist}%{?release_suffix} License: GPLv3+ 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/v%{version}%{version_suffix}.tar.gz +Source0: https://github.com/jthornber/thin-provisioning-tools/archive/v%{version}%{?version_suffix}.tar.gz +Source1: dmpd090-vendor.tar.gz Patch0: device-mapper-persistent-data-avoid-strip.patch -Patch1: 0001-Update-dependencies.patch +#Patch1: 0001-Update-dependencies.patch BuildRequires: autoconf, expat-devel, libaio-devel, libstdc++-devel, boost-devel, gcc-c++ Requires: expat @@ -33,16 +34,26 @@ are included and era check, dump, restore and invalidate to manage snapshot eras %prep -%setup -q -n thin-provisioning-tools-%{version}%{version_suffix} +%setup -q -n thin-provisioning-tools-%{version}%{?version_suffix} %ifarch %{rust_arches} -%cargo_prep +#%%patch1 -p1 -b .toml_update +#%%cargo_prep +#%%cargo_generate_buildrequires +tar xf %{SOURCE1} +mkdir -p .cargo +cat > .cargo/config < VERSION %generate_buildrequires -%cargo_generate_buildrequires %build autoconf @@ -112,7 +123,7 @@ make DESTDIR=%{buildroot} MANDIR=%{_mandir} install-rust-tools #% {_sbindir}/thin_show_duplicates %changelog -* Tue Sep 01 2020 Marian Csontos - 0.9.0-0.2 +* Thu Sep 17 2020 Marian Csontos - 0.9.0-1 - Update to latest upstream version - New tools thin_metadata_pack and thin_metadata_unpack diff --git a/sources b/sources index 1219fce..f0a209b 100644 --- a/sources +++ b/sources @@ -1 +1,2 @@ SHA512 (v0.9.0.tar.gz) = e1796fb3948847d72ca8247cae58017507c0a847a00201b93668eeb8fbfea4107c4c2affa5c211c149798a89b10474e83d2bd61a5545a668299be97aed591e0f +SHA512 (dmpd090-vendor.tar.gz) = fb455511b9a7cba22029f968e9caac14cb0c94f899fea7cb96b973f8abf9cfc26f9706f0b18e4750edda063d7014c485583f559f127f1296ecd3b0b9f5d912e3 From 9537e3e84a1eba43e35922610b1d66d5f6c8b8e3 Mon Sep 17 00:00:00 2001 From: Marian Csontos Date: Mon, 21 Sep 2020 14:26:43 +0200 Subject: [PATCH 04/50] Fix build on non x86 architectures --- .gitignore | 1 + device-mapper-persistent-data.spec | 11 +++++++---- sources | 2 +- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index a2c13b7..6a128c2 100644 --- a/.gitignore +++ b/.gitignore @@ -37,3 +37,4 @@ /device-mapper-persistent-data-0.9.0-rc2-vendor.tar.gz /v0.9.0.tar.gz /dmpd090-vendor.tar.gz +/dmpd090-vendor2.tar.gz diff --git a/device-mapper-persistent-data.spec b/device-mapper-persistent-data.spec index 4eb06e1..1fdf192 100644 --- a/device-mapper-persistent-data.spec +++ b/device-mapper-persistent-data.spec @@ -8,14 +8,14 @@ Summary: Device-mapper Persistent Data Tools Name: device-mapper-persistent-data Version: 0.9.0 -Release: 1%{?dist}%{?release_suffix} +Release: 2%{?dist}%{?release_suffix} License: GPLv3+ 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/v%{version}%{?version_suffix}.tar.gz -Source1: dmpd090-vendor.tar.gz +Source1: dmpd090-vendor2.tar.gz Patch0: device-mapper-persistent-data-avoid-strip.patch -#Patch1: 0001-Update-dependencies.patch +Patch1: 0001-Update-dependencies.patch BuildRequires: autoconf, expat-devel, libaio-devel, libstdc++-devel, boost-devel, gcc-c++ Requires: expat @@ -36,7 +36,7 @@ snapshot eras %prep %setup -q -n thin-provisioning-tools-%{version}%{?version_suffix} %ifarch %{rust_arches} -#%%patch1 -p1 -b .toml_update +%patch1 -p1 -b .toml_update #%%cargo_prep #%%cargo_generate_buildrequires tar xf %{SOURCE1} @@ -123,6 +123,9 @@ make DESTDIR=%{buildroot} MANDIR=%{_mandir} install-rust-tools #% {_sbindir}/thin_show_duplicates %changelog +* Mon Sep 21 2020 Marian Csontos - 0.9.0-2 +- Update crc32c to version 0.5 supporting non x86 architectures + * Thu Sep 17 2020 Marian Csontos - 0.9.0-1 - Update to latest upstream version - New tools thin_metadata_pack and thin_metadata_unpack diff --git a/sources b/sources index f0a209b..87073b3 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ SHA512 (v0.9.0.tar.gz) = e1796fb3948847d72ca8247cae58017507c0a847a00201b93668eeb8fbfea4107c4c2affa5c211c149798a89b10474e83d2bd61a5545a668299be97aed591e0f -SHA512 (dmpd090-vendor.tar.gz) = fb455511b9a7cba22029f968e9caac14cb0c94f899fea7cb96b973f8abf9cfc26f9706f0b18e4750edda063d7014c485583f559f127f1296ecd3b0b9f5d912e3 +SHA512 (dmpd090-vendor2.tar.gz) = 47e22d34e34345ae5c91e66063c2f78865b055fccd47c34a97e2bd2fed1f64fc7f13ad27071a149fefba53f5b437beeda3bacde25b690431e1ae50f77cec440c From d369cfa3c510ca9a6c3a7820225a97a6f2988610 Mon Sep 17 00:00:00 2001 From: Tom Stellard Date: Sat, 19 Dec 2020 06:06:36 +0000 Subject: [PATCH 05/50] Add BuildRequires: make https://fedoraproject.org/wiki/Changes/Remove_make_from_BuildRoot --- device-mapper-persistent-data.spec | 1 + 1 file changed, 1 insertion(+) diff --git a/device-mapper-persistent-data.spec b/device-mapper-persistent-data.spec index 1fdf192..0eb6961 100644 --- a/device-mapper-persistent-data.spec +++ b/device-mapper-persistent-data.spec @@ -24,6 +24,7 @@ BuildRequires: rust-packaging BuildRequires: rust >= 1.35 BuildRequires: cargo %endif +BuildRequires: make %description thin-provisioning-tools contains check,dump,restore,repair,rmap From 04960e2a1eb6ab9f067b49dee4066ede46122305 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Tue, 26 Jan 2021 03:17:52 +0000 Subject: [PATCH 06/50] - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- device-mapper-persistent-data.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/device-mapper-persistent-data.spec b/device-mapper-persistent-data.spec index 0eb6961..6f3c954 100644 --- a/device-mapper-persistent-data.spec +++ b/device-mapper-persistent-data.spec @@ -8,7 +8,7 @@ Summary: Device-mapper Persistent Data Tools Name: device-mapper-persistent-data Version: 0.9.0 -Release: 2%{?dist}%{?release_suffix} +Release: 3%{?dist}%{?release_suffix} License: GPLv3+ URL: https://github.com/jthornber/thin-provisioning-tools #Source0: https://github.com/jthornber/thin-provisioning-tools/archive/thin-provisioning-tools-%%{version}.tar.gz @@ -124,6 +124,9 @@ make DESTDIR=%{buildroot} MANDIR=%{_mandir} install-rust-tools #% {_sbindir}/thin_show_duplicates %changelog +* Tue Jan 26 2021 Fedora Release Engineering - 0.9.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + * Mon Sep 21 2020 Marian Csontos - 0.9.0-2 - Update crc32c to version 0.5 supporting non x86 architectures From c8a7f0ad3ed990804927e720247db44b687d0197 Mon Sep 17 00:00:00 2001 From: Marian Csontos Date: Thu, 10 Jun 2021 14:49:17 +0200 Subject: [PATCH 07/50] Fix gating tests --- tests/functions_test/dmpd_functions.py | 12 ++++++------ tests/functions_test/dmpd_library.py | 13 ++++++++----- tests/tools_not_linked_usr/tools_not_linked_usr.py | 12 ++++++------ 3 files changed, 20 insertions(+), 17 deletions(-) diff --git a/tests/functions_test/dmpd_functions.py b/tests/functions_test/dmpd_functions.py index a908bcf..bcf02d6 100755 --- a/tests/functions_test/dmpd_functions.py +++ b/tests/functions_test/dmpd_functions.py @@ -195,7 +195,7 @@ def thin_clean(args): def thin_test(args): print("\n#######################################\n") - print ( + print( "INFO: Testing thin tools runtime provided by device_mapper_persistent_data") errors = [] @@ -415,7 +415,7 @@ def thin_test(args): def thin_errors_test(args): print("\n#######################################\n") - print ( + print( "INFO: Testing thin tools errors provided by device_mapper_persistent_data") errors = [] @@ -845,7 +845,7 @@ def cache_clean(args): def cache_test(args): print("\n#######################################\n") - print ("INFO: Testing cache tools runtime provided by device_mapper_persistent_data") + print("INFO: Testing cache tools runtime provided by device_mapper_persistent_data") errors = [] @@ -965,7 +965,7 @@ def cache_test(args): def cache_errors_test(args): print("\n#######################################\n") - print ("INFO: Testing cache tools errors provided by device_mapper_persistent_data") + print("INFO: Testing cache tools errors provided by device_mapper_persistent_data") errors = [] @@ -1223,10 +1223,10 @@ def main(): cache_clean(args) if not TC.tend(): - print "FAIL: test failed" + print("FAIL: test failed") sys.exit(1) - print "PASS: Test pass" + print("PASS: Test pass") sys.exit(0) diff --git a/tests/functions_test/dmpd_library.py b/tests/functions_test/dmpd_library.py index e8f1ed9..d50d08f 100755 --- a/tests/functions_test/dmpd_library.py +++ b/tests/functions_test/dmpd_library.py @@ -23,6 +23,9 @@ import sys, os import subprocess import time import fileinput +# TODO: Is this really necessary? Unlikely we will run into python2 in rawhide +# again... +from __future__ import print_function def _print(string): @@ -1042,7 +1045,7 @@ class LoopDev: _print("WARN: Could not create loop device image file") return ret_fail except OSError as e: - print >> sys.err, "command failed: ", e + print("command failed: ", e, file=sys.err) return ret_fail loop_path = self._get_loop_path(name) @@ -1125,7 +1128,7 @@ class LoopDev: name = self._standardize_name(name) # Just try to detach if device is connected, otherwise ignore - # print "INFO: Checking if ", loop_path, " exists, to be detached" + # print("INFO: Checking if ", loop_path, " exists, to be detached") dev_path = self._get_loop_path(name) if dev_path in devs: cmd = "losetup -d %s" % dev_path @@ -1199,7 +1202,7 @@ class LVM: cmd = "vgcreate %s %s %s" % (options, vg_name, pv_name) retcode = run(cmd, verbose=verbose) if (retcode != 0): - # _print ("WARN: Could not create %s" % vg_name) + # _print("WARN: Could not create %s" % vg_name) return False return True @@ -1321,7 +1324,7 @@ class LVM: cmd = "lvcreate %s %s -n %s" % (" ".join(str(i) for i in options), vg_name, lv_name) retcode = run(cmd, verbose=verbose) if (retcode != 0): - # _print ("WARN: Could not create %s" % lv_name) + # _print("WARN: Could not create %s" % lv_name) return False return True @@ -1514,7 +1517,7 @@ class DMPD: _print("WARN: Could not create file to %s metadata to." % command_message) return False except OSError as e: - print >> sys.err, "command failed: ", e + print("command failed: ", e, file=sys.err) return False return True diff --git a/tests/tools_not_linked_usr/tools_not_linked_usr.py b/tests/tools_not_linked_usr/tools_not_linked_usr.py index 7acb804..74053cf 100755 --- a/tests/tools_not_linked_usr/tools_not_linked_usr.py +++ b/tests/tools_not_linked_usr/tools_not_linked_usr.py @@ -20,19 +20,19 @@ import sys import re def run(cmd): - print "INFO: Running '%s'..." % cmd + print("INFO: Running '%s'..." % cmd) p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True) stdout, stderr = p.communicate() retcode = p.returncode output = stdout + stderr - print output + print(output) return retcode, output def start_test(): #if uses any library linked to /usr this my affect the tools during boot - print ("INFO: Making sure tools provided by device-mapper-persistent-data " + print("INFO: Making sure tools provided by device-mapper-persistent-data " "are not linked to /usr") #Paths where we should have no libraries linked from @@ -54,7 +54,7 @@ def start_test(): continue tool_error = 0 for lib_path in lib_paths: - print "INFO: Checking if %s is not linked to libraries at %s" % (tool, lib_path) + print("INFO: Checking if %s is not linked to libraries at %s" % (tool, lib_path)) ret, linked_lib = run("ldd %s" % tool) if ret != 0: print("FAIL: Could not list dynamically libraries for %s" % (tool)) @@ -83,10 +83,10 @@ def start_test(): def main(): if not start_test(): - print "FAIL: test failed" + print("FAIL: test failed") sys.exit(1) - print "PASS: Test pass" + print("PASS: Test pass") sys.exit(0) main() From 266ea5b3cf8598f9c0437345020f2309c4514ea4 Mon Sep 17 00:00:00 2001 From: Marian Csontos Date: Thu, 10 Jun 2021 15:05:05 +0200 Subject: [PATCH 08/50] Fix issues found by static analysis --- 0001-all-Fix-resource-leaks.patch | 42 ++++ ...ow_metadata-Fix-out-of-bounds-access.patch | 26 ++ ...build-Fix-customized-emitter-linkage.patch | 25 ++ ...dump-Fix-leaked-shared-object-handle.patch | 139 +++++++++++ ...show_duplicates-Fix-potential-errors.patch | 52 ++++ ...a_size-Fix-potential-string-overflow.patch | 33 +++ ...-all-Fix-uninitialized-class-members.patch | 83 +++++++ ...x-warnings-on-potential-NULL-pointer.patch | 88 +++++++ ...nused-sources-from-the-regular-build.patch | 52 ++++ 0010-all-Remove-unreachable-code.patch | 51 ++++ 0011-file_utils-Fix-resource-leak.patch | 24 ++ ...-thin_delta-Clean-up-duplicated-code.patch | 224 ++++++++++++++++++ device-mapper-persistent-data.spec | 30 ++- 13 files changed, 868 insertions(+), 1 deletion(-) create mode 100644 0001-all-Fix-resource-leaks.patch create mode 100644 0002-thin_show_metadata-Fix-out-of-bounds-access.patch create mode 100644 0003-build-Fix-customized-emitter-linkage.patch create mode 100644 0004-thin_dump-Fix-leaked-shared-object-handle.patch create mode 100644 0005-thin_show_duplicates-Fix-potential-errors.patch create mode 100644 0006-thin_metadata_size-Fix-potential-string-overflow.patch create mode 100644 0007-all-Fix-uninitialized-class-members.patch create mode 100644 0008-thin_dump-Fix-warnings-on-potential-NULL-pointer.patch create mode 100644 0009-build-Remove-unused-sources-from-the-regular-build.patch create mode 100644 0010-all-Remove-unreachable-code.patch create mode 100644 0011-file_utils-Fix-resource-leak.patch create mode 100644 0012-thin_delta-Clean-up-duplicated-code.patch diff --git a/0001-all-Fix-resource-leaks.patch b/0001-all-Fix-resource-leaks.patch new file mode 100644 index 0000000..6519dfc --- /dev/null +++ b/0001-all-Fix-resource-leaks.patch @@ -0,0 +1,42 @@ +From 48676b9f1aac63f8a30ed8061b6e719929b82c98 Mon Sep 17 00:00:00 2001 +From: Ming-Hung Tsai +Date: Wed, 28 Apr 2021 10:34:16 +0800 +Subject: [PATCH 01/10] [all] Fix resource leaks + +--- + base/file_utils.cc | 4 +++- + thin-provisioning/cache_stream.cc | 2 +- + 2 files changed, 4 insertions(+), 2 deletions(-) + +diff --git a/base/file_utils.cc b/base/file_utils.cc +index e4f3722..8253660 100644 +--- a/base/file_utils.cc ++++ b/base/file_utils.cc +@@ -155,8 +155,10 @@ file_utils::zero_superblock(std::string const &path) + throw runtime_error("out of memory"); + + memset(buffer, 0, SUPERBLOCK_SIZE); +- if (::write(fd.fd_, buffer, SUPERBLOCK_SIZE) != SUPERBLOCK_SIZE) ++ if (::write(fd.fd_, buffer, SUPERBLOCK_SIZE) != SUPERBLOCK_SIZE) { ++ free(buffer); + throw runtime_error("couldn't zero superblock"); ++ } + } + + //---------------------------------------------------------------- +diff --git a/thin-provisioning/cache_stream.cc b/thin-provisioning/cache_stream.cc +index 002b6ba..73b01b4 100644 +--- a/thin-provisioning/cache_stream.cc ++++ b/thin-provisioning/cache_stream.cc +@@ -62,7 +62,7 @@ chunk const & + cache_stream::get() + { + chunk_wrapper *w = new chunk_wrapper(*this); +- return w->c_; ++ return w->c_; // wrapper will get freed by the put method + } + + void +-- +1.8.3.1 + diff --git a/0002-thin_show_metadata-Fix-out-of-bounds-access.patch b/0002-thin_show_metadata-Fix-out-of-bounds-access.patch new file mode 100644 index 0000000..66a6f0d --- /dev/null +++ b/0002-thin_show_metadata-Fix-out-of-bounds-access.patch @@ -0,0 +1,26 @@ +From 691a0237809b5364117446a8a9b0cceeb0a747c1 Mon Sep 17 00:00:00 2001 +From: Ming-Hung Tsai +Date: Tue, 1 Jun 2021 11:24:11 +0800 +Subject: [PATCH 02/10] [thin_show_metadata] Fix out-of-bounds access + +--- + thin-provisioning/thin_show_metadata.cc | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/thin-provisioning/thin_show_metadata.cc b/thin-provisioning/thin_show_metadata.cc +index bdbab3f..dbc7a80 100644 +--- a/thin-provisioning/thin_show_metadata.cc ++++ b/thin-provisioning/thin_show_metadata.cc +@@ -206,7 +206,8 @@ namespace { + + void run() { + auto line_length = 80; +- for (block_address b = 0; b < 2000; b++) { ++ block_address nr_blocks = std::min(2000, bm_.get_nr_blocks()); ++ for (block_address b = 0; b < nr_blocks; b++) { + block_manager::read_ref rr = bm_.read_lock(b); + + if (!(b % line_length)) { +-- +1.8.3.1 + diff --git a/0003-build-Fix-customized-emitter-linkage.patch b/0003-build-Fix-customized-emitter-linkage.patch new file mode 100644 index 0000000..05cfb56 --- /dev/null +++ b/0003-build-Fix-customized-emitter-linkage.patch @@ -0,0 +1,25 @@ +From 65369d88610069ba7bbd011b00af19523638b0fb Mon Sep 17 00:00:00 2001 +From: Ming-Hung Tsai +Date: Tue, 1 Jun 2021 13:32:26 +0800 +Subject: [PATCH 03/10] [build] Fix customized emitter linkage + +--- + contrib/Makefile.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/contrib/Makefile.in b/contrib/Makefile.in +index 038c41c..7192258 100644 +--- a/contrib/Makefile.in ++++ b/contrib/Makefile.in +@@ -18,7 +18,7 @@ contrib/%.a: contrib/%.o + $(V)echo " [AR] $@" + $(V)$(AR) rcs $@ $^ + +-contrib/%.so: contrib/%.a ++contrib/%.so: contrib/%.o + $(V)echo " [LD] $@" + $(V)$(CC) -shared -Wl,-soname,$@ -o $@ $< + +-- +1.8.3.1 + diff --git a/0004-thin_dump-Fix-leaked-shared-object-handle.patch b/0004-thin_dump-Fix-leaked-shared-object-handle.patch new file mode 100644 index 0000000..983143a --- /dev/null +++ b/0004-thin_dump-Fix-leaked-shared-object-handle.patch @@ -0,0 +1,139 @@ +From 7fbd79cab2e548eb388bc782dd39f1cde027173b Mon Sep 17 00:00:00 2001 +From: Ming-Hung Tsai +Date: Tue, 1 Jun 2021 23:37:36 +0800 +Subject: [PATCH 04/10] [thin_dump] Fix leaked shared object handle + +--- + thin-provisioning/shared_library_emitter.cc | 113 ++++++++++++++++++++++++---- + 1 file changed, 100 insertions(+), 13 deletions(-) + +diff --git a/thin-provisioning/shared_library_emitter.cc b/thin-provisioning/shared_library_emitter.cc +index 58f12d2..2e845f3 100644 +--- a/thin-provisioning/shared_library_emitter.cc ++++ b/thin-provisioning/shared_library_emitter.cc +@@ -8,22 +8,109 @@ using namespace thin_provisioning; + + //---------------------------------------------------------------- + +-emitter::ptr +-thin_provisioning::create_custom_emitter(string const &shared_lib, ostream &out) +-{ +- emitter::ptr (*create_fn)(ostream &out); +- void *handle = dlopen(shared_lib.c_str(), RTLD_LAZY); +- if (!handle) +- throw runtime_error(dlerror()); ++struct shared_object { ++public: ++ shared_object(const char *shared_lib) { ++ handle_ = dlopen(shared_lib, RTLD_LAZY); ++ if (!handle_) ++ throw runtime_error(dlerror()); ++ ++ dlerror(); // Clear any existing error ++ } ++ ++ virtual ~shared_object() { ++ dlclose(handle_); ++ } ++ ++ void *get_symbol(const char *symbol) { ++ void *sym = dlsym(handle_, symbol); ++ ++ char *error = dlerror(); ++ if (error) ++ throw runtime_error(error); ++ ++ return sym; ++ } ++ ++ void *handle_; ++}; ++ ++class shared_emitter : public emitter { ++public: ++ shared_emitter(const char *shared_lib, ostream &out): sobj_(shared_lib) { ++ emitter::ptr (*create_fn)(ostream &out); ++ create_fn = reinterpret_cast( ++ sobj_.get_symbol("create_emitter")); ++ inner_ = create_fn(out); ++ } ++ ++ virtual ~shared_emitter() { ++ } ++ ++ void begin_superblock(std::string const &uuid, ++ uint64_t time, ++ uint64_t trans_id, ++ boost::optional flags, ++ boost::optional version, ++ uint32_t data_block_size, ++ uint64_t nr_data_blocks, ++ boost::optional metadata_snap) { ++ inner_->begin_superblock(uuid, ++ time, ++ trans_id, ++ flags, ++ version, ++ data_block_size, ++ nr_data_blocks, ++ metadata_snap); ++ } + +- dlerror(); // Clear any existing error +- create_fn = reinterpret_cast(dlsym(handle, "create_emitter")); ++ void end_superblock() { ++ inner_->end_superblock(); ++ } + +- char *error = dlerror(); +- if (error) +- throw runtime_error(error); ++ void begin_device(uint32_t dev_id, ++ uint64_t mapped_blocks, ++ uint64_t trans_id, ++ uint64_t creation_time, ++ uint64_t snap_time) { ++ inner_->begin_device(dev_id, mapped_blocks, trans_id, creation_time, snap_time); ++ } + +- return create_fn(out); ++ void end_device() { ++ inner_->end_device(); ++ } ++ ++ void begin_named_mapping(std::string const &name) { ++ inner_->begin_named_mapping(name); ++ } ++ ++ void end_named_mapping() { ++ inner_->end_named_mapping(); ++ } ++ ++ void identifier(std::string const &name) { ++ inner_->identifier(name); ++ } ++ ++ void range_map(uint64_t origin_begin, uint64_t data_begin, uint32_t time, uint64_t len) { ++ inner_->range_map(origin_begin, data_begin, time, len); ++ } ++ ++ void single_map(uint64_t origin_block, uint64_t data_block, uint32_t time) { ++ inner_->single_map(origin_block, data_block, time); ++ } ++ ++ shared_object sobj_; ++ emitter::ptr inner_; ++}; ++ ++//---------------------------------------------------------------- ++ ++emitter::ptr ++thin_provisioning::create_custom_emitter(string const &shared_lib, ostream &out) ++{ ++ return emitter::ptr(new shared_emitter(shared_lib.c_str(), out)); + } + + //---------------------------------------------------------------- +-- +1.8.3.1 + diff --git a/0005-thin_show_duplicates-Fix-potential-errors.patch b/0005-thin_show_duplicates-Fix-potential-errors.patch new file mode 100644 index 0000000..ee07eb3 --- /dev/null +++ b/0005-thin_show_duplicates-Fix-potential-errors.patch @@ -0,0 +1,52 @@ +From 32de33be68f3892698d492b9ab8f21f9186b3f4c Mon Sep 17 00:00:00 2001 +From: Ming-Hung Tsai +Date: Wed, 2 Jun 2021 01:23:13 +0800 +Subject: [PATCH 05/10] [thin_show_duplicates] Fix potential errors + +- Fix error if no --block-sector provided +- Fix errors on pools without mappings, or zero-length file +--- + thin-provisioning/thin_show_duplicates.cc | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/thin-provisioning/thin_show_duplicates.cc b/thin-provisioning/thin_show_duplicates.cc +index b1eebb7..f7354eb 100644 +--- a/thin-provisioning/thin_show_duplicates.cc ++++ b/thin-provisioning/thin_show_duplicates.cc +@@ -56,7 +56,7 @@ using namespace thin_provisioning; + + namespace { + bool factor_of(block_address f, block_address n) { +- return (n % f) == 0; ++ return f && (n % f) == 0; + } + + uint64_t parse_int(string const &str, string const &desc) { +@@ -132,11 +132,15 @@ namespace { + class duplicate_detector { + public: + void scan_with_variable_sized_chunks(chunk_stream &stream) { ++ if (!stream.size()) ++ return; + variable_chunk_stream vstream(stream, 4096); + scan(vstream); + } + + void scan_with_fixed_sized_chunks(chunk_stream &stream, block_address chunk_size) { ++ if (!stream.size()) ++ return; + fixed_chunk_stream fstream(stream, chunk_size); + scan(fstream); + } +@@ -222,7 +226,7 @@ namespace { + if (fs.content_based_chunks) + detector.scan_with_variable_sized_chunks(pstream); + else { +- if (*fs.block_size) { ++ if (!!fs.block_size) { + if (factor_of(*fs.block_size, block_size)) + block_size = *fs.block_size; + else +-- +1.8.3.1 + diff --git a/0006-thin_metadata_size-Fix-potential-string-overflow.patch b/0006-thin_metadata_size-Fix-potential-string-overflow.patch new file mode 100644 index 0000000..cd22d1c --- /dev/null +++ b/0006-thin_metadata_size-Fix-potential-string-overflow.patch @@ -0,0 +1,33 @@ +From 35e96e07c956a501cb8a12f5b873db173bb09179 Mon Sep 17 00:00:00 2001 +From: Ming-Hung Tsai +Date: Wed, 2 Jun 2021 11:39:01 +0800 +Subject: [PATCH 06/10] [thin_metadata_size] Fix potential string overflow + +--- + thin-provisioning/thin_metadata_size.cc | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) + +diff --git a/thin-provisioning/thin_metadata_size.cc b/thin-provisioning/thin_metadata_size.cc +index b6a5718..f14696c 100644 +--- a/thin-provisioning/thin_metadata_size.cc ++++ b/thin-provisioning/thin_metadata_size.cc +@@ -192,9 +192,13 @@ static void printf_aligned(struct global *g, char const *a, char const *b, char + { + char buf[80]; + +- strcpy(buf, b); +- if (units) +- strcat(buf, mandatory ? "{" :"["), strcat(buf, g->unit.chars), strcat(buf, mandatory ? "}" : "]"); ++ if (units) { ++ char left_bracket = mandatory ? '{' : '['; ++ char right_bracket = mandatory ? '}' : ']'; ++ snprintf(buf, 80, "%s%c%s%c", b, left_bracket, g->unit.chars, right_bracket); ++ } else { ++ snprintf(buf, 80, "%s", b); ++ } + + printf("\t%-4s%-44s%s\n", a, buf, c); + } +-- +1.8.3.1 + diff --git a/0007-all-Fix-uninitialized-class-members.patch b/0007-all-Fix-uninitialized-class-members.patch new file mode 100644 index 0000000..11971a6 --- /dev/null +++ b/0007-all-Fix-uninitialized-class-members.patch @@ -0,0 +1,83 @@ +From f1e404c33ad14f6784aa1926ae75fa49e614748e Mon Sep 17 00:00:00 2001 +From: Ming-Hung Tsai +Date: Wed, 2 Jun 2021 12:14:34 +0800 +Subject: [PATCH 07/10] [all] Fix uninitialized class members + +--- + era/restore_emitter.cc | 1 + + thin-provisioning/metadata_dumper.cc | 10 +++++++--- + thin-provisioning/thin_delta.cc | 4 +++- + 3 files changed, 11 insertions(+), 4 deletions(-) + +diff --git a/era/restore_emitter.cc b/era/restore_emitter.cc +index c09fa66..7fbac7d 100644 +--- a/era/restore_emitter.cc ++++ b/era/restore_emitter.cc +@@ -14,6 +14,7 @@ namespace { + : md_(md), + in_superblock_(false), + in_writeset_(false), ++ era_(0), + in_era_array_(false) { + } + +diff --git a/thin-provisioning/metadata_dumper.cc b/thin-provisioning/metadata_dumper.cc +index 4feb40f..665c762 100644 +--- a/thin-provisioning/metadata_dumper.cc ++++ b/thin-provisioning/metadata_dumper.cc +@@ -180,7 +180,7 @@ namespace { + // This is about classifying and summarising btree nodes. The use of a btree + // node may not be obvious when inspecting it in isolation. But more information + // may be gleaned by examining child and sibling nodes. +-// ++// + // So the process is: + // - scan every metadata block, summarising it's potential uses. + // - repeatedly iterate those summaries until we can glean no more useful information. +@@ -474,7 +474,7 @@ namespace { + node_info get_internal_info(block_manager::read_ref &rr) { + node_info info; + info.b = rr.get_location(); +- ++ + // values refer to blocks, so we should have infos for them. + auto n = to_node(rr); + ::uint64_t key_low = 0; +@@ -524,7 +524,7 @@ namespace { + node_info info; + info.b = rr.get_location(); + +- auto vsize = to_cpu(hdr.value_size); ++ auto vsize = to_cpu(hdr.value_size); + info.values = to_cpu(hdr.nr_entries); + + if (vsize == sizeof(device_details_traits::disk_type)) { +@@ -645,6 +645,10 @@ namespace { + public: + mapping_emit_visitor(emitter::ptr e) + : e_(e), ++ origin_start_(0), ++ dest_start_(0), ++ time_(0), ++ len_(0), + in_range_(false) { + } + +diff --git a/thin-provisioning/thin_delta.cc b/thin-provisioning/thin_delta.cc +index 5b31608..ee48dea 100644 +--- a/thin-provisioning/thin_delta.cc ++++ b/thin-provisioning/thin_delta.cc +@@ -259,7 +259,9 @@ namespace local { + class simple_emitter : public diff_emitter { + public: + simple_emitter(indented_stream &out) +- : diff_emitter(out) { ++ : diff_emitter(out), ++ vbegin_(0), ++ vend_(0) { + } + + void left_only(uint64_t vbegin, uint64_t dbegin, uint64_t len) { +-- +1.8.3.1 + diff --git a/0008-thin_dump-Fix-warnings-on-potential-NULL-pointer.patch b/0008-thin_dump-Fix-warnings-on-potential-NULL-pointer.patch new file mode 100644 index 0000000..6005172 --- /dev/null +++ b/0008-thin_dump-Fix-warnings-on-potential-NULL-pointer.patch @@ -0,0 +1,88 @@ +From 5d79a5c944d05f71425d3156597a2a61c5f2ab9a Mon Sep 17 00:00:00 2001 +From: Ming-Hung Tsai +Date: Wed, 2 Jun 2021 13:08:47 +0800 +Subject: [PATCH 08/10] [thin_dump] Fix warnings on potential NULL pointer + +--- + base/application.cc | 8 +++++++- + base/application.h | 2 +- + thin-provisioning/thin_dump.cc | 16 ++-------------- + 3 files changed, 10 insertions(+), 16 deletions(-) + +diff --git a/base/application.cc b/base/application.cc +index 61338ff..dbd55a5 100644 +--- a/base/application.cc ++++ b/base/application.cc +@@ -25,8 +25,14 @@ command::die(string const &msg) + } + + ::uint64_t +-command::parse_uint64(string const &str, string const &desc) ++command::parse_uint64(char const *str, char const *desc) + { ++ if (!str) { ++ ostringstream out; ++ out << "Couldn't parse " << desc << ": NULL"; ++ die(out.str()); ++ } ++ + try { + // FIXME: check trailing garbage is handled + return lexical_cast<::uint64_t>(str); +diff --git a/base/application.h b/base/application.h +index b799eaf..f071533 100644 +--- a/base/application.h ++++ b/base/application.h +@@ -19,7 +19,7 @@ namespace base { + virtual ~command() {} + + void die(std::string const &msg); +- uint64_t parse_uint64(std::string const &str, std::string const &desc); ++ uint64_t parse_uint64(char const *str, char const *desc); + + + virtual void usage(std::ostream &out) const = 0; +diff --git a/thin-provisioning/thin_dump.cc b/thin-provisioning/thin_dump.cc +index 74cfa91..c0e73e6 100644 +--- a/thin-provisioning/thin_dump.cc ++++ b/thin-provisioning/thin_dump.cc +@@ -143,7 +143,6 @@ thin_dump_cmd::run(int argc, char **argv) + int c; + char const *output = NULL; + const char shortopts[] = "hm::o:f:rV"; +- char *end_ptr; + block_address metadata_snap = 0; + ::uint64_t dev_id; + struct flags flags; +@@ -181,13 +180,7 @@ thin_dump_cmd::run(int argc, char **argv) + flags.use_metadata_snap = true; + if (optarg) { + // FIXME: deprecate this option +- metadata_snap = strtoull(optarg, &end_ptr, 10); +- if (end_ptr == optarg) { +- cerr << "couldn't parse " << endl; +- usage(cerr); +- return 1; +- } +- ++ metadata_snap = parse_uint64(optarg, "metadata-snap"); + flags.snap_location = metadata_snap; + } + break; +@@ -197,12 +190,7 @@ thin_dump_cmd::run(int argc, char **argv) + break; + + case 1: +- dev_id = strtoull(optarg, &end_ptr, 10); +- if (end_ptr == optarg) { +- cerr << "couldn't parse \n"; +- usage(cerr); +- return 1; +- } ++ dev_id = parse_uint64(optarg, "dev-id"); + flags.opts.select_dev(dev_id); + break; + +-- +1.8.3.1 + diff --git a/0009-build-Remove-unused-sources-from-the-regular-build.patch b/0009-build-Remove-unused-sources-from-the-regular-build.patch new file mode 100644 index 0000000..7d49603 --- /dev/null +++ b/0009-build-Remove-unused-sources-from-the-regular-build.patch @@ -0,0 +1,52 @@ +From 1c50c406ddda77f4c0b20e7bf3cc985e84526f51 Mon Sep 17 00:00:00 2001 +From: Ming-Hung Tsai +Date: Wed, 2 Jun 2021 13:14:30 +0800 +Subject: [PATCH 09/10] [build] Remove unused sources from the regular build + +--- + Makefile.in | 9 ++++----- + 1 file changed, 4 insertions(+), 5 deletions(-) + +diff --git a/Makefile.in b/Makefile.in +index b1fd4aa..9b13001 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -96,10 +96,7 @@ SOURCE=\ + persistent-data/transaction_manager.cc \ + persistent-data/validators.cc \ + thin-provisioning/commands.cc \ +- thin-provisioning/cache_stream.cc \ +- thin-provisioning/chunk_stream.cc \ + thin-provisioning/device_tree.cc \ +- thin-provisioning/fixed_chunk_stream.cc \ + thin-provisioning/human_readable_format.cc \ + thin-provisioning/mapping_tree.cc \ + thin-provisioning/metadata.cc \ +@@ -107,7 +104,6 @@ SOURCE=\ + thin-provisioning/metadata_counter.cc \ + thin-provisioning/metadata_dumper.cc \ + thin-provisioning/override_emitter.cc \ +- thin-provisioning/pool_stream.cc \ + thin-provisioning/restore_emitter.cc \ + thin-provisioning/rmap_visitor.cc \ + thin-provisioning/superblock.cc \ +@@ -124,7 +120,11 @@ SOURCE=\ + thin-provisioning/xml_format.cc + + DEVTOOLS_SOURCE=\ ++ thin-provisioning/cache_stream.cc \ ++ thin-provisioning/chunk_stream.cc \ + thin-provisioning/damage_generator.cc \ ++ thin-provisioning/fixed_chunk_stream.cc \ ++ thin-provisioning/pool_stream.cc \ + thin-provisioning/thin_journal.cc \ + thin-provisioning/thin_journal_check.cc \ + thin-provisioning/thin_ll_dump.cc \ +@@ -374,4 +374,3 @@ test: functional-test unit-test + endif + + -include $(DEPEND_FILES) +- +-- +1.8.3.1 + diff --git a/0010-all-Remove-unreachable-code.patch b/0010-all-Remove-unreachable-code.patch new file mode 100644 index 0000000..b72ec41 --- /dev/null +++ b/0010-all-Remove-unreachable-code.patch @@ -0,0 +1,51 @@ +From 9e94a4349186f7353e0d7b536b46bfa4df2483d0 Mon Sep 17 00:00:00 2001 +From: Ming-Hung Tsai +Date: Wed, 2 Jun 2021 14:59:29 +0800 +Subject: [PATCH 10/10] [all] Remove unreachable code + +--- + block-cache/io_engine.cc | 3 --- + caching/hint_array.cc | 6 ------ + 2 files changed, 9 deletions(-) + +diff --git a/block-cache/io_engine.cc b/block-cache/io_engine.cc +index 2fe4082..0158723 100644 +--- a/block-cache/io_engine.cc ++++ b/block-cache/io_engine.cc +@@ -174,9 +174,6 @@ aio_engine::wait_(timespec *ts) + cbs_.free(cb); + return optional(make_pair(false, context)); + } +- +- // shouldn't get here +- return optional(make_pair(false, 0)); + } + + struct timespec +diff --git a/caching/hint_array.cc b/caching/hint_array.cc +index 6514968..e133c5c 100644 +--- a/caching/hint_array.cc ++++ b/caching/hint_array.cc +@@ -56,9 +56,6 @@ namespace { + default: + throw runtime_error("invalid hint width"); + } +- +- // never get here +- return std::shared_ptr(); + } + + //-------------------------------- +@@ -93,9 +90,6 @@ namespace { + default: + throw runtime_error("invalid hint width"); + } +- +- // never get here +- return std::shared_ptr(); + } + + //-------------------------------- +-- +1.8.3.1 + diff --git a/0011-file_utils-Fix-resource-leak.patch b/0011-file_utils-Fix-resource-leak.patch new file mode 100644 index 0000000..bef546b --- /dev/null +++ b/0011-file_utils-Fix-resource-leak.patch @@ -0,0 +1,24 @@ +From 677fa789e4136dbdd589c1e65efc7cdaad7506ac Mon Sep 17 00:00:00 2001 +From: Ming-Hung Tsai +Date: Fri, 4 Jun 2021 21:37:02 +0800 +Subject: [PATCH 1/2] [file_utils] Fix resource leak + +--- + base/file_utils.cc | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/base/file_utils.cc b/base/file_utils.cc +index 8253660..e6095f7 100644 +--- a/base/file_utils.cc ++++ b/base/file_utils.cc +@@ -159,6 +159,7 @@ file_utils::zero_superblock(std::string const &path) + free(buffer); + throw runtime_error("couldn't zero superblock"); + } ++ free(buffer); + } + + //---------------------------------------------------------------- +-- +1.8.3.1 + diff --git a/0012-thin_delta-Clean-up-duplicated-code.patch b/0012-thin_delta-Clean-up-duplicated-code.patch new file mode 100644 index 0000000..b45136e --- /dev/null +++ b/0012-thin_delta-Clean-up-duplicated-code.patch @@ -0,0 +1,224 @@ +From 2e755c67064c0157e646acfa57fbcc738905f7d4 Mon Sep 17 00:00:00 2001 +From: Ming-Hung Tsai +Date: Tue, 20 Oct 2020 15:18:06 +0800 +Subject: [PATCH 2/2] [thin_delta] Clean up duplicated code + +--- + thin-provisioning/thin_delta.cc | 105 ++++++++++++---------------------------- + 1 file changed, 31 insertions(+), 74 deletions(-) + +diff --git a/thin-provisioning/thin_delta.cc b/thin-provisioning/thin_delta.cc +index ee48dea..2ff3e69 100644 +--- a/thin-provisioning/thin_delta.cc ++++ b/thin-provisioning/thin_delta.cc +@@ -22,47 +22,7 @@ using namespace thin_provisioning; + + //---------------------------------------------------------------- + +-namespace local { +- class application { +- public: +- application(string const &cmd) +- : cmd_(cmd) { +- } +- +- void usage(ostream &out) { +- out << "Usage: " << cmd_ << " [options] \n" +- << "Options:\n" +- << " {--thin1, --snap1}\n" +- << " {--thin2, --snap2}\n" +- << " {-m, --metadata-snap} [block#]\n" +- << " {--verbose}\n" +- << " {-h|--help}\n" +- << " {-V|--version}" << endl; +- } +- +- void die(string const &msg) { +- cerr << msg << endl; +- usage(cerr); +- exit(1); +- } +- +- uint64_t parse_int(string const &str, string const &desc) { +- try { +- return boost::lexical_cast(str); +- +- } catch (...) { +- ostringstream out; +- out << "Couldn't parse " << desc << ": '" << str << "'"; +- die(out.str()); +- } +- +- return 0; // never get here +- } +- +- private: +- string cmd_; +- }; +- ++namespace { + struct flags { + flags() + : verbose(false), +@@ -96,13 +56,6 @@ namespace local { + uint64_t vbegin_, dbegin_, len_; + }; + +- ostream &operator <<(ostream &out, mapping const &m) { +- out << "mapping[vbegin = " << m.vbegin_ +- << ", dbegin = " << m.dbegin_ +- << ", len = " << m.len_ << "]"; +- return out; +- } +- + //-------------------------------- + + template +@@ -542,7 +495,7 @@ namespace local { + out << "\n"; + } + +- void delta_(application &app, flags const &fs) { ++ void delta_(flags const &fs) { + mapping_recorder mr1; + mapping_recorder mr2; + damage_visitor damage_v; +@@ -560,7 +513,7 @@ namespace local { + if (!snap1_root) { + ostringstream out; + out << "Unable to find mapping tree for snap1 (" << *fs.snap1 << ")"; +- app.die(out.str()); ++ throw std::runtime_error(out.str()); + } + + single_mapping_tree snap1(*md->tm_, *snap1_root, +@@ -572,7 +525,7 @@ namespace local { + if (!snap2_root) { + ostringstream out; + out << "Unable to find mapping tree for snap2 (" << *fs.snap2 << ")"; +- app.die(out.str()); ++ throw std::runtime_error(out.str()); + } + + single_mapping_tree snap2(*md->tm_, *snap2_root, +@@ -609,12 +562,12 @@ namespace local { + end_superblock(is); + } + +- int delta(application &app, flags const &fs) { ++ int delta(flags const &fs) { + try { +- delta_(app, fs); ++ delta_(fs); + } catch (exception const &e) { +- app.die(e.what()); +- return 1; // never get here ++ cerr << e.what() << endl; ++ return 1; + } + + return 0; +@@ -633,27 +586,31 @@ thin_delta_cmd::thin_delta_cmd() + void + thin_delta_cmd::usage(std::ostream &out) const + { +- // FIXME: finish ++ out << "Usage: " << get_name() << " [options] \n" ++ << "Options:\n" ++ << " {--thin1, --snap1}\n" ++ << " {--thin2, --snap2}\n" ++ << " {-m, --metadata-snap} [block#]\n" ++ << " {--verbose}\n" ++ << " {-h|--help}\n" ++ << " {-V|--version}" << endl; + } + + int + thin_delta_cmd::run(int argc, char **argv) + { +- using namespace local; +- + int c; + flags fs; +- local::application app(basename(argv[0])); + + char const shortopts[] = "hVm::"; + option const longopts[] = { + { "help", no_argument, NULL, 'h' }, ++ { "metadata-snap", optional_argument, NULL, 'm' }, + { "version", no_argument, NULL, 'V' }, + { "thin1", required_argument, NULL, 1 }, + { "snap1", required_argument, NULL, 1 }, + { "thin2", required_argument, NULL, 2 }, + { "snap2", required_argument, NULL, 2 }, +- { "metadata-snap", optional_argument, NULL, 'm' }, + { "verbose", no_argument, NULL, 4 }, + { NULL, no_argument, NULL, 0 } + }; +@@ -661,25 +618,25 @@ thin_delta_cmd::run(int argc, char **argv) + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) { + switch (c) { + case 'h': +- app.usage(cout); ++ usage(cout); + return 0; + ++ case 'm': ++ fs.use_metadata_snap = true; ++ if (optarg) ++ fs.metadata_snap = parse_uint64(optarg, "metadata snapshot block"); ++ break; ++ + case 'V': + cout << THIN_PROVISIONING_TOOLS_VERSION << endl; + return 0; + + case 1: +- fs.snap1 = app.parse_int(optarg, "thin id 1"); ++ fs.snap1 = parse_uint64(optarg, "thin id 1"); + break; + + case 2: +- fs.snap2 = app.parse_int(optarg, "thin id 2"); +- break; +- +- case 'm': +- fs.use_metadata_snap = true; +- if (optarg) +- fs.metadata_snap = app.parse_int(optarg, "metadata snapshot block"); ++ fs.snap2 = parse_uint64(optarg, "thin id 2"); + break; + + case 4: +@@ -687,23 +644,23 @@ thin_delta_cmd::run(int argc, char **argv) + break; + + default: +- app.usage(cerr); ++ usage(cerr); + return 1; + } + } + + if (argc == optind) +- app.die("No input device provided."); ++ die("No input device provided."); + else + fs.dev = argv[optind]; + + if (!fs.snap1) +- app.die("--snap1 not specified."); ++ die("--snap1 not specified."); + + if (!fs.snap2) +- app.die("--snap2 not specified."); ++ die("--snap2 not specified."); + +- return delta(app, fs); ++ return delta(fs); + } + + //---------------------------------------------------------------- +-- +1.8.3.1 + diff --git a/device-mapper-persistent-data.spec b/device-mapper-persistent-data.spec index 6f3c954..bf07122 100644 --- a/device-mapper-persistent-data.spec +++ b/device-mapper-persistent-data.spec @@ -8,7 +8,7 @@ Summary: Device-mapper Persistent Data Tools Name: device-mapper-persistent-data Version: 0.9.0 -Release: 3%{?dist}%{?release_suffix} +Release: 4%{?dist}%{?release_suffix} License: GPLv3+ URL: https://github.com/jthornber/thin-provisioning-tools #Source0: https://github.com/jthornber/thin-provisioning-tools/archive/thin-provisioning-tools-%%{version}.tar.gz @@ -16,6 +16,18 @@ Source0: https://github.com/jthornber/thin-provisioning-tools/archive/v%{version Source1: dmpd090-vendor2.tar.gz Patch0: device-mapper-persistent-data-avoid-strip.patch Patch1: 0001-Update-dependencies.patch +Patch2: 0001-all-Fix-resource-leaks.patch +Patch3: 0002-thin_show_metadata-Fix-out-of-bounds-access.patch +Patch4: 0003-build-Fix-customized-emitter-linkage.patch +Patch5: 0004-thin_dump-Fix-leaked-shared-object-handle.patch +Patch6: 0005-thin_show_duplicates-Fix-potential-errors.patch +Patch7: 0006-thin_metadata_size-Fix-potential-string-overflow.patch +Patch8: 0007-all-Fix-uninitialized-class-members.patch +Patch9: 0008-thin_dump-Fix-warnings-on-potential-NULL-pointer.patch +Patch10: 0009-build-Remove-unused-sources-from-the-regular-build.patch +Patch11: 0010-all-Remove-unreachable-code.patch +Patch12: 0011-file_utils-Fix-resource-leak.patch +Patch13: 0012-thin_delta-Clean-up-duplicated-code.patch BuildRequires: autoconf, expat-devel, libaio-devel, libstdc++-devel, boost-devel, gcc-c++ Requires: expat @@ -52,6 +64,18 @@ directory = "vendor" END %endif %patch0 -p1 -b .avoid_strip +%patch2 -p1 -b .backup2 +%patch3 -p1 -b .backup3 +%patch4 -p1 -b .backup4 +%patch5 -p1 -b .backup5 +%patch6 -p1 -b .backup6 +%patch7 -p1 -b .backup7 +%patch8 -p1 -b .backup8 +%patch9 -p1 -b .backup9 +%patch10 -p1 -b .backup10 +%patch11 -p1 -b .backup11 +%patch12 -p1 -b .backup12 +%patch13 -p1 -b .backup13 echo %{version}-%{release} > VERSION %generate_buildrequires @@ -124,6 +148,10 @@ make DESTDIR=%{buildroot} MANDIR=%{_mandir} install-rust-tools #% {_sbindir}/thin_show_duplicates %changelog +* Thu Jun 10 2021 Marian Csontos - 0.9.0-4 +- Fix gating test syntax. +- Fix important issues found by static analysis. + * Tue Jan 26 2021 Fedora Release Engineering - 0.9.0-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild From c6ef39964e661fc9bce3986e19e95e0d4cdf720c Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 21 Jul 2021 20:41:22 +0000 Subject: [PATCH 09/50] - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- device-mapper-persistent-data.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/device-mapper-persistent-data.spec b/device-mapper-persistent-data.spec index bf07122..c86c7a4 100644 --- a/device-mapper-persistent-data.spec +++ b/device-mapper-persistent-data.spec @@ -8,7 +8,7 @@ Summary: Device-mapper Persistent Data Tools Name: device-mapper-persistent-data Version: 0.9.0 -Release: 4%{?dist}%{?release_suffix} +Release: 5%{?dist}%{?release_suffix} License: GPLv3+ URL: https://github.com/jthornber/thin-provisioning-tools #Source0: https://github.com/jthornber/thin-provisioning-tools/archive/thin-provisioning-tools-%%{version}.tar.gz @@ -148,6 +148,9 @@ make DESTDIR=%{buildroot} MANDIR=%{_mandir} install-rust-tools #% {_sbindir}/thin_show_duplicates %changelog +* Wed Jul 21 2021 Fedora Release Engineering - 0.9.0-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + * Thu Jun 10 2021 Marian Csontos - 0.9.0-4 - Fix gating test syntax. - Fix important issues found by static analysis. From 60cbba5ee81000d9886322fd300fee3b718f83f2 Mon Sep 17 00:00:00 2001 From: Marian Csontos Date: Thu, 22 Jul 2021 11:47:33 +0200 Subject: [PATCH 10/50] Fix build issue --- .gitignore | 1 + 0001-Update-dependencies.patch | 2 +- ...-Remove-lboost_iostreams-linker-flag.patch | 16 + 0014-cargo-update.patch | 848 ++++++++++++++++++ device-mapper-persistent-data.spec | 12 +- sources | 2 +- 6 files changed, 877 insertions(+), 4 deletions(-) create mode 100644 0013-build-Remove-lboost_iostreams-linker-flag.patch create mode 100644 0014-cargo-update.patch diff --git a/.gitignore b/.gitignore index 6a128c2..6a9d402 100644 --- a/.gitignore +++ b/.gitignore @@ -38,3 +38,4 @@ /v0.9.0.tar.gz /dmpd090-vendor.tar.gz /dmpd090-vendor2.tar.gz +/dmpd090-vendor3.tar.gz diff --git a/0001-Update-dependencies.patch b/0001-Update-dependencies.patch index aaca7ac..e900d2f 100644 --- a/0001-Update-dependencies.patch +++ b/0001-Update-dependencies.patch @@ -16,7 +16,7 @@ index 892ea4c..93fc807 100644 byteorder = "1.3" clap = "2.33" -crc32c = "0.4" -+crc32c = "0.5" ++crc32c = "0.6" flate2 = "1.0" fixedbitset = "0.3" libc = "0.2.71" diff --git a/0013-build-Remove-lboost_iostreams-linker-flag.patch b/0013-build-Remove-lboost_iostreams-linker-flag.patch new file mode 100644 index 0000000..82eba49 --- /dev/null +++ b/0013-build-Remove-lboost_iostreams-linker-flag.patch @@ -0,0 +1,16 @@ + Makefile.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile.in b/Makefile.in +index b1fd4aa..77c467d 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -173,7 +173,7 @@ CXXFLAGS+=@CXXDEBUG_FLAG@ + CXXFLAGS+=@CXX_STRERROR_FLAG@ + CXXFLAGS+=@LFS_FLAGS@ + INCLUDES+=-I$(TOP_BUILDDIR) -I$(TOP_DIR) -I$(TOP_DIR)/thin-provisioning +-LIBS:=-laio -lexpat -lboost_iostreams -ldl ++LIBS:=-laio -lexpat -ldl + + ifeq ("@DEVTOOLS@", "yes") + LIBS+=-lncurses diff --git a/0014-cargo-update.patch b/0014-cargo-update.patch new file mode 100644 index 0000000..84c867d --- /dev/null +++ b/0014-cargo-update.patch @@ -0,0 +1,848 @@ +From 0a061474ee8f8183bded35a7c680739c9b75ad4b Mon Sep 17 00:00:00 2001 +From: Marian Csontos +Date: Mon, 28 Jun 2021 13:14:37 +0200 +Subject: [PATCH] cargo update + +--- + Cargo.lock | 486 +++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 264 insertions(+), 222 deletions(-) + +diff --git a/Cargo.lock b/Cargo.lock +index d42d598..9dc0b8a 100644 +--- a/Cargo.lock ++++ b/Cargo.lock +@@ -1,567 +1,609 @@ + # This file is automatically @generated by Cargo. + # It is not intended for manual editing. + [[package]] +-name = "adler32" +-version = "1.0.4" ++name = "adler" ++version = "1.0.2" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + + [[package]] + name = "aho-corasick" +-version = "0.7.10" ++version = "0.7.18" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" + dependencies = [ +- "memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ++ "memchr", + ] + + [[package]] + name = "ansi_term" + version = "0.11.0" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" + dependencies = [ +- "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ++ "winapi", + ] + + [[package]] + name = "anyhow" +-version = "1.0.31" ++version = "1.0.41" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "15af2628f6890fe2609a3b91bef4c83450512802e59489f9c1cb1fa5df064a61" + + [[package]] + name = "arrayvec" +-version = "0.4.12" ++version = "0.5.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-dependencies = [ +- "nodrop 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", +-] ++checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" + + [[package]] + name = "atty" + version = "0.2.14" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" + dependencies = [ +- "hermit-abi 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", +- "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)", +- "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ++ "hermit-abi", ++ "libc", ++ "winapi", + ] + + [[package]] + name = "autocfg" +-version = "1.0.0" ++version = "1.0.1" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" + + [[package]] + name = "bitflags" + version = "1.2.1" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" + + [[package]] + name = "byteorder" +-version = "1.3.4" ++version = "1.4.3" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + + [[package]] + name = "cc" +-version = "1.0.54" ++version = "1.0.68" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "4a72c244c1ff497a746a7e1fb3d14bd08420ecda70c8f25c7112f2781652d787" ++ ++[[package]] ++name = "cfg-if" ++version = "0.1.10" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + + [[package]] + name = "cfg-if" +-version = "0.1.9" ++version = "1.0.0" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + + [[package]] + name = "clap" +-version = "2.33.1" ++version = "2.33.3" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002" + dependencies = [ +- "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", +- "atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", +- "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", +- "strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", +- "textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", +- "unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", +- "vec_map 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", ++ "ansi_term", ++ "atty", ++ "bitflags", ++ "strsim", ++ "textwrap", ++ "unicode-width", ++ "vec_map", + ] + + [[package]] + name = "crc32c" +-version = "0.4.0" ++version = "0.6.0" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "210cdf933e6a81212bfabf90cd8762f471b5922e5f6b709547673ad8e04b9448" ++dependencies = [ ++ "rustc_version", ++] + + [[package]] + name = "crc32fast" +-version = "1.2.0" ++version = "1.2.1" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a" + dependencies = [ +- "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", ++ "cfg-if 1.0.0", + ] + + [[package]] + name = "env_logger" + version = "0.7.1" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36" + dependencies = [ +- "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", +- "regex 1.3.9 (registry+https://github.com/rust-lang/crates.io-index)", ++ "log", ++ "regex", + ] + + [[package]] + name = "fixedbitset" +-version = "0.3.0" ++version = "0.3.2" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "45e780567ed7abc415d12fd464571d265eb4a5710ddc97cdb1a31a4c35bb479d" + + [[package]] + name = "flate2" +-version = "1.0.14" ++version = "1.0.20" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "cd3aec53de10fe96d7d8c565eb17f2c687bb5518a2ec453b5b1252964526abe0" + dependencies = [ +- "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", +- "crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", +- "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)", +- "miniz_oxide 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ++ "cfg-if 1.0.0", ++ "crc32fast", ++ "libc", ++ "miniz_oxide", + ] + + [[package]] + name = "getrandom" +-version = "0.1.14" ++version = "0.1.16" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" + dependencies = [ +- "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", +- "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)", +- "wasi 0.9.0+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)", ++ "cfg-if 1.0.0", ++ "libc", ++ "wasi 0.9.0+wasi-snapshot-preview1", + ] + + [[package]] +-name = "hermit-abi" +-version = "0.1.13" ++name = "getrandom" ++version = "0.2.3" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753" + dependencies = [ +- "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)", ++ "cfg-if 1.0.0", ++ "libc", ++ "wasi 0.10.2+wasi-snapshot-preview1", + ] + + [[package]] +-name = "lazy_static" +-version = "1.4.0" ++name = "hermit-abi" ++version = "0.1.19" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" ++dependencies = [ ++ "libc", ++] + + [[package]] + name = "lexical-core" +-version = "0.6.7" ++version = "0.7.6" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "6607c62aa161d23d17a9072cc5da0be67cdfc89d3afb1e8d9c842bebc2525ffe" + dependencies = [ +- "arrayvec 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", +- "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", +- "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", +- "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", +- "ryu 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", +- "static_assertions 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", ++ "arrayvec", ++ "bitflags", ++ "cfg-if 1.0.0", ++ "ryu", ++ "static_assertions", + ] + + [[package]] + name = "libc" +-version = "0.2.71" ++version = "0.2.97" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "12b8adadd720df158f4d70dfe7ccc6adb0472d7c55ca83445f6a5ab3e36f8fb6" + + [[package]] + name = "log" +-version = "0.4.8" ++version = "0.4.14" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" + dependencies = [ +- "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", ++ "cfg-if 1.0.0", + ] + + [[package]] + name = "memchr" +-version = "2.3.3" ++version = "2.4.0" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "b16bd47d9e329435e309c58469fe0791c2d0d1ba96ec0954152a5ae2b04387dc" + + [[package]] + name = "miniz_oxide" +-version = "0.3.6" ++version = "0.4.4" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" + dependencies = [ +- "adler32 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", ++ "adler", ++ "autocfg", + ] + + [[package]] + name = "nix" + version = "0.17.0" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "50e4785f2c3b7589a0d0c1dd60285e1188adac4006e8abd6dd578e1567027363" + dependencies = [ +- "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", +- "cc 1.0.54 (registry+https://github.com/rust-lang/crates.io-index)", +- "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", +- "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)", +- "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", ++ "bitflags", ++ "cc", ++ "cfg-if 0.1.10", ++ "libc", ++ "void", + ] + + [[package]] +-name = "nodrop" +-version = "0.1.14" +-source = "registry+https://github.com/rust-lang/crates.io-index" +- +-[[package]] + name = "nom" +-version = "5.1.1" ++version = "5.1.2" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "ffb4262d26ed83a1c0a33a38fe2bb15797329c85770da05e6b828ddb782627af" + dependencies = [ +- "lexical-core 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", +- "memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)", +- "version_check 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", ++ "lexical-core", ++ "memchr", ++ "version_check", + ] + + [[package]] + name = "num-derive" +-version = "0.3.0" ++version = "0.3.3" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" + dependencies = [ +- "proc-macro2 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)", +- "quote 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", +- "syn 1.0.30 (registry+https://github.com/rust-lang/crates.io-index)", ++ "proc-macro2", ++ "quote", ++ "syn", + ] + + [[package]] + name = "num-traits" +-version = "0.2.11" ++version = "0.2.14" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" + dependencies = [ +- "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ++ "autocfg", + ] + + [[package]] + name = "num_cpus" + version = "1.13.0" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3" + dependencies = [ +- "hermit-abi 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", +- "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)", ++ "hermit-abi", ++ "libc", + ] + + [[package]] + name = "ppv-lite86" +-version = "0.2.8" ++version = "0.2.10" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" + + [[package]] + name = "proc-macro2" +-version = "1.0.18" ++version = "1.0.27" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "f0d8caf72986c1a598726adc988bb5984792ef84f5ee5aa50209145ee8077038" + dependencies = [ +- "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ++ "unicode-xid", + ] + + [[package]] + name = "quick-xml" + version = "0.18.1" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "3cc440ee4802a86e357165021e3e255a9143724da31db1e2ea540214c96a0f82" + dependencies = [ +- "memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ++ "memchr", + ] + + [[package]] + name = "quickcheck" + version = "0.9.2" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "a44883e74aa97ad63db83c4bf8ca490f02b2fc02f92575e720c8551e843c945f" + dependencies = [ +- "env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", +- "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", +- "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", +- "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", ++ "env_logger", ++ "log", ++ "rand 0.7.3", ++ "rand_core 0.5.1", + ] + + [[package]] + name = "quickcheck_macros" + version = "0.9.1" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "608c156fd8e97febc07dc9c2e2c80bf74cfc6ef26893eae3daf8bc2bc94a4b7f" + dependencies = [ +- "proc-macro2 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)", +- "quote 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", +- "syn 1.0.30 (registry+https://github.com/rust-lang/crates.io-index)", ++ "proc-macro2", ++ "quote", ++ "syn", + ] + + [[package]] + name = "quote" +-version = "1.0.6" ++version = "1.0.9" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" + dependencies = [ +- "proc-macro2 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)", ++ "proc-macro2", + ] + + [[package]] + name = "rand" + version = "0.7.3" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" + dependencies = [ +- "getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", +- "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)", +- "rand_chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", +- "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", +- "rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ++ "getrandom 0.1.16", ++ "libc", ++ "rand_chacha 0.2.2", ++ "rand_core 0.5.1", ++ "rand_hc 0.2.0", ++] ++ ++[[package]] ++name = "rand" ++version = "0.8.4" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "2e7573632e6454cf6b99d7aac4ccca54be06da05aca2ef7423d22d27d4d4bcd8" ++dependencies = [ ++ "libc", ++ "rand_chacha 0.3.1", ++ "rand_core 0.6.3", ++ "rand_hc 0.3.1", + ] + + [[package]] + name = "rand_chacha" + version = "0.2.2" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" + dependencies = [ +- "ppv-lite86 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", +- "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", ++ "ppv-lite86", ++ "rand_core 0.5.1", ++] ++ ++[[package]] ++name = "rand_chacha" ++version = "0.3.1" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" ++dependencies = [ ++ "ppv-lite86", ++ "rand_core 0.6.3", + ] + + [[package]] + name = "rand_core" + version = "0.5.1" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" + dependencies = [ +- "getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", ++ "getrandom 0.1.16", ++] ++ ++[[package]] ++name = "rand_core" ++version = "0.6.3" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" ++dependencies = [ ++ "getrandom 0.2.3", + ] + + [[package]] + name = "rand_hc" + version = "0.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" ++dependencies = [ ++ "rand_core 0.5.1", ++] ++ ++[[package]] ++name = "rand_hc" ++version = "0.3.1" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "d51e9f596de227fda2ea6c84607f5558e196eeaf43c986b724ba4fb8fdf497e7" + dependencies = [ +- "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", ++ "rand_core 0.6.3", + ] + + [[package]] + name = "redox_syscall" +-version = "0.1.56" ++version = "0.2.9" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "5ab49abadf3f9e1c4bc499e8845e152ad87d2ad2d30371841171169e9d75feee" ++dependencies = [ ++ "bitflags", ++] + + [[package]] + name = "regex" +-version = "1.3.9" ++version = "1.5.4" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461" + dependencies = [ +- "aho-corasick 0.7.10 (registry+https://github.com/rust-lang/crates.io-index)", +- "memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)", +- "regex-syntax 0.6.18 (registry+https://github.com/rust-lang/crates.io-index)", +- "thread_local 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ++ "aho-corasick", ++ "memchr", ++ "regex-syntax", + ] + + [[package]] + name = "regex-syntax" +-version = "0.6.18" ++version = "0.6.25" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" + + [[package]] + name = "remove_dir_all" + version = "0.5.3" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" + dependencies = [ +- "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ++ "winapi", + ] + + [[package]] + name = "rustc_version" + version = "0.2.3" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" + dependencies = [ +- "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", ++ "semver", + ] + + [[package]] + name = "ryu" + version = "1.0.5" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" + + [[package]] + name = "semver" + version = "0.9.0" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" + dependencies = [ +- "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", ++ "semver-parser", + ] + + [[package]] + name = "semver-parser" + version = "0.7.0" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" + + [[package]] + name = "static_assertions" +-version = "0.3.4" ++version = "1.1.0" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + + [[package]] + name = "strsim" + version = "0.8.0" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" + + [[package]] + name = "syn" +-version = "1.0.30" ++version = "1.0.73" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "f71489ff30030d2ae598524f61326b902466f72a0fb1a8564c001cc63425bcc7" + dependencies = [ +- "proc-macro2 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)", +- "quote 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", +- "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ++ "proc-macro2", ++ "quote", ++ "unicode-xid", + ] + + [[package]] + name = "tempfile" +-version = "3.1.0" ++version = "3.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22" + dependencies = [ +- "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", +- "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)", +- "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", +- "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", +- "remove_dir_all 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", +- "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ++ "cfg-if 1.0.0", ++ "libc", ++ "rand 0.8.4", ++ "redox_syscall", ++ "remove_dir_all", ++ "winapi", + ] + + [[package]] + name = "textwrap" + version = "0.11.0" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" + dependencies = [ +- "unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", ++ "unicode-width", + ] + + [[package]] + name = "thinp" + version = "0.1.0" + dependencies = [ +- "anyhow 1.0.31 (registry+https://github.com/rust-lang/crates.io-index)", +- "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", +- "clap 2.33.1 (registry+https://github.com/rust-lang/crates.io-index)", +- "crc32c 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", +- "fixedbitset 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", +- "flate2 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", +- "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)", +- "nix 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)", +- "nom 5.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +- "num-derive 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", +- "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", +- "num_cpus 1.13.0 (registry+https://github.com/rust-lang/crates.io-index)", +- "quick-xml 0.18.1 (registry+https://github.com/rust-lang/crates.io-index)", +- "quickcheck 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", +- "quickcheck_macros 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", +- "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", +- "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +-] +- +-[[package]] +-name = "thread_local" +-version = "1.0.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-dependencies = [ +- "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ++ "anyhow", ++ "byteorder", ++ "clap", ++ "crc32c", ++ "fixedbitset", ++ "flate2", ++ "libc", ++ "nix", ++ "nom", ++ "num-derive", ++ "num-traits", ++ "num_cpus", ++ "quick-xml", ++ "quickcheck", ++ "quickcheck_macros", ++ "rand 0.7.3", ++ "tempfile", + ] + + [[package]] + name = "unicode-width" +-version = "0.1.7" ++version = "0.1.8" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3" + + [[package]] + name = "unicode-xid" +-version = "0.2.0" ++version = "0.2.2" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" + + [[package]] + name = "vec_map" + version = "0.8.2" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" + + [[package]] + name = "version_check" +-version = "0.9.2" ++version = "0.9.3" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe" + + [[package]] + name = "void" + version = "1.0.2" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" + + [[package]] + name = "wasi" + version = "0.9.0+wasi-snapshot-preview1" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" ++ ++[[package]] ++name = "wasi" ++version = "0.10.2+wasi-snapshot-preview1" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" + + [[package]] + name = "winapi" +-version = "0.3.8" ++version = "0.3.9" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" + dependencies = [ +- "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", +- "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ++ "winapi-i686-pc-windows-gnu", ++ "winapi-x86_64-pc-windows-gnu", + ] + + [[package]] + name = "winapi-i686-pc-windows-gnu" + version = "0.4.0" + source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + + [[package]] + name = "winapi-x86_64-pc-windows-gnu" + version = "0.4.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +- +-[metadata] +-"checksum adler32 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5d2e7343e7fc9de883d1b0341e0b13970f764c14101234857d2ddafa1cb1cac2" +-"checksum aho-corasick 0.7.10 (registry+https://github.com/rust-lang/crates.io-index)" = "8716408b8bc624ed7f65d223ddb9ac2d044c0547b6fa4b0d554f3a9540496ada" +-"checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" +-"checksum anyhow 1.0.31 (registry+https://github.com/rust-lang/crates.io-index)" = "85bb70cc08ec97ca5450e6eba421deeea5f172c0fc61f78b5357b2a8e8be195f" +-"checksum arrayvec 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "cd9fd44efafa8690358b7408d253adf110036b88f55672a933f01d616ad9b1b9" +-"checksum atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +-"checksum autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d" +-"checksum bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" +-"checksum byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" +-"checksum cc 1.0.54 (registry+https://github.com/rust-lang/crates.io-index)" = "7bbb73db36c1246e9034e307d0fba23f9a2e251faa47ade70c1bd252220c8311" +-"checksum cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "b486ce3ccf7ffd79fdeb678eac06a9e6c09fc88d33836340becb8fffe87c5e33" +-"checksum clap 2.33.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bdfa80d47f954d53a35a64987ca1422f495b8d6483c0fe9f7117b36c2a792129" +-"checksum crc32c 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "77ba37ef26c12988c1cee882d522d65e1d5d2ad8c3864665b88ee92767ed84c5" +-"checksum crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1" +-"checksum env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36" +-"checksum fixedbitset 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2fc4fcacf5cd3681968f6524ea159383132937739c6c40dabab9e37ed515911b" +-"checksum flate2 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)" = "2cfff41391129e0a856d6d822600b8d71179d46879e310417eb9c762eb178b42" +-"checksum getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "7abc8dd8451921606d809ba32e95b6111925cd2906060d2dcc29c070220503eb" +-"checksum hermit-abi 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "91780f809e750b0a89f5544be56617ff6b1227ee485bcb06ebe10cdf89bd3b71" +-"checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +-"checksum lexical-core 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "f86d66d380c9c5a685aaac7a11818bdfa1f733198dfd9ec09c70b762cd12ad6f" +-"checksum libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)" = "9457b06509d27052635f90d6466700c65095fdf75409b3fbdd903e988b886f49" +-"checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" +-"checksum memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400" +-"checksum miniz_oxide 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "aa679ff6578b1cddee93d7e82e263b94a575e0bfced07284eb0c037c1d2416a5" +-"checksum nix 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)" = "50e4785f2c3b7589a0d0c1dd60285e1188adac4006e8abd6dd578e1567027363" +-"checksum nodrop 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" +-"checksum nom 5.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b471253da97532da4b61552249c521e01e736071f71c1a4f7ebbfbf0a06aad6" +-"checksum num-derive 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0c8b15b261814f992e33760b1fca9fe8b693d8a65299f20c9901688636cfb746" +-"checksum num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "c62be47e61d1842b9170f0fdeec8eba98e60e90e5446449a0545e5152acd7096" +-"checksum num_cpus 1.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3" +-"checksum ppv-lite86 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "237a5ed80e274dbc66f86bd59c1e25edc039660be53194b5fe0a482e0f2612ea" +-"checksum proc-macro2 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)" = "beae6331a816b1f65d04c45b078fd8e6c93e8071771f41b8163255bbd8d7c8fa" +-"checksum quick-xml 0.18.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3cc440ee4802a86e357165021e3e255a9143724da31db1e2ea540214c96a0f82" +-"checksum quickcheck 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a44883e74aa97ad63db83c4bf8ca490f02b2fc02f92575e720c8551e843c945f" +-"checksum quickcheck_macros 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "608c156fd8e97febc07dc9c2e2c80bf74cfc6ef26893eae3daf8bc2bc94a4b7f" +-"checksum quote 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "54a21852a652ad6f610c9510194f398ff6f8692e334fd1145fed931f7fbe44ea" +-"checksum rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +-"checksum rand_chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +-"checksum rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +-"checksum rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +-"checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" +-"checksum regex 1.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "9c3780fcf44b193bc4d09f36d2a3c87b251da4a046c87795a0d35f4f927ad8e6" +-"checksum regex-syntax 0.6.18 (registry+https://github.com/rust-lang/crates.io-index)" = "26412eb97c6b088a6997e05f69403a802a92d520de2f8e63c2b65f9e0f47c4e8" +-"checksum remove_dir_all 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" +-"checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +-"checksum ryu 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" +-"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +-"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" +-"checksum static_assertions 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "7f3eb36b47e512f8f1c9e3d10c2c1965bc992bd9cdb024fa581e2194501c83d3" +-"checksum strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" +-"checksum syn 1.0.30 (registry+https://github.com/rust-lang/crates.io-index)" = "93a56fabc59dce20fe48b6c832cc249c713e7ed88fa28b0ee0a3bfcaae5fe4e2" +-"checksum tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" +-"checksum textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" +-"checksum thread_local 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14" +-"checksum unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "caaa9d531767d1ff2150b9332433f32a24622147e5ebb1f26409d5da67afd479" +-"checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" +-"checksum vec_map 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" +-"checksum version_check 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed" +-"checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" +-"checksum wasi 0.9.0+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)" = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" +-"checksum winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" +-"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +-"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" ++checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +-- +1.8.3.1 + diff --git a/device-mapper-persistent-data.spec b/device-mapper-persistent-data.spec index c86c7a4..fc8f4fc 100644 --- a/device-mapper-persistent-data.spec +++ b/device-mapper-persistent-data.spec @@ -8,12 +8,12 @@ Summary: Device-mapper Persistent Data Tools Name: device-mapper-persistent-data Version: 0.9.0 -Release: 5%{?dist}%{?release_suffix} +Release: 6%{?dist}%{?release_suffix} License: GPLv3+ 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/v%{version}%{?version_suffix}.tar.gz -Source1: dmpd090-vendor2.tar.gz +Source1: dmpd090-vendor3.tar.gz Patch0: device-mapper-persistent-data-avoid-strip.patch Patch1: 0001-Update-dependencies.patch Patch2: 0001-all-Fix-resource-leaks.patch @@ -28,6 +28,8 @@ Patch10: 0009-build-Remove-unused-sources-from-the-regular-build.patch Patch11: 0010-all-Remove-unreachable-code.patch Patch12: 0011-file_utils-Fix-resource-leak.patch Patch13: 0012-thin_delta-Clean-up-duplicated-code.patch +Patch14: 0013-build-Remove-lboost_iostreams-linker-flag.patch +Patch15: 0014-cargo-update.patch BuildRequires: autoconf, expat-devel, libaio-devel, libstdc++-devel, boost-devel, gcc-c++ Requires: expat @@ -50,6 +52,7 @@ snapshot eras %setup -q -n thin-provisioning-tools-%{version}%{?version_suffix} %ifarch %{rust_arches} %patch1 -p1 -b .toml_update +%patch15 -p1 -b .backup15 #%%cargo_prep #%%cargo_generate_buildrequires tar xf %{SOURCE1} @@ -76,6 +79,8 @@ END %patch11 -p1 -b .backup11 %patch12 -p1 -b .backup12 %patch13 -p1 -b .backup13 +%patch14 -p1 -b .backup14 +# NOTE: patch 15 is above at the rust setup echo %{version}-%{release} > VERSION %generate_buildrequires @@ -148,6 +153,9 @@ make DESTDIR=%{buildroot} MANDIR=%{_mandir} install-rust-tools #% {_sbindir}/thin_show_duplicates %changelog +* Thu Jul 22 2021 Marian Csontos - 0.9.0-6 +- Fix rust-1.53 compilation issues. + * Wed Jul 21 2021 Fedora Release Engineering - 0.9.0-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild diff --git a/sources b/sources index 87073b3..8031915 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ SHA512 (v0.9.0.tar.gz) = e1796fb3948847d72ca8247cae58017507c0a847a00201b93668eeb8fbfea4107c4c2affa5c211c149798a89b10474e83d2bd61a5545a668299be97aed591e0f -SHA512 (dmpd090-vendor2.tar.gz) = 47e22d34e34345ae5c91e66063c2f78865b055fccd47c34a97e2bd2fed1f64fc7f13ad27071a149fefba53f5b437beeda3bacde25b690431e1ae50f77cec440c +SHA512 (dmpd090-vendor3.tar.gz) = 90891c377a27695b20ce260852260d4fe08f3db6dba99401e56f2643a7ec94115c33e9c84b54188845acfde855e682c9b91c72dec3554effeade226b1df3303e From 126554fe2a01b1927aa4123346b5241d5d80a26f Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 20 Jan 2022 00:33:44 +0000 Subject: [PATCH 11/50] - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- device-mapper-persistent-data.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/device-mapper-persistent-data.spec b/device-mapper-persistent-data.spec index fc8f4fc..2bc7ef5 100644 --- a/device-mapper-persistent-data.spec +++ b/device-mapper-persistent-data.spec @@ -8,7 +8,7 @@ Summary: Device-mapper Persistent Data Tools Name: device-mapper-persistent-data Version: 0.9.0 -Release: 6%{?dist}%{?release_suffix} +Release: 7%{?dist}%{?release_suffix} License: GPLv3+ URL: https://github.com/jthornber/thin-provisioning-tools #Source0: https://github.com/jthornber/thin-provisioning-tools/archive/thin-provisioning-tools-%%{version}.tar.gz @@ -153,6 +153,9 @@ make DESTDIR=%{buildroot} MANDIR=%{_mandir} install-rust-tools #% {_sbindir}/thin_show_duplicates %changelog +* Thu Jan 20 2022 Fedora Release Engineering - 0.9.0-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + * Thu Jul 22 2021 Marian Csontos - 0.9.0-6 - Fix rust-1.53 compilation issues. From 99369c4f67d2cf714971426338feba91d1087cba Mon Sep 17 00:00:00 2001 From: Marian Csontos Date: Fri, 24 Jun 2022 14:44:10 +0200 Subject: [PATCH 12/50] tests: Fix compatibility with Python3 xrange was renamed to range in Python3. --- tests/functions_test/dmpd_library.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/functions_test/dmpd_library.py b/tests/functions_test/dmpd_library.py index d50d08f..04286f4 100755 --- a/tests/functions_test/dmpd_library.py +++ b/tests/functions_test/dmpd_library.py @@ -1280,7 +1280,7 @@ class LVM: _print("WARN: (%s) does not match lvs output format" % lv) continue lv_info_dict = {} - for index in xrange(len(param_names)): + for index in range(len(param_names)): lv_info_dict[param_names[index]] = m.group(index + 1) lv_list.append(lv_info_dict) From 20de387ada068b1df674a69e91cc7428e5df74d6 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 21 Jul 2022 00:21:07 +0000 Subject: [PATCH 13/50] Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- device-mapper-persistent-data.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/device-mapper-persistent-data.spec b/device-mapper-persistent-data.spec index 2bc7ef5..58d2fb8 100644 --- a/device-mapper-persistent-data.spec +++ b/device-mapper-persistent-data.spec @@ -8,7 +8,7 @@ Summary: Device-mapper Persistent Data Tools Name: device-mapper-persistent-data Version: 0.9.0 -Release: 7%{?dist}%{?release_suffix} +Release: 8%{?dist}%{?release_suffix} License: GPLv3+ URL: https://github.com/jthornber/thin-provisioning-tools #Source0: https://github.com/jthornber/thin-provisioning-tools/archive/thin-provisioning-tools-%%{version}.tar.gz @@ -153,6 +153,9 @@ make DESTDIR=%{buildroot} MANDIR=%{_mandir} install-rust-tools #% {_sbindir}/thin_show_duplicates %changelog +* Thu Jul 21 2022 Fedora Release Engineering - 0.9.0-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + * Thu Jan 20 2022 Fedora Release Engineering - 0.9.0-7 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild From eb7bb8b3431e7447e5c24188e6955aad4491ac1b Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 19 Jan 2023 01:17:27 +0000 Subject: [PATCH 14/50] Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- device-mapper-persistent-data.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/device-mapper-persistent-data.spec b/device-mapper-persistent-data.spec index 58d2fb8..7397373 100644 --- a/device-mapper-persistent-data.spec +++ b/device-mapper-persistent-data.spec @@ -8,7 +8,7 @@ Summary: Device-mapper Persistent Data Tools Name: device-mapper-persistent-data Version: 0.9.0 -Release: 8%{?dist}%{?release_suffix} +Release: 9%{?dist}%{?release_suffix} License: GPLv3+ URL: https://github.com/jthornber/thin-provisioning-tools #Source0: https://github.com/jthornber/thin-provisioning-tools/archive/thin-provisioning-tools-%%{version}.tar.gz @@ -153,6 +153,9 @@ make DESTDIR=%{buildroot} MANDIR=%{_mandir} install-rust-tools #% {_sbindir}/thin_show_duplicates %changelog +* Thu Jan 19 2023 Fedora Release Engineering - 0.9.0-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + * Thu Jul 21 2022 Fedora Release Engineering - 0.9.0-8 - Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild From 804560ae466da55da3e4449e4ee3ec261b080b17 Mon Sep 17 00:00:00 2001 From: Fabio Valentini Date: Sun, 5 Feb 2023 19:06:07 +0100 Subject: [PATCH 15/50] Rebuild for fixed frame pointer compiler flags in Rust RPM macros --- device-mapper-persistent-data.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/device-mapper-persistent-data.spec b/device-mapper-persistent-data.spec index 7397373..f4fb197 100644 --- a/device-mapper-persistent-data.spec +++ b/device-mapper-persistent-data.spec @@ -8,7 +8,7 @@ Summary: Device-mapper Persistent Data Tools Name: device-mapper-persistent-data Version: 0.9.0 -Release: 9%{?dist}%{?release_suffix} +Release: 10%{?dist}%{?release_suffix} License: GPLv3+ URL: https://github.com/jthornber/thin-provisioning-tools #Source0: https://github.com/jthornber/thin-provisioning-tools/archive/thin-provisioning-tools-%%{version}.tar.gz @@ -153,6 +153,9 @@ make DESTDIR=%{buildroot} MANDIR=%{_mandir} install-rust-tools #% {_sbindir}/thin_show_duplicates %changelog +* Sun Feb 05 2023 Fabio Valentini - 0.9.0-10 +- Rebuild for fixed frame pointer compiler flags in Rust RPM macros. + * Thu Jan 19 2023 Fedora Release Engineering - 0.9.0-9 - Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild From 8d2c47ae1c4c83a2ba826b768c61e2a5495d80d2 Mon Sep 17 00:00:00 2001 From: Marian Csontos Date: Wed, 22 Feb 2023 15:49:20 +0100 Subject: [PATCH 16/50] Update to version 1.0.2 --- .gitignore | 2 + ...o.toml-to-work-with-vendor-directory.patch | 40 + 0001-Update-dependencies.patch | 25 - 0001-all-Fix-resource-leaks.patch | 42 - 0002-Fix-paths.patch | 30 + ...ow_metadata-Fix-out-of-bounds-access.patch | 26 - ...build-Fix-customized-emitter-linkage.patch | 25 - ...dump-Fix-leaked-shared-object-handle.patch | 139 --- ...show_duplicates-Fix-potential-errors.patch | 52 -- ...a_size-Fix-potential-string-overflow.patch | 33 - ...-all-Fix-uninitialized-class-members.patch | 83 -- ...x-warnings-on-potential-NULL-pointer.patch | 88 -- ...nused-sources-from-the-regular-build.patch | 52 -- 0010-all-Remove-unreachable-code.patch | 51 -- 0011-file_utils-Fix-resource-leak.patch | 24 - ...-thin_delta-Clean-up-duplicated-code.patch | 224 ----- ...-Remove-lboost_iostreams-linker-flag.patch | 16 - 0014-cargo-update.patch | 848 ------------------ device-mapper-persistent-data.spec | 62 +- sources | 4 +- 20 files changed, 93 insertions(+), 1773 deletions(-) create mode 100644 0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch delete mode 100644 0001-Update-dependencies.patch delete mode 100644 0001-all-Fix-resource-leaks.patch create mode 100644 0002-Fix-paths.patch delete mode 100644 0002-thin_show_metadata-Fix-out-of-bounds-access.patch delete mode 100644 0003-build-Fix-customized-emitter-linkage.patch delete mode 100644 0004-thin_dump-Fix-leaked-shared-object-handle.patch delete mode 100644 0005-thin_show_duplicates-Fix-potential-errors.patch delete mode 100644 0006-thin_metadata_size-Fix-potential-string-overflow.patch delete mode 100644 0007-all-Fix-uninitialized-class-members.patch delete mode 100644 0008-thin_dump-Fix-warnings-on-potential-NULL-pointer.patch delete mode 100644 0009-build-Remove-unused-sources-from-the-regular-build.patch delete mode 100644 0010-all-Remove-unreachable-code.patch delete mode 100644 0011-file_utils-Fix-resource-leak.patch delete mode 100644 0012-thin_delta-Clean-up-duplicated-code.patch delete mode 100644 0013-build-Remove-lboost_iostreams-linker-flag.patch delete mode 100644 0014-cargo-update.patch diff --git a/.gitignore b/.gitignore index 6a9d402..bb141e9 100644 --- a/.gitignore +++ b/.gitignore @@ -39,3 +39,5 @@ /dmpd090-vendor.tar.gz /dmpd090-vendor2.tar.gz /dmpd090-vendor3.tar.gz +/v1.0.2.tar.gz +/dmpd102-vendor.tar.gz diff --git a/0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch b/0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch new file mode 100644 index 0000000..eb446ba --- /dev/null +++ b/0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch @@ -0,0 +1,40 @@ +From 3d67b5c78f350db25e028112105014b09c2b34b3 Mon Sep 17 00:00:00 2001 +From: Marian Csontos +Date: Wed, 22 Feb 2023 18:07:57 +0100 +Subject: [PATCH] Tweak cargo.toml to work with vendor directory + +--- + Cargo.lock | 2 +- + Cargo.toml | 3 ++- + 2 files changed, 3 insertions(+), 2 deletions(-) + +diff --git a/Cargo.lock b/Cargo.lock +index 4ff194a7..a4a56d75 100644 +--- a/Cargo.lock ++++ b/Cargo.lock +@@ -973,7 +973,7 @@ checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" + + [[package]] + name = "thinp" +-version = "0.1.0" ++version = "1.0.2" + dependencies = [ + "anyhow", + "atty", +diff --git a/Cargo.toml b/Cargo.toml +index 94c8e5b3..6f6912ec 100644 +--- a/Cargo.toml ++++ b/Cargo.toml +@@ -29,7 +29,8 @@ quick-xml = "0.23.1" + rand = "0.8" + rangemap = "1.1" + 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.39.1 + diff --git a/0001-Update-dependencies.patch b/0001-Update-dependencies.patch deleted file mode 100644 index e900d2f..0000000 --- a/0001-Update-dependencies.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 4a45e1d7eafb83ec9c76f0b3278f4bc7efbdde9d Mon Sep 17 00:00:00 2001 -From: Marian Csontos -Date: Tue, 1 Sep 2020 14:55:48 +0200 -Subject: [PATCH] Update dependencies - ---- - Cargo.toml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/Cargo.toml b/Cargo.toml -index 892ea4c..93fc807 100644 ---- a/Cargo.toml -+++ b/Cargo.toml -@@ -9,7 +9,7 @@ license = "GPL3" - anyhow = "1.0" - byteorder = "1.3" - clap = "2.33" --crc32c = "0.4" -+crc32c = "0.6" - flate2 = "1.0" - fixedbitset = "0.3" - libc = "0.2.71" --- -1.8.3.1 - diff --git a/0001-all-Fix-resource-leaks.patch b/0001-all-Fix-resource-leaks.patch deleted file mode 100644 index 6519dfc..0000000 --- a/0001-all-Fix-resource-leaks.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 48676b9f1aac63f8a30ed8061b6e719929b82c98 Mon Sep 17 00:00:00 2001 -From: Ming-Hung Tsai -Date: Wed, 28 Apr 2021 10:34:16 +0800 -Subject: [PATCH 01/10] [all] Fix resource leaks - ---- - base/file_utils.cc | 4 +++- - thin-provisioning/cache_stream.cc | 2 +- - 2 files changed, 4 insertions(+), 2 deletions(-) - -diff --git a/base/file_utils.cc b/base/file_utils.cc -index e4f3722..8253660 100644 ---- a/base/file_utils.cc -+++ b/base/file_utils.cc -@@ -155,8 +155,10 @@ file_utils::zero_superblock(std::string const &path) - throw runtime_error("out of memory"); - - memset(buffer, 0, SUPERBLOCK_SIZE); -- if (::write(fd.fd_, buffer, SUPERBLOCK_SIZE) != SUPERBLOCK_SIZE) -+ if (::write(fd.fd_, buffer, SUPERBLOCK_SIZE) != SUPERBLOCK_SIZE) { -+ free(buffer); - throw runtime_error("couldn't zero superblock"); -+ } - } - - //---------------------------------------------------------------- -diff --git a/thin-provisioning/cache_stream.cc b/thin-provisioning/cache_stream.cc -index 002b6ba..73b01b4 100644 ---- a/thin-provisioning/cache_stream.cc -+++ b/thin-provisioning/cache_stream.cc -@@ -62,7 +62,7 @@ chunk const & - cache_stream::get() - { - chunk_wrapper *w = new chunk_wrapper(*this); -- return w->c_; -+ return w->c_; // wrapper will get freed by the put method - } - - void --- -1.8.3.1 - diff --git a/0002-Fix-paths.patch b/0002-Fix-paths.patch new file mode 100644 index 0000000..75858c6 --- /dev/null +++ b/0002-Fix-paths.patch @@ -0,0 +1,30 @@ +From 26571db5911e6a85e13965d0359799537ac4ce54 Mon Sep 17 00:00:00 2001 +From: Marian Csontos +Date: Thu, 23 Feb 2023 12:11:16 +0100 +Subject: [PATCH] Fix paths + +Use PREFIX instead of DESTDIR. DESTDIR is used for things like BUILDROOT +--- + Makefile | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/Makefile b/Makefile +index 0286000b..92c6d325 100644 +--- a/Makefile ++++ b/Makefile +@@ -6,9 +6,9 @@ PDATA_TOOLS=\ + $(PDATA_TOOLS): + $(V) cargo build --release + +-DESTDIR:=/usr +-BINDIR:=$(DESTDIR)/sbin +-DATADIR:=$(DESTDIR)/share ++PREFIX:=/usr ++BINDIR:=$(DESTDIR)$(PREFIX)/sbin ++DATADIR:=$(DESTDIR)$(PREFIX)/share + MANPATH:=$(DATADIR)/man + + STRIP:=strip +-- +2.39.2 + diff --git a/0002-thin_show_metadata-Fix-out-of-bounds-access.patch b/0002-thin_show_metadata-Fix-out-of-bounds-access.patch deleted file mode 100644 index 66a6f0d..0000000 --- a/0002-thin_show_metadata-Fix-out-of-bounds-access.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 691a0237809b5364117446a8a9b0cceeb0a747c1 Mon Sep 17 00:00:00 2001 -From: Ming-Hung Tsai -Date: Tue, 1 Jun 2021 11:24:11 +0800 -Subject: [PATCH 02/10] [thin_show_metadata] Fix out-of-bounds access - ---- - thin-provisioning/thin_show_metadata.cc | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/thin-provisioning/thin_show_metadata.cc b/thin-provisioning/thin_show_metadata.cc -index bdbab3f..dbc7a80 100644 ---- a/thin-provisioning/thin_show_metadata.cc -+++ b/thin-provisioning/thin_show_metadata.cc -@@ -206,7 +206,8 @@ namespace { - - void run() { - auto line_length = 80; -- for (block_address b = 0; b < 2000; b++) { -+ block_address nr_blocks = std::min(2000, bm_.get_nr_blocks()); -+ for (block_address b = 0; b < nr_blocks; b++) { - block_manager::read_ref rr = bm_.read_lock(b); - - if (!(b % line_length)) { --- -1.8.3.1 - diff --git a/0003-build-Fix-customized-emitter-linkage.patch b/0003-build-Fix-customized-emitter-linkage.patch deleted file mode 100644 index 05cfb56..0000000 --- a/0003-build-Fix-customized-emitter-linkage.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 65369d88610069ba7bbd011b00af19523638b0fb Mon Sep 17 00:00:00 2001 -From: Ming-Hung Tsai -Date: Tue, 1 Jun 2021 13:32:26 +0800 -Subject: [PATCH 03/10] [build] Fix customized emitter linkage - ---- - contrib/Makefile.in | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/contrib/Makefile.in b/contrib/Makefile.in -index 038c41c..7192258 100644 ---- a/contrib/Makefile.in -+++ b/contrib/Makefile.in -@@ -18,7 +18,7 @@ contrib/%.a: contrib/%.o - $(V)echo " [AR] $@" - $(V)$(AR) rcs $@ $^ - --contrib/%.so: contrib/%.a -+contrib/%.so: contrib/%.o - $(V)echo " [LD] $@" - $(V)$(CC) -shared -Wl,-soname,$@ -o $@ $< - --- -1.8.3.1 - diff --git a/0004-thin_dump-Fix-leaked-shared-object-handle.patch b/0004-thin_dump-Fix-leaked-shared-object-handle.patch deleted file mode 100644 index 983143a..0000000 --- a/0004-thin_dump-Fix-leaked-shared-object-handle.patch +++ /dev/null @@ -1,139 +0,0 @@ -From 7fbd79cab2e548eb388bc782dd39f1cde027173b Mon Sep 17 00:00:00 2001 -From: Ming-Hung Tsai -Date: Tue, 1 Jun 2021 23:37:36 +0800 -Subject: [PATCH 04/10] [thin_dump] Fix leaked shared object handle - ---- - thin-provisioning/shared_library_emitter.cc | 113 ++++++++++++++++++++++++---- - 1 file changed, 100 insertions(+), 13 deletions(-) - -diff --git a/thin-provisioning/shared_library_emitter.cc b/thin-provisioning/shared_library_emitter.cc -index 58f12d2..2e845f3 100644 ---- a/thin-provisioning/shared_library_emitter.cc -+++ b/thin-provisioning/shared_library_emitter.cc -@@ -8,22 +8,109 @@ using namespace thin_provisioning; - - //---------------------------------------------------------------- - --emitter::ptr --thin_provisioning::create_custom_emitter(string const &shared_lib, ostream &out) --{ -- emitter::ptr (*create_fn)(ostream &out); -- void *handle = dlopen(shared_lib.c_str(), RTLD_LAZY); -- if (!handle) -- throw runtime_error(dlerror()); -+struct shared_object { -+public: -+ shared_object(const char *shared_lib) { -+ handle_ = dlopen(shared_lib, RTLD_LAZY); -+ if (!handle_) -+ throw runtime_error(dlerror()); -+ -+ dlerror(); // Clear any existing error -+ } -+ -+ virtual ~shared_object() { -+ dlclose(handle_); -+ } -+ -+ void *get_symbol(const char *symbol) { -+ void *sym = dlsym(handle_, symbol); -+ -+ char *error = dlerror(); -+ if (error) -+ throw runtime_error(error); -+ -+ return sym; -+ } -+ -+ void *handle_; -+}; -+ -+class shared_emitter : public emitter { -+public: -+ shared_emitter(const char *shared_lib, ostream &out): sobj_(shared_lib) { -+ emitter::ptr (*create_fn)(ostream &out); -+ create_fn = reinterpret_cast( -+ sobj_.get_symbol("create_emitter")); -+ inner_ = create_fn(out); -+ } -+ -+ virtual ~shared_emitter() { -+ } -+ -+ void begin_superblock(std::string const &uuid, -+ uint64_t time, -+ uint64_t trans_id, -+ boost::optional flags, -+ boost::optional version, -+ uint32_t data_block_size, -+ uint64_t nr_data_blocks, -+ boost::optional metadata_snap) { -+ inner_->begin_superblock(uuid, -+ time, -+ trans_id, -+ flags, -+ version, -+ data_block_size, -+ nr_data_blocks, -+ metadata_snap); -+ } - -- dlerror(); // Clear any existing error -- create_fn = reinterpret_cast(dlsym(handle, "create_emitter")); -+ void end_superblock() { -+ inner_->end_superblock(); -+ } - -- char *error = dlerror(); -- if (error) -- throw runtime_error(error); -+ void begin_device(uint32_t dev_id, -+ uint64_t mapped_blocks, -+ uint64_t trans_id, -+ uint64_t creation_time, -+ uint64_t snap_time) { -+ inner_->begin_device(dev_id, mapped_blocks, trans_id, creation_time, snap_time); -+ } - -- return create_fn(out); -+ void end_device() { -+ inner_->end_device(); -+ } -+ -+ void begin_named_mapping(std::string const &name) { -+ inner_->begin_named_mapping(name); -+ } -+ -+ void end_named_mapping() { -+ inner_->end_named_mapping(); -+ } -+ -+ void identifier(std::string const &name) { -+ inner_->identifier(name); -+ } -+ -+ void range_map(uint64_t origin_begin, uint64_t data_begin, uint32_t time, uint64_t len) { -+ inner_->range_map(origin_begin, data_begin, time, len); -+ } -+ -+ void single_map(uint64_t origin_block, uint64_t data_block, uint32_t time) { -+ inner_->single_map(origin_block, data_block, time); -+ } -+ -+ shared_object sobj_; -+ emitter::ptr inner_; -+}; -+ -+//---------------------------------------------------------------- -+ -+emitter::ptr -+thin_provisioning::create_custom_emitter(string const &shared_lib, ostream &out) -+{ -+ return emitter::ptr(new shared_emitter(shared_lib.c_str(), out)); - } - - //---------------------------------------------------------------- --- -1.8.3.1 - diff --git a/0005-thin_show_duplicates-Fix-potential-errors.patch b/0005-thin_show_duplicates-Fix-potential-errors.patch deleted file mode 100644 index ee07eb3..0000000 --- a/0005-thin_show_duplicates-Fix-potential-errors.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 32de33be68f3892698d492b9ab8f21f9186b3f4c Mon Sep 17 00:00:00 2001 -From: Ming-Hung Tsai -Date: Wed, 2 Jun 2021 01:23:13 +0800 -Subject: [PATCH 05/10] [thin_show_duplicates] Fix potential errors - -- Fix error if no --block-sector provided -- Fix errors on pools without mappings, or zero-length file ---- - thin-provisioning/thin_show_duplicates.cc | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) - -diff --git a/thin-provisioning/thin_show_duplicates.cc b/thin-provisioning/thin_show_duplicates.cc -index b1eebb7..f7354eb 100644 ---- a/thin-provisioning/thin_show_duplicates.cc -+++ b/thin-provisioning/thin_show_duplicates.cc -@@ -56,7 +56,7 @@ using namespace thin_provisioning; - - namespace { - bool factor_of(block_address f, block_address n) { -- return (n % f) == 0; -+ return f && (n % f) == 0; - } - - uint64_t parse_int(string const &str, string const &desc) { -@@ -132,11 +132,15 @@ namespace { - class duplicate_detector { - public: - void scan_with_variable_sized_chunks(chunk_stream &stream) { -+ if (!stream.size()) -+ return; - variable_chunk_stream vstream(stream, 4096); - scan(vstream); - } - - void scan_with_fixed_sized_chunks(chunk_stream &stream, block_address chunk_size) { -+ if (!stream.size()) -+ return; - fixed_chunk_stream fstream(stream, chunk_size); - scan(fstream); - } -@@ -222,7 +226,7 @@ namespace { - if (fs.content_based_chunks) - detector.scan_with_variable_sized_chunks(pstream); - else { -- if (*fs.block_size) { -+ if (!!fs.block_size) { - if (factor_of(*fs.block_size, block_size)) - block_size = *fs.block_size; - else --- -1.8.3.1 - diff --git a/0006-thin_metadata_size-Fix-potential-string-overflow.patch b/0006-thin_metadata_size-Fix-potential-string-overflow.patch deleted file mode 100644 index cd22d1c..0000000 --- a/0006-thin_metadata_size-Fix-potential-string-overflow.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 35e96e07c956a501cb8a12f5b873db173bb09179 Mon Sep 17 00:00:00 2001 -From: Ming-Hung Tsai -Date: Wed, 2 Jun 2021 11:39:01 +0800 -Subject: [PATCH 06/10] [thin_metadata_size] Fix potential string overflow - ---- - thin-provisioning/thin_metadata_size.cc | 10 +++++++--- - 1 file changed, 7 insertions(+), 3 deletions(-) - -diff --git a/thin-provisioning/thin_metadata_size.cc b/thin-provisioning/thin_metadata_size.cc -index b6a5718..f14696c 100644 ---- a/thin-provisioning/thin_metadata_size.cc -+++ b/thin-provisioning/thin_metadata_size.cc -@@ -192,9 +192,13 @@ static void printf_aligned(struct global *g, char const *a, char const *b, char - { - char buf[80]; - -- strcpy(buf, b); -- if (units) -- strcat(buf, mandatory ? "{" :"["), strcat(buf, g->unit.chars), strcat(buf, mandatory ? "}" : "]"); -+ if (units) { -+ char left_bracket = mandatory ? '{' : '['; -+ char right_bracket = mandatory ? '}' : ']'; -+ snprintf(buf, 80, "%s%c%s%c", b, left_bracket, g->unit.chars, right_bracket); -+ } else { -+ snprintf(buf, 80, "%s", b); -+ } - - printf("\t%-4s%-44s%s\n", a, buf, c); - } --- -1.8.3.1 - diff --git a/0007-all-Fix-uninitialized-class-members.patch b/0007-all-Fix-uninitialized-class-members.patch deleted file mode 100644 index 11971a6..0000000 --- a/0007-all-Fix-uninitialized-class-members.patch +++ /dev/null @@ -1,83 +0,0 @@ -From f1e404c33ad14f6784aa1926ae75fa49e614748e Mon Sep 17 00:00:00 2001 -From: Ming-Hung Tsai -Date: Wed, 2 Jun 2021 12:14:34 +0800 -Subject: [PATCH 07/10] [all] Fix uninitialized class members - ---- - era/restore_emitter.cc | 1 + - thin-provisioning/metadata_dumper.cc | 10 +++++++--- - thin-provisioning/thin_delta.cc | 4 +++- - 3 files changed, 11 insertions(+), 4 deletions(-) - -diff --git a/era/restore_emitter.cc b/era/restore_emitter.cc -index c09fa66..7fbac7d 100644 ---- a/era/restore_emitter.cc -+++ b/era/restore_emitter.cc -@@ -14,6 +14,7 @@ namespace { - : md_(md), - in_superblock_(false), - in_writeset_(false), -+ era_(0), - in_era_array_(false) { - } - -diff --git a/thin-provisioning/metadata_dumper.cc b/thin-provisioning/metadata_dumper.cc -index 4feb40f..665c762 100644 ---- a/thin-provisioning/metadata_dumper.cc -+++ b/thin-provisioning/metadata_dumper.cc -@@ -180,7 +180,7 @@ namespace { - // This is about classifying and summarising btree nodes. The use of a btree - // node may not be obvious when inspecting it in isolation. But more information - // may be gleaned by examining child and sibling nodes. --// -+// - // So the process is: - // - scan every metadata block, summarising it's potential uses. - // - repeatedly iterate those summaries until we can glean no more useful information. -@@ -474,7 +474,7 @@ namespace { - node_info get_internal_info(block_manager::read_ref &rr) { - node_info info; - info.b = rr.get_location(); -- -+ - // values refer to blocks, so we should have infos for them. - auto n = to_node(rr); - ::uint64_t key_low = 0; -@@ -524,7 +524,7 @@ namespace { - node_info info; - info.b = rr.get_location(); - -- auto vsize = to_cpu(hdr.value_size); -+ auto vsize = to_cpu(hdr.value_size); - info.values = to_cpu(hdr.nr_entries); - - if (vsize == sizeof(device_details_traits::disk_type)) { -@@ -645,6 +645,10 @@ namespace { - public: - mapping_emit_visitor(emitter::ptr e) - : e_(e), -+ origin_start_(0), -+ dest_start_(0), -+ time_(0), -+ len_(0), - in_range_(false) { - } - -diff --git a/thin-provisioning/thin_delta.cc b/thin-provisioning/thin_delta.cc -index 5b31608..ee48dea 100644 ---- a/thin-provisioning/thin_delta.cc -+++ b/thin-provisioning/thin_delta.cc -@@ -259,7 +259,9 @@ namespace local { - class simple_emitter : public diff_emitter { - public: - simple_emitter(indented_stream &out) -- : diff_emitter(out) { -+ : diff_emitter(out), -+ vbegin_(0), -+ vend_(0) { - } - - void left_only(uint64_t vbegin, uint64_t dbegin, uint64_t len) { --- -1.8.3.1 - diff --git a/0008-thin_dump-Fix-warnings-on-potential-NULL-pointer.patch b/0008-thin_dump-Fix-warnings-on-potential-NULL-pointer.patch deleted file mode 100644 index 6005172..0000000 --- a/0008-thin_dump-Fix-warnings-on-potential-NULL-pointer.patch +++ /dev/null @@ -1,88 +0,0 @@ -From 5d79a5c944d05f71425d3156597a2a61c5f2ab9a Mon Sep 17 00:00:00 2001 -From: Ming-Hung Tsai -Date: Wed, 2 Jun 2021 13:08:47 +0800 -Subject: [PATCH 08/10] [thin_dump] Fix warnings on potential NULL pointer - ---- - base/application.cc | 8 +++++++- - base/application.h | 2 +- - thin-provisioning/thin_dump.cc | 16 ++-------------- - 3 files changed, 10 insertions(+), 16 deletions(-) - -diff --git a/base/application.cc b/base/application.cc -index 61338ff..dbd55a5 100644 ---- a/base/application.cc -+++ b/base/application.cc -@@ -25,8 +25,14 @@ command::die(string const &msg) - } - - ::uint64_t --command::parse_uint64(string const &str, string const &desc) -+command::parse_uint64(char const *str, char const *desc) - { -+ if (!str) { -+ ostringstream out; -+ out << "Couldn't parse " << desc << ": NULL"; -+ die(out.str()); -+ } -+ - try { - // FIXME: check trailing garbage is handled - return lexical_cast<::uint64_t>(str); -diff --git a/base/application.h b/base/application.h -index b799eaf..f071533 100644 ---- a/base/application.h -+++ b/base/application.h -@@ -19,7 +19,7 @@ namespace base { - virtual ~command() {} - - void die(std::string const &msg); -- uint64_t parse_uint64(std::string const &str, std::string const &desc); -+ uint64_t parse_uint64(char const *str, char const *desc); - - - virtual void usage(std::ostream &out) const = 0; -diff --git a/thin-provisioning/thin_dump.cc b/thin-provisioning/thin_dump.cc -index 74cfa91..c0e73e6 100644 ---- a/thin-provisioning/thin_dump.cc -+++ b/thin-provisioning/thin_dump.cc -@@ -143,7 +143,6 @@ thin_dump_cmd::run(int argc, char **argv) - int c; - char const *output = NULL; - const char shortopts[] = "hm::o:f:rV"; -- char *end_ptr; - block_address metadata_snap = 0; - ::uint64_t dev_id; - struct flags flags; -@@ -181,13 +180,7 @@ thin_dump_cmd::run(int argc, char **argv) - flags.use_metadata_snap = true; - if (optarg) { - // FIXME: deprecate this option -- metadata_snap = strtoull(optarg, &end_ptr, 10); -- if (end_ptr == optarg) { -- cerr << "couldn't parse " << endl; -- usage(cerr); -- return 1; -- } -- -+ metadata_snap = parse_uint64(optarg, "metadata-snap"); - flags.snap_location = metadata_snap; - } - break; -@@ -197,12 +190,7 @@ thin_dump_cmd::run(int argc, char **argv) - break; - - case 1: -- dev_id = strtoull(optarg, &end_ptr, 10); -- if (end_ptr == optarg) { -- cerr << "couldn't parse \n"; -- usage(cerr); -- return 1; -- } -+ dev_id = parse_uint64(optarg, "dev-id"); - flags.opts.select_dev(dev_id); - break; - --- -1.8.3.1 - diff --git a/0009-build-Remove-unused-sources-from-the-regular-build.patch b/0009-build-Remove-unused-sources-from-the-regular-build.patch deleted file mode 100644 index 7d49603..0000000 --- a/0009-build-Remove-unused-sources-from-the-regular-build.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 1c50c406ddda77f4c0b20e7bf3cc985e84526f51 Mon Sep 17 00:00:00 2001 -From: Ming-Hung Tsai -Date: Wed, 2 Jun 2021 13:14:30 +0800 -Subject: [PATCH 09/10] [build] Remove unused sources from the regular build - ---- - Makefile.in | 9 ++++----- - 1 file changed, 4 insertions(+), 5 deletions(-) - -diff --git a/Makefile.in b/Makefile.in -index b1fd4aa..9b13001 100644 ---- a/Makefile.in -+++ b/Makefile.in -@@ -96,10 +96,7 @@ SOURCE=\ - persistent-data/transaction_manager.cc \ - persistent-data/validators.cc \ - thin-provisioning/commands.cc \ -- thin-provisioning/cache_stream.cc \ -- thin-provisioning/chunk_stream.cc \ - thin-provisioning/device_tree.cc \ -- thin-provisioning/fixed_chunk_stream.cc \ - thin-provisioning/human_readable_format.cc \ - thin-provisioning/mapping_tree.cc \ - thin-provisioning/metadata.cc \ -@@ -107,7 +104,6 @@ SOURCE=\ - thin-provisioning/metadata_counter.cc \ - thin-provisioning/metadata_dumper.cc \ - thin-provisioning/override_emitter.cc \ -- thin-provisioning/pool_stream.cc \ - thin-provisioning/restore_emitter.cc \ - thin-provisioning/rmap_visitor.cc \ - thin-provisioning/superblock.cc \ -@@ -124,7 +120,11 @@ SOURCE=\ - thin-provisioning/xml_format.cc - - DEVTOOLS_SOURCE=\ -+ thin-provisioning/cache_stream.cc \ -+ thin-provisioning/chunk_stream.cc \ - thin-provisioning/damage_generator.cc \ -+ thin-provisioning/fixed_chunk_stream.cc \ -+ thin-provisioning/pool_stream.cc \ - thin-provisioning/thin_journal.cc \ - thin-provisioning/thin_journal_check.cc \ - thin-provisioning/thin_ll_dump.cc \ -@@ -374,4 +374,3 @@ test: functional-test unit-test - endif - - -include $(DEPEND_FILES) -- --- -1.8.3.1 - diff --git a/0010-all-Remove-unreachable-code.patch b/0010-all-Remove-unreachable-code.patch deleted file mode 100644 index b72ec41..0000000 --- a/0010-all-Remove-unreachable-code.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 9e94a4349186f7353e0d7b536b46bfa4df2483d0 Mon Sep 17 00:00:00 2001 -From: Ming-Hung Tsai -Date: Wed, 2 Jun 2021 14:59:29 +0800 -Subject: [PATCH 10/10] [all] Remove unreachable code - ---- - block-cache/io_engine.cc | 3 --- - caching/hint_array.cc | 6 ------ - 2 files changed, 9 deletions(-) - -diff --git a/block-cache/io_engine.cc b/block-cache/io_engine.cc -index 2fe4082..0158723 100644 ---- a/block-cache/io_engine.cc -+++ b/block-cache/io_engine.cc -@@ -174,9 +174,6 @@ aio_engine::wait_(timespec *ts) - cbs_.free(cb); - return optional(make_pair(false, context)); - } -- -- // shouldn't get here -- return optional(make_pair(false, 0)); - } - - struct timespec -diff --git a/caching/hint_array.cc b/caching/hint_array.cc -index 6514968..e133c5c 100644 ---- a/caching/hint_array.cc -+++ b/caching/hint_array.cc -@@ -56,9 +56,6 @@ namespace { - default: - throw runtime_error("invalid hint width"); - } -- -- // never get here -- return std::shared_ptr(); - } - - //-------------------------------- -@@ -93,9 +90,6 @@ namespace { - default: - throw runtime_error("invalid hint width"); - } -- -- // never get here -- return std::shared_ptr(); - } - - //-------------------------------- --- -1.8.3.1 - diff --git a/0011-file_utils-Fix-resource-leak.patch b/0011-file_utils-Fix-resource-leak.patch deleted file mode 100644 index bef546b..0000000 --- a/0011-file_utils-Fix-resource-leak.patch +++ /dev/null @@ -1,24 +0,0 @@ -From 677fa789e4136dbdd589c1e65efc7cdaad7506ac Mon Sep 17 00:00:00 2001 -From: Ming-Hung Tsai -Date: Fri, 4 Jun 2021 21:37:02 +0800 -Subject: [PATCH 1/2] [file_utils] Fix resource leak - ---- - base/file_utils.cc | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/base/file_utils.cc b/base/file_utils.cc -index 8253660..e6095f7 100644 ---- a/base/file_utils.cc -+++ b/base/file_utils.cc -@@ -159,6 +159,7 @@ file_utils::zero_superblock(std::string const &path) - free(buffer); - throw runtime_error("couldn't zero superblock"); - } -+ free(buffer); - } - - //---------------------------------------------------------------- --- -1.8.3.1 - diff --git a/0012-thin_delta-Clean-up-duplicated-code.patch b/0012-thin_delta-Clean-up-duplicated-code.patch deleted file mode 100644 index b45136e..0000000 --- a/0012-thin_delta-Clean-up-duplicated-code.patch +++ /dev/null @@ -1,224 +0,0 @@ -From 2e755c67064c0157e646acfa57fbcc738905f7d4 Mon Sep 17 00:00:00 2001 -From: Ming-Hung Tsai -Date: Tue, 20 Oct 2020 15:18:06 +0800 -Subject: [PATCH 2/2] [thin_delta] Clean up duplicated code - ---- - thin-provisioning/thin_delta.cc | 105 ++++++++++++---------------------------- - 1 file changed, 31 insertions(+), 74 deletions(-) - -diff --git a/thin-provisioning/thin_delta.cc b/thin-provisioning/thin_delta.cc -index ee48dea..2ff3e69 100644 ---- a/thin-provisioning/thin_delta.cc -+++ b/thin-provisioning/thin_delta.cc -@@ -22,47 +22,7 @@ using namespace thin_provisioning; - - //---------------------------------------------------------------- - --namespace local { -- class application { -- public: -- application(string const &cmd) -- : cmd_(cmd) { -- } -- -- void usage(ostream &out) { -- out << "Usage: " << cmd_ << " [options] \n" -- << "Options:\n" -- << " {--thin1, --snap1}\n" -- << " {--thin2, --snap2}\n" -- << " {-m, --metadata-snap} [block#]\n" -- << " {--verbose}\n" -- << " {-h|--help}\n" -- << " {-V|--version}" << endl; -- } -- -- void die(string const &msg) { -- cerr << msg << endl; -- usage(cerr); -- exit(1); -- } -- -- uint64_t parse_int(string const &str, string const &desc) { -- try { -- return boost::lexical_cast(str); -- -- } catch (...) { -- ostringstream out; -- out << "Couldn't parse " << desc << ": '" << str << "'"; -- die(out.str()); -- } -- -- return 0; // never get here -- } -- -- private: -- string cmd_; -- }; -- -+namespace { - struct flags { - flags() - : verbose(false), -@@ -96,13 +56,6 @@ namespace local { - uint64_t vbegin_, dbegin_, len_; - }; - -- ostream &operator <<(ostream &out, mapping const &m) { -- out << "mapping[vbegin = " << m.vbegin_ -- << ", dbegin = " << m.dbegin_ -- << ", len = " << m.len_ << "]"; -- return out; -- } -- - //-------------------------------- - - template -@@ -542,7 +495,7 @@ namespace local { - out << "\n"; - } - -- void delta_(application &app, flags const &fs) { -+ void delta_(flags const &fs) { - mapping_recorder mr1; - mapping_recorder mr2; - damage_visitor damage_v; -@@ -560,7 +513,7 @@ namespace local { - if (!snap1_root) { - ostringstream out; - out << "Unable to find mapping tree for snap1 (" << *fs.snap1 << ")"; -- app.die(out.str()); -+ throw std::runtime_error(out.str()); - } - - single_mapping_tree snap1(*md->tm_, *snap1_root, -@@ -572,7 +525,7 @@ namespace local { - if (!snap2_root) { - ostringstream out; - out << "Unable to find mapping tree for snap2 (" << *fs.snap2 << ")"; -- app.die(out.str()); -+ throw std::runtime_error(out.str()); - } - - single_mapping_tree snap2(*md->tm_, *snap2_root, -@@ -609,12 +562,12 @@ namespace local { - end_superblock(is); - } - -- int delta(application &app, flags const &fs) { -+ int delta(flags const &fs) { - try { -- delta_(app, fs); -+ delta_(fs); - } catch (exception const &e) { -- app.die(e.what()); -- return 1; // never get here -+ cerr << e.what() << endl; -+ return 1; - } - - return 0; -@@ -633,27 +586,31 @@ thin_delta_cmd::thin_delta_cmd() - void - thin_delta_cmd::usage(std::ostream &out) const - { -- // FIXME: finish -+ out << "Usage: " << get_name() << " [options] \n" -+ << "Options:\n" -+ << " {--thin1, --snap1}\n" -+ << " {--thin2, --snap2}\n" -+ << " {-m, --metadata-snap} [block#]\n" -+ << " {--verbose}\n" -+ << " {-h|--help}\n" -+ << " {-V|--version}" << endl; - } - - int - thin_delta_cmd::run(int argc, char **argv) - { -- using namespace local; -- - int c; - flags fs; -- local::application app(basename(argv[0])); - - char const shortopts[] = "hVm::"; - option const longopts[] = { - { "help", no_argument, NULL, 'h' }, -+ { "metadata-snap", optional_argument, NULL, 'm' }, - { "version", no_argument, NULL, 'V' }, - { "thin1", required_argument, NULL, 1 }, - { "snap1", required_argument, NULL, 1 }, - { "thin2", required_argument, NULL, 2 }, - { "snap2", required_argument, NULL, 2 }, -- { "metadata-snap", optional_argument, NULL, 'm' }, - { "verbose", no_argument, NULL, 4 }, - { NULL, no_argument, NULL, 0 } - }; -@@ -661,25 +618,25 @@ thin_delta_cmd::run(int argc, char **argv) - while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) { - switch (c) { - case 'h': -- app.usage(cout); -+ usage(cout); - return 0; - -+ case 'm': -+ fs.use_metadata_snap = true; -+ if (optarg) -+ fs.metadata_snap = parse_uint64(optarg, "metadata snapshot block"); -+ break; -+ - case 'V': - cout << THIN_PROVISIONING_TOOLS_VERSION << endl; - return 0; - - case 1: -- fs.snap1 = app.parse_int(optarg, "thin id 1"); -+ fs.snap1 = parse_uint64(optarg, "thin id 1"); - break; - - case 2: -- fs.snap2 = app.parse_int(optarg, "thin id 2"); -- break; -- -- case 'm': -- fs.use_metadata_snap = true; -- if (optarg) -- fs.metadata_snap = app.parse_int(optarg, "metadata snapshot block"); -+ fs.snap2 = parse_uint64(optarg, "thin id 2"); - break; - - case 4: -@@ -687,23 +644,23 @@ thin_delta_cmd::run(int argc, char **argv) - break; - - default: -- app.usage(cerr); -+ usage(cerr); - return 1; - } - } - - if (argc == optind) -- app.die("No input device provided."); -+ die("No input device provided."); - else - fs.dev = argv[optind]; - - if (!fs.snap1) -- app.die("--snap1 not specified."); -+ die("--snap1 not specified."); - - if (!fs.snap2) -- app.die("--snap2 not specified."); -+ die("--snap2 not specified."); - -- return delta(app, fs); -+ return delta(fs); - } - - //---------------------------------------------------------------- --- -1.8.3.1 - diff --git a/0013-build-Remove-lboost_iostreams-linker-flag.patch b/0013-build-Remove-lboost_iostreams-linker-flag.patch deleted file mode 100644 index 82eba49..0000000 --- a/0013-build-Remove-lboost_iostreams-linker-flag.patch +++ /dev/null @@ -1,16 +0,0 @@ - Makefile.in | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/Makefile.in b/Makefile.in -index b1fd4aa..77c467d 100644 ---- a/Makefile.in -+++ b/Makefile.in -@@ -173,7 +173,7 @@ CXXFLAGS+=@CXXDEBUG_FLAG@ - CXXFLAGS+=@CXX_STRERROR_FLAG@ - CXXFLAGS+=@LFS_FLAGS@ - INCLUDES+=-I$(TOP_BUILDDIR) -I$(TOP_DIR) -I$(TOP_DIR)/thin-provisioning --LIBS:=-laio -lexpat -lboost_iostreams -ldl -+LIBS:=-laio -lexpat -ldl - - ifeq ("@DEVTOOLS@", "yes") - LIBS+=-lncurses diff --git a/0014-cargo-update.patch b/0014-cargo-update.patch deleted file mode 100644 index 84c867d..0000000 --- a/0014-cargo-update.patch +++ /dev/null @@ -1,848 +0,0 @@ -From 0a061474ee8f8183bded35a7c680739c9b75ad4b Mon Sep 17 00:00:00 2001 -From: Marian Csontos -Date: Mon, 28 Jun 2021 13:14:37 +0200 -Subject: [PATCH] cargo update - ---- - Cargo.lock | 486 +++++++++++++++++++++++++++++++++---------------------------- - 1 file changed, 264 insertions(+), 222 deletions(-) - -diff --git a/Cargo.lock b/Cargo.lock -index d42d598..9dc0b8a 100644 ---- a/Cargo.lock -+++ b/Cargo.lock -@@ -1,567 +1,609 @@ - # This file is automatically @generated by Cargo. - # It is not intended for manual editing. - [[package]] --name = "adler32" --version = "1.0.4" -+name = "adler" -+version = "1.0.2" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" - - [[package]] - name = "aho-corasick" --version = "0.7.10" -+version = "0.7.18" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" - dependencies = [ -- "memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)", -+ "memchr", - ] - - [[package]] - name = "ansi_term" - version = "0.11.0" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" - dependencies = [ -- "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", -+ "winapi", - ] - - [[package]] - name = "anyhow" --version = "1.0.31" -+version = "1.0.41" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "15af2628f6890fe2609a3b91bef4c83450512802e59489f9c1cb1fa5df064a61" - - [[package]] - name = "arrayvec" --version = "0.4.12" -+version = "0.5.2" - source = "registry+https://github.com/rust-lang/crates.io-index" --dependencies = [ -- "nodrop 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", --] -+checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" - - [[package]] - name = "atty" - version = "0.2.14" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" - dependencies = [ -- "hermit-abi 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", -- "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)", -- "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", -+ "hermit-abi", -+ "libc", -+ "winapi", - ] - - [[package]] - name = "autocfg" --version = "1.0.0" -+version = "1.0.1" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" - - [[package]] - name = "bitflags" - version = "1.2.1" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" - - [[package]] - name = "byteorder" --version = "1.3.4" -+version = "1.4.3" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" - - [[package]] - name = "cc" --version = "1.0.54" -+version = "1.0.68" -+source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "4a72c244c1ff497a746a7e1fb3d14bd08420ecda70c8f25c7112f2781652d787" -+ -+[[package]] -+name = "cfg-if" -+version = "0.1.10" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" - - [[package]] - name = "cfg-if" --version = "0.1.9" -+version = "1.0.0" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - - [[package]] - name = "clap" --version = "2.33.1" -+version = "2.33.3" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002" - dependencies = [ -- "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", -- "atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", -- "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", -- "strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", -- "textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", -- "unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", -- "vec_map 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", -+ "ansi_term", -+ "atty", -+ "bitflags", -+ "strsim", -+ "textwrap", -+ "unicode-width", -+ "vec_map", - ] - - [[package]] - name = "crc32c" --version = "0.4.0" -+version = "0.6.0" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "210cdf933e6a81212bfabf90cd8762f471b5922e5f6b709547673ad8e04b9448" -+dependencies = [ -+ "rustc_version", -+] - - [[package]] - name = "crc32fast" --version = "1.2.0" -+version = "1.2.1" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a" - dependencies = [ -- "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", -+ "cfg-if 1.0.0", - ] - - [[package]] - name = "env_logger" - version = "0.7.1" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36" - dependencies = [ -- "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", -- "regex 1.3.9 (registry+https://github.com/rust-lang/crates.io-index)", -+ "log", -+ "regex", - ] - - [[package]] - name = "fixedbitset" --version = "0.3.0" -+version = "0.3.2" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "45e780567ed7abc415d12fd464571d265eb4a5710ddc97cdb1a31a4c35bb479d" - - [[package]] - name = "flate2" --version = "1.0.14" -+version = "1.0.20" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "cd3aec53de10fe96d7d8c565eb17f2c687bb5518a2ec453b5b1252964526abe0" - dependencies = [ -- "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", -- "crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", -- "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)", -- "miniz_oxide 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", -+ "cfg-if 1.0.0", -+ "crc32fast", -+ "libc", -+ "miniz_oxide", - ] - - [[package]] - name = "getrandom" --version = "0.1.14" -+version = "0.1.16" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" - dependencies = [ -- "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", -- "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)", -- "wasi 0.9.0+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)", -+ "cfg-if 1.0.0", -+ "libc", -+ "wasi 0.9.0+wasi-snapshot-preview1", - ] - - [[package]] --name = "hermit-abi" --version = "0.1.13" -+name = "getrandom" -+version = "0.2.3" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753" - dependencies = [ -- "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)", -+ "cfg-if 1.0.0", -+ "libc", -+ "wasi 0.10.2+wasi-snapshot-preview1", - ] - - [[package]] --name = "lazy_static" --version = "1.4.0" -+name = "hermit-abi" -+version = "0.1.19" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -+dependencies = [ -+ "libc", -+] - - [[package]] - name = "lexical-core" --version = "0.6.7" -+version = "0.7.6" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "6607c62aa161d23d17a9072cc5da0be67cdfc89d3afb1e8d9c842bebc2525ffe" - dependencies = [ -- "arrayvec 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", -- "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", -- "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", -- "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", -- "ryu 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", -- "static_assertions 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", -+ "arrayvec", -+ "bitflags", -+ "cfg-if 1.0.0", -+ "ryu", -+ "static_assertions", - ] - - [[package]] - name = "libc" --version = "0.2.71" -+version = "0.2.97" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "12b8adadd720df158f4d70dfe7ccc6adb0472d7c55ca83445f6a5ab3e36f8fb6" - - [[package]] - name = "log" --version = "0.4.8" -+version = "0.4.14" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" - dependencies = [ -- "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", -+ "cfg-if 1.0.0", - ] - - [[package]] - name = "memchr" --version = "2.3.3" -+version = "2.4.0" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "b16bd47d9e329435e309c58469fe0791c2d0d1ba96ec0954152a5ae2b04387dc" - - [[package]] - name = "miniz_oxide" --version = "0.3.6" -+version = "0.4.4" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" - dependencies = [ -- "adler32 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", -+ "adler", -+ "autocfg", - ] - - [[package]] - name = "nix" - version = "0.17.0" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "50e4785f2c3b7589a0d0c1dd60285e1188adac4006e8abd6dd578e1567027363" - dependencies = [ -- "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", -- "cc 1.0.54 (registry+https://github.com/rust-lang/crates.io-index)", -- "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", -- "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)", -- "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", -+ "bitflags", -+ "cc", -+ "cfg-if 0.1.10", -+ "libc", -+ "void", - ] - - [[package]] --name = "nodrop" --version = "0.1.14" --source = "registry+https://github.com/rust-lang/crates.io-index" -- --[[package]] - name = "nom" --version = "5.1.1" -+version = "5.1.2" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "ffb4262d26ed83a1c0a33a38fe2bb15797329c85770da05e6b828ddb782627af" - dependencies = [ -- "lexical-core 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", -- "memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)", -- "version_check 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", -+ "lexical-core", -+ "memchr", -+ "version_check", - ] - - [[package]] - name = "num-derive" --version = "0.3.0" -+version = "0.3.3" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" - dependencies = [ -- "proc-macro2 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)", -- "quote 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", -- "syn 1.0.30 (registry+https://github.com/rust-lang/crates.io-index)", -+ "proc-macro2", -+ "quote", -+ "syn", - ] - - [[package]] - name = "num-traits" --version = "0.2.11" -+version = "0.2.14" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" - dependencies = [ -- "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", -+ "autocfg", - ] - - [[package]] - name = "num_cpus" - version = "1.13.0" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3" - dependencies = [ -- "hermit-abi 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", -- "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)", -+ "hermit-abi", -+ "libc", - ] - - [[package]] - name = "ppv-lite86" --version = "0.2.8" -+version = "0.2.10" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" - - [[package]] - name = "proc-macro2" --version = "1.0.18" -+version = "1.0.27" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "f0d8caf72986c1a598726adc988bb5984792ef84f5ee5aa50209145ee8077038" - dependencies = [ -- "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", -+ "unicode-xid", - ] - - [[package]] - name = "quick-xml" - version = "0.18.1" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "3cc440ee4802a86e357165021e3e255a9143724da31db1e2ea540214c96a0f82" - dependencies = [ -- "memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)", -+ "memchr", - ] - - [[package]] - name = "quickcheck" - version = "0.9.2" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "a44883e74aa97ad63db83c4bf8ca490f02b2fc02f92575e720c8551e843c945f" - dependencies = [ -- "env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", -- "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", -- "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", -- "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", -+ "env_logger", -+ "log", -+ "rand 0.7.3", -+ "rand_core 0.5.1", - ] - - [[package]] - name = "quickcheck_macros" - version = "0.9.1" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "608c156fd8e97febc07dc9c2e2c80bf74cfc6ef26893eae3daf8bc2bc94a4b7f" - dependencies = [ -- "proc-macro2 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)", -- "quote 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", -- "syn 1.0.30 (registry+https://github.com/rust-lang/crates.io-index)", -+ "proc-macro2", -+ "quote", -+ "syn", - ] - - [[package]] - name = "quote" --version = "1.0.6" -+version = "1.0.9" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" - dependencies = [ -- "proc-macro2 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)", -+ "proc-macro2", - ] - - [[package]] - name = "rand" - version = "0.7.3" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" - dependencies = [ -- "getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", -- "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)", -- "rand_chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", -- "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", -- "rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", -+ "getrandom 0.1.16", -+ "libc", -+ "rand_chacha 0.2.2", -+ "rand_core 0.5.1", -+ "rand_hc 0.2.0", -+] -+ -+[[package]] -+name = "rand" -+version = "0.8.4" -+source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "2e7573632e6454cf6b99d7aac4ccca54be06da05aca2ef7423d22d27d4d4bcd8" -+dependencies = [ -+ "libc", -+ "rand_chacha 0.3.1", -+ "rand_core 0.6.3", -+ "rand_hc 0.3.1", - ] - - [[package]] - name = "rand_chacha" - version = "0.2.2" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" - dependencies = [ -- "ppv-lite86 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", -- "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", -+ "ppv-lite86", -+ "rand_core 0.5.1", -+] -+ -+[[package]] -+name = "rand_chacha" -+version = "0.3.1" -+source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -+dependencies = [ -+ "ppv-lite86", -+ "rand_core 0.6.3", - ] - - [[package]] - name = "rand_core" - version = "0.5.1" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" - dependencies = [ -- "getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", -+ "getrandom 0.1.16", -+] -+ -+[[package]] -+name = "rand_core" -+version = "0.6.3" -+source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" -+dependencies = [ -+ "getrandom 0.2.3", - ] - - [[package]] - name = "rand_hc" - version = "0.2.0" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -+dependencies = [ -+ "rand_core 0.5.1", -+] -+ -+[[package]] -+name = "rand_hc" -+version = "0.3.1" -+source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "d51e9f596de227fda2ea6c84607f5558e196eeaf43c986b724ba4fb8fdf497e7" - dependencies = [ -- "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", -+ "rand_core 0.6.3", - ] - - [[package]] - name = "redox_syscall" --version = "0.1.56" -+version = "0.2.9" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "5ab49abadf3f9e1c4bc499e8845e152ad87d2ad2d30371841171169e9d75feee" -+dependencies = [ -+ "bitflags", -+] - - [[package]] - name = "regex" --version = "1.3.9" -+version = "1.5.4" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461" - dependencies = [ -- "aho-corasick 0.7.10 (registry+https://github.com/rust-lang/crates.io-index)", -- "memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)", -- "regex-syntax 0.6.18 (registry+https://github.com/rust-lang/crates.io-index)", -- "thread_local 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", -+ "aho-corasick", -+ "memchr", -+ "regex-syntax", - ] - - [[package]] - name = "regex-syntax" --version = "0.6.18" -+version = "0.6.25" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" - - [[package]] - name = "remove_dir_all" - version = "0.5.3" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" - dependencies = [ -- "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", -+ "winapi", - ] - - [[package]] - name = "rustc_version" - version = "0.2.3" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" - dependencies = [ -- "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", -+ "semver", - ] - - [[package]] - name = "ryu" - version = "1.0.5" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" - - [[package]] - name = "semver" - version = "0.9.0" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" - dependencies = [ -- "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", -+ "semver-parser", - ] - - [[package]] - name = "semver-parser" - version = "0.7.0" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" - - [[package]] - name = "static_assertions" --version = "0.3.4" -+version = "1.1.0" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - - [[package]] - name = "strsim" - version = "0.8.0" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" - - [[package]] - name = "syn" --version = "1.0.30" -+version = "1.0.73" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "f71489ff30030d2ae598524f61326b902466f72a0fb1a8564c001cc63425bcc7" - dependencies = [ -- "proc-macro2 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)", -- "quote 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", -- "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", -+ "proc-macro2", -+ "quote", -+ "unicode-xid", - ] - - [[package]] - name = "tempfile" --version = "3.1.0" -+version = "3.2.0" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22" - dependencies = [ -- "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", -- "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)", -- "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", -- "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", -- "remove_dir_all 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", -- "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", -+ "cfg-if 1.0.0", -+ "libc", -+ "rand 0.8.4", -+ "redox_syscall", -+ "remove_dir_all", -+ "winapi", - ] - - [[package]] - name = "textwrap" - version = "0.11.0" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" - dependencies = [ -- "unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", -+ "unicode-width", - ] - - [[package]] - name = "thinp" - version = "0.1.0" - dependencies = [ -- "anyhow 1.0.31 (registry+https://github.com/rust-lang/crates.io-index)", -- "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", -- "clap 2.33.1 (registry+https://github.com/rust-lang/crates.io-index)", -- "crc32c 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", -- "fixedbitset 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", -- "flate2 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", -- "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)", -- "nix 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)", -- "nom 5.1.1 (registry+https://github.com/rust-lang/crates.io-index)", -- "num-derive 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", -- "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", -- "num_cpus 1.13.0 (registry+https://github.com/rust-lang/crates.io-index)", -- "quick-xml 0.18.1 (registry+https://github.com/rust-lang/crates.io-index)", -- "quickcheck 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", -- "quickcheck_macros 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", -- "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", -- "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", --] -- --[[package]] --name = "thread_local" --version = "1.0.1" --source = "registry+https://github.com/rust-lang/crates.io-index" --dependencies = [ -- "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", -+ "anyhow", -+ "byteorder", -+ "clap", -+ "crc32c", -+ "fixedbitset", -+ "flate2", -+ "libc", -+ "nix", -+ "nom", -+ "num-derive", -+ "num-traits", -+ "num_cpus", -+ "quick-xml", -+ "quickcheck", -+ "quickcheck_macros", -+ "rand 0.7.3", -+ "tempfile", - ] - - [[package]] - name = "unicode-width" --version = "0.1.7" -+version = "0.1.8" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3" - - [[package]] - name = "unicode-xid" --version = "0.2.0" -+version = "0.2.2" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" - - [[package]] - name = "vec_map" - version = "0.8.2" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" - - [[package]] - name = "version_check" --version = "0.9.2" -+version = "0.9.3" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe" - - [[package]] - name = "void" - version = "1.0.2" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" - - [[package]] - name = "wasi" - version = "0.9.0+wasi-snapshot-preview1" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" -+ -+[[package]] -+name = "wasi" -+version = "0.10.2+wasi-snapshot-preview1" -+source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" - - [[package]] - name = "winapi" --version = "0.3.8" -+version = "0.3.9" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" - dependencies = [ -- "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", -- "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", -+ "winapi-i686-pc-windows-gnu", -+ "winapi-x86_64-pc-windows-gnu", - ] - - [[package]] - name = "winapi-i686-pc-windows-gnu" - version = "0.4.0" - source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - - [[package]] - name = "winapi-x86_64-pc-windows-gnu" - version = "0.4.0" - source = "registry+https://github.com/rust-lang/crates.io-index" -- --[metadata] --"checksum adler32 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5d2e7343e7fc9de883d1b0341e0b13970f764c14101234857d2ddafa1cb1cac2" --"checksum aho-corasick 0.7.10 (registry+https://github.com/rust-lang/crates.io-index)" = "8716408b8bc624ed7f65d223ddb9ac2d044c0547b6fa4b0d554f3a9540496ada" --"checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" --"checksum anyhow 1.0.31 (registry+https://github.com/rust-lang/crates.io-index)" = "85bb70cc08ec97ca5450e6eba421deeea5f172c0fc61f78b5357b2a8e8be195f" --"checksum arrayvec 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "cd9fd44efafa8690358b7408d253adf110036b88f55672a933f01d616ad9b1b9" --"checksum atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" --"checksum autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d" --"checksum bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" --"checksum byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" --"checksum cc 1.0.54 (registry+https://github.com/rust-lang/crates.io-index)" = "7bbb73db36c1246e9034e307d0fba23f9a2e251faa47ade70c1bd252220c8311" --"checksum cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "b486ce3ccf7ffd79fdeb678eac06a9e6c09fc88d33836340becb8fffe87c5e33" --"checksum clap 2.33.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bdfa80d47f954d53a35a64987ca1422f495b8d6483c0fe9f7117b36c2a792129" --"checksum crc32c 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "77ba37ef26c12988c1cee882d522d65e1d5d2ad8c3864665b88ee92767ed84c5" --"checksum crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1" --"checksum env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36" --"checksum fixedbitset 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2fc4fcacf5cd3681968f6524ea159383132937739c6c40dabab9e37ed515911b" --"checksum flate2 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)" = "2cfff41391129e0a856d6d822600b8d71179d46879e310417eb9c762eb178b42" --"checksum getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "7abc8dd8451921606d809ba32e95b6111925cd2906060d2dcc29c070220503eb" --"checksum hermit-abi 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "91780f809e750b0a89f5544be56617ff6b1227ee485bcb06ebe10cdf89bd3b71" --"checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" --"checksum lexical-core 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "f86d66d380c9c5a685aaac7a11818bdfa1f733198dfd9ec09c70b762cd12ad6f" --"checksum libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)" = "9457b06509d27052635f90d6466700c65095fdf75409b3fbdd903e988b886f49" --"checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" --"checksum memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400" --"checksum miniz_oxide 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "aa679ff6578b1cddee93d7e82e263b94a575e0bfced07284eb0c037c1d2416a5" --"checksum nix 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)" = "50e4785f2c3b7589a0d0c1dd60285e1188adac4006e8abd6dd578e1567027363" --"checksum nodrop 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" --"checksum nom 5.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b471253da97532da4b61552249c521e01e736071f71c1a4f7ebbfbf0a06aad6" --"checksum num-derive 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0c8b15b261814f992e33760b1fca9fe8b693d8a65299f20c9901688636cfb746" --"checksum num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "c62be47e61d1842b9170f0fdeec8eba98e60e90e5446449a0545e5152acd7096" --"checksum num_cpus 1.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3" --"checksum ppv-lite86 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "237a5ed80e274dbc66f86bd59c1e25edc039660be53194b5fe0a482e0f2612ea" --"checksum proc-macro2 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)" = "beae6331a816b1f65d04c45b078fd8e6c93e8071771f41b8163255bbd8d7c8fa" --"checksum quick-xml 0.18.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3cc440ee4802a86e357165021e3e255a9143724da31db1e2ea540214c96a0f82" --"checksum quickcheck 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a44883e74aa97ad63db83c4bf8ca490f02b2fc02f92575e720c8551e843c945f" --"checksum quickcheck_macros 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "608c156fd8e97febc07dc9c2e2c80bf74cfc6ef26893eae3daf8bc2bc94a4b7f" --"checksum quote 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "54a21852a652ad6f610c9510194f398ff6f8692e334fd1145fed931f7fbe44ea" --"checksum rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" --"checksum rand_chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" --"checksum rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" --"checksum rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" --"checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" --"checksum regex 1.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "9c3780fcf44b193bc4d09f36d2a3c87b251da4a046c87795a0d35f4f927ad8e6" --"checksum regex-syntax 0.6.18 (registry+https://github.com/rust-lang/crates.io-index)" = "26412eb97c6b088a6997e05f69403a802a92d520de2f8e63c2b65f9e0f47c4e8" --"checksum remove_dir_all 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" --"checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" --"checksum ryu 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" --"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" --"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" --"checksum static_assertions 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "7f3eb36b47e512f8f1c9e3d10c2c1965bc992bd9cdb024fa581e2194501c83d3" --"checksum strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" --"checksum syn 1.0.30 (registry+https://github.com/rust-lang/crates.io-index)" = "93a56fabc59dce20fe48b6c832cc249c713e7ed88fa28b0ee0a3bfcaae5fe4e2" --"checksum tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" --"checksum textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" --"checksum thread_local 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14" --"checksum unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "caaa9d531767d1ff2150b9332433f32a24622147e5ebb1f26409d5da67afd479" --"checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" --"checksum vec_map 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" --"checksum version_check 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed" --"checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" --"checksum wasi 0.9.0+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)" = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" --"checksum winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" --"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" --"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -+checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" --- -1.8.3.1 - diff --git a/device-mapper-persistent-data.spec b/device-mapper-persistent-data.spec index f4fb197..1bd5595 100644 --- a/device-mapper-persistent-data.spec +++ b/device-mapper-persistent-data.spec @@ -1,37 +1,26 @@ # # Copyright (C) 2011-2017 Red Hat, Inc # +%bcond_without check +%global debug_package %{nil} #%%global version_suffix -rc2 #%%global release_suffix .test3 Summary: Device-mapper Persistent Data Tools Name: device-mapper-persistent-data -Version: 0.9.0 -Release: 10%{?dist}%{?release_suffix} +Version: 1.0.2 +Release: 1%{?dist}%{?release_suffix} License: GPLv3+ 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/v%{version}%{?version_suffix}.tar.gz -Source1: dmpd090-vendor3.tar.gz -Patch0: device-mapper-persistent-data-avoid-strip.patch -Patch1: 0001-Update-dependencies.patch -Patch2: 0001-all-Fix-resource-leaks.patch -Patch3: 0002-thin_show_metadata-Fix-out-of-bounds-access.patch -Patch4: 0003-build-Fix-customized-emitter-linkage.patch -Patch5: 0004-thin_dump-Fix-leaked-shared-object-handle.patch -Patch6: 0005-thin_show_duplicates-Fix-potential-errors.patch -Patch7: 0006-thin_metadata_size-Fix-potential-string-overflow.patch -Patch8: 0007-all-Fix-uninitialized-class-members.patch -Patch9: 0008-thin_dump-Fix-warnings-on-potential-NULL-pointer.patch -Patch10: 0009-build-Remove-unused-sources-from-the-regular-build.patch -Patch11: 0010-all-Remove-unreachable-code.patch -Patch12: 0011-file_utils-Fix-resource-leak.patch -Patch13: 0012-thin_delta-Clean-up-duplicated-code.patch -Patch14: 0013-build-Remove-lboost_iostreams-linker-flag.patch -Patch15: 0014-cargo-update.patch +Source1: dmpd102-vendor.tar.gz +#Patch0: device-mapper-persistent-data-avoid-strip.patch +Patch1: 0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch +Patch2: 0002-Fix-paths.patch -BuildRequires: autoconf, expat-devel, libaio-devel, libstdc++-devel, boost-devel, gcc-c++ +BuildRequires: expat-devel, libaio-devel, libstdc++-devel, boost-devel, gcc-c++ Requires: expat %ifarch %{rust_arches} BuildRequires: rust-packaging @@ -52,7 +41,6 @@ snapshot eras %setup -q -n thin-provisioning-tools-%{version}%{?version_suffix} %ifarch %{rust_arches} %patch1 -p1 -b .toml_update -%patch15 -p1 -b .backup15 #%%cargo_prep #%%cargo_generate_buildrequires tar xf %{SOURCE1} @@ -66,40 +54,24 @@ directory = "vendor" END %endif -%patch0 -p1 -b .avoid_strip +#%%patch0 -p1 -b .avoid_strip %patch2 -p1 -b .backup2 -%patch3 -p1 -b .backup3 -%patch4 -p1 -b .backup4 -%patch5 -p1 -b .backup5 -%patch6 -p1 -b .backup6 -%patch7 -p1 -b .backup7 -%patch8 -p1 -b .backup8 -%patch9 -p1 -b .backup9 -%patch10 -p1 -b .backup10 -%patch11 -p1 -b .backup11 -%patch12 -p1 -b .backup12 -%patch13 -p1 -b .backup13 -%patch14 -p1 -b .backup14 # NOTE: patch 15 is above at the rust setup echo %{version}-%{release} > VERSION %generate_buildrequires %build -autoconf -%configure --with-optimisation= -make %{?_smp_mflags} V= -%ifarch %{rust_arches} +#make %{?_smp_mflags} V= %cargo_build + +%if %{with check} +%check +%cargo_test %endif %install make DESTDIR=%{buildroot} MANDIR=%{_mandir} install -%ifarch %{rust_arches} -make DESTDIR=%{buildroot} MANDIR=%{_mandir} install-rust-tools -# cargo_install installs into /usr/bin -#%%cargo_install -%endif %files %doc COPYING README.md @@ -153,6 +125,10 @@ make DESTDIR=%{buildroot} MANDIR=%{_mandir} install-rust-tools #% {_sbindir}/thin_show_duplicates %changelog +* Wed Feb 22 2023 Marian Csontos - 1.0.2-1 +- Update to latest upstream release 1.0.2. +- Complete rewrite in rust. + * Sun Feb 05 2023 Fabio Valentini - 0.9.0-10 - Rebuild for fixed frame pointer compiler flags in Rust RPM macros. diff --git a/sources b/sources index 8031915..886ab81 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (v0.9.0.tar.gz) = e1796fb3948847d72ca8247cae58017507c0a847a00201b93668eeb8fbfea4107c4c2affa5c211c149798a89b10474e83d2bd61a5545a668299be97aed591e0f -SHA512 (dmpd090-vendor3.tar.gz) = 90891c377a27695b20ce260852260d4fe08f3db6dba99401e56f2643a7ec94115c33e9c84b54188845acfde855e682c9b91c72dec3554effeade226b1df3303e +SHA512 (v1.0.2.tar.gz) = f5401631f0d10cb0fbd8e4b2979b38d2dc42621de558ffb23b2bcc12f1b7fead49ffa8b143af61227917edce9abc7b5a48c94036ae74c035a181661f82e80ed1 +SHA512 (dmpd102-vendor.tar.gz) = bc50c456d2fea1ab4db21d30f66a967bee51b33b5f2435740551b6ad290f8286a14dbadb998b9913900aa71eb2a7ccd01c3e4618937fd67aa7fe8b4591039a15 From db577ef350a909cb398e104e7921e50c3f2777c7 Mon Sep 17 00:00:00 2001 From: Marian Csontos Date: Fri, 28 Apr 2023 16:41:15 +0200 Subject: [PATCH 17/50] Update to version 1.0.4 --- .gitignore | 2 + ...o.toml-to-work-with-vendor-directory.patch | 41 +++++++++---------- 0002-Fix-paths.patch | 30 -------------- device-mapper-persistent-data.spec | 35 ++++++---------- sources | 4 +- 5 files changed, 37 insertions(+), 75 deletions(-) delete mode 100644 0002-Fix-paths.patch diff --git a/.gitignore b/.gitignore index bb141e9..b2a848e 100644 --- a/.gitignore +++ b/.gitignore @@ -41,3 +41,5 @@ /dmpd090-vendor3.tar.gz /v1.0.2.tar.gz /dmpd102-vendor.tar.gz +/v1.0.4.tar.gz +/dmpd104-vendor.tar.gz diff --git a/0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch b/0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch index eb446ba..ae2234b 100644 --- a/0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch +++ b/0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch @@ -1,31 +1,30 @@ -From 3d67b5c78f350db25e028112105014b09c2b34b3 Mon Sep 17 00:00:00 2001 +From a6afd3ee7c9b5a6ab2906c827464acceb75123b2 Mon Sep 17 00:00:00 2001 From: Marian Csontos -Date: Wed, 22 Feb 2023 18:07:57 +0100 +Date: Wed, 22 Mar 2023 09:42:15 +0100 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.lock | 2 +- - Cargo.toml | 3 ++- - 2 files changed, 3 insertions(+), 2 deletions(-) + Cargo.toml | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) -diff --git a/Cargo.lock b/Cargo.lock -index 4ff194a7..a4a56d75 100644 ---- a/Cargo.lock -+++ b/Cargo.lock -@@ -973,7 +973,7 @@ checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" - - [[package]] - name = "thinp" --version = "0.1.0" -+version = "1.0.2" - dependencies = [ - "anyhow", - "atty", diff --git a/Cargo.toml b/Cargo.toml -index 94c8e5b3..6f6912ec 100644 +index 135ba5f8..cbb73ec1 100644 --- a/Cargo.toml +++ b/Cargo.toml -@@ -29,7 +29,8 @@ quick-xml = "0.23.1" +@@ -11,7 +11,8 @@ anyhow = "1.0" + base64 = "0.20" + byteorder = "1.4" + clap = "3.2" +-crc32c = { git = "https://github.com/zowens/crc32c", branch = "master" } ++#crc32c = { git = "https://github.com/zowens/crc32c", branch = "master" } ++crc32c = "0.6" + data-encoding = "2.3" + exitcode = "1.1.2" + fixedbitset = "0.4" +@@ -28,7 +29,8 @@ quick-xml = "0.23.1" rand = "0.8" rangemap = "1.1" roaring = "0.10" @@ -36,5 +35,5 @@ index 94c8e5b3..6f6912ec 100644 threadpool = "1.8" thiserror = "1.0" -- -2.39.1 +2.40.1 diff --git a/0002-Fix-paths.patch b/0002-Fix-paths.patch deleted file mode 100644 index 75858c6..0000000 --- a/0002-Fix-paths.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 26571db5911e6a85e13965d0359799537ac4ce54 Mon Sep 17 00:00:00 2001 -From: Marian Csontos -Date: Thu, 23 Feb 2023 12:11:16 +0100 -Subject: [PATCH] Fix paths - -Use PREFIX instead of DESTDIR. DESTDIR is used for things like BUILDROOT ---- - Makefile | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/Makefile b/Makefile -index 0286000b..92c6d325 100644 ---- a/Makefile -+++ b/Makefile -@@ -6,9 +6,9 @@ PDATA_TOOLS=\ - $(PDATA_TOOLS): - $(V) cargo build --release - --DESTDIR:=/usr --BINDIR:=$(DESTDIR)/sbin --DATADIR:=$(DESTDIR)/share -+PREFIX:=/usr -+BINDIR:=$(DESTDIR)$(PREFIX)/sbin -+DATADIR:=$(DESTDIR)$(PREFIX)/share - MANPATH:=$(DATADIR)/man - - STRIP:=strip --- -2.39.2 - diff --git a/device-mapper-persistent-data.spec b/device-mapper-persistent-data.spec index 1bd5595..9070dc7 100644 --- a/device-mapper-persistent-data.spec +++ b/device-mapper-persistent-data.spec @@ -9,25 +9,22 @@ Summary: Device-mapper Persistent Data Tools Name: device-mapper-persistent-data -Version: 1.0.2 +Version: 1.0.4 Release: 1%{?dist}%{?release_suffix} License: GPLv3+ +#ExcludeArch: %%{ix86} 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/v%{version}%{?version_suffix}.tar.gz -Source1: dmpd102-vendor.tar.gz -#Patch0: device-mapper-persistent-data-avoid-strip.patch +Source1: dmpd104-vendor.tar.gz Patch1: 0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch -Patch2: 0002-Fix-paths.patch -BuildRequires: expat-devel, libaio-devel, libstdc++-devel, boost-devel, gcc-c++ -Requires: expat -%ifarch %{rust_arches} BuildRequires: rust-packaging BuildRequires: rust >= 1.35 BuildRequires: cargo -%endif BuildRequires: make +# FIXME: Remove this! +BuildRequires: rust-gdb %description thin-provisioning-tools contains check,dump,restore,repair,rmap @@ -38,9 +35,7 @@ are included and era check, dump, restore and invalidate to manage snapshot eras %prep -%setup -q -n thin-provisioning-tools-%{version}%{?version_suffix} -%ifarch %{rust_arches} -%patch1 -p1 -b .toml_update +%autosetup -p1 -n thin-provisioning-tools-%{version}%{?version_suffix} #%%cargo_prep #%%cargo_generate_buildrequires tar xf %{SOURCE1} @@ -53,10 +48,6 @@ replace-with = "vendored-sources" directory = "vendor" END -%endif -#%%patch0 -p1 -b .avoid_strip -%patch2 -p1 -b .backup2 -# NOTE: patch 15 is above at the rust setup echo %{version}-%{release} > VERSION %generate_buildrequires @@ -67,7 +58,9 @@ echo %{version}-%{release} > VERSION %if %{with check} %check +# FIXME: Reenable testing! %cargo_test +#cargo test --test thin_shrink -- --nocapture --test-threads=1 %endif %install @@ -94,10 +87,8 @@ make DESTDIR=%{buildroot} MANDIR=%{_mandir} install %{_mandir}/man8/thin_restore.8.gz %{_mandir}/man8/thin_rmap.8.gz %{_mandir}/man8/thin_trim.8.gz -%ifarch %{rust_arches} %{_mandir}/man8/thin_metadata_pack.8.gz %{_mandir}/man8/thin_metadata_unpack.8.gz -%endif %{_sbindir}/pdata_tools %{_sbindir}/cache_check %{_sbindir}/cache_dump @@ -118,16 +109,16 @@ make DESTDIR=%{buildroot} MANDIR=%{_mandir} install %{_sbindir}/thin_restore %{_sbindir}/thin_rmap %{_sbindir}/thin_trim -%ifarch %{rust_arches} %{_sbindir}/thin_metadata_pack %{_sbindir}/thin_metadata_unpack -%endif #% {_sbindir}/thin_show_duplicates %changelog -* Wed Feb 22 2023 Marian Csontos - 1.0.2-1 -- Update to latest upstream release 1.0.2. -- Complete rewrite in rust. +* Fri Apr 28 2023 Marian Csontos - 1.0.4-1 +- Update to latest upstream release 1.0.4. + +* Wed Mar 22 2023 Marian Csontos - 1.0.3-1 +- Update to latest upstream release 1.0.3. * Sun Feb 05 2023 Fabio Valentini - 0.9.0-10 - Rebuild for fixed frame pointer compiler flags in Rust RPM macros. diff --git a/sources b/sources index 886ab81..dbf8c9f 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (v1.0.2.tar.gz) = f5401631f0d10cb0fbd8e4b2979b38d2dc42621de558ffb23b2bcc12f1b7fead49ffa8b143af61227917edce9abc7b5a48c94036ae74c035a181661f82e80ed1 -SHA512 (dmpd102-vendor.tar.gz) = bc50c456d2fea1ab4db21d30f66a967bee51b33b5f2435740551b6ad290f8286a14dbadb998b9913900aa71eb2a7ccd01c3e4618937fd67aa7fe8b4591039a15 +SHA512 (v1.0.4.tar.gz) = a6700ea26dd24e8285d85e58f9016dccca071d21b20650f8a39e523e6f0394891e57615caaad4c16290961e170fe4ab4bec9ae38bc06dcc9ddac9114a0374034 +SHA512 (dmpd104-vendor.tar.gz) = d14a10fdbe1535b64c1911878da1be8dce3ce5e89c66fc0648e2a9c3e5e27b4874a99eee17175bf88e2d0c7dfa68382ba6746de3563feb28d6e070beae394f65 From ee730faf27105f3ebe01736670409d1c36ecbe71 Mon Sep 17 00:00:00 2001 From: Yaakov Selkowitz Date: Tue, 30 May 2023 16:15:12 -0400 Subject: [PATCH 18/50] Use rust-toolset in RHEL builds RHEL provides a minimal set of macros compared to Fedora. --- device-mapper-persistent-data.spec | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/device-mapper-persistent-data.spec b/device-mapper-persistent-data.spec index 9070dc7..5af6792 100644 --- a/device-mapper-persistent-data.spec +++ b/device-mapper-persistent-data.spec @@ -10,7 +10,7 @@ Summary: Device-mapper Persistent Data Tools Name: device-mapper-persistent-data Version: 1.0.4 -Release: 1%{?dist}%{?release_suffix} +Release: 2%{?dist}%{?release_suffix} License: GPLv3+ #ExcludeArch: %%{ix86} URL: https://github.com/jthornber/thin-provisioning-tools @@ -19,9 +19,13 @@ Source0: https://github.com/jthornber/thin-provisioning-tools/archive/v%{version Source1: dmpd104-vendor.tar.gz Patch1: 0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch +%if %{defined rhel} +BuildRequires: rust-toolset +%else BuildRequires: rust-packaging BuildRequires: rust >= 1.35 BuildRequires: cargo +%endif BuildRequires: make # FIXME: Remove this! BuildRequires: rust-gdb @@ -114,6 +118,9 @@ make DESTDIR=%{buildroot} MANDIR=%{_mandir} install #% {_sbindir}/thin_show_duplicates %changelog +* Tue May 30 2023 Yaakov Selkowitz - 1.0.4-2 +- Use rust-toolset in RHEL builds + * Fri Apr 28 2023 Marian Csontos - 1.0.4-1 - Update to latest upstream release 1.0.4. From e1a1e8841fcdc5a2e2dfdf3242e1892393473aa6 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 19 Jul 2023 17:19:36 +0000 Subject: [PATCH 19/50] Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- device-mapper-persistent-data.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/device-mapper-persistent-data.spec b/device-mapper-persistent-data.spec index 5af6792..8638005 100644 --- a/device-mapper-persistent-data.spec +++ b/device-mapper-persistent-data.spec @@ -10,7 +10,7 @@ Summary: Device-mapper Persistent Data Tools Name: device-mapper-persistent-data Version: 1.0.4 -Release: 2%{?dist}%{?release_suffix} +Release: 3%{?dist}%{?release_suffix} License: GPLv3+ #ExcludeArch: %%{ix86} URL: https://github.com/jthornber/thin-provisioning-tools @@ -118,6 +118,9 @@ make DESTDIR=%{buildroot} MANDIR=%{_mandir} install #% {_sbindir}/thin_show_duplicates %changelog +* Wed Jul 19 2023 Fedora Release Engineering - 1.0.4-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + * Tue May 30 2023 Yaakov Selkowitz - 1.0.4-2 - Use rust-toolset in RHEL builds From 9ca4681979e359aa57ff4d9031a0b9a8ad845c9a Mon Sep 17 00:00:00 2001 From: Marian Csontos Date: Thu, 27 Jul 2023 12:15:09 +0200 Subject: [PATCH 20/50] Update to version 1.0.5 --- .gitignore | 2 ++ ...go.toml-to-work-with-vendor-directory.patch | 18 +++++++++--------- device-mapper-persistent-data.spec | 12 +++++++++--- sources | 4 ++-- 4 files changed, 22 insertions(+), 14 deletions(-) diff --git a/.gitignore b/.gitignore index b2a848e..3fa2933 100644 --- a/.gitignore +++ b/.gitignore @@ -43,3 +43,5 @@ /dmpd102-vendor.tar.gz /v1.0.4.tar.gz /dmpd104-vendor.tar.gz +/v1.0.5.tar.gz +/dmpd105-vendor.tar.gz diff --git a/0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch b/0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch index ae2234b..4d10720 100644 --- a/0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch +++ b/0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch @@ -1,6 +1,6 @@ -From a6afd3ee7c9b5a6ab2906c827464acceb75123b2 Mon Sep 17 00:00:00 2001 +From 8b3609298420f5984ac3a2c74cb2ac4f94897eb0 Mon Sep 17 00:00:00 2001 From: Marian Csontos -Date: Wed, 22 Mar 2023 09:42:15 +0100 +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. @@ -11,22 +11,22 @@ make mock happy. 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Cargo.toml b/Cargo.toml -index 135ba5f8..cbb73ec1 100644 +index 8be49a52..b9b05ce6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,7 +11,8 @@ anyhow = "1.0" - base64 = "0.20" + base64 = "0.21" byteorder = "1.4" - clap = "3.2" + clap = { version = "4.3", default-features = false, features = ["std", "help", "usage", "error-context", "suggestions"] } -crc32c = { git = "https://github.com/zowens/crc32c", branch = "master" } +#crc32c = { git = "https://github.com/zowens/crc32c", branch = "master" } +crc32c = "0.6" - data-encoding = "2.3" + data-encoding = "2.4" exitcode = "1.1.2" fixedbitset = "0.4" -@@ -28,7 +29,8 @@ quick-xml = "0.23.1" +@@ -27,7 +28,8 @@ quick-xml = "0.29" rand = "0.8" - rangemap = "1.1" + rangemap = "1.3" 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 } @@ -35,5 +35,5 @@ index 135ba5f8..cbb73ec1 100644 threadpool = "1.8" thiserror = "1.0" -- -2.40.1 +2.41.0 diff --git a/device-mapper-persistent-data.spec b/device-mapper-persistent-data.spec index 8638005..ab2456f 100644 --- a/device-mapper-persistent-data.spec +++ b/device-mapper-persistent-data.spec @@ -9,14 +9,19 @@ Summary: Device-mapper Persistent Data Tools Name: device-mapper-persistent-data +<<<<<<< HEAD Version: 1.0.4 Release: 3%{?dist}%{?release_suffix} +======= +Version: 1.0.5 +Release: 2%{?dist}%{?release_suffix} +>>>>>>> 23c38f8 (Update to version 1.0.5) License: GPLv3+ #ExcludeArch: %%{ix86} 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/v%{version}%{?version_suffix}.tar.gz -Source1: dmpd104-vendor.tar.gz +Source1: dmpd105-vendor.tar.gz Patch1: 0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch %if %{defined rhel} @@ -27,8 +32,6 @@ BuildRequires: rust >= 1.35 BuildRequires: cargo %endif BuildRequires: make -# FIXME: Remove this! -BuildRequires: rust-gdb %description thin-provisioning-tools contains check,dump,restore,repair,rmap @@ -118,6 +121,9 @@ make DESTDIR=%{buildroot} MANDIR=%{_mandir} install #% {_sbindir}/thin_show_duplicates %changelog +* Thu Jul 27 2023 Marian Csontos - 1.0.5-1 +- Update to latest upstream release 1.0.5. + * Wed Jul 19 2023 Fedora Release Engineering - 1.0.4-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild diff --git a/sources b/sources index dbf8c9f..5d2a63d 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (v1.0.4.tar.gz) = a6700ea26dd24e8285d85e58f9016dccca071d21b20650f8a39e523e6f0394891e57615caaad4c16290961e170fe4ab4bec9ae38bc06dcc9ddac9114a0374034 -SHA512 (dmpd104-vendor.tar.gz) = d14a10fdbe1535b64c1911878da1be8dce3ce5e89c66fc0648e2a9c3e5e27b4874a99eee17175bf88e2d0c7dfa68382ba6746de3563feb28d6e070beae394f65 +SHA512 (v1.0.5.tar.gz) = 1ba305770caf65fbba45ea4795bc7edf0dff06d72633f5293750051426c37a4ba44fffd71e2c57415af4683d8f3a8293b08eca0cdce45fd718b6699b7c419f2e +SHA512 (dmpd105-vendor.tar.gz) = 3641ec72048dcc2bd68fcdc43429652991822642fc599287ccd016531dd20f24efcae969ea5dcbcbd5a4712e5a80512621caf9f8e67736397d6ed08397c4a962 From 74d27c1f2565baa4af6dc33e6d87ed7f251f6d46 Mon Sep 17 00:00:00 2001 From: Marian Csontos Date: Thu, 27 Jul 2023 12:27:19 +0200 Subject: [PATCH 21/50] Fix previous commit --- device-mapper-persistent-data.spec | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/device-mapper-persistent-data.spec b/device-mapper-persistent-data.spec index ab2456f..b51b0cd 100644 --- a/device-mapper-persistent-data.spec +++ b/device-mapper-persistent-data.spec @@ -9,13 +9,8 @@ Summary: Device-mapper Persistent Data Tools Name: device-mapper-persistent-data -<<<<<<< HEAD -Version: 1.0.4 -Release: 3%{?dist}%{?release_suffix} -======= Version: 1.0.5 -Release: 2%{?dist}%{?release_suffix} ->>>>>>> 23c38f8 (Update to version 1.0.5) +Release: 1%{?dist}%{?release_suffix} License: GPLv3+ #ExcludeArch: %%{ix86} URL: https://github.com/jthornber/thin-provisioning-tools From 80bd16a71593aca38eed244eed6eaa9d33ee099d Mon Sep 17 00:00:00 2001 From: Marian Csontos Date: Wed, 9 Aug 2023 14:32:11 +0200 Subject: [PATCH 22/50] Update to version 1.0.6 --- .gitignore | 2 ++ ...-cargo.toml-to-work-with-vendor-directory.patch | 14 ++++++-------- device-mapper-persistent-data.spec | 7 +++++-- sources | 4 ++-- 4 files changed, 15 insertions(+), 12 deletions(-) diff --git a/.gitignore b/.gitignore index 3fa2933..1540d23 100644 --- a/.gitignore +++ b/.gitignore @@ -45,3 +45,5 @@ /dmpd104-vendor.tar.gz /v1.0.5.tar.gz /dmpd105-vendor.tar.gz +/v1.0.6.tar.gz +/dmpd106-vendor.tar.gz diff --git a/0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch b/0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch index 4d10720..2e51e47 100644 --- a/0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch +++ b/0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch @@ -1,4 +1,4 @@ -From 8b3609298420f5984ac3a2c74cb2ac4f94897eb0 Mon Sep 17 00:00:00 2001 +From 732ff5861a1525944a927439d1c075ac269788ce Mon Sep 17 00:00:00 2001 From: Marian Csontos Date: Thu, 27 Jul 2023 11:37:01 +0200 Subject: [PATCH] Tweak cargo.toml to work with vendor directory @@ -7,23 +7,21 @@ 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 | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) + Cargo.toml | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml -index 8be49a52..b9b05ce6 100644 +index c2b496ac..562c40d3 100644 --- a/Cargo.toml +++ b/Cargo.toml -@@ -11,7 +11,8 @@ anyhow = "1.0" +@@ -11,6 +11,7 @@ anyhow = "1.0" base64 = "0.21" byteorder = "1.4" clap = { version = "4.3", default-features = false, features = ["std", "help", "usage", "error-context", "suggestions"] } --crc32c = { git = "https://github.com/zowens/crc32c", branch = "master" } +#crc32c = { git = "https://github.com/zowens/crc32c", branch = "master" } -+crc32c = "0.6" + crc32c = "0.6" data-encoding = "2.4" exitcode = "1.1.2" - fixedbitset = "0.4" @@ -27,7 +28,8 @@ quick-xml = "0.29" rand = "0.8" rangemap = "1.3" diff --git a/device-mapper-persistent-data.spec b/device-mapper-persistent-data.spec index b51b0cd..756981b 100644 --- a/device-mapper-persistent-data.spec +++ b/device-mapper-persistent-data.spec @@ -9,14 +9,14 @@ Summary: Device-mapper Persistent Data Tools Name: device-mapper-persistent-data -Version: 1.0.5 +Version: 1.0.6 Release: 1%{?dist}%{?release_suffix} License: GPLv3+ #ExcludeArch: %%{ix86} 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/v%{version}%{?version_suffix}.tar.gz -Source1: dmpd105-vendor.tar.gz +Source1: dmpd106-vendor.tar.gz Patch1: 0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch %if %{defined rhel} @@ -116,6 +116,9 @@ make DESTDIR=%{buildroot} MANDIR=%{_mandir} install #% {_sbindir}/thin_show_duplicates %changelog +* Wed Aug 09 2023 Marian Csontos - 1.0.6-1 +- Update to latest upstream release 1.0.6. + * Thu Jul 27 2023 Marian Csontos - 1.0.5-1 - Update to latest upstream release 1.0.5. diff --git a/sources b/sources index 5d2a63d..c46e38d 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (v1.0.5.tar.gz) = 1ba305770caf65fbba45ea4795bc7edf0dff06d72633f5293750051426c37a4ba44fffd71e2c57415af4683d8f3a8293b08eca0cdce45fd718b6699b7c419f2e -SHA512 (dmpd105-vendor.tar.gz) = 3641ec72048dcc2bd68fcdc43429652991822642fc599287ccd016531dd20f24efcae969ea5dcbcbd5a4712e5a80512621caf9f8e67736397d6ed08397c4a962 +SHA512 (v1.0.6.tar.gz) = b6a778048315fa83b8ffae797a406facd2be1552516f96abd0da5d02892be73f27c54e4e0a674b2f0253aa6fcdac187fc40d7a455eddfb25bc30f55a5e435b00 +SHA512 (dmpd106-vendor.tar.gz) = df7d77c83e6c6d3843ea61a0f0bfd414d0eef404a21046f04bd56f764f20cb33b3807b1606cf9eb6e2ee3fd0d5311b3582defbcf61692f3d10c4cd70769625d1 From a6ab2577d82b57744cae2133291c31c672da8a3a Mon Sep 17 00:00:00 2001 From: Marian Csontos Date: Thu, 31 Aug 2023 11:44:12 +0200 Subject: [PATCH 23/50] Fix ioctl call on ppc64le breaking installation. --- ...he-ioctl-request-code-for-the-powerp.patch | 217 ++++++++++++++++++ ...s-Verify-ioctl-request-code-in-tests.patch | 120 ++++++++++ device-mapper-persistent-data.spec | 7 +- 3 files changed, 343 insertions(+), 1 deletion(-) create mode 100644 0002-file_utils-Fix-the-ioctl-request-code-for-the-powerp.patch create mode 100644 0003-file_utils-Verify-ioctl-request-code-in-tests.patch diff --git a/0002-file_utils-Fix-the-ioctl-request-code-for-the-powerp.patch b/0002-file_utils-Fix-the-ioctl-request-code-for-the-powerp.patch new file mode 100644 index 0000000..e2a6f0e --- /dev/null +++ b/0002-file_utils-Fix-the-ioctl-request-code-for-the-powerp.patch @@ -0,0 +1,217 @@ +From 6de336c0e974989010c32693c9540180d4f28f0b Mon Sep 17 00:00:00 2001 +From: Ming-Hung Tsai +Date: Sat, 26 Aug 2023 18:19:15 +0800 +Subject: [PATCH 2/3] [file_utils] Fix the ioctl request code for the powerpc + architecture + +The PowerPC architecture employees a different bitwise layout in the +request code than other platforms, resulting in different request code +values. + +(cherry picked from commit afcbcd7d85902fc7f1e51fc5302230851303ab85) +--- + src/file_utils.rs | 14 ++---- + src/ioctl.rs | 106 ++++++++++++++++++++++++++++++++++++++++++++++ + src/lib.rs | 1 + + src/thin/trim.rs | 11 ++--- + 4 files changed, 115 insertions(+), 17 deletions(-) + create mode 100644 src/ioctl.rs + +diff --git a/src/file_utils.rs b/src/file_utils.rs +index 81d4a8a7..97400272 100644 +--- a/src/file_utils.rs ++++ b/src/file_utils.rs +@@ -5,6 +5,8 @@ use std::os::unix::ffi::OsStrExt; + use std::os::unix::io::AsRawFd; + use std::path::Path; + ++use crate::ioctl::{self, *}; ++ + //--------------------------------------- + + fn test_bit(mode: u32, flag: u32) -> bool { +@@ -41,10 +43,7 @@ pub fn is_file(path: &Path) -> io::Result { + + //--------------------------------------- + +-#[cfg(target_pointer_width = "32")] +-const BLKGETSIZE64: u32 = 0x80041272; +-#[cfg(target_pointer_width = "64")] +-const BLKGETSIZE64: u32 = 0x80081272; ++const BLKGETSIZE64: ioctl::RequestType = crate::request_code_read!(0x12, 114, usize); + + pub fn fail(msg: &str) -> io::Result { + let e = io::Error::new(io::ErrorKind::Other, msg); +@@ -56,13 +55,8 @@ fn get_device_size>(path: P) -> io::Result { + let fd = file.as_raw_fd(); + let mut cap = 0u64; + +- #[cfg(target_env = "musl")] +- type RequestType = libc::c_int; +- #[cfg(not(target_env = "musl"))] +- type RequestType = libc::c_ulong; +- + unsafe { +- if libc::ioctl(fd, BLKGETSIZE64 as RequestType, &mut cap) == 0 { ++ if libc::ioctl(fd, BLKGETSIZE64, &mut cap) == 0 { + Ok(cap) + } else { + Err(io::Error::last_os_error()) +diff --git a/src/ioctl.rs b/src/ioctl.rs +new file mode 100644 +index 00000000..84933648 +--- /dev/null ++++ b/src/ioctl.rs +@@ -0,0 +1,106 @@ ++/* Rust port of kernel include/uapi/asm-generic/ioctl.h */ ++ ++//------------------------------------------ ++ ++#[cfg(target_env = "musl")] ++pub type RequestType = libc::c_int; ++#[cfg(not(target_env = "musl"))] ++pub type RequestType = libc::c_ulong; ++ ++#[cfg(any( ++ target_arch = "mips", ++ target_arch = "mips64", ++ target_arch = "powerpc", ++ target_arch = "powerpc64", ++ target_arch = "powerpc64le", ++ target_arch = "sparc", ++ target_arch = "sparc64" ++))] ++mod defs { ++ use super::RequestType; ++ pub const IOC_NONE: RequestType = 1; ++ pub const IOC_READ: RequestType = 2; ++ pub const IOC_WRITE: RequestType = 4; ++ pub const IOC_DIRBITS: RequestType = 3; ++ pub const IOC_SIZEBITS: RequestType = 13; ++} ++ ++#[cfg(not(any( ++ target_arch = "mips", ++ target_arch = "mips64", ++ target_arch = "powerpc", ++ target_arch = "powerpc64", ++ target_arch = "powerpc64le", ++ target_arch = "sparc", ++ target_arch = "sparc64" ++)))] ++mod defs { ++ use super::RequestType; ++ pub const IOC_NONE: RequestType = 0; ++ pub const IOC_WRITE: RequestType = 1; ++ pub const IOC_READ: RequestType = 2; ++ pub const IOC_DIRBITS: RequestType = 2; ++ pub const IOC_SIZEBITS: RequestType = 14; ++} ++ ++pub use defs::*; ++ ++pub const IOC_NRBITS: RequestType = 8; ++pub const IOC_TYPEBITS: RequestType = 8; ++ ++pub const IOC_NRMASK: RequestType = (1 << IOC_NRBITS) - 1; ++pub const IOC_TYPEMASK: RequestType = (1 << IOC_TYPEBITS) - 1; ++pub const IOC_SIZEMASK: RequestType = (1 << IOC_SIZEBITS) - 1; ++pub const IOC_DIRMASK: RequestType = (1 << IOC_DIRBITS) - 1; ++ ++pub const IOC_NRSHIFT: RequestType = 0; ++pub const IOC_TYPESHIFT: RequestType = IOC_NRSHIFT + IOC_NRBITS; ++pub const IOC_SIZESHIFT: RequestType = IOC_TYPESHIFT + IOC_TYPEBITS; ++pub const IOC_DIRSHIFT: RequestType = IOC_SIZESHIFT + IOC_SIZEBITS; ++ ++#[macro_export] ++macro_rules! ioc { ++ ($dir: expr, $typ: expr, $nr: expr, $size: expr) => { ++ (($dir as RequestType & IOC_DIRMASK) << IOC_DIRSHIFT) ++ | (($typ as RequestType & IOC_TYPEMASK) << IOC_TYPESHIFT) ++ | (($nr as RequestType & IOC_NRMASK) << IOC_NRSHIFT) ++ | (($size as RequestType & IOC_SIZEMASK) << IOC_SIZESHIFT) ++ }; ++} ++ ++//------------------------------------------ ++ ++#[macro_export] ++macro_rules! request_code_none { ++ ($typ: expr, $nr: expr) => { ++ $crate::ioc!(IOC_NONE, $typ, $nr, 0) ++ }; ++} ++ ++#[macro_export] ++macro_rules! request_code_read { ++ ($typ: expr, $nr: expr, $size_type: ty) => { ++ $crate::ioc!(IOC_READ, $typ, $nr, ::std::mem::size_of::<$size_type>()) ++ }; ++} ++ ++#[macro_export] ++macro_rules! request_code_write { ++ ($typ: expr, $nr: expr, $size_type: ty) => { ++ $crate::ioc!(IOC_WRITE, $typ, $nr, ::std::mem::size_of::<$size_type>()) ++ }; ++} ++ ++#[macro_export] ++macro_rules! request_code_readwrite { ++ ($typ: expr, $nr: expr, $size_type: ty) => { ++ $crate::ioc!( ++ IOC_READ | IOC_WRITE, ++ $typ, ++ $nr, ++ ::std::mem::size_of::<$size_type>() ++ ) ++ }; ++} ++ ++//------------------------------------------ +diff --git a/src/lib.rs b/src/lib.rs +index b12146ef..1371baac 100644 +--- a/src/lib.rs ++++ b/src/lib.rs +@@ -14,6 +14,7 @@ pub mod era; + pub mod file_utils; + pub mod grid_layout; + pub mod io_engine; ++pub mod ioctl; + pub mod math; + pub mod pack; + pub mod pdata; +diff --git a/src/thin/trim.rs b/src/thin/trim.rs +index 0d1fb590..b92a4bbd 100644 +--- a/src/thin/trim.rs ++++ b/src/thin/trim.rs +@@ -8,6 +8,7 @@ use std::sync::Arc; + use crate::commands::engine::*; + use crate::file_utils::file_size; + use crate::io_engine::*; ++use crate::ioctl::{self, *}; + use crate::pdata::btree_walker::*; + use crate::pdata::space_map::common::*; + use crate::pdata::unpack::unpack; +@@ -132,15 +133,11 @@ impl<'a> Iterator for RangeIterator<'a> { + + //------------------------------------------ + +-const BLKDISCARD: u32 = 0x1277; +-fn ioctl_blkdiscard(fd: i32, range: &[u64; 2]) -> std::io::Result<()> { +- #[cfg(target_env = "musl")] +- type RequestType = libc::c_int; +- #[cfg(not(target_env = "musl"))] +- type RequestType = libc::c_ulong; ++const BLKDISCARD: ioctl::RequestType = crate::request_code_none!(0x12, 119); + ++fn ioctl_blkdiscard(fd: i32, range: &[u64; 2]) -> std::io::Result<()> { + unsafe { +- if libc::ioctl(fd, BLKDISCARD as RequestType, range) == 0 { ++ if libc::ioctl(fd, BLKDISCARD, range) == 0 { + Ok(()) + } else { + Err(std::io::Error::last_os_error()) +-- +2.41.0 + diff --git a/0003-file_utils-Verify-ioctl-request-code-in-tests.patch b/0003-file_utils-Verify-ioctl-request-code-in-tests.patch new file mode 100644 index 0000000..7e37307 --- /dev/null +++ b/0003-file_utils-Verify-ioctl-request-code-in-tests.patch @@ -0,0 +1,120 @@ +From 38e497f4200a0d2fcb043941d4a5792c76e47bbb Mon Sep 17 00:00:00 2001 +From: Ming-Hung Tsai +Date: Wed, 30 Aug 2023 18:11:45 +0800 +Subject: [PATCH 3/3] [file_utils] Verify ioctl request code in tests + +(cherry picked from commit f049fda90bbf74ab26bfd38e26e7c92de8f50e30) +--- + src/ioctl.rs | 3 ++ + src/ioctl/tests.rs | 86 ++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 89 insertions(+) + create mode 100644 src/ioctl/tests.rs + +diff --git a/src/ioctl.rs b/src/ioctl.rs +index 84933648..221bd4e9 100644 +--- a/src/ioctl.rs ++++ b/src/ioctl.rs +@@ -1,5 +1,8 @@ + /* Rust port of kernel include/uapi/asm-generic/ioctl.h */ + ++#[cfg(test)] ++mod tests; ++ + //------------------------------------------ + + #[cfg(target_env = "musl")] +diff --git a/src/ioctl/tests.rs b/src/ioctl/tests.rs +new file mode 100644 +index 00000000..17a395df +--- /dev/null ++++ b/src/ioctl/tests.rs +@@ -0,0 +1,86 @@ ++use crate::ioctl::*; ++ ++//------------------------------------------ ++ ++#[cfg(any( ++ target_arch = "mips", ++ target_arch = "mips64", ++ target_arch = "powerpc", ++ target_arch = "powerpc64", ++ target_arch = "powerpc64le", ++ target_arch = "sparc", ++ target_arch = "sparc64" ++))] ++mod expected { ++ use super::RequestType; ++ pub const BLKDISCARD: RequestType = 0x20001277; ++ ++ #[cfg(target_pointer_width = "32")] ++ mod sized { ++ use super::RequestType; ++ pub const BLKBSZSET: RequestType = 0x80041271; ++ pub const BLKGETSIZE64: RequestType = 0x40041272; ++ } ++ ++ #[cfg(target_pointer_width = "64")] ++ mod sized { ++ use super::RequestType; ++ pub const BLKBSZSET: RequestType = 0x80081271; ++ pub const BLKGETSIZE64: RequestType = 0x40081272; ++ } ++ ++ pub use sized::*; ++} ++ ++#[cfg(not(any( ++ target_arch = "mips", ++ target_arch = "mips64", ++ target_arch = "powerpc", ++ target_arch = "powerpc64", ++ target_arch = "powerpc64le", ++ target_arch = "sparc", ++ target_arch = "sparc64" ++)))] ++mod expected { ++ use super::RequestType; ++ pub const BLKDISCARD: RequestType = 0x1277; ++ ++ #[cfg(target_pointer_width = "32")] ++ mod sized { ++ use super::RequestType; ++ pub const BLKBSZSET: RequestType = 0x40041271; ++ pub const BLKGETSIZE64: RequestType = 0x80041272; ++ } ++ ++ #[cfg(target_pointer_width = "64")] ++ mod sized { ++ use super::RequestType; ++ pub const BLKBSZSET: RequestType = 0x40081271; ++ pub const BLKGETSIZE64: RequestType = 0x80081272; ++ } ++ ++ pub use sized::*; ++} ++ ++#[test] ++fn test_ioc_none() { ++ assert_eq!(crate::request_code_none!(0x12, 119), expected::BLKDISCARD); ++} ++ ++#[test] ++fn test_ioc_read_usize() { ++ assert_eq!( ++ crate::request_code_read!(0x12, 114, usize), ++ expected::BLKGETSIZE64 ++ ); ++} ++ ++#[test] ++fn test_ioc_write_usize() { ++ assert_eq!( ++ crate::request_code_write!(0x12, 113, usize), ++ expected::BLKBSZSET ++ ); ++} ++ ++//------------------------------------------ +-- +2.41.0 + diff --git a/device-mapper-persistent-data.spec b/device-mapper-persistent-data.spec index 756981b..75e4952 100644 --- a/device-mapper-persistent-data.spec +++ b/device-mapper-persistent-data.spec @@ -10,7 +10,7 @@ Summary: Device-mapper Persistent Data Tools Name: device-mapper-persistent-data Version: 1.0.6 -Release: 1%{?dist}%{?release_suffix} +Release: 2%{?dist}%{?release_suffix} License: GPLv3+ #ExcludeArch: %%{ix86} URL: https://github.com/jthornber/thin-provisioning-tools @@ -18,6 +18,8 @@ URL: https://github.com/jthornber/thin-provisioning-tools Source0: https://github.com/jthornber/thin-provisioning-tools/archive/v%{version}%{?version_suffix}.tar.gz Source1: dmpd106-vendor.tar.gz Patch1: 0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch +Patch2: 0002-file_utils-Fix-the-ioctl-request-code-for-the-powerp.patch +Patch3: 0003-file_utils-Verify-ioctl-request-code-in-tests.patch %if %{defined rhel} BuildRequires: rust-toolset @@ -116,6 +118,9 @@ make DESTDIR=%{buildroot} MANDIR=%{_mandir} install #% {_sbindir}/thin_show_duplicates %changelog +* Thu Aug 31 2023 Marian Csontos - 1.0.6-2 +- Fix broken installation on ppc64le caused by incorrect ioctl call. + * Wed Aug 09 2023 Marian Csontos - 1.0.6-1 - Update to latest upstream release 1.0.6. From c950fe5f288e3f2bbb2cccb6f87b3379d8978286 Mon Sep 17 00:00:00 2001 From: Marian Csontos Date: Mon, 11 Dec 2023 16:43:41 +0100 Subject: [PATCH 24/50] Update to version 1.0.9 --- .gitignore | 2 + ...o.toml-to-work-with-vendor-directory.patch | 22 +- ...he-ioctl-request-code-for-the-powerp.patch | 217 ------------------ ...s-Verify-ioctl-request-code-in-tests.patch | 120 ---------- device-mapper-persistent-data.spec | 46 +++- sources | 4 +- 6 files changed, 51 insertions(+), 360 deletions(-) delete mode 100644 0002-file_utils-Fix-the-ioctl-request-code-for-the-powerp.patch delete mode 100644 0003-file_utils-Verify-ioctl-request-code-in-tests.patch diff --git a/.gitignore b/.gitignore index 1540d23..4b9fa80 100644 --- a/.gitignore +++ b/.gitignore @@ -47,3 +47,5 @@ /dmpd105-vendor.tar.gz /v1.0.6.tar.gz /dmpd106-vendor.tar.gz +/v1.0.9.tar.gz +/dmpd109-vendor.tar.gz diff --git a/0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch b/0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch index 2e51e47..1bdbce3 100644 --- a/0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch +++ b/0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch @@ -1,4 +1,4 @@ -From 732ff5861a1525944a927439d1c075ac269788ce Mon Sep 17 00:00:00 2001 +From 0d5347bd771e960294cd0c2f083d96448613ab9c Mon Sep 17 00:00:00 2001 From: Marian Csontos Date: Thu, 27 Jul 2023 11:37:01 +0200 Subject: [PATCH] Tweak cargo.toml to work with vendor directory @@ -7,24 +7,16 @@ 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 | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) + Cargo.toml | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml -index c2b496ac..562c40d3 100644 +index 500345a4..d4aa38a6 100644 --- a/Cargo.toml +++ b/Cargo.toml -@@ -11,6 +11,7 @@ anyhow = "1.0" - base64 = "0.21" - byteorder = "1.4" - clap = { version = "4.3", default-features = false, features = ["std", "help", "usage", "error-context", "suggestions"] } -+#crc32c = { git = "https://github.com/zowens/crc32c", branch = "master" } - crc32c = "0.6" - data-encoding = "2.4" - exitcode = "1.1.2" -@@ -27,7 +28,8 @@ quick-xml = "0.29" +@@ -27,7 +27,8 @@ quick-xml = "0.29" rand = "0.8" - rangemap = "1.3" + rangemap = "1.4" 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 } @@ -33,5 +25,5 @@ index c2b496ac..562c40d3 100644 threadpool = "1.8" thiserror = "1.0" -- -2.41.0 +2.43.0 diff --git a/0002-file_utils-Fix-the-ioctl-request-code-for-the-powerp.patch b/0002-file_utils-Fix-the-ioctl-request-code-for-the-powerp.patch deleted file mode 100644 index e2a6f0e..0000000 --- a/0002-file_utils-Fix-the-ioctl-request-code-for-the-powerp.patch +++ /dev/null @@ -1,217 +0,0 @@ -From 6de336c0e974989010c32693c9540180d4f28f0b Mon Sep 17 00:00:00 2001 -From: Ming-Hung Tsai -Date: Sat, 26 Aug 2023 18:19:15 +0800 -Subject: [PATCH 2/3] [file_utils] Fix the ioctl request code for the powerpc - architecture - -The PowerPC architecture employees a different bitwise layout in the -request code than other platforms, resulting in different request code -values. - -(cherry picked from commit afcbcd7d85902fc7f1e51fc5302230851303ab85) ---- - src/file_utils.rs | 14 ++---- - src/ioctl.rs | 106 ++++++++++++++++++++++++++++++++++++++++++++++ - src/lib.rs | 1 + - src/thin/trim.rs | 11 ++--- - 4 files changed, 115 insertions(+), 17 deletions(-) - create mode 100644 src/ioctl.rs - -diff --git a/src/file_utils.rs b/src/file_utils.rs -index 81d4a8a7..97400272 100644 ---- a/src/file_utils.rs -+++ b/src/file_utils.rs -@@ -5,6 +5,8 @@ use std::os::unix::ffi::OsStrExt; - use std::os::unix::io::AsRawFd; - use std::path::Path; - -+use crate::ioctl::{self, *}; -+ - //--------------------------------------- - - fn test_bit(mode: u32, flag: u32) -> bool { -@@ -41,10 +43,7 @@ pub fn is_file(path: &Path) -> io::Result { - - //--------------------------------------- - --#[cfg(target_pointer_width = "32")] --const BLKGETSIZE64: u32 = 0x80041272; --#[cfg(target_pointer_width = "64")] --const BLKGETSIZE64: u32 = 0x80081272; -+const BLKGETSIZE64: ioctl::RequestType = crate::request_code_read!(0x12, 114, usize); - - pub fn fail(msg: &str) -> io::Result { - let e = io::Error::new(io::ErrorKind::Other, msg); -@@ -56,13 +55,8 @@ fn get_device_size>(path: P) -> io::Result { - let fd = file.as_raw_fd(); - let mut cap = 0u64; - -- #[cfg(target_env = "musl")] -- type RequestType = libc::c_int; -- #[cfg(not(target_env = "musl"))] -- type RequestType = libc::c_ulong; -- - unsafe { -- if libc::ioctl(fd, BLKGETSIZE64 as RequestType, &mut cap) == 0 { -+ if libc::ioctl(fd, BLKGETSIZE64, &mut cap) == 0 { - Ok(cap) - } else { - Err(io::Error::last_os_error()) -diff --git a/src/ioctl.rs b/src/ioctl.rs -new file mode 100644 -index 00000000..84933648 ---- /dev/null -+++ b/src/ioctl.rs -@@ -0,0 +1,106 @@ -+/* Rust port of kernel include/uapi/asm-generic/ioctl.h */ -+ -+//------------------------------------------ -+ -+#[cfg(target_env = "musl")] -+pub type RequestType = libc::c_int; -+#[cfg(not(target_env = "musl"))] -+pub type RequestType = libc::c_ulong; -+ -+#[cfg(any( -+ target_arch = "mips", -+ target_arch = "mips64", -+ target_arch = "powerpc", -+ target_arch = "powerpc64", -+ target_arch = "powerpc64le", -+ target_arch = "sparc", -+ target_arch = "sparc64" -+))] -+mod defs { -+ use super::RequestType; -+ pub const IOC_NONE: RequestType = 1; -+ pub const IOC_READ: RequestType = 2; -+ pub const IOC_WRITE: RequestType = 4; -+ pub const IOC_DIRBITS: RequestType = 3; -+ pub const IOC_SIZEBITS: RequestType = 13; -+} -+ -+#[cfg(not(any( -+ target_arch = "mips", -+ target_arch = "mips64", -+ target_arch = "powerpc", -+ target_arch = "powerpc64", -+ target_arch = "powerpc64le", -+ target_arch = "sparc", -+ target_arch = "sparc64" -+)))] -+mod defs { -+ use super::RequestType; -+ pub const IOC_NONE: RequestType = 0; -+ pub const IOC_WRITE: RequestType = 1; -+ pub const IOC_READ: RequestType = 2; -+ pub const IOC_DIRBITS: RequestType = 2; -+ pub const IOC_SIZEBITS: RequestType = 14; -+} -+ -+pub use defs::*; -+ -+pub const IOC_NRBITS: RequestType = 8; -+pub const IOC_TYPEBITS: RequestType = 8; -+ -+pub const IOC_NRMASK: RequestType = (1 << IOC_NRBITS) - 1; -+pub const IOC_TYPEMASK: RequestType = (1 << IOC_TYPEBITS) - 1; -+pub const IOC_SIZEMASK: RequestType = (1 << IOC_SIZEBITS) - 1; -+pub const IOC_DIRMASK: RequestType = (1 << IOC_DIRBITS) - 1; -+ -+pub const IOC_NRSHIFT: RequestType = 0; -+pub const IOC_TYPESHIFT: RequestType = IOC_NRSHIFT + IOC_NRBITS; -+pub const IOC_SIZESHIFT: RequestType = IOC_TYPESHIFT + IOC_TYPEBITS; -+pub const IOC_DIRSHIFT: RequestType = IOC_SIZESHIFT + IOC_SIZEBITS; -+ -+#[macro_export] -+macro_rules! ioc { -+ ($dir: expr, $typ: expr, $nr: expr, $size: expr) => { -+ (($dir as RequestType & IOC_DIRMASK) << IOC_DIRSHIFT) -+ | (($typ as RequestType & IOC_TYPEMASK) << IOC_TYPESHIFT) -+ | (($nr as RequestType & IOC_NRMASK) << IOC_NRSHIFT) -+ | (($size as RequestType & IOC_SIZEMASK) << IOC_SIZESHIFT) -+ }; -+} -+ -+//------------------------------------------ -+ -+#[macro_export] -+macro_rules! request_code_none { -+ ($typ: expr, $nr: expr) => { -+ $crate::ioc!(IOC_NONE, $typ, $nr, 0) -+ }; -+} -+ -+#[macro_export] -+macro_rules! request_code_read { -+ ($typ: expr, $nr: expr, $size_type: ty) => { -+ $crate::ioc!(IOC_READ, $typ, $nr, ::std::mem::size_of::<$size_type>()) -+ }; -+} -+ -+#[macro_export] -+macro_rules! request_code_write { -+ ($typ: expr, $nr: expr, $size_type: ty) => { -+ $crate::ioc!(IOC_WRITE, $typ, $nr, ::std::mem::size_of::<$size_type>()) -+ }; -+} -+ -+#[macro_export] -+macro_rules! request_code_readwrite { -+ ($typ: expr, $nr: expr, $size_type: ty) => { -+ $crate::ioc!( -+ IOC_READ | IOC_WRITE, -+ $typ, -+ $nr, -+ ::std::mem::size_of::<$size_type>() -+ ) -+ }; -+} -+ -+//------------------------------------------ -diff --git a/src/lib.rs b/src/lib.rs -index b12146ef..1371baac 100644 ---- a/src/lib.rs -+++ b/src/lib.rs -@@ -14,6 +14,7 @@ pub mod era; - pub mod file_utils; - pub mod grid_layout; - pub mod io_engine; -+pub mod ioctl; - pub mod math; - pub mod pack; - pub mod pdata; -diff --git a/src/thin/trim.rs b/src/thin/trim.rs -index 0d1fb590..b92a4bbd 100644 ---- a/src/thin/trim.rs -+++ b/src/thin/trim.rs -@@ -8,6 +8,7 @@ use std::sync::Arc; - use crate::commands::engine::*; - use crate::file_utils::file_size; - use crate::io_engine::*; -+use crate::ioctl::{self, *}; - use crate::pdata::btree_walker::*; - use crate::pdata::space_map::common::*; - use crate::pdata::unpack::unpack; -@@ -132,15 +133,11 @@ impl<'a> Iterator for RangeIterator<'a> { - - //------------------------------------------ - --const BLKDISCARD: u32 = 0x1277; --fn ioctl_blkdiscard(fd: i32, range: &[u64; 2]) -> std::io::Result<()> { -- #[cfg(target_env = "musl")] -- type RequestType = libc::c_int; -- #[cfg(not(target_env = "musl"))] -- type RequestType = libc::c_ulong; -+const BLKDISCARD: ioctl::RequestType = crate::request_code_none!(0x12, 119); - -+fn ioctl_blkdiscard(fd: i32, range: &[u64; 2]) -> std::io::Result<()> { - unsafe { -- if libc::ioctl(fd, BLKDISCARD as RequestType, range) == 0 { -+ if libc::ioctl(fd, BLKDISCARD, range) == 0 { - Ok(()) - } else { - Err(std::io::Error::last_os_error()) --- -2.41.0 - diff --git a/0003-file_utils-Verify-ioctl-request-code-in-tests.patch b/0003-file_utils-Verify-ioctl-request-code-in-tests.patch deleted file mode 100644 index 7e37307..0000000 --- a/0003-file_utils-Verify-ioctl-request-code-in-tests.patch +++ /dev/null @@ -1,120 +0,0 @@ -From 38e497f4200a0d2fcb043941d4a5792c76e47bbb Mon Sep 17 00:00:00 2001 -From: Ming-Hung Tsai -Date: Wed, 30 Aug 2023 18:11:45 +0800 -Subject: [PATCH 3/3] [file_utils] Verify ioctl request code in tests - -(cherry picked from commit f049fda90bbf74ab26bfd38e26e7c92de8f50e30) ---- - src/ioctl.rs | 3 ++ - src/ioctl/tests.rs | 86 ++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 89 insertions(+) - create mode 100644 src/ioctl/tests.rs - -diff --git a/src/ioctl.rs b/src/ioctl.rs -index 84933648..221bd4e9 100644 ---- a/src/ioctl.rs -+++ b/src/ioctl.rs -@@ -1,5 +1,8 @@ - /* Rust port of kernel include/uapi/asm-generic/ioctl.h */ - -+#[cfg(test)] -+mod tests; -+ - //------------------------------------------ - - #[cfg(target_env = "musl")] -diff --git a/src/ioctl/tests.rs b/src/ioctl/tests.rs -new file mode 100644 -index 00000000..17a395df ---- /dev/null -+++ b/src/ioctl/tests.rs -@@ -0,0 +1,86 @@ -+use crate::ioctl::*; -+ -+//------------------------------------------ -+ -+#[cfg(any( -+ target_arch = "mips", -+ target_arch = "mips64", -+ target_arch = "powerpc", -+ target_arch = "powerpc64", -+ target_arch = "powerpc64le", -+ target_arch = "sparc", -+ target_arch = "sparc64" -+))] -+mod expected { -+ use super::RequestType; -+ pub const BLKDISCARD: RequestType = 0x20001277; -+ -+ #[cfg(target_pointer_width = "32")] -+ mod sized { -+ use super::RequestType; -+ pub const BLKBSZSET: RequestType = 0x80041271; -+ pub const BLKGETSIZE64: RequestType = 0x40041272; -+ } -+ -+ #[cfg(target_pointer_width = "64")] -+ mod sized { -+ use super::RequestType; -+ pub const BLKBSZSET: RequestType = 0x80081271; -+ pub const BLKGETSIZE64: RequestType = 0x40081272; -+ } -+ -+ pub use sized::*; -+} -+ -+#[cfg(not(any( -+ target_arch = "mips", -+ target_arch = "mips64", -+ target_arch = "powerpc", -+ target_arch = "powerpc64", -+ target_arch = "powerpc64le", -+ target_arch = "sparc", -+ target_arch = "sparc64" -+)))] -+mod expected { -+ use super::RequestType; -+ pub const BLKDISCARD: RequestType = 0x1277; -+ -+ #[cfg(target_pointer_width = "32")] -+ mod sized { -+ use super::RequestType; -+ pub const BLKBSZSET: RequestType = 0x40041271; -+ pub const BLKGETSIZE64: RequestType = 0x80041272; -+ } -+ -+ #[cfg(target_pointer_width = "64")] -+ mod sized { -+ use super::RequestType; -+ pub const BLKBSZSET: RequestType = 0x40081271; -+ pub const BLKGETSIZE64: RequestType = 0x80081272; -+ } -+ -+ pub use sized::*; -+} -+ -+#[test] -+fn test_ioc_none() { -+ assert_eq!(crate::request_code_none!(0x12, 119), expected::BLKDISCARD); -+} -+ -+#[test] -+fn test_ioc_read_usize() { -+ assert_eq!( -+ crate::request_code_read!(0x12, 114, usize), -+ expected::BLKGETSIZE64 -+ ); -+} -+ -+#[test] -+fn test_ioc_write_usize() { -+ assert_eq!( -+ crate::request_code_write!(0x12, 113, usize), -+ expected::BLKBSZSET -+ ); -+} -+ -+//------------------------------------------ --- -2.41.0 - diff --git a/device-mapper-persistent-data.spec b/device-mapper-persistent-data.spec index 75e4952..9f1d981 100644 --- a/device-mapper-persistent-data.spec +++ b/device-mapper-persistent-data.spec @@ -9,17 +9,15 @@ Summary: Device-mapper Persistent Data Tools Name: device-mapper-persistent-data -Version: 1.0.6 -Release: 2%{?dist}%{?release_suffix} +Version: 1.0.9 +Release: 1%{?dist}%{?release_suffix} License: GPLv3+ #ExcludeArch: %%{ix86} 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/v%{version}%{?version_suffix}.tar.gz -Source1: dmpd106-vendor.tar.gz +Source1: dmpd109-vendor.tar.gz Patch1: 0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch -Patch2: 0002-file_utils-Fix-the-ioctl-request-code-for-the-powerp.patch -Patch3: 0003-file_utils-Verify-ioctl-request-code-in-tests.patch %if %{defined rhel} BuildRequires: rust-toolset @@ -44,7 +42,39 @@ snapshot eras #%%cargo_generate_buildrequires tar xf %{SOURCE1} mkdir -p .cargo -cat > .cargo/config < .cargo/config << EOF +[build] +rustc = "/usr/bin/rustc" +rustdoc = "/usr/bin/rustdoc" + +[profile.rpm] +inherits = "release" +opt-level = 3 +codegen-units = 1 +debug = 2 +strip = "none" + +[env] +CFLAGS = "-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer " +CXXFLAGS = "-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer " +LDFLAGS = "-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 " + +[install] +root = "/home/mcsontos/rpmbuild/BUILDROOT/%{NAME}-%{VERSION}-%{RELEASE}.x86_64/usr" + +[term] +verbose = true +EOF + +# Our own part: +cat >> .cargo/config < VERSION %generate_buildrequires @@ -118,6 +149,9 @@ make DESTDIR=%{buildroot} MANDIR=%{_mandir} install #% {_sbindir}/thin_show_duplicates %changelog +* Mon Dec 11 2023 Marian Csontos - 1.0.9-1 +- Update to latest upstream release 1.0.9. + * Thu Aug 31 2023 Marian Csontos - 1.0.6-2 - Fix broken installation on ppc64le caused by incorrect ioctl call. diff --git a/sources b/sources index c46e38d..dc3f053 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (v1.0.6.tar.gz) = b6a778048315fa83b8ffae797a406facd2be1552516f96abd0da5d02892be73f27c54e4e0a674b2f0253aa6fcdac187fc40d7a455eddfb25bc30f55a5e435b00 -SHA512 (dmpd106-vendor.tar.gz) = df7d77c83e6c6d3843ea61a0f0bfd414d0eef404a21046f04bd56f764f20cb33b3807b1606cf9eb6e2ee3fd0d5311b3582defbcf61692f3d10c4cd70769625d1 +SHA512 (v1.0.9.tar.gz) = c7d137b82cce4286d43f49af039f8026d7d7746e96affebc82e8243173ba9a014e3b462fc4b55850067ecfbcc6113c49f009c1285e272a4d64455715d11a9da1 +SHA512 (dmpd109-vendor.tar.gz) = f2a581da80e4137c6ecab9237587ec42141fdfe8c1bfae2ab5b431b64c100ea6c65cfadbbdd10d665101364731d7c5e61780490b9cfd5231df3f463483890747 From b76b7df037e61ca7dfa6d3209cb7f4be09ebbdd2 Mon Sep 17 00:00:00 2001 From: Marian Csontos Date: Tue, 2 May 2023 11:29:10 +0200 Subject: [PATCH 25/50] Fix test incompatibility with python-3.7+ platform.linux_distribution was removed in python-3.7. Related: #2175198 (cherry picked from commit a517fa496c7a947b0d943fdf90a70b9d6eb312a8) --- tests/functions_test/dmpd_library.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/functions_test/dmpd_library.py b/tests/functions_test/dmpd_library.py index 04286f4..4d70400 100755 --- a/tests/functions_test/dmpd_library.py +++ b/tests/functions_test/dmpd_library.py @@ -155,11 +155,11 @@ def dist_release(): """ Find out the release number of Linux distribution. """ - dist = platform.linux_distribution() - if not dist or dist[1] == "": + dist = platform.release() + if not dist: _print("WARN: dist_release() - Could not determine dist release") return None - return dist[1] + return dist def dist_ver(): From e3c64593c679edaa470a1c47630330338ea58822 Mon Sep 17 00:00:00 2001 From: Filip Suba Date: Thu, 18 May 2023 15:00:27 +0200 Subject: [PATCH 26/50] Fix dmpd_functions test Related: #2175198 (cherry picked from commit 6daf341749b4830d1e00d5ebedee62c8fb2fcac1) --- tests/functions_test/Makefile | 7 +++--- tests/functions_test/dmpd_functions.py | 35 ++++++++++++++------------ tests/functions_test/dmpd_library.py | 5 ++-- 3 files changed, 25 insertions(+), 22 deletions(-) diff --git a/tests/functions_test/Makefile b/tests/functions_test/Makefile index 85cc8dd..d9e7f97 100644 --- a/tests/functions_test/Makefile +++ b/tests/functions_test/Makefile @@ -40,7 +40,7 @@ export TEST=/$(TOPLEVEL_NAMESPACE)/$(PACKAGE_NAME)/$(RELATIVE_PATH) BUILT_FILES= # data files, .c files, scripts anything needed to either compile the test and/or run it. -FILES=$(METADATA) runtest.sh PURPOSE +FILES=$(METADATA) runtest.sh PURPOSE testinfo.desc dmpd_functions.py dmpd_library.py Makefile run: $(FILES) build ./runtest.sh @@ -62,7 +62,7 @@ include /usr/share/rhts/lib/rhts-make.include $(METADATA): Makefile @touch $(METADATA) # Change to the test owner's name - @echo "Owner: Jakub Krysl " > $(METADATA) + @echo "Owner: Filip Suba " > $(METADATA) @echo "Name: $(TEST)" >> $(METADATA) @echo "Path: $(TEST_DIR)" >> $(METADATA) @echo "License: GPL" >> $(METADATA) @@ -71,6 +71,5 @@ $(METADATA): Makefile @echo "TestTime: 1h" >> $(METADATA) @echo "RunFor: $(PACKAGE_NAME)" >> $(METADATA) @echo "Requires: $(PACKAGE_NAME)" >> $(METADATA) - @echo "RhtsRequires: kernel-kernel-storage-misc-env_setup" >> $(METADATA) - rhts-lint $(METADATA) + rhts-lint $(METADATA) \ No newline at end of file diff --git a/tests/functions_test/dmpd_functions.py b/tests/functions_test/dmpd_functions.py index bcf02d6..686ada1 100755 --- a/tests/functions_test/dmpd_functions.py +++ b/tests/functions_test/dmpd_functions.py @@ -39,7 +39,7 @@ def thin_init(args): atomic_run("Creating thin pool", vg_name=args["group"], lv_name=args["pool"], - options=["-T", "-L 500"], + options=["-T", "-L 1500"], command=lvm.lv_create, errors=errors) @@ -48,7 +48,7 @@ def thin_init(args): atomic_run("Creating thin LV No. %s" % i, vg_name=args["group"] + "/" + args["pool"], lv_name=args["vol"] + str(i), - options=["-T", "-V 100"], + options=["-T", "-V 300"], command=lvm.lv_create, errors=errors) @@ -58,28 +58,16 @@ def thin_init(args): command=create_filesystem, errors=errors) - atomic_run("Deactivating thin LV No. %s" % i, - lv_name=args["vol"] + str(i), - vg_name=args["group"], - command=lvm.lv_deactivate, - errors=errors) - atomic_run("Creating metadata snapshot", lv_name=args["pool"], vg_name=args["group"], command=metadata_snapshot, errors=errors) - atomic_run("Deactivating pool", - lv_name=args["pool"], - vg_name=args["group"], - command=lvm.lv_deactivate, - errors=errors) - atomic_run("Creating swap LV", vg_name=args["group"], lv_name=args["swap"], - options=["-L 100"], + options=["-L 300"], command=lvm.lv_create, errors=errors) @@ -89,6 +77,19 @@ def thin_init(args): command=lvm.lv_deactivate, errors=errors) + atomic_run("Deactivating pool", + lv_name=args["pool"], + vg_name=args["group"], + command=lvm.lv_deactivate, + errors=errors) + + for i in range(args["number of vols"]): + atomic_run("Deactivating thin LV No. %s" % i, + lv_name=args["vol"] + str(i), + vg_name=args["group"], + command=lvm.lv_deactivate, + errors=errors) + atomic_run("Swapping metadata", vg_name=args["group"], lv_name=args["swap"], @@ -1111,6 +1112,7 @@ def cache_errors_test(args): # errors=errors) #FIXME: Find other way to corrupt metadata, this exploits a bug + """ atomic_run("Corrupting mappings on metadata device", False, source_file="Makefile", @@ -1139,7 +1141,7 @@ def cache_errors_test(args): source_lv=args['swap'], target_file="/tmp/metadata_repair", command=dmpd.cache_repair, - errors=errors) + errors=errors)""" atomic_run("Corrupting metadata on device", cmd="echo 'nothing' >> /dev/mapper/%s-%s" % (args['group'], args['swap']), @@ -1208,6 +1210,7 @@ def main(): "swap": "swapvol"} # Initialization + install_package("lvm2") install_package("device-mapper-persistent-data") # Tests for thin tools provided by device-mapper-persistent-data diff --git a/tests/functions_test/dmpd_library.py b/tests/functions_test/dmpd_library.py index 4d70400..c690a3d 100755 --- a/tests/functions_test/dmpd_library.py +++ b/tests/functions_test/dmpd_library.py @@ -194,7 +194,8 @@ def show_sys_info(): if run("rpm -q device-mapper-multipath") == 0: #Abort test execution if multipath is not working well if run("multipath -l 2>/dev/null") != 0: - sys.exit(1) + print("WARN: Multipath is not configured correctly") + return #Flush all unused multipath devices before starting the test run("multipath -F") run("multipath -r") @@ -605,7 +606,7 @@ class LogChecker: _print("WARN: Could not open %s" % log_msg_file) return True - log_file = open(log_msg_file) + log_file = open(log_msg_file, encoding="utf-8", errors="ignore") log = log_file.read() begin_tag = "\\[ cut here \\]" From d37efc87961df0506c83f75ac980a740d82f7bce Mon Sep 17 00:00:00 2001 From: Filip Suba Date: Mon, 14 Aug 2023 13:31:31 +0200 Subject: [PATCH 27/50] Change expected result of thin_rmap test with negatine number in region Related: #2227208 (cherry picked from commit fb7da57375717002f0cc4af5676175e9b996a6b6) --- tests/functions_test/dmpd_functions.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/functions_test/dmpd_functions.py b/tests/functions_test/dmpd_functions.py index 686ada1..4d23f70 100755 --- a/tests/functions_test/dmpd_functions.py +++ b/tests/functions_test/dmpd_functions.py @@ -282,7 +282,8 @@ def thin_test(args): command=run, errors=errors) - atomic_run("Outputting reverse map of metadata device", + atomic_run("Outputting reverse map of metadata device with negative number in region", + False, source_vg=args["group"], source_lv=args["swap"], region="0..-1", From 0ee1026718693e39950f3939ebfb79e027a733c9 Mon Sep 17 00:00:00 2001 From: Filip Suba Date: Thu, 18 Jan 2024 13:08:38 +0100 Subject: [PATCH 28/50] Backport function tests from centos stream --- tests/functions_test/Makefile | 2 +- tests/functions_test/dmpd_library.py | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/tests/functions_test/Makefile b/tests/functions_test/Makefile index d9e7f97..6b14a2f 100644 --- a/tests/functions_test/Makefile +++ b/tests/functions_test/Makefile @@ -72,4 +72,4 @@ $(METADATA): Makefile @echo "RunFor: $(PACKAGE_NAME)" >> $(METADATA) @echo "Requires: $(PACKAGE_NAME)" >> $(METADATA) - rhts-lint $(METADATA) \ No newline at end of file + rhts-lint $(METADATA) diff --git a/tests/functions_test/dmpd_library.py b/tests/functions_test/dmpd_library.py index c690a3d..1cf44df 100755 --- a/tests/functions_test/dmpd_library.py +++ b/tests/functions_test/dmpd_library.py @@ -16,6 +16,8 @@ """dmpd_library.py: Complete library providing functionality for device-mapper-persistent-data upstream test.""" +from __future__ import print_function + import platform from os.path import expanduser import re #regex @@ -25,7 +27,6 @@ import time import fileinput # TODO: Is this really necessary? Unlikely we will run into python2 in rawhide # again... -from __future__ import print_function def _print(string): @@ -55,7 +56,7 @@ def run(cmd, return_output=False, verbose=True, force_flush=False): date = "date \"+%Y-%m-%d %H:%M:%S\"" p = subprocess.Popen(date, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True) stdout, stderr = p.communicate() - stdout = stdout.rstrip("\n") + stdout = stdout.decode('ascii', 'ignore').rstrip("\n") _print("INFO: [%s] Running: '%s'..." % (stdout, cmd)) #enabling shell=True, because was the only way I found to run command with '|' @@ -77,7 +78,7 @@ def run(cmd, return_output=False, verbose=True, force_flush=False): retcode = p.returncode - output = stdout + stderr + output = stdout.decode('ascii', 'ignore') + stderr.decode('ascii', 'ignore') #remove new line from last line output = output.rstrip() From fc4e1a8529686d31f27dd93d3040e2b7e40faba8 Mon Sep 17 00:00:00 2001 From: Marian Csontos Date: Wed, 17 Jan 2024 15:44:17 +0100 Subject: [PATCH 29/50] Use make_install macro in spec --- device-mapper-persistent-data.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/device-mapper-persistent-data.spec b/device-mapper-persistent-data.spec index 9f1d981..af895b3 100644 --- a/device-mapper-persistent-data.spec +++ b/device-mapper-persistent-data.spec @@ -93,13 +93,13 @@ echo %{version}-%{release} > VERSION %if %{with check} %check -# FIXME: Reenable testing! %cargo_test #cargo test --test thin_shrink -- --nocapture --test-threads=1 %endif %install -make DESTDIR=%{buildroot} MANDIR=%{_mandir} install +# TODO: Check that MANDIR is unused and remove +%make_install MANDIR=%{_mandir} %files %doc COPYING README.md From 8f47f1dde7d92664ae1c64034f36db98d67786f1 Mon Sep 17 00:00:00 2001 From: Marian Csontos Date: Thu, 18 Jan 2024 11:37:46 +0100 Subject: [PATCH 30/50] Fix some compatibility issues with Python3 --- tests/tools_not_linked_usr/tools_not_linked_usr.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/tools_not_linked_usr/tools_not_linked_usr.py b/tests/tools_not_linked_usr/tools_not_linked_usr.py index 74053cf..7be6393 100755 --- a/tests/tools_not_linked_usr/tools_not_linked_usr.py +++ b/tests/tools_not_linked_usr/tools_not_linked_usr.py @@ -14,7 +14,6 @@ # # Author: Bruno Goncalves -from os import walk import subprocess import sys import re @@ -25,7 +24,10 @@ def run(cmd): stdout, stderr = p.communicate() retcode = p.returncode - output = stdout + stderr + output = stdout.decode('ascii', 'ignore') + stderr.decode('ascii', 'ignore') + + # remove new line from last line + output = output.rstrip() print(output) return retcode, output From 62ab60b959cea3ea200be41b059836b2f1e3f9a8 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 19 Jan 2024 17:03:28 +0000 Subject: [PATCH 31/50] Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild --- device-mapper-persistent-data.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/device-mapper-persistent-data.spec b/device-mapper-persistent-data.spec index af895b3..f503119 100644 --- a/device-mapper-persistent-data.spec +++ b/device-mapper-persistent-data.spec @@ -10,7 +10,7 @@ Summary: Device-mapper Persistent Data Tools Name: device-mapper-persistent-data Version: 1.0.9 -Release: 1%{?dist}%{?release_suffix} +Release: 2%{?dist}%{?release_suffix} License: GPLv3+ #ExcludeArch: %%{ix86} URL: https://github.com/jthornber/thin-provisioning-tools @@ -149,6 +149,9 @@ echo %{version}-%{release} > VERSION #% {_sbindir}/thin_show_duplicates %changelog +* Fri Jan 19 2024 Fedora Release Engineering - 1.0.9-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + * Mon Dec 11 2023 Marian Csontos - 1.0.9-1 - Update to latest upstream release 1.0.9. From c1fa90d775bb5001af1989752d817b76219297cd Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 24 Jan 2024 09:20:18 +0000 Subject: [PATCH 32/50] Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild --- device-mapper-persistent-data.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/device-mapper-persistent-data.spec b/device-mapper-persistent-data.spec index f503119..abac08c 100644 --- a/device-mapper-persistent-data.spec +++ b/device-mapper-persistent-data.spec @@ -10,7 +10,7 @@ Summary: Device-mapper Persistent Data Tools Name: device-mapper-persistent-data Version: 1.0.9 -Release: 2%{?dist}%{?release_suffix} +Release: 3%{?dist}%{?release_suffix} License: GPLv3+ #ExcludeArch: %%{ix86} URL: https://github.com/jthornber/thin-provisioning-tools @@ -149,6 +149,9 @@ echo %{version}-%{release} > VERSION #% {_sbindir}/thin_show_duplicates %changelog +* Wed Jan 24 2024 Fedora Release Engineering - 1.0.9-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + * Fri Jan 19 2024 Fedora Release Engineering - 1.0.9-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild From 32537c977f33bfc2dcd43ed9795c80ec15c7633f Mon Sep 17 00:00:00 2001 From: Marian Csontos Date: Thu, 8 Feb 2024 15:05:54 +0100 Subject: [PATCH 33/50] Update to version 1.0.11 --- .gitignore | 2 ++ ...-Tweak-cargo.toml-to-work-with-vendor-directory.patch | 8 +++++--- device-mapper-persistent-data.spec | 9 ++++++--- sources | 4 ++-- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index 4b9fa80..b4fb6f7 100644 --- a/.gitignore +++ b/.gitignore @@ -49,3 +49,5 @@ /dmpd106-vendor.tar.gz /v1.0.9.tar.gz /dmpd109-vendor.tar.gz +/v1.0.11.tar.gz +/dmpd1011-vendor.tar.gz diff --git a/0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch b/0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch index 1bdbce3..133165a 100644 --- a/0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch +++ b/0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch @@ -1,4 +1,4 @@ -From 0d5347bd771e960294cd0c2f083d96448613ab9c Mon Sep 17 00:00:00 2001 +From d7c6150c644a299bb8667a3d5a01b0e03449e996 Mon Sep 17 00:00:00 2001 From: Marian Csontos Date: Thu, 27 Jul 2023 11:37:01 +0200 Subject: [PATCH] Tweak cargo.toml to work with vendor directory @@ -6,15 +6,17 @@ 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. + +(cherry picked from commit 0d5347bd771e960294cd0c2f083d96448613ab9c) --- Cargo.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml -index 500345a4..d4aa38a6 100644 +index 23b46193..b33b7418 100644 --- a/Cargo.toml +++ b/Cargo.toml -@@ -27,7 +27,8 @@ quick-xml = "0.29" +@@ -27,7 +27,8 @@ quick-xml = "0.31" rand = "0.8" rangemap = "1.4" roaring = "0.10" diff --git a/device-mapper-persistent-data.spec b/device-mapper-persistent-data.spec index abac08c..13e1bca 100644 --- a/device-mapper-persistent-data.spec +++ b/device-mapper-persistent-data.spec @@ -9,14 +9,14 @@ Summary: Device-mapper Persistent Data Tools Name: device-mapper-persistent-data -Version: 1.0.9 -Release: 3%{?dist}%{?release_suffix} +Version: 1.0.11 +Release: 1%{?dist}%{?release_suffix} License: GPLv3+ #ExcludeArch: %%{ix86} 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/v%{version}%{?version_suffix}.tar.gz -Source1: dmpd109-vendor.tar.gz +Source1: dmpd1011-vendor.tar.gz Patch1: 0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch %if %{defined rhel} @@ -149,6 +149,9 @@ echo %{version}-%{release} > VERSION #% {_sbindir}/thin_show_duplicates %changelog +* Thu Feb 08 2024 Marian Csontos - 1.0.11-1 +- Update to latest upstream release 1.0.11. + * Wed Jan 24 2024 Fedora Release Engineering - 1.0.9-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild diff --git a/sources b/sources index dc3f053..4dee685 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (v1.0.9.tar.gz) = c7d137b82cce4286d43f49af039f8026d7d7746e96affebc82e8243173ba9a014e3b462fc4b55850067ecfbcc6113c49f009c1285e272a4d64455715d11a9da1 -SHA512 (dmpd109-vendor.tar.gz) = f2a581da80e4137c6ecab9237587ec42141fdfe8c1bfae2ab5b431b64c100ea6c65cfadbbdd10d665101364731d7c5e61780490b9cfd5231df3f463483890747 +SHA512 (v1.0.11.tar.gz) = e1adacea2a1d6b07fea288080c0d0c24c99f5e6908ac9ac623b86e068991ceb9ae8967cd253a8ee7bf329ab3d4cf9f57d472438a0b0ffa486f7f8939cf9c10db +SHA512 (dmpd1011-vendor.tar.gz) = 67a9753cf4e488ff37a116dd9232c8dbe2d91047fffd2735025aaa26f804150b5de9324e29a5240af75f1591f518913b7831f980871a4f3175f5a05a56893e9d From e9706a7124731b603260d14383c4f64d0f7b93e9 Mon Sep 17 00:00:00 2001 From: Yaakov Selkowitz Date: Thu, 8 Feb 2024 12:26:19 -0500 Subject: [PATCH 34/50] Update Rust macro usage The rust-toolset macros in RHEL 10 are now compatible with Fedora's in terms of handling vendoring and automatic generation of license information and bundled provides. --- device-mapper-persistent-data.spec | 61 +++++++----------------------- 1 file changed, 13 insertions(+), 48 deletions(-) diff --git a/device-mapper-persistent-data.spec b/device-mapper-persistent-data.spec index 13e1bca..c901155 100644 --- a/device-mapper-persistent-data.spec +++ b/device-mapper-persistent-data.spec @@ -10,7 +10,7 @@ Summary: Device-mapper Persistent Data Tools Name: device-mapper-persistent-data Version: 1.0.11 -Release: 1%{?dist}%{?release_suffix} +Release: 2%{?dist}%{?release_suffix} License: GPLv3+ #ExcludeArch: %%{ix86} URL: https://github.com/jthornber/thin-provisioning-tools @@ -37,52 +37,8 @@ are included and era check, dump, restore and invalidate to manage snapshot eras %prep -%autosetup -p1 -n thin-provisioning-tools-%{version}%{?version_suffix} -#%%cargo_prep -#%%cargo_generate_buildrequires -tar xf %{SOURCE1} -mkdir -p .cargo -( -# Part from %%cargo_prep: -set -euo pipefail -/usr/bin/mkdir -p target/rpm -/usr/bin/ln -s rpm target/release -/usr/bin/rm -rf .cargo/ -/usr/bin/mkdir -p .cargo -cat > .cargo/config << EOF -[build] -rustc = "/usr/bin/rustc" -rustdoc = "/usr/bin/rustdoc" - -[profile.rpm] -inherits = "release" -opt-level = 3 -codegen-units = 1 -debug = 2 -strip = "none" - -[env] -CFLAGS = "-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer " -CXXFLAGS = "-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer " -LDFLAGS = "-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 " - -[install] -root = "/home/mcsontos/rpmbuild/BUILDROOT/%{NAME}-%{VERSION}-%{RELEASE}.x86_64/usr" - -[term] -verbose = true -EOF - -# Our own part: -cat >> .cargo/config < VERSION %generate_buildrequires @@ -90,6 +46,9 @@ echo %{version}-%{release} > VERSION %build #make %{?_smp_mflags} V= %cargo_build +%cargo_license_summary +%{cargo_license} > LICENSE.dependencies +%cargo_vendor_manifest %if %{with check} %check @@ -102,7 +61,10 @@ echo %{version}-%{release} > VERSION %make_install MANDIR=%{_mandir} %files -%doc COPYING README.md +%doc README.md +%license COPYING +%license LICENSE.dependencies +%license cargo-vendor.txt %{_mandir}/man8/cache_check.8.gz %{_mandir}/man8/cache_dump.8.gz %{_mandir}/man8/cache_metadata_size.8.gz @@ -149,6 +111,9 @@ echo %{version}-%{release} > VERSION #% {_sbindir}/thin_show_duplicates %changelog +* Thu Feb 08 2024 Yaakov Selkowitz - 1.0.11-2 +- Update Rust macro usage + * Thu Feb 08 2024 Marian Csontos - 1.0.11-1 - Update to latest upstream release 1.0.11. From 36f16d670379620c966d66a905e63707fa5b4e14 Mon Sep 17 00:00:00 2001 From: Marian Csontos Date: Thu, 8 Feb 2024 15:05:54 +0100 Subject: [PATCH 35/50] SPDX migration. --- device-mapper-persistent-data.spec | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/device-mapper-persistent-data.spec b/device-mapper-persistent-data.spec index c901155..8644658 100644 --- a/device-mapper-persistent-data.spec +++ b/device-mapper-persistent-data.spec @@ -10,8 +10,8 @@ Summary: Device-mapper Persistent Data Tools Name: device-mapper-persistent-data Version: 1.0.11 -Release: 2%{?dist}%{?release_suffix} -License: GPLv3+ +Release: 3%{?dist}%{?release_suffix} +License: GPL-3.0-only #ExcludeArch: %%{ix86} URL: https://github.com/jthornber/thin-provisioning-tools #Source0: https://github.com/jthornber/thin-provisioning-tools/archive/thin-provisioning-tools-%%{version}.tar.gz @@ -111,6 +111,9 @@ echo %{version}-%{release} > VERSION #% {_sbindir}/thin_show_duplicates %changelog +* Tue Feb 13 2024 Marian Csontos - 1.0.11-3 +- SPDX migration + * Thu Feb 08 2024 Yaakov Selkowitz - 1.0.11-2 - Update Rust macro usage From 7ccc70d06b268eb735fbca85666592754fe18130 Mon Sep 17 00:00:00 2001 From: Marian Csontos Date: Tue, 27 Feb 2024 10:41:23 +0100 Subject: [PATCH 36/50] SPDX: Add licenses for vendored libraries. --- device-mapper-persistent-data.spec | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/device-mapper-persistent-data.spec b/device-mapper-persistent-data.spec index 8644658..e0b2dee 100644 --- a/device-mapper-persistent-data.spec +++ b/device-mapper-persistent-data.spec @@ -11,7 +11,8 @@ Summary: Device-mapper Persistent Data Tools Name: device-mapper-persistent-data Version: 1.0.11 Release: 3%{?dist}%{?release_suffix} -License: GPL-3.0-only +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} URL: https://github.com/jthornber/thin-provisioning-tools #Source0: https://github.com/jthornber/thin-provisioning-tools/archive/thin-provisioning-tools-%%{version}.tar.gz @@ -111,6 +112,9 @@ echo %{version}-%{release} > VERSION #% {_sbindir}/thin_show_duplicates %changelog +* Tue Feb 13 2024 Marian Csontos - 1.0.11-4 +- Add licenses for statically linked libraries. + * Tue Feb 13 2024 Marian Csontos - 1.0.11-3 - SPDX migration From e10017f3760eaedd0f9db0eb85e5498d269fe608 Mon Sep 17 00:00:00 2001 From: Marian Csontos Date: Tue, 27 Feb 2024 10:42:12 +0100 Subject: [PATCH 37/50] Update to version 1.0.12 --- .gitignore | 2 + ...o.toml-to-work-with-vendor-directory.patch | 10 ++--- ...-set-the-pipe-size-for-triggering-EP.patch | 25 ++++++++++++ ...-tests-Fix-closing-the-pipe-fd-twice.patch | 40 +++++++++++++++++++ device-mapper-persistent-data.spec | 11 +++-- sources | 4 +- 6 files changed, 81 insertions(+), 11 deletions(-) create mode 100644 0002-tests-Explicitly-set-the-pipe-size-for-triggering-EP.patch create mode 100644 0003-tests-Fix-closing-the-pipe-fd-twice.patch diff --git a/.gitignore b/.gitignore index b4fb6f7..8293048 100644 --- a/.gitignore +++ b/.gitignore @@ -51,3 +51,5 @@ /dmpd109-vendor.tar.gz /v1.0.11.tar.gz /dmpd1011-vendor.tar.gz +/v1.0.12.tar.gz +/dmpd1012-vendor.tar.gz diff --git a/0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch b/0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch index 133165a..0532ec2 100644 --- a/0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch +++ b/0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch @@ -1,4 +1,4 @@ -From d7c6150c644a299bb8667a3d5a01b0e03449e996 Mon Sep 17 00:00:00 2001 +From 2a3a7ffa38a2e8ed7f9e89920deabd797ed961d5 Mon Sep 17 00:00:00 2001 From: Marian Csontos Date: Thu, 27 Jul 2023 11:37:01 +0200 Subject: [PATCH] Tweak cargo.toml to work with vendor directory @@ -6,19 +6,17 @@ 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. - -(cherry picked from commit 0d5347bd771e960294cd0c2f083d96448613ab9c) --- Cargo.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml -index 23b46193..b33b7418 100644 +index b33b0a4b..2a87e432 100644 --- a/Cargo.toml +++ b/Cargo.toml -@@ -27,7 +27,8 @@ quick-xml = "0.31" +@@ -33,7 +33,8 @@ quick-xml = "0.31" rand = "0.8" - rangemap = "1.4" + 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 } diff --git a/0002-tests-Explicitly-set-the-pipe-size-for-triggering-EP.patch b/0002-tests-Explicitly-set-the-pipe-size-for-triggering-EP.patch new file mode 100644 index 0000000..82159b8 --- /dev/null +++ b/0002-tests-Explicitly-set-the-pipe-size-for-triggering-EP.patch @@ -0,0 +1,25 @@ +From 9e55217135b7543f13a5801aafda0fe0a1fb363a Mon Sep 17 00:00:00 2001 +From: Ming-Hung Tsai +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 + diff --git a/0003-tests-Fix-closing-the-pipe-fd-twice.patch b/0003-tests-Fix-closing-the-pipe-fd-twice.patch new file mode 100644 index 0000000..0681b5c --- /dev/null +++ b/0003-tests-Fix-closing-the-pipe-fd-twice.patch @@ -0,0 +1,40 @@ +From 54e7eaf002a2b07cd5571b5d3374eb760d727381 Mon Sep 17 00:00:00 2001 +From: Ming-Hung Tsai +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 + diff --git a/device-mapper-persistent-data.spec b/device-mapper-persistent-data.spec index e0b2dee..2df597e 100644 --- a/device-mapper-persistent-data.spec +++ b/device-mapper-persistent-data.spec @@ -9,16 +9,18 @@ Summary: Device-mapper Persistent Data Tools Name: device-mapper-persistent-data -Version: 1.0.11 -Release: 3%{?dist}%{?release_suffix} +Version: 1.0.12 +Release: 1%{?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) #ExcludeArch: %%{ix86} 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/v%{version}%{?version_suffix}.tar.gz -Source1: dmpd1011-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} BuildRequires: rust-toolset @@ -112,6 +114,9 @@ echo %{version}-%{release} > VERSION #% {_sbindir}/thin_show_duplicates %changelog +* Tue Feb 27 2024 Marian Csontos - 1.0.12-1 +- Update to latest upstream release 1.0.12. + * Tue Feb 13 2024 Marian Csontos - 1.0.11-4 - Add licenses for statically linked libraries. diff --git a/sources b/sources index 4dee685..05d1960 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (v1.0.11.tar.gz) = e1adacea2a1d6b07fea288080c0d0c24c99f5e6908ac9ac623b86e068991ceb9ae8967cd253a8ee7bf329ab3d4cf9f57d472438a0b0ffa486f7f8939cf9c10db -SHA512 (dmpd1011-vendor.tar.gz) = 67a9753cf4e488ff37a116dd9232c8dbe2d91047fffd2735025aaa26f804150b5de9324e29a5240af75f1591f518913b7831f980871a4f3175f5a05a56893e9d +SHA512 (v1.0.12.tar.gz) = 2e960e5a0d11016c1131ed48678a44c54164b43811f8efaa7172d9df7f433b185fa4b2f8d3d430affff19ced672f74a1f17614efd00287f2c310a6a3745ff8e5 +SHA512 (dmpd1012-vendor.tar.gz) = 02c0015545f05ac71c427f734a766e75a0f5a17a7edddae57abbb0d1277c0d91c6e26d59dd91aef2f2050aee6aef2e118478ca15183c36348e93185ebad3c1e0 From 226ede080b60c05ed774629191c6afa29da3e64e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 17 Apr 2024 23:26:03 +0200 Subject: [PATCH 38/50] Fix build when %_bindir==%_sbindir Preparation for https://fedoraproject.org/wiki/Changes/Unify_bin_and_sbin. %install was putting files in the wrong directory. Also, move %install above %test, because %install happens first, and %test after that. --- device-mapper-persistent-data.spec | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/device-mapper-persistent-data.spec b/device-mapper-persistent-data.spec index 2df597e..eb7bdf4 100644 --- a/device-mapper-persistent-data.spec +++ b/device-mapper-persistent-data.spec @@ -53,16 +53,16 @@ echo %{version}-%{release} > VERSION %{cargo_license} > LICENSE.dependencies %cargo_vendor_manifest +%install +# TODO: Check that MANDIR is unused and remove +%make_install MANDIR=%{_mandir} BINDIR=%{buildroot}%{_sbindir} + %if %{with check} %check %cargo_test #cargo test --test thin_shrink -- --nocapture --test-threads=1 %endif -%install -# TODO: Check that MANDIR is unused and remove -%make_install MANDIR=%{_mandir} - %files %doc README.md %license COPYING From d830fc9808ed959177166fabeb02cda88eaf7f97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 9 Jul 2024 12:59:45 +0200 Subject: [PATCH 39/50] Rebuilt for the bin-sbin merge https://fedoraproject.org/wiki/Changes/Unify_bin_and_sbin --- device-mapper-persistent-data.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/device-mapper-persistent-data.spec b/device-mapper-persistent-data.spec index eb7bdf4..f1925e9 100644 --- a/device-mapper-persistent-data.spec +++ b/device-mapper-persistent-data.spec @@ -10,7 +10,7 @@ Summary: Device-mapper Persistent Data Tools Name: device-mapper-persistent-data Version: 1.0.12 -Release: 1%{?dist}%{?release_suffix} +Release: 2%{?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) #ExcludeArch: %%{ix86} @@ -114,6 +114,9 @@ echo %{version}-%{release} > VERSION #% {_sbindir}/thin_show_duplicates %changelog +* Tue Jul 09 2024 Zbigniew Jędrzejewski-Szmek - 1.0.12-2 +- Rebuilt for the bin-sbin merge + * Tue Feb 27 2024 Marian Csontos - 1.0.12-1 - Update to latest upstream release 1.0.12. From 4bace50fd14f17ef138bb7b2d7377c4877db8915 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 17 Jul 2024 20:51:53 +0000 Subject: [PATCH 40/50] Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild --- device-mapper-persistent-data.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/device-mapper-persistent-data.spec b/device-mapper-persistent-data.spec index f1925e9..fcac6bf 100644 --- a/device-mapper-persistent-data.spec +++ b/device-mapper-persistent-data.spec @@ -10,7 +10,7 @@ Summary: Device-mapper Persistent Data Tools Name: device-mapper-persistent-data Version: 1.0.12 -Release: 2%{?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) #ExcludeArch: %%{ix86} @@ -114,6 +114,9 @@ echo %{version}-%{release} > VERSION #% {_sbindir}/thin_show_duplicates %changelog +* Wed Jul 17 2024 Fedora Release Engineering - 1.0.12-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + * Tue Jul 09 2024 Zbigniew Jędrzejewski-Szmek - 1.0.12-2 - Rebuilt for the bin-sbin merge From a540c7b432485d963b1a45fa7765eab155d70de3 Mon Sep 17 00:00:00 2001 From: Marian Csontos Date: Mon, 2 Sep 2024 15:28:34 +0200 Subject: [PATCH 41/50] Update to version 1.1.0 --- .gitignore | 2 + ...o.toml-to-work-with-vendor-directory.patch | 10 +++-- ...-set-the-pipe-size-for-triggering-EP.patch | 25 ------------ ...-tests-Fix-closing-the-pipe-fd-twice.patch | 40 ------------------- device-mapper-persistent-data.spec | 23 +++++++---- sources | 4 +- 6 files changed, 26 insertions(+), 78 deletions(-) delete mode 100644 0002-tests-Explicitly-set-the-pipe-size-for-triggering-EP.patch delete mode 100644 0003-tests-Fix-closing-the-pipe-fd-twice.patch diff --git a/.gitignore b/.gitignore index 8293048..f182b53 100644 --- a/.gitignore +++ b/.gitignore @@ -53,3 +53,5 @@ /dmpd1011-vendor.tar.gz /v1.0.12.tar.gz /dmpd1012-vendor.tar.gz +/v1.1.0.tar.gz +/dmpd110-vendor.tar.gz diff --git a/0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch b/0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch index 0532ec2..fec51a3 100644 --- a/0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch +++ b/0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch @@ -1,4 +1,4 @@ -From 2a3a7ffa38a2e8ed7f9e89920deabd797ed961d5 Mon Sep 17 00:00:00 2001 +From b0b04e59eb381859f3858120d535cc24059fbc08 Mon Sep 17 00:00:00 2001 From: Marian Csontos Date: Thu, 27 Jul 2023 11:37:01 +0200 Subject: [PATCH] Tweak cargo.toml to work with vendor directory @@ -6,15 +6,17 @@ 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. + +(cherry picked from commit 0d5347bd771e960294cd0c2f083d96448613ab9c) --- Cargo.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml -index b33b0a4b..2a87e432 100644 +index 47703bfc..4c605a54 100644 --- a/Cargo.toml +++ b/Cargo.toml -@@ -33,7 +33,8 @@ quick-xml = "0.31" +@@ -34,7 +34,8 @@ quick-xml = "0.36" rand = "0.8" rangemap = "1.5" roaring = "0.10" @@ -25,5 +27,5 @@ index b33b0a4b..2a87e432 100644 threadpool = "1.8" thiserror = "1.0" -- -2.43.0 +2.46.0 diff --git a/0002-tests-Explicitly-set-the-pipe-size-for-triggering-EP.patch b/0002-tests-Explicitly-set-the-pipe-size-for-triggering-EP.patch deleted file mode 100644 index 82159b8..0000000 --- a/0002-tests-Explicitly-set-the-pipe-size-for-triggering-EP.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 9e55217135b7543f13a5801aafda0fe0a1fb363a Mon Sep 17 00:00:00 2001 -From: Ming-Hung Tsai -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 - diff --git a/0003-tests-Fix-closing-the-pipe-fd-twice.patch b/0003-tests-Fix-closing-the-pipe-fd-twice.patch deleted file mode 100644 index 0681b5c..0000000 --- a/0003-tests-Fix-closing-the-pipe-fd-twice.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 54e7eaf002a2b07cd5571b5d3374eb760d727381 Mon Sep 17 00:00:00 2001 -From: Ming-Hung Tsai -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 - diff --git a/device-mapper-persistent-data.spec b/device-mapper-persistent-data.spec index fcac6bf..4390168 100644 --- a/device-mapper-persistent-data.spec +++ b/device-mapper-persistent-data.spec @@ -2,25 +2,23 @@ # Copyright (C) 2011-2017 Red Hat, Inc # %bcond_without check -%global debug_package %{nil} +#%%global debug_package %%{nil} #%%global version_suffix -rc2 #%%global release_suffix .test3 Summary: Device-mapper Persistent Data Tools Name: device-mapper-persistent-data -Version: 1.0.12 -Release: 3%{?dist}%{?release_suffix} +Version: 1.1.0 +Release: 1%{?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) #ExcludeArch: %%{ix86} 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/v%{version}%{?version_suffix}.tar.gz -Source1: dmpd1012-vendor.tar.gz +Source1: dmpd110-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} BuildRequires: rust-toolset @@ -30,6 +28,12 @@ BuildRequires: rust >= 1.35 BuildRequires: cargo %endif BuildRequires: make +BuildRequires: systemd-devel +BuildRequires: clang-libs +BuildRequires: glibc-static +BuildRequires: device-mapper-devel +BuildRequires: clang +#BuildRequires: gcc %description thin-provisioning-tools contains check,dump,restore,repair,rmap @@ -55,7 +59,7 @@ echo %{version}-%{release} > VERSION %install # TODO: Check that MANDIR is unused and remove -%make_install MANDIR=%{_mandir} BINDIR=%{buildroot}%{_sbindir} +%make_install STRIP=true MANDIR=%{_mandir} BINDIR=%{buildroot}%{_sbindir} %if %{with check} %check @@ -83,6 +87,7 @@ echo %{version}-%{release} > VERSION %{_mandir}/man8/thin_dump.8.gz %{_mandir}/man8/thin_ls.8.gz %{_mandir}/man8/thin_metadata_size.8.gz +%{_mandir}/man8/thin_migrate.8.gz %{_mandir}/man8/thin_repair.8.gz %{_mandir}/man8/thin_restore.8.gz %{_mandir}/man8/thin_rmap.8.gz @@ -105,6 +110,7 @@ echo %{version}-%{release} > VERSION %{_sbindir}/thin_dump %{_sbindir}/thin_ls %{_sbindir}/thin_metadata_size +%{_sbindir}/thin_migrate %{_sbindir}/thin_repair %{_sbindir}/thin_restore %{_sbindir}/thin_rmap @@ -114,6 +120,9 @@ echo %{version}-%{release} > VERSION #% {_sbindir}/thin_show_duplicates %changelog +* Mon Sep 02 2024 Marian Csontos - 1.1.0-1 +- Update to latest upstream release 1.1.0. + * Wed Jul 17 2024 Fedora Release Engineering - 1.0.12-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild diff --git a/sources b/sources index 05d1960..0d0f396 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (v1.0.12.tar.gz) = 2e960e5a0d11016c1131ed48678a44c54164b43811f8efaa7172d9df7f433b185fa4b2f8d3d430affff19ced672f74a1f17614efd00287f2c310a6a3745ff8e5 -SHA512 (dmpd1012-vendor.tar.gz) = 02c0015545f05ac71c427f734a766e75a0f5a17a7edddae57abbb0d1277c0d91c6e26d59dd91aef2f2050aee6aef2e118478ca15183c36348e93185ebad3c1e0 +SHA512 (v1.1.0.tar.gz) = 8cf3953743334b5a34504695757fa2de5a5fb5bdb8c7aed859995154fc004f52c3ef041558d307a2309c2de8dcdcbd8a0537bd3408fd78c7ff2f641f28944c1e +SHA512 (dmpd110-vendor.tar.gz) = 05c32ade894331eb11239c88d702d20ac463745b51d2c8b71d5aed75ce443ab160d94cd33bdbf021982fe3edc21c630e5bd5dba66d890b352bb6636d09667077 From 42f0442c767c4c175e834002cb29f7489fd4fbb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sun, 12 Jan 2025 14:26:13 +0100 Subject: [PATCH 42/50] Rebuilt for the bin-sbin merge (2nd attempt) https://fedoraproject.org/wiki/Changes/Unify_bin_and_sbin --- device-mapper-persistent-data.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/device-mapper-persistent-data.spec b/device-mapper-persistent-data.spec index 4390168..db4d9c0 100644 --- a/device-mapper-persistent-data.spec +++ b/device-mapper-persistent-data.spec @@ -10,7 +10,7 @@ Summary: Device-mapper Persistent Data Tools Name: device-mapper-persistent-data Version: 1.1.0 -Release: 1%{?dist}%{?release_suffix} +Release: 2%{?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) #ExcludeArch: %%{ix86} @@ -120,6 +120,9 @@ echo %{version}-%{release} > VERSION #% {_sbindir}/thin_show_duplicates %changelog +* Sun Jan 12 2025 Zbigniew Jędrzejewski-Szmek - 1.1.0-2 +- Rebuilt for the bin-sbin merge (2nd attempt) + * Mon Sep 02 2024 Marian Csontos - 1.1.0-1 - Update to latest upstream release 1.1.0. From cfc94352300c8ee9a02733c7a0229e69d7179c06 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 16 Jan 2025 15:37:25 +0000 Subject: [PATCH 43/50] Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild --- device-mapper-persistent-data.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/device-mapper-persistent-data.spec b/device-mapper-persistent-data.spec index db4d9c0..3ab5afa 100644 --- a/device-mapper-persistent-data.spec +++ b/device-mapper-persistent-data.spec @@ -10,7 +10,7 @@ Summary: Device-mapper Persistent Data Tools Name: device-mapper-persistent-data Version: 1.1.0 -Release: 2%{?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) #ExcludeArch: %%{ix86} @@ -120,6 +120,9 @@ echo %{version}-%{release} > VERSION #% {_sbindir}/thin_show_duplicates %changelog +* Thu Jan 16 2025 Fedora Release Engineering - 1.1.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + * Sun Jan 12 2025 Zbigniew Jędrzejewski-Szmek - 1.1.0-2 - Rebuilt for the bin-sbin merge (2nd attempt) From afa261551b1e2910bf7942d68412ab66e8e8217a Mon Sep 17 00:00:00 2001 From: Marian Csontos Date: Wed, 11 Jun 2025 15:20:55 +0200 Subject: [PATCH 44/50] Update README Describe Cargo.toml patching. And explain the notes to greater detail. --- README.md | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 4c77f74..ab05368 100644 --- a/README.md +++ b/README.md @@ -1,24 +1,30 @@ # Packaging dmpd -This is mostly regular package except recent addition of rust to used languages. +This is rust package using *vendor* file for dependencies. -## rust-tools - -To build the rust-tools (`make rust-tools`) one needs: +To build the package following tooling is needed: - rust >= 1.35 -- cargo with vendor subcommand (now upstream, included in latest Fedora and RHEL8) +- cargo with vendor subcommand (now upstream, included in latest Fedora and RHEL8+) -### cargo vendpr +## cargo vendor -- run `cargo vendor` in the disrectory with sources +- run `cargo vendor` in the directory with sources - run `tar czf device-mapper-persistent-data-vendor-$VERSION.tar.gz ./vendor` - copy the file (if version changed) and run the *fedpkg new-sources* command: - `fedpkg new-sources v$VERSION.tar.gz device-mapper-persistent-data-vendor-$VERSION.tar.gz` +- some dependencies (at the moment only *rio*) are not using upstream from + registry, but a patched version. **After** running cargo vendor apply patch + *0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch* so build does not + try to connect to internet. This dependency is being replaced by supported + crate. ## TODO/NOTES -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? +Some of the dependencies are 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 defualt in */usr/bin* but the package expects */usr/sbin*. For now I run *make install-rust-tools*. +*%cargo_install* installs by default 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. From 6eaa83f88661250417023e409095669b27768f42 Mon Sep 17 00:00:00 2001 From: Marian Csontos Date: Mon, 16 Jun 2025 15:20:46 +0200 Subject: [PATCH 45/50] Update README --- README.md | 60 ++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 46 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index ab05368..225838a 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,55 @@ -# Packaging dmpd +# Packaging device-mapper-persitent-data (AKA dmpd) -This is rust package using *vendor* file for dependencies. +This is rust package using *vendor* file for dependencies. (Vendor file is an archive of dependencies' sources.) -To build the package following tooling is needed: +For most of simple fixes, there is nothing special, +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`. -- rust >= 1.35 -- cargo with vendor subcommand (now upstream, included in latest Fedora and RHEL8+) +Alternatively before committing anything use `fedpkg srpm` and `fedpkg scratch-build --srpm $SRPM [--arches x86_64]` to create a scratch build. -## cargo vendor +However when building a new version of dmpd or when updating a dependency is +needed (e.g. because of CVE in the dependency) vendor file +has to be regenerated. -- run `cargo vendor` in the directory with sources -- run `tar czf device-mapper-persistent-data-vendor-$VERSION.tar.gz ./vendor` -- copy the file (if version changed) and run the *fedpkg new-sources* command: +## Updating vendor file + +To build a new version of the package following tooling is needed: + +- `rust >= 1.35` +- `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/mingnus/thin-merge/archive/v$VERSION.tar.gz` +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` -- some dependencies (at the moment only *rio*) are not using upstream from - registry, but a patched version. **After** running cargo vendor apply patch - *0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch* so build does not - try to connect to internet. This dependency is being replaced by supported - crate. +4. You may need to update *0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch* to modify + *Cargo.toml* file. Some dependencies (at the moment only *rio*) are not + using upstream from registry, but a patched version. With unmodified + *Cargo.toml* build would fail as it would try to reach to internet. + - NOTE: This patch **MUST NOT** be present in the upstream source directory + when running `cargo vendor`. + - I apply the patch after step 1, and use `git format-patch HEAD^` to + create the patch and add the patch to dist-git directory afterwards. + - The work to replace dependency on rio is in progress. ## TODO/NOTES From f8b6ae0ff5280ae6cff3ea0d91ca36780e198ec1 Mon Sep 17 00:00:00 2001 From: Marian Csontos Date: Thu, 26 Jun 2025 13:53:30 +0200 Subject: [PATCH 46/50] Fix tarball links --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 225838a..1f4acf9 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,8 @@ In the upstream directory: In the dist-git directory: -1. Get the upstream tarball `wget https://github.com/mingnus/thin-merge/archive/v$VERSION.tar.gz` +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` From f5a75df400370d2620d498c6e0a437958baf4d43 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 23 Jul 2025 19:13:00 +0000 Subject: [PATCH 47/50] Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild --- device-mapper-persistent-data.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/device-mapper-persistent-data.spec b/device-mapper-persistent-data.spec index 3ab5afa..d93a722 100644 --- a/device-mapper-persistent-data.spec +++ b/device-mapper-persistent-data.spec @@ -10,7 +10,7 @@ Summary: Device-mapper Persistent Data Tools Name: device-mapper-persistent-data Version: 1.1.0 -Release: 3%{?dist}%{?release_suffix} +Release: 4%{?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) #ExcludeArch: %%{ix86} @@ -120,6 +120,9 @@ echo %{version}-%{release} > VERSION #% {_sbindir}/thin_show_duplicates %changelog +* Wed Jul 23 2025 Fedora Release Engineering - 1.1.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + * Thu Jan 16 2025 Fedora Release Engineering - 1.1.0-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild From 6e755274167a3b1d286cd794a9508486b11c637c Mon Sep 17 00:00:00 2001 From: Marian Csontos Date: Thu, 4 Sep 2025 15:46:21 +0200 Subject: [PATCH 48/50] Update to version 1.2.1 --- .gitignore | 2 ++ ...o.toml-to-work-with-vendor-directory.patch | 22 +++++++++---------- device-mapper-persistent-data.spec | 21 +++++++++++++++--- sources | 4 ++-- 4 files changed, 33 insertions(+), 16 deletions(-) diff --git a/.gitignore b/.gitignore index f182b53..b493c9d 100644 --- a/.gitignore +++ b/.gitignore @@ -55,3 +55,5 @@ /dmpd1012-vendor.tar.gz /v1.1.0.tar.gz /dmpd110-vendor.tar.gz +/v1.2.1.tar.gz +/dmpd121-vendor.tar.gz diff --git a/0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch b/0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch index fec51a3..1d96b49 100644 --- a/0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch +++ b/0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch @@ -1,6 +1,6 @@ -From b0b04e59eb381859f3858120d535cc24059fbc08 Mon Sep 17 00:00:00 2001 +From 954a2fd73edd2b07543c37143be7cce5ba4f5459 Mon Sep 17 00:00:00 2001 From: Marian Csontos -Date: Thu, 27 Jul 2023 11:37:01 +0200 +Date: Thu, 4 Sep 2025 11:16:06 +0200 Subject: [PATCH] Tweak cargo.toml to work with vendor directory Mock works offline, cargo would try to download the files from github. @@ -13,19 +13,19 @@ make mock happy. 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml -index 47703bfc..4c605a54 100644 +index 7924643f..227ebc06 100644 --- a/Cargo.toml +++ b/Cargo.toml -@@ -34,7 +34,8 @@ quick-xml = "0.36" - rand = "0.8" - rangemap = "1.5" - roaring = "0.10" +@@ -33,7 +33,8 @@ quick-xml = "0.38" + rand = "0.9" + rangemap = "1.6" + roaring = "0.11" -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" + thiserror = "2.0" + tui = { version = "0.19", default-features = false, features = [ + "termion", -- -2.46.0 +2.51.0 diff --git a/device-mapper-persistent-data.spec b/device-mapper-persistent-data.spec index d93a722..078e982 100644 --- a/device-mapper-persistent-data.spec +++ b/device-mapper-persistent-data.spec @@ -9,15 +9,15 @@ Summary: Device-mapper Persistent Data Tools Name: device-mapper-persistent-data -Version: 1.1.0 -Release: 4%{?dist}%{?release_suffix} +Version: 1.2.1 +Release: 1%{?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) #ExcludeArch: %%{ix86} 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/v%{version}%{?version_suffix}.tar.gz -Source1: dmpd110-vendor.tar.gz +Source1: dmpd121-vendor.tar.gz Patch1: 0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch %if %{defined rhel} @@ -46,6 +46,18 @@ snapshot eras %prep %autosetup -p1 -n thin-provisioning-tools-%{version}%{?version_suffix} -a1 %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 %generate_buildrequires @@ -120,6 +132,9 @@ echo %{version}-%{release} > VERSION #% {_sbindir}/thin_show_duplicates %changelog +* Thu Sep 04 2025 Marian Csontos - 1.2.1-1 +- Update to latest upstream release 1.2.1. + * Wed Jul 23 2025 Fedora Release Engineering - 1.1.0-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild diff --git a/sources b/sources index 0d0f396..eb39fed 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (v1.1.0.tar.gz) = 8cf3953743334b5a34504695757fa2de5a5fb5bdb8c7aed859995154fc004f52c3ef041558d307a2309c2de8dcdcbd8a0537bd3408fd78c7ff2f641f28944c1e -SHA512 (dmpd110-vendor.tar.gz) = 05c32ade894331eb11239c88d702d20ac463745b51d2c8b71d5aed75ce443ab160d94cd33bdbf021982fe3edc21c630e5bd5dba66d890b352bb6636d09667077 +SHA512 (v1.2.1.tar.gz) = cc96f8d4b32eb3f905e24db3ba9d291436effdea1c468c1f2292da20fdd8438058552314b5802450f62af414fb338cadff06b37c927f2272b8e34d3704a6a59b +SHA512 (dmpd121-vendor.tar.gz) = 999395721d94f35f459faf855ca718e5746f72989ca532aa85174b3d7d86ba31779718034248cabba708e12f4ef26747970d3ca8a4326eb19012287377aab969 From af8fbf5a507de6aa74b60f437cbb46ac0b92dfcf Mon Sep 17 00:00:00 2001 From: Marian Csontos Date: Wed, 22 Oct 2025 16:56:52 +0200 Subject: [PATCH 49/50] Update to version 1.3.0 --- .gitignore | 2 ++ ...o.toml-to-work-with-vendor-directory.patch | 31 ------------------- README.md | 9 ------ device-mapper-persistent-data.spec | 8 +++-- sources | 4 +-- 5 files changed, 9 insertions(+), 45 deletions(-) delete mode 100644 0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch diff --git a/.gitignore b/.gitignore index b493c9d..7903be8 100644 --- a/.gitignore +++ b/.gitignore @@ -57,3 +57,5 @@ /dmpd110-vendor.tar.gz /v1.2.1.tar.gz /dmpd121-vendor.tar.gz +/v1.3.0.tar.gz +/dmpd130-vendor.tar.gz diff --git a/0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch b/0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch deleted file mode 100644 index 1d96b49..0000000 --- a/0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 954a2fd73edd2b07543c37143be7cce5ba4f5459 Mon Sep 17 00:00:00 2001 -From: Marian Csontos -Date: Thu, 4 Sep 2025 11:16:06 +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. - -(cherry picked from commit 0d5347bd771e960294cd0c2f083d96448613ab9c) ---- - Cargo.toml | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/Cargo.toml b/Cargo.toml -index 7924643f..227ebc06 100644 ---- a/Cargo.toml -+++ b/Cargo.toml -@@ -33,7 +33,8 @@ quick-xml = "0.38" - rand = "0.9" - rangemap = "1.6" - roaring = "0.11" --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 } - thiserror = "2.0" - tui = { version = "0.19", default-features = false, features = [ - "termion", --- -2.51.0 - diff --git a/README.md b/README.md index 1f4acf9..a81396d 100644 --- a/README.md +++ b/README.md @@ -42,15 +42,6 @@ In the dist-git directory: 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` -4. You may need to update *0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch* to modify - *Cargo.toml* file. Some dependencies (at the moment only *rio*) are not - using upstream from registry, but a patched version. With unmodified - *Cargo.toml* build would fail as it would try to reach to internet. - - NOTE: This patch **MUST NOT** be present in the upstream source directory - when running `cargo vendor`. - - I apply the patch after step 1, and use `git format-patch HEAD^` to - create the patch and add the patch to dist-git directory afterwards. - - The work to replace dependency on rio is in progress. ## TODO/NOTES diff --git a/device-mapper-persistent-data.spec b/device-mapper-persistent-data.spec index 078e982..6d1a0c4 100644 --- a/device-mapper-persistent-data.spec +++ b/device-mapper-persistent-data.spec @@ -9,7 +9,7 @@ Summary: Device-mapper Persistent Data Tools Name: device-mapper-persistent-data -Version: 1.2.1 +Version: 1.3.0 Release: 1%{?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) @@ -17,8 +17,7 @@ License: GPL-3.0-only AND (0BSD OR MIT OR Apache-2.0) AND Apache-2.0 AND (Apache 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/v%{version}%{?version_suffix}.tar.gz -Source1: dmpd121-vendor.tar.gz -Patch1: 0001-Tweak-cargo.toml-to-work-with-vendor-directory.patch +Source1: dmpd130-vendor.tar.gz %if %{defined rhel} BuildRequires: rust-toolset @@ -132,6 +131,9 @@ echo %{version}-%{release} > VERSION #% {_sbindir}/thin_show_duplicates %changelog +* Wed Oct 22 2025 Marian Csontos - 1.3.0-1 +- Update to latest upstream release 1.3.0. + * Thu Sep 04 2025 Marian Csontos - 1.2.1-1 - Update to latest upstream release 1.2.1. diff --git a/sources b/sources index eb39fed..10e4d92 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (v1.2.1.tar.gz) = cc96f8d4b32eb3f905e24db3ba9d291436effdea1c468c1f2292da20fdd8438058552314b5802450f62af414fb338cadff06b37c927f2272b8e34d3704a6a59b -SHA512 (dmpd121-vendor.tar.gz) = 999395721d94f35f459faf855ca718e5746f72989ca532aa85174b3d7d86ba31779718034248cabba708e12f4ef26747970d3ca8a4326eb19012287377aab969 +SHA512 (v1.3.0.tar.gz) = 84e364df240a43fea44edfe14cf428d79d1301891b2482599229e125768912127922377139c2117db50a5370fb08c0f52d589d11b6a90673af2d242ff4ef7920 +SHA512 (dmpd130-vendor.tar.gz) = 9f5e7e68da29189f74dfae5d8c219917b3e11fe73e9f978fec22d3003734a6fff2df6fb1a83c84a666726ba473f611aabd2ecf77ff859c0b3be85dc48a6dcf21 From 010e823bf009dac2fdbd046e5d979d16c536df37 Mon Sep 17 00:00:00 2001 From: Marian Csontos Date: Tue, 2 Dec 2025 12:17:27 +0100 Subject: [PATCH 50/50] Update to version 1.3.1 --- .gitignore | 2 ++ device-mapper-persistent-data.spec | 7 +++++-- sources | 4 ++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 7903be8..1844bef 100644 --- a/.gitignore +++ b/.gitignore @@ -59,3 +59,5 @@ /dmpd121-vendor.tar.gz /v1.3.0.tar.gz /dmpd130-vendor.tar.gz +/v1.3.1.tar.gz +/dmpd131-vendor.tar.gz diff --git a/device-mapper-persistent-data.spec b/device-mapper-persistent-data.spec index 6d1a0c4..213bfff 100644 --- a/device-mapper-persistent-data.spec +++ b/device-mapper-persistent-data.spec @@ -9,7 +9,7 @@ Summary: Device-mapper Persistent Data Tools Name: device-mapper-persistent-data -Version: 1.3.0 +Version: 1.3.1 Release: 1%{?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) @@ -17,7 +17,7 @@ License: GPL-3.0-only AND (0BSD OR MIT OR Apache-2.0) AND Apache-2.0 AND (Apache 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/v%{version}%{?version_suffix}.tar.gz -Source1: dmpd130-vendor.tar.gz +Source1: dmpd131-vendor.tar.gz %if %{defined rhel} BuildRequires: rust-toolset @@ -131,6 +131,9 @@ echo %{version}-%{release} > VERSION #% {_sbindir}/thin_show_duplicates %changelog +* Tue Dec 02 2025 Marian Csontos - 1.3.1-1 +- Update to latest upstream release 1.3.1. + * Wed Oct 22 2025 Marian Csontos - 1.3.0-1 - Update to latest upstream release 1.3.0. diff --git a/sources b/sources index 10e4d92..4ddfdfb 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (v1.3.0.tar.gz) = 84e364df240a43fea44edfe14cf428d79d1301891b2482599229e125768912127922377139c2117db50a5370fb08c0f52d589d11b6a90673af2d242ff4ef7920 -SHA512 (dmpd130-vendor.tar.gz) = 9f5e7e68da29189f74dfae5d8c219917b3e11fe73e9f978fec22d3003734a6fff2df6fb1a83c84a666726ba473f611aabd2ecf77ff859c0b3be85dc48a6dcf21 +SHA512 (v1.3.1.tar.gz) = ff0758b21b50702568cad88522ee4c2b6b4433cec0a5f5074c9d1791c13e630e5c516601d7a68c51ac34e036091fc82fe831dbe51e6776737571d90ed266878e +SHA512 (dmpd131-vendor.tar.gz) = 0e1b8e501e330b64415c9097c94dfc1f1b43d2900a66258e40b6c8f28c51fd61247d60495f594f14550fb349ed4ad435f8959a8808fea1d363a206c5ead7db1e