Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-vllm for openSUSE:Factory checked in at 2026-08-27 18:51:42 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-vllm (Old) and /work/SRC/openSUSE:Factory/.python-vllm.new.1265 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-vllm" Thu Aug 27 18:51:42 2026 rev:8 rq:1373880 version:0.28.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-vllm/python-vllm.changes 2026-08-12 16:13:39.449386451 +0200 +++ /work/SRC/openSUSE:Factory/.python-vllm.new.1265/python-vllm.changes 2026-08-27 18:55:10.311530831 +0200 @@ -1,0 +2,58 @@ +Wed Aug 26 18:04:34 UTC 2026 - Martin Pluskal <[email protected]> + +- Update to version 0.28.0: + * Kimi-K3 performance push across the stack: decode context + parallelism, fused FlashKDA decode and prefill kernels, GEMM-RS + for sequence parallelism and optional shared-expert sharding + * DeepSeek-V4 sparse MLA now works end to end for plain decode, + MTP and DSpark speculative decoding + * Model Runner V2 matures: encode/prefill/decode disaggregation, + weight offloading, encoder CUDA graphs and attention-free models + * CPU backend gains an MLA backend so DeepSeek-V2/V3 run on CPU, + and unquantized MoE moves to the modular-kernel expert structure + * New defaults: max_num_batched_tokens raised from 8192 to 16384, + and prefix caching enabled by default for Mamba models + * Breaking changes: bitsandbytes support moved to an out-of-tree + plugin, and the deprecated calculate_kv_scales runtime KV scale + calculation and override_attention_dtype were removed + * Security hardening: an audio decode duration limit in + NanoNemotronVL, and _load_ov2_processor guarded with + resolve_trust_remote_code + * Many further model, quantization, KV-offloading and large-scale + serving changes -- see upstream's release notes for the full list +- Convert the remaining exact "=" version requirements into ">=" + floors at the version upstream actually asks for. An exact RPM + pin couples two independently released packages, so every update + of either leaves the other uninstallable, and it fails only at + install time where no build gate can see it: + * python-torch = 2.12.0 becomes >= 2.12.0, as do the matching + torch and torch-devel BuildRequires. The default flavour is + pure Python; the cpu flavour's link against libtorch is already + carried by the automatic libtorch.so, libtorch_cpu.so and + libc10.so dependencies rpm generates from the extension, which + is also what makes OBS rebuild this package when torch moves + * python-depyf = 0.20.0 becomes >= 0.20.0 + * python-lm-format-enforcer = 0.11.3 becomes >= 0.11.3 + * python-outlines_core = 0.2.14 becomes >= 0.2.14, whose on-disk + index cache is keyed on the installed outlines_core version and + cleared when it changes, so it handles drift by design + * vllm-relax-cpu-requirements.patch relaxes the same pins in the + wheel metadata, and now covers the compressed-tensors and depyf + lines too, so the RPM dependencies and the installed dist-info + agree +- Add a python-huggingface-hub >= 1.27.0 requirement, a new upstream + floor in this release +- Follow upstream's cmake/cpu_extension.cmake to oneDNN 3.13 on + x86_64; the aarch64 oneDNN commit pin and Arm Compute Library + 52.6.0 are unchanged: + * Add oneDNN-3.13.tar.gz + * Drop oneDNN-3.10.tar.gz +- Switch from update-alternatives to libalternatives, the Factory + default for a generic binary name: /usr/bin/vllm is now a plain + symlink to alts plus a declarative config, with no install-time + scriptlet. An already installed update-alternatives symlink is + migrated on upgrade +- Rebase vllm-relax-cpu-requirements.patch and + vllm-cpu-disable-rust-frontend.patch onto 0.28.0 + +------------------------------------------------------------------- Old: ---- oneDNN-3.10.tar.gz vllm-0.27.1.tar.gz New: ---- oneDNN-3.13.tar.gz vllm-0.28.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-vllm.spec ++++++ --- /var/tmp/diff_new_pack.w7I4Yh/_old 2026-08-27 18:55:12.954623108 +0200 +++ /var/tmp/diff_new_pack.w7I4Yh/_new 2026-08-27 18:55:12.956623178 +0200 @@ -44,10 +44,11 @@ # with any vllm update, they are version-locked to the kernel sources. %define onednn_aarch64_commit 9c5be1cc59e368aebf0909e6cf20f981ea61462a %define onednn_aarch64_commit_short 9c5be1cc -%define onednn_x86_version 3.10 +%define onednn_x86_version 3.13 %define acl_version 52.6.0 +%bcond_without libalternatives Name: python-vllm%{psuffix} -Version: 0.27.1 +Version: 0.28.0 Release: 0 Summary: A high-throughput and memory-efficient inference and serving engine for LLMs License: Apache-2.0 @@ -82,12 +83,23 @@ BuildRequires: %{python_module setuptools-rust >= 1.9.0} BuildRequires: %{python_module setuptools-scm >= 8.0} # setup.py imports torch at module top to detect the target device. -BuildRequires: %{python_module torch = 2.12.0} +BuildRequires: %{python_module torch >= 2.12.0} BuildRequires: %{python_module wheel} +BuildRequires: alts BuildRequires: fdupes # import torch dlopens libopenblas.so.0 at build time. BuildRequires: libopenblas_pthreads0 BuildRequires: python-rpm-macros +Requires: alts +# Several of upstream's requirements/*.txt entries are exact "== X.Y.Z" pins. +# Those describe upstream's own pinned developer/CI environment, not a proven +# incompatibility, and an exact RPM pin is actively harmful: it couples two +# independently released packages, so every update of either leaves the other +# uninstallable. Nothing catches that -- the build still succeeds, because the +# breakage only happens at install time -- so it surfaces as a broken package in +# the target project. Carry floors at the version upstream actually asks for +# instead; vllm-relax-cpu-requirements.patch relaxes the same pins in the wheel +# metadata so the RPM dependencies and the dist-info agree. Requires: python-Pillow Requires: python-PyYAML Requires: python-aiohttp >= 3.13.3 @@ -101,16 +113,20 @@ # compressed_tensors exists unchanged in both 0.17.1 and 0.18.0 (the only delta # on that surface is an added TransformConfig.merge()), so carry a floor. Requires: python-compressed-tensors >= 0.17.1 -Requires: python-depyf = 0.20.0 +# Optional torch.compile debugging helper, imported lazily inside +# vllm/compilation only when compilation debug dumps are enabled. +Requires: python-depyf >= 0.20.0 Requires: python-einops Requires: python-fastapi >= 0.133.0 Requires: python-filelock >= 3.16.1 -Requires: python-huggingface-hub +Requires: python-huggingface-hub >= 1.27.0 Requires: python-ijson Requires: python-jsonschema >= 4.23.0 Requires: python-lark >= 1.2.2 Requires: python-llguidance >= 1.7.0 -Requires: python-lm-format-enforcer = 0.11.3 +# One of the optional structured-output backends, LazyLoader-imported only when +# a request selects it. +Requires: python-lm-format-enforcer >= 0.11.3 Requires: python-mcp Requires: python-mistral-common >= 1.11.6 Requires: python-model-hosting-container-standards >= 0.1.14 @@ -124,7 +140,10 @@ Requires: python-opentelemetry-exporter-otlp >= 1.27.0 Requires: python-opentelemetry-sdk >= 1.27.0 Requires: python-opentelemetry-semantic-conventions-ai >= 0.4.1 -Requires: python-outlines_core = 0.2.14 +# Optional structured-output backend, also LazyLoader-imported. Its on-disk +# index cache is keyed on importlib.metadata.version("outlines_core") and is +# cleared whenever that changes, so the code handles version drift by design. +Requires: python-outlines_core >= 0.2.14 Requires: python-partial-json-parser Requires: python-prometheus-client >= 0.18.0 Requires: python-prometheus-fastapi-instrumentator >= 8.0.0 @@ -145,20 +164,24 @@ Requires: python-starlette >= 1.0.1 Requires: python-tiktoken >= 0.6.0 Requires: python-tokenizers >= 0.21.1 -Requires: python-torch = 2.12.0 +# The default flavour is pure Python and only uses torch's Python API. The cpu +# flavour additionally links the compiled kernels against libtorch, and that +# coupling is already expressed by the automatic libtorch.so / libtorch_cpu.so / +# libc10.so dependencies rpm generates from the extension -- which is also what +# makes OBS rebuild this package when torch moves. An exact pin adds nothing +# there and only makes the package uninstallable until it is bumped by hand. +Requires: python-torch >= 2.12.0 Requires: python-tqdm Requires: python-transformers >= 5.5.3 Requires: python-typing_extensions >= 4.10 Requires: python-watchfiles Requires: python-xgrammar >= 0.2.1 -Requires(post): update-alternatives -Requires(postun): update-alternatives # Limited to the arches python-torch is built for. ExclusiveArch: x86_64 aarch64 %if %{with cpu_kernels} # The compiled kernels need a C++ toolchain and torch's CMake package config, # which ships in the -devel subpackage (find_package(Torch)). -BuildRequires: %{python_module torch-devel = 2.12.0} +BuildRequires: %{python_module torch-devel >= 2.12.0} BuildRequires: cmake >= 3.26 BuildRequires: gcc-c++ BuildRequires: libnuma-devel @@ -209,7 +232,7 @@ %endif %endif -# Use the torch already installed in the build root (2.12.0) instead of the +# Build against whatever torch the build root provides instead of upstream's # exact 2.13.0 pin, via vLLM's own helper. Strips torch/torchvision/torchaudio # pins from requirements/*.txt and pyproject.toml. %python_expand $python use_existing_torch.py --prefix @@ -270,6 +293,7 @@ %fdupes $sd } %python_clone -a %{buildroot}%{_bindir}/vllm +%python_group_libalternatives vllm %check export VLLM_TARGET_DEVICE=%{vllm_target_device} @@ -277,11 +301,9 @@ # Full model/serving tests need model weights and are out of scope here. %python_expand $python -c "import vllm; print(vllm.__version__)" -%post -%python_install_alternative vllm - -%postun -%python_uninstall_alternative vllm +%pre +# Migrate an install that still carries the old update-alternatives symlink. +%python_libalternatives_reset_alternative vllm %files %{python_files} %doc README.md ++++++ oneDNN-3.10.tar.gz -> oneDNN-3.13.tar.gz ++++++ /work/SRC/openSUSE:Factory/python-vllm/oneDNN-3.10.tar.gz /work/SRC/openSUSE:Factory/.python-vllm.new.1265/oneDNN-3.13.tar.gz differ: char 16, line 1 ++++++ vllm-0.27.1.tar.gz -> vllm-0.28.0.tar.gz ++++++ /work/SRC/openSUSE:Factory/python-vllm/vllm-0.27.1.tar.gz /work/SRC/openSUSE:Factory/.python-vllm.new.1265/vllm-0.28.0.tar.gz differ: char 5, line 1 ++++++ vllm-cpu-disable-rust-frontend.patch ++++++ --- /var/tmp/diff_new_pack.w7I4Yh/_old 2026-08-27 18:55:13.051626494 +0200 +++ /var/tmp/diff_new_pack.w7I4Yh/_new 2026-08-27 18:55:13.057626704 +0200 @@ -1,6 +1,6 @@ --- a/setup.py +++ b/setup.py -@@ -1257,9 +1257,16 @@ +@@ -1495,9 +1495,16 @@ # Rust artifacts, built via setuptools-rust and installed into the package # directory alongside the Python modules. ++++++ vllm-relax-cpu-requirements.patch ++++++ --- /var/tmp/diff_new_pack.w7I4Yh/_old 2026-08-27 18:55:13.081627542 +0200 +++ /var/tmp/diff_new_pack.w7I4Yh/_new 2026-08-27 18:55:13.085627682 +0200 @@ -32,13 +32,29 @@ py-cpuinfo; platform_machine == "aarch64" --- a/requirements/common.txt +++ b/requirements/common.txt -@@ -23,7 +23,7 @@ - lm-format-enforcer == 0.11.3 +@@ -21,10 +21,10 @@ + pillow # Required for image processing + prometheus-fastapi-instrumentator >= 8.0.0 # v8 unblocks starlette >= 1.0 + tiktoken >= 0.6.0 # Required for DBRX tokenizer +-lm-format-enforcer == 0.11.3 ++lm-format-enforcer >= 0.11.3 llguidance >= 1.7.0, < 1.8.0; platform_machine == "x86_64" or platform_machine == "arm64" or platform_machine == "aarch64" or platform_machine == "ppc64le" or platform_machine == "s390x" - outlines_core == 0.2.14 +-outlines_core == 0.2.14 -lark == 1.2.2 ++outlines_core >= 0.2.14 +lark >= 1.2.2 xgrammar >= 0.2.1, < 1.0.0; platform_machine == "x86_64" or platform_machine == "aarch64" or platform_machine == "arm64" or platform_machine == "s390x" or platform_machine == "ppc64le" typing_extensions >= 4.10 filelock >= 3.16.1 # need to contain https://github.com/tox-dev/filelock/pull/317 +@@ -38,8 +38,8 @@ + six>=1.16.0; python_version > '3.11' # transitive dependency of pandas that needs to be the latest version for python 3.12 + setuptools>=77.0.3,<81.0.0; python_version > '3.11' # Setuptools is used by triton, we need to ensure a modern version is installed for 3.12+ so that it does not try to import distutils, which was removed in 3.12 + einops # Required for Qwen2-VL. +-compressed-tensors == 0.17.0 # required for compressed-tensors +-depyf==0.20.0 # required for profiling and debugging with compilation config ++compressed-tensors >= 0.17.1 # required for compressed-tensors ++depyf>=0.20.0 # required for profiling and debugging with compilation config + cloudpickle # allows pickling lambda functions in model_executor/models/registry.py + watchfiles # required for http server to monitor the updates of TLS files + python-json-logger # Used by logging as per examples/features/logging_configuration.md
