Compare commits

...
Sign in to create a new pull request.

88 commits

Author SHA1 Message Date
Marian Csontos
010e823bf0 Update to version 1.3.1 2025-12-02 12:17:27 +01:00
Marian Csontos
af8fbf5a50 Update to version 1.3.0 2025-10-22 16:56:52 +02:00
Marian Csontos
6e75527416 Update to version 1.2.1 2025-09-04 16:09:00 +02:00
Fedora Release Engineering
f5a75df400 Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild 2025-07-23 19:13:00 +00:00
Marian Csontos
f8b6ae0ff5 Fix tarball links 2025-06-26 13:53:30 +02:00
Marian Csontos
6eaa83f886 Update README 2025-06-16 15:20:46 +02:00
Marian Csontos
afa261551b Update README
Describe Cargo.toml patching.
And explain the notes to greater detail.
2025-06-11 15:23:22 +02:00
Fedora Release Engineering
cfc9435230 Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild 2025-01-16 15:37:25 +00:00
Zbigniew Jędrzejewski-Szmek
42f0442c76 Rebuilt for the bin-sbin merge (2nd attempt)
https://fedoraproject.org/wiki/Changes/Unify_bin_and_sbin
2025-01-12 14:26:13 +01:00
Marian Csontos
a540c7b432 Update to version 1.1.0 2024-09-02 15:28:34 +02:00
Fedora Release Engineering
4bace50fd1 Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild 2024-07-17 20:51:53 +00:00
Zbigniew Jędrzejewski-Szmek
d830fc9808 Rebuilt for the bin-sbin merge
https://fedoraproject.org/wiki/Changes/Unify_bin_and_sbin
2024-07-09 12:59:45 +02:00
Zbigniew Jędrzejewski-Szmek
226ede080b 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.
2024-04-17 23:26:03 +02:00
Marian Csontos
e10017f376 Update to version 1.0.12 2024-02-27 10:42:12 +01:00
Marian Csontos
7ccc70d06b SPDX: Add licenses for vendored libraries. 2024-02-27 10:41:23 +01:00
Marian Csontos
36f16d6703 SPDX migration. 2024-02-13 10:19:16 +01:00
Yaakov Selkowitz
e9706a7124 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.
2024-02-08 12:26:19 -05:00
Marian Csontos
32537c977f Update to version 1.0.11 2024-02-08 15:07:20 +01:00
Fedora Release Engineering
c1fa90d775 Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild 2024-01-24 09:20:18 +00:00
Fedora Release Engineering
62ab60b959 Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild 2024-01-19 17:03:28 +00:00
Marian Csontos
8f47f1dde7 Fix some compatibility issues with Python3 2024-01-18 13:36:46 +01:00
Marian Csontos
fc4e1a8529 Use make_install macro in spec 2024-01-18 13:36:46 +01:00
Filip Suba
0ee1026718 Backport function tests from centos stream 2024-01-18 13:08:38 +01:00
Filip Suba
d37efc8796 Change expected result of thin_rmap test with negatine number in region
Related: #2227208
(cherry picked from commit fb7da57375717002f0cc4af5676175e9b996a6b6)
2024-01-16 16:08:19 +01:00
Filip Suba
e3c64593c6 Fix dmpd_functions test
Related: #2175198
(cherry picked from commit 6daf341749b4830d1e00d5ebedee62c8fb2fcac1)
2024-01-16 16:08:16 +01:00
Marian Csontos
b76b7df037 Fix test incompatibility with python-3.7+
platform.linux_distribution was removed in python-3.7.

Related: #2175198
(cherry picked from commit a517fa496c7a947b0d943fdf90a70b9d6eb312a8)
2024-01-16 16:08:10 +01:00
Marian Csontos
c950fe5f28 Update to version 1.0.9 2023-12-13 10:05:34 +01:00
Marian Csontos
a6ab2577d8 Fix ioctl call on ppc64le breaking installation. 2023-08-31 11:44:12 +02:00
Marian Csontos
80bd16a715 Update to version 1.0.6 2023-08-09 14:32:11 +02:00
Marian Csontos
74d27c1f25 Fix previous commit 2023-07-27 12:27:19 +02:00
Marian Csontos
9ca4681979 Update to version 1.0.5 2023-07-27 12:16:23 +02:00
Fedora Release Engineering
e1a1e8841f Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2023-07-19 17:19:36 +00:00
Yaakov Selkowitz
ee730faf27 Use rust-toolset in RHEL builds
RHEL provides a minimal set of macros compared to Fedora.
2023-05-30 16:15:15 -04:00
Marian Csontos
db577ef350 Update to version 1.0.4 2023-04-28 16:41:15 +02:00
Marian Csontos
8d2c47ae1c Update to version 1.0.2 2023-03-02 14:42:42 +01:00
Fabio Valentini
804560ae46
Rebuild for fixed frame pointer compiler flags in Rust RPM macros 2023-02-05 19:06:07 +01:00
Fedora Release Engineering
eb7bb8b343 Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2023-01-19 01:17:27 +00:00
Fedora Release Engineering
20de387ada Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2022-07-21 00:21:07 +00:00
Marian Csontos
99369c4f67 tests: Fix compatibility with Python3
xrange was renamed to range in Python3.
2022-06-24 14:45:25 +02:00
Fedora Release Engineering
126554fe2a - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2022-01-20 00:33:44 +00:00
Marian Csontos
60cbba5ee8 Fix build issue 2021-07-22 11:47:33 +02:00
Fedora Release Engineering
c6ef39964e - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2021-07-21 20:41:22 +00:00
Marian Csontos
266ea5b3cf Fix issues found by static analysis 2021-06-10 15:05:05 +02:00
Marian Csontos
c8a7f0ad3e Fix gating tests 2021-06-10 14:49:17 +02:00
Fedora Release Engineering
04960e2a1e - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2021-01-26 03:17:52 +00:00
Tom Stellard
d369cfa3c5 Add BuildRequires: make
https://fedoraproject.org/wiki/Changes/Remove_make_from_BuildRoot
2020-12-19 06:06:36 +00:00
Marian Csontos
9537e3e84a Fix build on non x86 architectures 2020-09-21 14:26:43 +02:00
Marian Csontos
17d784aa7f Update to ustrream release 0.9.0 2020-09-17 17:23:28 +02:00
Marian Csontos
00ee8c1bd2 Update to upstream release 0.9.0 2020-09-17 17:23:28 +02:00
Fedora Release Engineering
3a6c7c6f8e - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2020-07-27 15:17:54 +00:00
Fedora Release Engineering
8049d4672f - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2020-01-28 15:43:34 +00:00
Fedora Release Engineering
421e6526f6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2019-07-24 21:53:02 +00:00
Marian Csontos
fbb64262ce New upstream release v0.8.5 2019-06-04 14:49:44 +02:00
Marian Csontos
b2f4dd907c New upstream release v0.8.1 2019-05-04 21:37:19 +02:00
Marian Csontos
95fb81b412 New upstream release v0.8.0 2019-04-29 14:42:51 +02:00
Fedora Release Engineering
63039122dd - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2019-01-31 17:07:35 +00:00
Igor Gnatenko
b31f85ac26 Remove unneeded %clean section
It is the behavior since EPEL5.

