Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-uv for openSUSE:Factory 
checked in at 2026-08-14 22:09:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-uv (Old)
 and      /work/SRC/openSUSE:Factory/.python-uv.new.1258 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-uv"

Fri Aug 14 22:09:19 2026 rev:113 rq:1371208 version:0.12.4

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-uv/python-uv.changes      2026-08-09 
21:40:06.476008822 +0200
+++ /work/SRC/openSUSE:Factory/.python-uv.new.1258/python-uv.changes    
2026-08-14 22:09:23.935227426 +0200
@@ -1,0 +2,69 @@
+Fri Aug 14 09:16:05 UTC 2026 - Martin Pluskal <[email protected]>
+
+- Add a _multibuild "test" flavour that runs the Rust test suite:
+  * The package had no check section at all, so this is added
+    coverage; the main flavour is untouched and still builds the
+    same six packages with the same content
+  * The test flavour needs no Python: it skips the singlespec
+    machinery and declares no subpackages, no Provides and no
+    files, so it produces only a src.rpm and advertises nothing
+  * It runs cargo test over 67 of the 70 workspace members
+  * Excluded uv, whose CLI integration suite resolves against the
+    real package index and downloads managed CPython interpreters,
+    neither of which is available in a build chroot
+  * Excluded uv-dev, whose sysconfig-mapping test downloads
+    cpython-unix/targets.yml from the python-build-standalone
+    repository
+  * Excluded uv-build-backend, which panics inside insta with "does
+    not allow inline snapshot assertions in loops"; upstream runs
+    the suite under cargo-nextest, which isolates every test in its
+    own process, while insta's duplicate detection is process-global
+  * uv-client and uv-keyring are kept: the tests of theirs that
+    would need pypi.org or a secret-service daemon sit behind the
+    non-default test-pypi and native-auth features
+  * Runs the suite with one test thread, which is a correctness
+    requirement rather than tuning: several crates set SSL_CERT_FILE
+    or PATH process-wide from one test while another reads them,
+    which upstream avoids by running under cargo-nextest
+  * Pulls in ca-certificates-mozilla for the test flavour; without
+    any trust anchors the reqwest client constructor fails outright
+    and took 38 tests with it, none of them network tests
+  * Skips the linehaul user-agent test, which reads the distro from
+    /etc/os-release and finds none in a build chroot
+
+-------------------------------------------------------------------
+Fri Aug 14 07:42:41 UTC 2026 - Martin Pluskal <[email protected]>
+
+- Update to 0.12.4:
+  * Prefer post-quantum key exchange and add opt-in TLS diagnostics
+  * Accept whitespace before versions in noncompliant wildcard
+    comparisons such as Requires-Python: >= 3.5.*
+  * Report a specific error when a PEP 723 closing tag contains
+    trailing whitespace or other content
+  * Add uv check --no-install-project and respect
+    UV_NO_INSTALL_PROJECT to install dependencies without building
+    or installing the project (preview)
+  * Make the ty subprocess invoked by uv check honour uv's colour
+    and progress settings, including quiet mode (preview)
+  * Speed up resolutions with long runs of unavailable package
+    versions by coalescing gaps in the resolver's version ranges
+  * Speed up Simple API parsing by deserialising PyPI and Pyx file
+    metadata directly
+  * Allow uv lock to proceed when .venv is an unusable project
+    environment
+  * Respect fork-strategy when ordering forks created from
+    environments or existing lockfile resolution-markers
+  * Preserve consecutive wildcard Python minor-version exclusions
+    such as !=3.11.*, !=3.12.* in uv.lock
+  * Preserve inline comments on the final item in dependency arrays
+    when uv add updates it
+  * Fix interpreter cache reuse: recover from stale base-interpreter
+    metadata on a version mismatch, and do not reuse the cache
+    across differing PYTHONEXECUTABLE / __PYVENV_LAUNCHER__
+    overrides
+- Re-vendor the Rust dependencies: 15 crates added (the cap-std,
+  tar-codec and blake3 families), 122 updated, none removed. All
+  newly linked crates are permissive, so License is unchanged at
+  (Apache-2.0 OR MIT) AND MPL-2.0
+
+-------------------------------------------------------------------

Old:
----
  python-uv-0.12.3.tar.gz

