Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package thin-provisioning-tools for
openSUSE:Factory checked in at 2026-08-17 16:55:33
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/thin-provisioning-tools (Old)
and /work/SRC/openSUSE:Factory/.thin-provisioning-tools.new.1258 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "thin-provisioning-tools"
Mon Aug 17 16:55:33 2026 rev:36 rq:1371324 version:1.3.3
Changes:
--------
---
/work/SRC/openSUSE:Factory/thin-provisioning-tools/thin-provisioning-tools.changes
2026-06-25 10:51:59.774554017 +0200
+++
/work/SRC/openSUSE:Factory/.thin-provisioning-tools.new.1258/thin-provisioning-tools.changes
2026-08-17 16:55:37.064900622 +0200
@@ -1,0 +2,18 @@
+Sat Aug 15 20:08:48 UTC 2026 - Martin Pluskal <[email protected]>
+
+- Refresh the vendored Rust crates: 62 changed version, two
+ added (jiff-core, palette_math), three dropped (fast-srgb8 and
+ the proc-macro-error2 pair); upstream sources are unchanged.
+- Re-derive License from the crates actually linked into the
+ shipped binary: Apache-2.0 AND GPL-3.0-only AND MIT AND
+ MPL-2.0 AND Unicode-3.0, and install each linked crate's
+ licence text next to COPYING.
+- Move %check into a separate "test" multibuild flavour, so a
+ test failure no longer blocks the binaries that the 88
+ dependent packages build against.
+- Add thin-provisioning-tools-tests-clap-single-alias.patch: the
+ refreshed clap renders "alias" instead of "aliases" for a single
+ alias, which broke two hardcoded thin_delta help assertions
+ (gh#jthornber/thin-provisioning-tools#328).
+
+-------------------------------------------------------------------
New:
----
_multibuild
thin-provisioning-tools-tests-clap-single-alias.patch
----------(New B)----------
New: dependent packages build against.
- Add thin-provisioning-tools-tests-clap-single-alias.patch: the
refreshed clap renders "alias" instead of "aliases" for a single
----------(New E)----------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ thin-provisioning-tools.spec ++++++
--- /var/tmp/diff_new_pack.FqOUUX/_old 2026-08-17 16:55:38.629955709 +0200
+++ /var/tmp/diff_new_pack.FqOUUX/_new 2026-08-17 16:55:38.635955920 +0200
@@ -16,38 +16,127 @@
#
-Name: thin-provisioning-tools
+%global flavor @BUILD_FLAVOR@%{nil}
+%if "%{flavor}" == "test"
+%define psuffix -test
+%global debug_package %{nil}
+%bcond_without test
+%else
+%define psuffix %{nil}
+%bcond_with test
+%endif
+%define origname thin-provisioning-tools
+Name: %{origname}%{psuffix}
Version: 1.3.3
Release: 0
Summary: Thin Provisioning Tools
-License: GPL-3.0-only
+# Legal-Review-Notice: upstream itself is GPL-3.0-only (COPYING), but every
+# shipped tool is a symlink to one statically linked Rust binary
+# (pdata_tools), so the binary also contains the vendored crates.
+# Re-derived on this re-vendor with "cargo tree --offline -p thinp -e normal"
+# over the refreshed vendor.tar.zst: 77 of the 212 vendored crates are
+# actually linked. Build-only and dev-only crates are deliberately excluded
+# because their code is not in the binary - notably bindgen (BSD-3-Clause),
+# clang-sys (Apache-2.0) and libloading (ISC), which devicemapper-sys uses
+# only to generate FFI bindings at build time, and r-efi, whose
+# LGPL-2.1-or-later option is UEFI-target-only and absent from the Linux
+# graph.
+# Where a crate offers a choice we elect MIT: it is on offer from every
+# dual/multi-licensed crate in the linked set, so a single election covers
+# all of them and no Zlib, 0BSD, BSD-2-Clause, Unlicense or BSL-1.0
+# obligation is taken on. Only the unavoidable licences are declared:
+# - GPL-3.0-only upstream itself
+# - MIT 12 crates offering nothing else (console, data-encoding,
+# indicatif, libudev-sys, nix, nom, quick-xml, retry,
+# simd-adler32, strsim, udev, unit-prefix), plus every
+# crate for which MIT was elected
+# - Apache-2.0 exitcode 1.1.2, which offers no alternative
+# - MPL-2.0 devicemapper 0.34.8 and devicemapper-sys 0.3.3, reached
+# through the thin_migrate tool
+# - Unicode-3.0 unicode-ident 1.0.24, whose expression is an AND
+# Compatibility, flagged rather than silently assumed: Apache-2.0 and
+# MPL-2.0 are each one-way compatible with GPLv3, so the combined binary is
+# distributable and is effectively GPL-3.0-only as a whole; the reverse
+# direction is not claimed. MPL-2.0 section 3.2 source availability is
+# satisfied because the complete vendor.tar.zst ships in the src.rpm.
+# The licence text of every linked crate that ships one is installed below
+# %%{_defaultlicensedir} (crc32c 0.6.8 declares MIT OR Apache-2.0 but ships
+# no licence file of its own).
+License: Apache-2.0 AND GPL-3.0-only AND MIT AND MPL-2.0 AND Unicode-3.0
URL: https://github.com/jthornber/thin-provisioning-tools/
-Source0: %{name}-%{version}.tar.zst
+Source0: %{origname}-%{version}.tar.zst
Source1: vendor.tar.zst
+# PATCH-FIX-UPSTREAM thin-provisioning-tools-tests-clap-single-alias.patch
gh#jthornber/thin-provisioning-tools#328
+# clap 4.6.2 renders "alias" rather than "aliases" for an option with
+# exactly one alias, and tests/thin_delta.rs hardcodes the old wording.
+# Upstream CI never sees it because it builds from the committed
+# Cargo.lock, which pins clap 4.6.1; we re-resolve (cargo_vendor
+# update=true), so we get the newer clap and the two help assertions fail.
+Patch0: thin-provisioning-tools-tests-clap-single-alias.patch
BuildRequires: cargo-packaging
BuildRequires: clang-devel
BuildRequires: pkgconfig
-BuildRequires: suse-module-tools
BuildRequires: pkgconfig(devmapper)
BuildRequires: pkgconfig(libudev)
+# Everything below is main-flavour only. The test flavour builds no binary
+# package at all, so guard the declarations themselves and not just %%files:
+# rpmbuild would drop a package that has no %%files, but OBS reads the
+# declarations when it schedules, and an unguarded one would advertise a
+# competing provider of thin-provisioning-tools from the test flavour.
+%if %{without test}
+BuildRequires: fdupes
+BuildRequires: suse-module-tools
Requires(post): coreutils
Requires(postun): coreutils
Conflicts: device-mapper < 1.02.115
+%endif
%description
A suite of tools for thin provisioning on Linux.
%prep
-%autosetup -a1
+%autosetup -p1 -a1 -n %{origname}-%{version}
%build
+%if %{without test}
%{cargo_build}
+%endif
+%if %{with test}
+%check
+# %%check was 267s of a 376s build (71%%), and 88 packages build-depend on
+# this, so a test flake stalled a large fan-out. It now runs in its own
+# flavour, which builds no binary package. Note there is no %%build here on
+# purpose: cargo test compiles in the test profile anyway, so running
+# %%cargo_build first would only add a throwaway release compile.
+%{cargo_test}
+%endif
+
+%if %{without test}
%install
make install STRIP="/bin/true" MANPATH=%{buildroot}%{_mandir}
BINDIR=%{buildroot}%{_sbindir}
-%check
-%{cargo_test}
+# The binary statically links the vendored crates, and MIT and Apache-2.0
+# both require their notice to travel with it, while upstream's COPYING
+# covers only the GPL-3.0 part. Ship the licence text of each crate that is
+# genuinely linked; the list is derived at build time so it cannot go stale
+# across a re-vendor. Installed straight into the buildroot rather than
+# staged for %%license, so that %%fdupes can collapse the many byte-identical
+# copies of the stock Apache-2.0 and MIT texts (~500 KB of pure duplication
+# otherwise, which rpmlint scores as files-duplicated-waste).
+install -Dpm 0644 COPYING %{buildroot}%{_defaultlicensedir}/%{origname}/COPYING
+cargo tree --offline --quiet -e normal --prefix none \
+ | awk 'NF >= 2 { print $1 "-" substr($2, 2) }' | sort -u >
vendor-licenses.list
+test -s vendor-licenses.list
+while read -r crate; do
+ test -d "vendor/$crate" || continue
+ for f in "vendor/$crate"/LICENSE* "vendor/$crate"/COPYING* \
+ "vendor/$crate"/NOTICE* "vendor/$crate"/UNLICENSE*; do
+ test -f "$f" && install -Dpm 0644 "$f" \
+
"%{buildroot}%{_defaultlicensedir}/%{origname}/vendor/$crate/${f##*/}"
+ done
+done < vendor-licenses.list
+%fdupes %{buildroot}%{_defaultlicensedir}/%{origname}/vendor
%post
%{?regenerate_initrd_post}
@@ -60,7 +149,7 @@
%files
%doc README.md
-%license COPYING
+%license %{_defaultlicensedir}/%{origname}
%{_sbindir}/cache_check
%{_sbindir}/cache_dump
%{_sbindir}/cache_metadata_size
@@ -106,4 +195,5 @@
%{_mandir}/man8/thin_restore.8%{?ext_man}
%{_mandir}/man8/thin_rmap.8%{?ext_man}
%{_mandir}/man8/thin_trim.8%{?ext_man}
+%endif
++++++ _multibuild ++++++
<multibuild>
<flavor>test</flavor>
</multibuild>
++++++ thin-provisioning-tools-tests-clap-single-alias.patch ++++++
diff --git a/tests/thin_delta.rs b/tests/thin_delta.rs
index eb17811..26452f0 100644
--- a/tests/thin_delta.rs
+++ b/tests/thin_delta.rs
@@ -23,8 +23,8 @@ Options:
-m, --metadata-snap Use metadata snapshot
--root1 <BLOCKNR> The root block for the first thin volume to diff
--root2 <BLOCKNR> The root block for the second thin volume to diff
- --thin1 <DEV_ID> The numeric identifier for the first thin volume to
diff [aliases: --snap1]
- --thin2 <DEV_ID> The numeric identifier for the second thin volume to
diff [aliases: --snap2]
+ --thin1 <DEV_ID> The numeric identifier for the first thin volume to
diff [alias: --snap1]
+ --thin2 <DEV_ID> The numeric identifier for the second thin volume to
diff [alias: --snap2]
-V, --version Print version
--verbose Provide extra information on the mappings";
++++++ vendor.tar.zst ++++++
/work/SRC/openSUSE:Factory/thin-provisioning-tools/vendor.tar.zst
/work/SRC/openSUSE:Factory/.thin-provisioning-tools.new.1258/vendor.tar.zst
differ: char 7, line 1