Signed-off-by: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
2019-01-29 05:45:40 +01:00
Igor Gnatenko
731228e5f9 Remove obsolete Group tag
References: https://fedoraproject.org/wiki/Changes/Remove_Group_Tag
2019-01-28 20:23:59 +01:00
Jonathan Wakely
790a1dc624 Rebuilt for Boost 1.69 2019-01-25 14:54:45 +00:00
Fedora Release Engineering
c01e369f7e - Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2018-07-12 22:48:28 +00:00
Marian Csontos
88778300c5 New upstream release v0.7.6 2018-04-24 19:11:56 +02:00
Marian Csontos
a19342ade3 Add gcc-c++ to BuildRequires 2018-02-20 15:41:25 +01:00
Fedora Release Engineering
c327b607fe - Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2018-02-07 06:43:05 +00:00
Jonathan Wakely
40e854a10a Rebuilt for Boost 1.66 2018-01-23 22:31:29 +00:00
Marian Csontos
e2f2093885 New upstream release v0.7.5
This fixes an mportant bug in cache_restore.
The rest is mostly changing tests.
2017-11-14 11:50:42 +01:00
Bruno Goncalves
651216ed6a Add CI tests using the standard test interface 2017-10-19 10:48:24 +02:00
Marian Csontos
5d5ebcb425 New upstream release v0.7.3 2017-10-06 16:40:45 +02:00
Marian Csontos
7d940d6bd5 New upstream release v0.7.2 2017-09-22 09:05:47 +02:00
Fedora Release Engineering
76f23150c1 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild 2017-08-02 19:33:14 +00:00
Fedora Release Engineering
a3db74c795 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild 2017-07-26 06:07:19 +00:00
Jonathan Wakely
b557b0f646 Rebuilt for Boost 1.64 2017-07-03 17:54:45 +01:00
Marian Csontos
a9f94b0fd5 Fix previous commit missed to increment Release 2017-05-23 11:10:49 +02:00
Marian Csontos
4378ae0980 Rebuild to undo mass rebuild mess 2017-05-23 10:49:41 +02:00
Fedora Release Engineering
db4dc6b746 - Rebuilt for https://fedoraproject.org/wiki/Fedora_26_27_Mass_Rebuild 2017-05-15 19:52:39 +00:00
Peter Rajnoha
4cd2a32be9 New upstream release v0.7.0-rc6. 2017-03-27 17:10:25 +02:00
Peter Rajnoha
157df5df7d New upstream release v0.7.0-rc5. 2017-03-22 08:44:21 +01:00
Peter Rajnoha
f95d0a67cc New upstream release v0.7.0-rc4. 2017-03-21 12:49:42 +01:00
Peter Rajnoha
de968c0e8c Fixes and cleanups. 2017-03-16 15:24:13 +01:00
Peter Rajnoha
bbce189d61 New upstream release v0.7.0-rc2. 2017-03-09 11:40:12 +01:00
Peter Rajnoha
d295f18b54 New upstream release v0.7.0-rc2. 2017-03-09 11:36:39 +01:00
Fedora Release Engineering
0a96e398ab - Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild 2017-02-10 08:19:52 +00:00
Jonathan Wakely
702f380fa3 Rebuilt for Boost 1.63 2017-01-27 03:19:35 +00:00
Peter Rajnoha
9e7d28d253 New upstream release v0.6.3. 2016-09-22 14:47:56 +02:00
Peter Rajnoha
413d274654 New upstream release v0.6.2. 2016-07-11 11:33:15 +02:00
Peter Rajnoha
635d3473dc New upstream release v0.6.2-rc8. 2016-04-11 14:14:03 +02:00
Peter Rajnoha
5c01a0ad21 New upstream release v0.6.2-rc7. 2016-03-22 09:33:08 +01:00
Peter Rajnoha
0e6c2c5e66 New upstream release v0.6.2-rc6. 2016-03-09 08:58:22 +01:00
Peter Rajnoha
9e4b69ab08 New upstream release v0.6.2-rc6. 2016-03-09 08:49:37 +01:00
17 changed files with 4356 additions and 167 deletions