New:
----
  _multibuild
  python-uv-0.12.4.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-uv.spec ++++++
--- /var/tmp/diff_new_pack.x5NpQ8/_old  2026-08-14 22:09:28.478394050 +0200
+++ /var/tmp/diff_new_pack.x5NpQ8/_new  2026-08-14 22:09:28.485394306 +0200
@@ -16,6 +16,16 @@
 #
 
 
+%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 python-uv
 %if 0%{?suse_version} >= 1699
 %bcond_without mold
 %else
@@ -25,14 +35,14 @@
 %if %{with mold}
 %global build_rustflags -C linker=clang -C link-arg=-fuse-ld=%{_bindir}/mold 
-C link-arg=-Wl,-z,relro,-z,now -C debuginfo=2 -C incremental=false -C 
strip=none
 %endif
-Name:           python-uv
-Version:        0.12.3
+Name:           %{origname}%{psuffix}
+Version:        0.12.4
 Release:        0
 Summary:        A Python package installer and resolver, written in Rust
 # Legal-Review-Notice: uv itself is "Apache-2.0 OR MIT", but the binary
 # statically links the vendored Rust dependencies. Re-derived on this
 # re-vendor with "cargo tree --offline -p uv -e normal" over the vendored
-# tree (672 crates); the copyleft licences in the linked graph are:
+# tree (512 crates); the copyleft licences in the linked graph are:
 #  - MPL-2.0 from astral-pubgrub, astral-version-ranges and option-ext
 #    (the last via shellexpand -> dirs -> dirs-sys),
 #  - priority-queue, which is "LGPL-3.0-or-later OR MPL-2.0" - we elect
@@ -44,22 +54,39 @@
 # the complete vendor.tar.zst ships in the src.rpm.
 License:        (Apache-2.0 OR MIT) AND MPL-2.0
 URL:            https://github.com/astral-sh/uv
-Source0:        
https://github.com/astral-sh/uv/archive/refs/tags/%{version}.tar.gz#/%{name}-%{version}.tar.gz
+Source0:        
https://github.com/astral-sh/uv/archive/refs/tags/%{version}.tar.gz#/%{origname}-%{version}.tar.gz
 Source1:        vendor.tar.zst
+BuildRequires:  cargo >= 1.95
+BuildRequires:  cargo-packaging
+BuildRequires:  cmake
+BuildRequires:  zstd
+%if %{with test}
+# A stock build chroot has no /etc/ssl/certs at all, and reqwest's
+# ClientBuilder refuses to build with no trust anchors at all
+# ("No CA certificates were loaded from the system"). That is a
+# constructor error, not a network one, so it took out 38 tests across
+# uv-auth, uv-client and uv-test that never touch the network.
+BuildRequires:  ca-certificates-mozilla
+%endif
+# The test flavour only builds and runs the Rust test suite. It needs no
+# Python at all, so it skips the singlespec machinery entirely - running
+# cargo test once per Python flavour would double the cost for no gain.
+# Every Provides/Obsoletes and every %%package declaration is guarded, not
+# just the %%files: rpmbuild would drop a subpackage that has no %%files,
+# but OBS parses the declarations for scheduling, so an unguarded one
+# would advertise a competing provider of uv from the test flavour.
+%if %{without test}
 BuildRequires:  %{python_module maturin}
 BuildRequires:  %{python_module pip}
 BuildRequires:  %{python_module tomli}
 BuildRequires:  alts
-BuildRequires:  cargo >= 1.95
-BuildRequires:  cargo-packaging
-BuildRequires:  cmake
 BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros
-BuildRequires:  zstd
 Requires:       alts
 Requires:       python3
 Obsoletes:      uv < %{version}
 Provides:       uv = %{version}
+%endif
 %if 0%{?suse_version} >= 1699
 BuildRequires:  c++_compiler
 BuildRequires:  c_compiler
@@ -73,7 +100,7 @@
 %ifarch %{ix86} x86_64
 BuildRequires:  nasm
 %endif
-
+%if %{without test}
 %package        -n uv-fish-completion
 Summary:        Fish Completion for %{name}
 Requires:       fish
@@ -108,6 +135,7 @@
 Bash command-line completion support for %{name}.
 
 %python_subpackages