45
.gitignore vendored
View file

@ -16,3 +16,48 @@
/thin-provisioning-tools-0.6.2-rc3.tar.gz
/thin-provisioning-tools-0.6.2-rc4.tar.gz
/thin-provisioning-tools-0.6.2-rc5.tar.gz
/thin-provisioning-tools-0.6.2-rc6.tar.gz
/thin-provisioning-tools-0.6.2-rc7.tar.gz
/thin-provisioning-tools-0.6.2-rc8.tar.gz
/thin-provisioning-tools-0.6.2.tar.gz
/thin-provisioning-tools-0.6.3.tar.gz
/thin-provisioning-tools-0.7.0-rc2.tar.gz
/thin-provisioning-tools-0.7.0-rc3.tar.gz
/thin-provisioning-tools-0.7.0-rc4.tar.gz
/thin-provisioning-tools-0.7.0-rc5.tar.gz
/thin-provisioning-tools-0.7.0-rc6.tar.gz
/v0.7.2.tar.gz
/v0.7.3.tar.gz
/v0.7.5.tar.gz
/v0.7.6.tar.gz
/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
/dmpd090-vendor.tar.gz
/dmpd090-vendor2.tar.gz
/dmpd090-vendor3.tar.gz
/v1.0.2.tar.gz
/dmpd102-vendor.tar.gz
/v1.0.4.tar.gz
/dmpd104-vendor.tar.gz
/v1.0.5.tar.gz
/dmpd105-vendor.tar.gz
/v1.0.6.tar.gz
/dmpd106-vendor.tar.gz
/v1.0.9.tar.gz
/dmpd109-vendor.tar.gz
/v1.0.11.tar.gz
/dmpd1011-vendor.tar.gz
/v1.0.12.tar.gz
/dmpd1012-vendor.tar.gz
/v1.1.0.tar.gz
/dmpd110-vendor.tar.gz
/v1.2.1.tar.gz
/dmpd121-vendor.tar.gz
/v1.3.0.tar.gz
/dmpd130-vendor.tar.gz
/v1.3.1.tar.gz
/dmpd131-vendor.tar.gz

54
README.md Normal file
View file

@ -0,0 +1,54 @@
# Packaging device-mapper-persitent-data (AKA dmpd)
This is rust package using *vendor* file for dependencies. (Vendor file is an archive of dependencies' sources.)
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`.
Alternatively before committing anything use `fedpkg srpm` and `fedpkg scratch-build --srpm $SRPM [--arches x86_64]` to create a scratch build.
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.
## 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/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`
## TODO/NOTES
Some of the dependencies are already packaged by Fedora. Can we instruct *cargo vendor* to include only those which are not provided by Fedora?
It would be possible to include these as submodules, and the rest could be used from Fedora.
For RHEL and CentOS Stream using vendor file is the recommended way.
*%cargo_install* installs by default in */usr/bin* but the package expects */usr/sbin*. For now I run *make install-rust-tools*.
Now Fedora unified the */usr/sbin* and */usr/bin* directories, to this can be "fixed" in Fedora and later in CentOS Stream.

View file

@ -1,116 +0,0 @@
--- thin-provisioning-tools-0.4.1/man8/era_restore.8.orig 2014-10-28 14:24:43.356272471 +0100
+++ thin-provisioning-tools-0.4.1/man8/era_restore.8 2014-10-28 14:28:56.358133852 +0100
@@ -0,0 +1,63 @@
+.TH ERA_RESTORE 8 "Thin Provisioning Tools" "Red Hat, Inc." \" -*- nroff -*-
+.SH NAME
+era_restore \- restore era metadata file to device or file
+
+.SH SYNOPSIS
+.B era_restore
+.RB [ options ]
+.RB -i
+.I {device|file}
+.RB -o
+.I {device|file}
+
+.SH DESCRIPTION
+.B era_restore
+restores binary era metadata created by the
+respective device-mapper target dumped into an XML formatted (see
+.BR era_dump(8) )
+.I file
+, which optionally can be preprocessed before the restore to another
+.I device
+or
+.I file.
+If restored to a metadata
+.I device
+, the metadata can be processed by the device-mapper target.
+
+.IP "\fB\-q, \-\-quiet\fP"
+Suppress output messages, return only exit code.
+
+.IP "\fB\-i, \-\-input\fP \fI{device|file}\fP"
+Input file or device with metadata.
+
+.IP "\fB\-o, \-\-output\fP \fI{device|file}\fP"
+Output file or device.
+
+.IP "\fB\-h, \-\-help\fP"
+Print help and exit.
+
+.IP "\fB\-V, \-\-version\fP"
+Output version information and exit.
+
+.SH EXAMPLE
+Restores the XML formatted era metadata on file
+.B metadata
+to logical volume /dev/vg/metadata for further processing by the
+respective device-mapper target:
+.sp
+.B era_restore -i metadata -o /dev/vg/metadata
+
+.SH DIAGNOSTICS
+.B era_restore
+returns an exit code of 0 for success or 1 for error.
+
+.SH SEE ALSO
+.B era_check(8)
+.B era_dump(8)
+.B era_invaidate(8)
+.B era_restore(8)
+
+.SH AUTHOR
+Joe Thornber <ejt@redhat.com>
+.br
+Heinz Mauelshagen <HeinzM@RedHat.com>
--- thin-provisioning-tools-0.4.1/man8/cache_metadata_size.8.orig 2014-10-28 14:31:49.116087709 +0100
+++ thin-provisioning-tools-0.4.1/man8/cache_metadata_size.8 2014-10-28 14:50:29.337238755 +0100
@@ -0,0 +1,47 @@
+.TH CACHE_METADATA_SIZE 8 "Thin Provisioning Tools" "Red Hat, Inc." \" -*- nroff -*-
+.SH NAME
+cache_metadata_size \- cache metadata device/file size calculator.
+
+.SH SYNOPSIS
+.B cache_metadata_size
+.RB [ options ]
+
+.SH DESCRIPTION
+.B cache_metadata_size
+calculates the size of the cache metadata based on the block size
+of the cache device and the cache block size.
+All relates to the size of the fast device (eg, SSD), rather
+than the whole cached (i.e. origin) device.
+
+.IP "\fB\\-\-block\-size <sectors>\fP
+Block size of cache in units of sectors.
+
+.IP "\fB\\-\-device\-size <sectors>\fP
+Device size of the cache device in units of sectors.
+
+.IP "\fB\\-\-nr\-blocks <natural>\fP
+Capacity of the cache in number of blocks.
+
+.IP "\fB\-h, \-\-help\fP"
+Print help and exit.
+
+.IP "\fB\-V, \-\-version\fP"
+Output version information and exit.
+
+.SH EXAMPLES
+Calculates the cache metadata device size for block size 256 sectors.and device size of 2GiB
+.sp
+.B cache_metadata_size --block-size 256 --device-size $((2*1024*1024))
+
+.SH DIAGNOSTICS
+.B cache_metadata_size
+returns an exit code of 0 for success or 1 for error.
+
+.SH SEE ALSO
+.B cache_check(8)
+.B cache_dump(8)
+.B cache_repair(8)
+.B cache_restore(8)
+
+.SH AUTHOR
+Heinz Mauelshagen <HeinzM@RedHat.com>

View file

@ -1,8 +1,12 @@
diff -purN thin-provisioning-tools-0.6.0.orig/Makefile.in thin-provisioning-tools-0.6.0.new/Makefile.in
--- thin-provisioning-tools-0.6.0.orig/Makefile.in 2016-01-20 16:43:21.000000000 +0100
+++ thin-provisioning-tools-0.6.0.new/Makefile.in 2016-01-20 17:26:11.943664295 +0100
@@ -174,7 +174,6 @@ distclean: clean
install: bin/pdata_tools
Makefile.in | 1 -
1 file changed, 1 deletion(-)
diff --git a/Makefile.in b/Makefile.in
index 0aa9401..0f4f7cb 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -262,7 +262,6 @@ MANPAGES:=$(patsubst %,man8/%.8,$(TOOLS))
install: bin/pdata_tools $(MANPAGES)
$(INSTALL_DIR) $(BINDIR)
$(INSTALL_PROGRAM) bin/pdata_tools $(BINDIR)
- $(STRIP) $(BINDIR)/pdata_tools

View file

@ -1,15 +0,0 @@
--- thin-provisioning-tools-0.4.1/man8/thin_check.8.orig 2014-10-28 14:19:02.800420873 +0100
+++ thin-provisioning-tools-0.4.1/man8/thin_check.8 2014-10-28 14:19:47.335924554 +0100
@@ -25,6 +25,12 @@
.IP "\fB\-V, \-\-version\fP"
Output version information and exit.
+.IP "\fB\-\-clear\-needs\-check\-flag\fP"
+Clear the needs-check-flag in case the check of the thin pool metadata succeeded.
+If the metadata check failed, the flag is not cleared and a thin_repair run is
+needed to fix any issues.
+After thin_repair succeeded, you may run thin_check again.
+
.IP "\fB\-\-super\-block\-only\fP"
Only check the superblock is present.

View file

@ -1,25 +1,38 @@
#
# Copyright (C) 2011-2016 Red Hat, Inc
# Copyright (C) 2011-2017 Red Hat, Inc
#
%bcond_without check
#%%global debug_package %%{nil}
%define pre_release_upstream -rc5
%define pre_release rc5
#%%global version_suffix -rc2
#%%global release_suffix .test3
Summary: Device-mapper Persistent Data Tools
Name: device-mapper-persistent-data
Version: 0.6.2
Release: 0.1.%{pre_release}%{?dist}
License: GPLv3+
Group: System Environment/Base
URL: https://github.com/jthornber/thin-provisioning-tools
Source0: https://github.com/jthornber/thin-provisioning-tools/archive/thin-provisioning-tools-%{version}%{pre_release_upstream}.tar.gz
# Source1: https://github.com/jthornber/thin-provisioning-tools/archive/v%{version}.tar.gz
Patch0: device-mapper-persistent-data-document-clear-needs-check-flag.patch
Patch1: device-mapper-persistent-data-add-era_restore-and-cache_metadata_size-man-pages.patch
Patch2: device-mapper-persistent-data-avoid-strip.patch
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)
BuildRequires: autoconf, expat-devel, libaio-devel, libstdc++-devel, boost-devel
Requires: expat
#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: dmpd131-vendor.tar.gz
%if %{defined rhel}
BuildRequires: rust-toolset
%else
BuildRequires: rust-packaging
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
@ -30,61 +43,303 @@ are included and era check, dump, restore and invalidate to manage
snapshot eras
%prep
%setup -q -n thin-provisioning-tools-%{version}%{pre_release_upstream}
%patch0 -p1 -b .clear_needs_check_flag
%patch1 -p1 -b .man_pages
%patch2 -p1 -b .avoid_strip
%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
%build
autoconf
%configure --with-optimisation=
make %{?_smp_mflags} V=
#make %{?_smp_mflags} V=
%cargo_build
%cargo_license_summary
%{cargo_license} > LICENSE.dependencies
%cargo_vendor_manifest
%install
make DESTDIR=%{buildroot} MANDIR=%{_mandir} install
# TODO: Check that MANDIR is unused and remove
%make_install STRIP=true MANDIR=%{_mandir} BINDIR=%{buildroot}%{_sbindir}
%clean
%if %{with check}
%check
%cargo_test
#cargo test --test thin_shrink -- --nocapture --test-threads=1
%endif
%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_restore.8.gz
%{_mandir}/man8/cache_metadata_size.8.gz
%{_mandir}/man8/cache_repair.8.gz
%{_mandir}/man8/cache_restore.8.gz
%{_mandir}/man8/cache_writeback.8.gz
%{_mandir}/man8/era_check.8.gz
%{_mandir}/man8/era_dump.8.gz
%{_mandir}/man8/era_invalidate.8.gz
%{_mandir}/man8/era_restore.8.gz
%{_mandir}/man8/thin_check.8.gz
%{_mandir}/man8/thin_delta.8.gz
%{_mandir}/man8/thin_dump.8.gz
%{_mandir}/man8/thin_ls.8.gz
%{_mandir}/man8/thin_metadata_size.8.gz
%{_mandir}/man8/thin_restore.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
%{_mandir}/man8/thin_trim.8.gz
%{_mandir}/man8/thin_metadata_pack.8.gz
%{_mandir}/man8/thin_metadata_unpack.8.gz
%{_sbindir}/pdata_tools
%{_sbindir}/cache_check
%{_sbindir}/cache_dump
%{_sbindir}/cache_metadata_size
%{_sbindir}/cache_restore
%{_sbindir}/cache_repair
%{_sbindir}/cache_restore
%{_sbindir}/cache_writeback
%{_sbindir}/era_check
%{_sbindir}/era_dump
%{_sbindir}/era_restore
%{_sbindir}/era_invalidate
%{_sbindir}/era_restore
%{_sbindir}/thin_check
%{_sbindir}/thin_delta
%{_sbindir}/thin_dump
%{_sbindir}/thin_ls
%{_sbindir}/thin_metadata_size
%{_sbindir}/thin_restore
%{_sbindir}/thin_migrate
%{_sbindir}/thin_repair
%{_sbindir}/thin_restore
%{_sbindir}/thin_rmap
%{_sbindir}/thin_trim
%{_sbindir}/thin_metadata_pack
%{_sbindir}/thin_metadata_unpack
#% {_sbindir}/thin_show_duplicates
%changelog
* Tue Dec 02 2025 Marian Csontos <mcsontos@redhat.com> - 1.3.1-1
- Update to latest upstream release 1.3.1.
* Wed Oct 22 2025 Marian Csontos <mcsontos@redhat.com> - 1.3.0-1
- Update to latest upstream release 1.3.0.
* Thu Sep 04 2025 Marian Csontos <mcsontos@redhat.com> - 1.2.1-1
- Update to latest upstream release 1.2.1.
* Wed Jul 23 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.1.0-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
* Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.1.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
* Sun Jan 12 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.1.0-2
- Rebuilt for the bin-sbin merge (2nd attempt)
* Mon Sep 02 2024 Marian Csontos <mcsontos@redhat.com> - 1.1.0-1
- Update to latest upstream release 1.1.0.
* Wed Jul 17 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.12-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
* Tue Jul 09 2024 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.0.12-2
- Rebuilt for the bin-sbin merge
* Tue Feb 27 2024 Marian Csontos <mcsontos@redhat.com> - 1.0.12-1
- Update to latest upstream release 1.0.12.
* Tue Feb 13 2024 Marian Csontos <mcsontos@redhat.com> - 1.0.11-4
- Add licenses for statically linked libraries.
* Tue Feb 13 2024 Marian Csontos <mcsontos@redhat.com> - 1.0.11-3
- SPDX migration
* Thu Feb 08 2024 Yaakov Selkowitz <yselkowi@redhat.com> - 1.0.11-2
- Update Rust macro usage
* Thu Feb 08 2024 Marian Csontos <mcsontos@redhat.com> - 1.0.11-1
- Update to latest upstream release 1.0.11.
* Wed Jan 24 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.9-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Fri Jan 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.9-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Mon Dec 11 2023 Marian Csontos <mcsontos@redhat.com> - 1.0.9-1
- Update to latest upstream release 1.0.9.
* Thu Aug 31 2023 Marian Csontos <mcsontos@redhat.com> - 1.0.6-2
- Fix broken installation on ppc64le caused by incorrect ioctl call.
* Wed Aug 09 2023 Marian Csontos <mcsontos@redhat.com> - 1.0.6-1
- Update to latest upstream release 1.0.6.
* Thu Jul 27 2023 Marian Csontos <mcsontos@redhat.com> - 1.0.5-1
- Update to latest upstream release 1.0.5.
* Wed Jul 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.4-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Tue May 30 2023 Yaakov Selkowitz <yselkowi@redhat.com> - 1.0.4-2
- Use rust-toolset in RHEL builds
* Fri Apr 28 2023 Marian Csontos <mcsontos@redhat.com> - 1.0.4-1
- Update to latest upstream release 1.0.4.
* Wed Mar 22 2023 Marian Csontos <mcsontos@redhat.com> - 1.0.3-1
- Update to latest upstream release 1.0.3.
* Sun Feb 05 2023 Fabio Valentini <decathorpe@gmail.com> - 0.9.0-10
- Rebuild for fixed frame pointer compiler flags in Rust RPM macros.
* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 0.9.0-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Thu Jul 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 0.9.0-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Thu Jan 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 0.9.0-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Thu Jul 22 2021 Marian Csontos <mcsontos@redhat.com> - 0.9.0-6
- Fix rust-1.53 compilation issues.
* Wed Jul 21 2021 Fedora Release Engineering <releng@fedoraproject.org> - 0.9.0-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Thu Jun 10 2021 Marian Csontos <mcsontos@redhat.com> - 0.9.0-4
- Fix gating test syntax.
- Fix important issues found by static analysis.
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 0.9.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Mon Sep 21 2020 Marian Csontos <mcsontos@redhat.com> - 0.9.0-2
- Update crc32c to version 0.5 supporting non x86 architectures
* Thu Sep 17 2020 Marian Csontos <mcsontos@redhat.com> - 0.9.0-1
- Update to latest upstream version
- New tools thin_metadata_pack and thin_metadata_unpack
* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.8.5-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Tue Jan 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.8.5-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Wed Jul 24 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.8.5-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Tue Jun 04 2019 Marian Csontos <mcsontos@redhat.com> - 0.8.5-1
- Update to latest upstream version
* Sat May 04 2019 Marian Csontos <mcsontos@redhat.com> - 0.8.1-1
- Fix thin_repair should not require --repair option.
* Mon Apr 29 2019 Marian Csontos <mcsontos@redhat.com> - 0.8.0-1
- Update to latest upstream version
* Thu Jan 31 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.7.6-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Fri Jan 25 2019 Jonathan Wakely <jwakely@redhat.com> - 0.7.6-3
- Rebuilt for Boost 1.69
* Thu Jul 12 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.7.6-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Tue Apr 24 2018 Marian Csontos <mcsontos@redhat.com> - 0.7.6-1
- Update to latest upstream version
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.7.5-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
* Tue Jan 23 2018 Jonathan Wakely <jwakely@redhat.com> - 0.7.5-2
- Rebuilt for Boost 1.66
* Tue Nov 14 2017 Marian Csontos <mcsontos@redhat.com> - 0.7.5-1
- Fix version 2 metadata corruption in cache_restore.
* Fri Oct 06 2017 Marian Csontos <mcsontos@redhat.com> - 0.7.3-1
- Update to latest bugfix and documentation update release.
- *_restore tools wipe superblock as a last resort.
- Add thin_check --override-mapping-root.
* Fri Sep 22 2017 Marian Csontos <mcsontos@redhat.com> - 0.7.2-1
- Update to latest upstream release including various bug fixes and new features.
- Fix segfault when dump tools are given a tiny metadata file.
- Fix -V exiting with 1.
- Fix thin_check when running on XML dump instead of binary data.
- Speed up free block searching.
* Wed Aug 02 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.7.0-0.6.rc6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.7.0-0.5.rc6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
* Mon Jul 03 2017 Jonathan Wakely <jwakely@redhat.com> - 0.7.0-0.4.rc6
- Rebuilt for Boost 1.64
* Tue May 23 2017 Marian Csontos <mcsontos@redhat.com> - 0.7.0-0.3.rc6
- Rebuilt for mass rebuild incorrectly tagging master to .fc26
* Mon May 15 2017 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.7.0-0.2.rc6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_27_Mass_Rebuild
* Mon Mar 27 2017 Peter Rajnoha <prajnoha@redhat.com> - 0.7.0-0.1-rc6
- Don't open devices as writeable if --clear-needs-check-flag is not set.
- Fix cache metadata format version 2 superblock packing.
* Wed Mar 22 2017 Peter Rajnoha <prajnoha@redhat.com> - 0.7.0-0.1-rc5
- Switch to a faster implementation of crc32 used for checksums.
* Tue Mar 21 2017 Peter Rajnoha <prajnoha@redhat.com> - 0.7.0-0.1-rc4
- Add support for cache metadata format version 2 in cache tools.
* Thu Mar 16 2017 Peter Rajnoha <prajnoha@redhat.com> - 0.7.0-0.1-rc3
- Fix compilation warnings and further code cleanup.
* Thu Mar 09 2017 Peter Rajnoha <prajnoha@redhat.com> - 0.7.0-0.1-rc2
- Update to latest upstream release including various bug fixes and new features.
- New thin_show_duplicates command.
- Add '--skip-mappings' and '--format custom' options to thin_dump.
* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.6.3-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
* Fri Jan 27 2017 Jonathan Wakely <jwakely@redhat.com> - 0.6.3-2
- Rebuilt for Boost 1.63
* Thu Sep 22 2016 Peter Rajnoha <prajnoha@redhat.com> - 0.6.3-1
- Preallocate output file for thin_repair and thin_restore.
* Mon Jul 11 2016 Peter Rajnoha <prajnoha@redhat.com> - 0.6.2-1
- Fixes providing proper use of compiler flags.
* Mon Apr 11 2016 Peter Rajnoha <prajnoha@redhat.com> - 0.6.2-0.1.rc8
- Fixes for thin_trim.
* Tue Mar 22 2016 Peter Rajnoha <prajnoha@redhat.com> - 0.6.2-0.1.rc7
- Fixes for thin_repair.
* Wed Mar 09 2016 Peter Rajnoha <prajnoha@redhat.com> - 0.6.2-0.1.rc6
- Add new fields to thin_ls: MAPPED_BYTES, EXCLUSIVE_BYTES and SHARED_BYTES.
* Thu Feb 18 2016 Peter Rajnoha <prajnoha@redhat.com> - 0.6.2-0.1.rc5
- Fixes for thin_delta.