+%endif
 
 %description
 uv is a Python package installer and resolver, written in Rust. Designed as a
@@ -121,6 +149,7 @@
 %endif
 
 %build
+%if %{without test}
 export CARGO_AUDITABLE="auditable"
 export CARGO_INCREMENTAL=0
 export CARGO_FEATURE_VENDORED=1
@@ -136,7 +165,53 @@
 export CARGO_PROFILE_RELEASE_SPLIT_DEBUGINFO=off
 export CARGO_PROFILE_RELEASE_STRIP=false
 %pyproject_wheel
+%endif
+
+%if %{with test}
+%check
+# The test flavour runs the Rust workspace suite: 67 of the 70 workspace
+# members. Three crates are excluded, each for a reason that no amount of
+# packaging can fix:
+#  - uv, the CLI integration suite (78 test files under crates/uv/tests).
+#    It resolves against the real package index and downloads managed
+#    CPython interpreters; an OBS build chroot has no network.
+#  - uv-dev, whose generate_sysconfig_mappings test fetches
+#    cpython-unix/targets.yml from raw.githubusercontent.com - same
+#    reason.
+#  - uv-build-backend, which panics inside insta with "does not allow
+#    inline snapshot assertions in loops". Upstream ships
+#    .config/nextest.toml and runs the suite under cargo-nextest, which
+#    gives every test its own process; insta's duplicate detection is
+#    process-global, so a shared inline snapshot trips under plain
+#    cargo test. --test-threads=1 does not help.
+# Everything else is offline by construction: those crates carry only
+# inline #[test] units (version parsing, PEP 508, resolver, wheel
+# filenames, ...) against the vendored dev-dependencies. Two crates that
+# look like they need more than that do not: uv-client's four pypi.org
+# tests are behind the non-default test-pypi feature, and both of
+# uv-keyring's integration test files are gated on
+# #![cfg(feature = "native-auth")], also not a default feature, so they
+# compile to zero tests and need no secret-service daemon.
+#
+# --test-threads=1 is not tuning, it is required for correctness. Several
+# crates drive process-global state from their tests: uv-client's tls.rs
+# points SSL_CERT_FILE/SSL_CERT_DIR at deliberately bogus paths through
+# temp_env while base_client.rs builds a reqwest Client that reads them,
+# and uv-python's discovery tests rewrite PATH while another test spawns
+# a /bin/sh mock interpreter that then cannot find cat. Upstream never
+# sees either because cargo-nextest gives every test its own process;
+# one test thread is the equivalent for the stock harness.
+#
+# The single skip is environmental: linehaul reports the distro from
+# /etc/os-release, which a build chroot does not have, so the snapshot
+# gets null where it expects a name and version.
+#
+# The leading "--" is required: %%cargo_test is a parametrised macro, so
+# without it rpm parses "--workspace" as a macro option and aborts.
+%{cargo_test -- --workspace --exclude uv --exclude uv-dev --exclude 
uv-build-backend -- --test-threads=1 --skip 
user_agent_version::test_user_agent_has_linehaul}
+%endif
 
+%if %{without test}
 %install
 export PATH="%{buildroot}%{_bindir}:${PATH}"
 mkdir -p %{buildroot}%{_datadir}/bash-completion/completions
@@ -197,4 +272,5 @@
 %dir %{_datadir}/zsh/site-functions
 %{_datadir}/zsh/site-functions/_uv
 %{_datadir}/zsh/site-functions/_uvx
+%endif
 

++++++ _multibuild ++++++
<multibuild>
  <flavor>test</flavor>
</multibuild>

++++++ python-uv-0.12.3.tar.gz -> python-uv-0.12.4.tar.gz ++++++
/work/SRC/openSUSE:Factory/python-uv/python-uv-0.12.3.tar.gz 
/work/SRC/openSUSE:Factory/.python-uv.new.1258/python-uv-0.12.4.tar.gz differ: 
char 16, line 1

++++++ vendor.tar.zst ++++++
/work/SRC/openSUSE:Factory/python-uv/vendor.tar.zst 
/work/SRC/openSUSE:Factory/.python-uv.new.1258/vendor.tar.zst differ: char 7, 
line 1

Reply via email to