View file

@ -1 +1,2 @@
5c35bdb6654208f688e5d236e9b98fb4 thin-provisioning-tools-0.6.2-rc5.tar.gz
SHA512 (v1.3.1.tar.gz) = ff0758b21b50702568cad88522ee4c2b6b4433cec0a5f5074c9d1791c13e630e5c516601d7a68c51ac34e036091fc82fe831dbe51e6776737571d90ed266878e
SHA512 (dmpd131-vendor.tar.gz) = 0e1b8e501e330b64415c9097c94dfc1f1b43d2900a66258e40b6c8f28c51fd61247d60495f594f14550fb349ed4ad435f8959a8808fea1d363a206c5ead7db1e

View file

@ -0,0 +1,75 @@
# Copyright (c) 2006 Red Hat, Inc. All rights reserved. This copyrighted material
# is made available to anyone wishing to use, modify, copy, or
# redistribute it subject to the terms and conditions of the GNU General
# Public License v.2.
#
# This program is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# Author: Jakub Krysl <jkrysl@redhat.com>
# The toplevel namespace within which the test lives.
TOPLEVEL_NAMESPACE=kernel
# The name of the package under test:
PACKAGE_NAME=storage
# The path of the test below the package:
RELATIVE_PATH=lvm/device-mapper-persistent-data/thin
# Version of the Test. Used with make tag.
export TESTVERSION=1.0
# The combined namespace of the test.
export TEST=/$(TOPLEVEL_NAMESPACE)/$(PACKAGE_NAME)/$(RELATIVE_PATH)
# A phony target is one that is not really the name of a file.
# It is just a name for some commands to be executed when you
# make an explicit request. There are two reasons to use a
# phony target: to avoid a conflict with a file of the same
# name, and to improve performance.
.PHONY: all install download clean
# executables to be built should be added here, they will be generated on the system under test.
BUILT_FILES=
# data files, .c files, scripts anything needed to either compile the test and/or run it.
FILES=$(METADATA) runtest.sh PURPOSE testinfo.desc dmpd_functions.py dmpd_library.py Makefile
run: $(FILES) build
./runtest.sh
build: $(BUILT_FILES)
chmod a+x ./runtest.sh
clean:
rm -f *~ *.rpm $(BUILT_FILES)
# You may need to add other targets e.g. to build executables from source code
# Add them here:
# Include Common Makefile
include /usr/share/rhts/lib/rhts-make.include
# Generate the testinfo.desc here:
$(METADATA): Makefile
@touch $(METADATA)
# Change to the test owner's name
@echo "Owner: Filip Suba <fsuba@redhat.com>" > $(METADATA)
@echo "Name: $(TEST)" >> $(METADATA)
@echo "Path: $(TEST_DIR)" >> $(METADATA)
@echo "License: GPL" >> $(METADATA)
@echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
@echo "Description: Testing thin tools provided by device-mapper-persistent-data">> $(METADATA)
@echo "TestTime: 1h" >> $(METADATA)
@echo "RunFor: $(PACKAGE_NAME)" >> $(METADATA)
@echo "Requires: $(PACKAGE_NAME)" >> $(METADATA)
rhts-lint $(METADATA)

View file

@ -0,0 +1,30 @@
#===========================================================================
#
# PURPOSE file for:
# /kernel/storage/lvm/device-mapper-persistent-data/thin
#
# Description:
# Testing thin tools provided by device-mapper-persistent-data
#
# Bugs related:
#
#
# Author(s):
# Jakub Krysl
# <jkrysl@redhat.com>
#
#===========================================================================
# Note:
# As with some of Storage tests, at the end of the test it will check
# for errors on the logs.
# This check if implemented on /kernel/storage/include/python_modules
# LogChecker.py module
#
# To avoid Storage tests reporting error that were caused before the test
# started to run is recommended to run /kernel/storage/misc/log_checker
# just before running this test
#===========================================================================
# This task takes optional parameters:
#
#===========================================================================
# EndFile

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

18
tests/functions_test/runtest.sh Executable file
View file

@ -0,0 +1,18 @@
#!/bin/sh
# Copyright (c) 2017 Red Hat, Inc. All rights reserved. This copyrighted
# material is made available to anyone wishing to use, modify, copy, or
# redistribute it subject to the terms and conditions of the GNU General
# Public License v.2.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
# USA.
#
# Author: Jakub Krysl <jkrysl@redhat.com>
rhts-run-simple-test functions_test ./dmpd_functions.py

26
tests/tests.yml Normal file
View file

@ -0,0 +1,26 @@
---
# Tests suitable to run in classic environment
- hosts: localhost
roles:
- role: standard-test-beakerlib
tags:
- classic
tests:
- tools_not_linked_usr
- functions_test
required_packages:
- findutils # beakerlib needs find command
- which # tools_not_linked_usr needs which command
# Tests suitable to run in container and atomic environments
- hosts: localhost
roles:
- role: standard-test-beakerlib
tags:
- container
- atomic
tests:
- tools_not_linked_usr
required_packages:
- findutils # beakerlib needs find command
- which # tools_not_linked_usr needs which command

View file

@ -0,0 +1,75 @@
# Copyright (c) 2006 Red Hat, Inc. All rights reserved. This copyrighted material
# is made available to anyone wishing to use, modify, copy, or
# redistribute it subject to the terms and conditions of the GNU General
# Public License v.2.
#
# This program is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; If not, see http://www.gnu.org/licenses/.
#
# Author: Bruno Goncalves <bgoncalv@redhat.com>
# The toplevel namespace within which the test lives.
TOPLEVEL_NAMESPACE=kernel
# The name of the package under test:
PACKAGE_NAME=storage
# The path of the test below the package:
RELATIVE_PATH=lvm/device-mapper-persistent-data/tools_not_linked_usr
# Version of the Test. Used with make tag.
export TESTVERSION=1.0
# The combined namespace of the test.
export TEST=/$(TOPLEVEL_NAMESPACE)/$(PACKAGE_NAME)/$(RELATIVE_PATH)
# A phony target is one that is not really the name of a file.
# It is just a name for some commands to be executed when you
# make an explicit request. There are two reasons to use a
# phony target: to avoid a conflict with a file of the same
# name, and to improve performance.
.PHONY: all install download clean
# executables to be built should be added here, they will be generated on the system under test.
BUILT_FILES=
# data files, .c files, scripts anything needed to either compile the test and/or run it.
FILES=$(METADATA) runtest.sh PURPOSE tools_not_linked_usr.py
run: $(FILES) build
./runtest.sh
build: $(BUILT_FILES)
chmod a+x ./runtest.sh
chmod a+x ./tools_not_linked_usr.py
clean:
rm -f *~ *.rpm $(BUILT_FILES)
# You may need to add other targets e.g. to build executables from source code
# Add them here:
# Include Common Makefile
include /usr/share/rhts/lib/rhts-make.include
# Generate the testinfo.desc here:
$(METADATA): Makefile
@touch $(METADATA)
# Change to the test owner's name
@echo "Owner: Bruno Goncalves <bgoncalv@redhat.com>" > $(METADATA)
@echo "Name: $(TEST)" >> $(METADATA)
@echo "Path: $(TEST_DIR)" >> $(METADATA)
@echo "License: GPL" >> $(METADATA)
@echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
@echo "Description: Make sure tools are not linked to lib under /usr.">> $(METADATA)
@echo "TestTime: 1h" >> $(METADATA)
@echo "RunFor: $(PACKAGE_NAME)" >> $(METADATA)
@echo "Requires: $(PACKAGE_NAME)" >> $(METADATA)
rhts-lint $(METADATA)

View file

@ -0,0 +1,13 @@
#===========================================================================
#
# Description:
# Make sure tools are not using any library that is linked to /usr
#
# Bugs related:
#
# Author(s):
# Bruno Goncalves
# <bgoncalv@redhat.com>
#
#===========================================================================
# EndFile

View file

@ -0,0 +1,18 @@
#!/bin/sh
# Copyright (c) 2006 Red Hat, Inc. All rights reserved. This copyrighted
# material is made available to anyone wishing to use, modify, copy, or
# redistribute it subject to the terms and conditions of the GNU General
# Public License v.2.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
# USA.
#
# Author: Bruno Goncalves <bgoncalv@redhat.com>
rhts-run-simple-test tools_not_linked_usr ./tools_not_linked_usr.py

View file

@ -0,0 +1,95 @@
#!/usr/bin/python
# Copyright (c) 2006 Red Hat, Inc. All rights reserved. This copyrighted material
# is made available to anyone wishing to use, modify, copy, or
# redistribute it subject to the terms and conditions of the GNU General
# Public License v.2.
#
# This program is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; If not, see http://www.gnu.org/licenses/.
#
# Author: Bruno Goncalves <bgoncalv@redhat.com>
import subprocess
import sys
import re
def run(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.decode('ascii', 'ignore') + stderr.decode('ascii', 'ignore')
# remove new line from last line
output = output.rstrip()
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 "
"are not linked to /usr")
#Paths where we should have no libraries linked from
lib_paths = ["/usr/"]
package = "device-mapper-persistent-data"
run("yum install -y %s" % package)
#Get all tools that we need to check
ret, output = run("rpm -ql %s | grep \"sbin/\"" % package)
if ret != 0:
print("FAIL: Could not get the tools shipped from %s" % package)
return False
tools = output.split("\n")
error = False
for tool in tools:
if not tool:
#skip any blank line
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))
ret, linked_lib = run("ldd %s" % tool)
if ret != 0:
print("FAIL: Could not list dynamically libraries for %s" % (tool))
tool_error += 1
else:
#The command executed sucessfuly
#check if any library linked is from lib_path
links = linked_lib.split("\n")
for link in links:
if re.match(".*%s.*" % lib_path, link):
print("FAIL: %s is linked to %s" % (tool, link))
tool_error += 1
if tool_error == 0:
print("%s is not linked to %s" % (tool, lib_path))
else:
#found some error in at least 1 tool
error = True
if error:
return False
return True
def main():
if not start_test():
print("FAIL: test failed")
sys.exit(1)
print("PASS: Test pass")
sys.exit(0)
main()