Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-torch for openSUSE:Factory 
checked in at 2026-09-09 16:21:29
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-torch (Old)
 and      /work/SRC/openSUSE:Factory/.python-torch.new.1265 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-torch"

Wed Sep  9 16:21:29 2026 rev:12 rq:1376574 version:2.13.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-torch/python-torch.changes        
2026-07-28 18:02:54.527027155 +0200
+++ /work/SRC/openSUSE:Factory/.python-torch.new.1265/python-torch.changes      
2026-09-09 16:23:27.901818547 +0200
@@ -1,0 +2,56 @@
+Sun Aug 30 21:23:49 UTC 2026 - Martin Pluskal <[email protected]>
+
+- Update to version 2.13.0:
+  * FlexAttention on Apple Silicon (MPS) and a deterministic
+    backward path on CUDA
+  * CuTeDSL "Native DSL" Inductor backend alongside Triton
+    [prototype]
+  * nn.LinearCrossEntropyLoss fuses prediction and loss, cutting
+    peak memory for large-vocabulary LM training
+  * torchcomms distributed backend; FSDP2 can overlap
+    reduce-scatter with all-gather on a dedicated process group
+  * Armv9-A torch.compile targeting; ROCm AOTriton 0.12b
+  * Stop building CPython 3.13t (free-threaded) binaries -
+    manylinux dropped 3.13t upstream
+- Raise cmake floor 3.5 -> 3.27, matching this release's
+  cmake_minimum_required.
+- Re-derive the License expression against the code actually
+  compiled into the shipped binaries, not third_party/ as a
+  whole; adds Apache-2.0 WITH LLVM-exception for the LLVM-derived
+  c10 sources, which upstream now declares too. See the
+  Legal-Review-Notice comment in the spec.
+- Force mode 0644 and strip CRLF on the third_party license texts
+  2.13.0 started vendoring into dist-info/licenses: two ship
+  executable and miniz's has CRLF, so rpmlint reads them as
+  scripts.
+- Keep xnnpack-aarch64-fix.patch: the neonsme2 stubs still fall
+  off the end of non-void functions without XNN_ENABLE_KLEIDIAI in
+  2.13.0. Latent here (those files are not compiled), so the patch
+  is retained rather than dropped.
+- Drop obsolete Group: tags and %defattr; express the devel
+  BuildRequires as pkgconfig() where an unambiguous .pc exists
+  (opencv-devel only ships opencv4.pc).
+- Strip the vestigial "#!/usr/bin/env python3" from the imported
+  library modules in %prep rather than rewriting the interpreter in
+  %install: clears 108 non-executable-script errors, and the sed no
+  longer runs after %fdupes, where it replaced every inode and undid
+  the hardlinks (8 files-duplicate).
+- Switch torchrun from update-alternatives to libalternatives. The
+  %post/%postun scriptlets were missing outright, so /usr/bin/torchrun
+  pointed at an /etc/alternatives entry nothing ever created.
+- Requires: add filelock, setuptools, networkx, Jinja2 and fsspec
+  (upstream's install_requires); drop six (no importer left) and
+  protobuf (wanted only by torch.utils.tensorboard, which hard-imports
+  tensorboard - not in Factory). numpy stays, it is compiled into
+  torch._C here.
+- Add python-torch-rpmlintrc for the two findings that are not
+  defects: the deliberately empty torch/_thread_safe_fork.py, and the
+  numpy Requires above.
+- Encode upstream's declared runtime floors: fsspec >= 0.8.5,
+  networkx >= 2.5.1, setuptools >= 77.0.3, sympy >= 1.13.3 and
+  typing_extensions >= 4.10.0.
+- Double the % in the spec comments that mention %{_libdir}
+  (macro-in-comment), and drop the hardcoded /usr from the vulkan
+  CXXFLAGS.
+
+-------------------------------------------------------------------

Old:
----
  pytorch-v2.12.0.tar.gz

New:
----
  python-torch-rpmlintrc
  pytorch-v2.13.0.tar.gz

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

Other differences:
------------------
++++++ python-torch.spec ++++++
--- /var/tmp/diff_new_pack.pO6wkx/_old  2026-09-09 16:23:39.836317329 +0200
+++ /var/tmp/diff_new_pack.pO6wkx/_new  2026-09-09 16:23:39.837317371 +0200
@@ -18,31 +18,30 @@
 
 %define srcname pytorch
 %define pname torch
-
 %global flavor @BUILD_FLAVOR@%{nil}
-
 %if "%{flavor}" == "standard"
 %bcond_with cuda
 %endif
-
 %if "%{flavor}" == "cuda-10-2"
-%bcond_without cuda
 %define cudaver 10-2
+%bcond_without cuda
 %endif
-
-%bcond_with mpi
 %if "%{flavor}" == "openmpi4"
-%bcond_without mpi
-%bcond_without openmpi4
 %global mpi_flavor openmpi
 %define mpi_ext 4
+%bcond_without mpi
+%bcond_without openmpi4
 %endif
-
 %if "%{flavor}" == "vulkan"
-%bcond_without vulkan
 %global pkg_suffix -vulkan
+%bcond_without vulkan
 %endif
-
+%if 0%{?suse_version} > 1500
+%bcond_without libalternatives
+%else
+%bcond_with libalternatives
+%endif
+%bcond_with mpi
 %if %{with mpi}
 %global pkg_suffix %{?mpi_flavor:-%{mpi_flavor}%{?mpi_ext}}
 %define pkg_prefix %{_libdir}/mpi/gcc/%{mpi_flavor}%{?mpi_ext}
@@ -50,35 +49,39 @@
 %define pkg_libdir %{pkg_prefix}/%{_lib}/
 %define pkg_incdir %{pkg_prefix}/include/
 %define pkg_datadir %{pkg_prefix}/share/
-%define pkg_sysconfdir %{pkg_prefix}/etc/
-%define pkg_skeldir %{pkg_prefix}/etc/skel/
+%define pkg_sysconfdir %{pkg_prefix}%{_sysconfdir}/
+%define pkg_skeldir %{pkg_prefix}%{_sysconfdir}/skel/
 %define package_name   %{pname}%{?pkg_suffix}
 %endif
-
 %{?sle15_python_module_pythons}
 Name:           python-torch%{?pkg_suffix}
-Version:        2.12.0
+Version:        2.13.0
 Release:        0
 Summary:        Deep learning framework aka pytorch/Caffe2
-License:        Apache-2.0 AND BSD-2-Clause AND BSD-3-Clause AND MIT AND Zlib 
AND BSL-1.0
-Group:          Development/Languages/Python
+# Legal-Review-Notice: licences re-derived for 2.13.0 against the code that is
+# actually compiled into the shipped binaries, not against third_party/ as a 
whole.
+#  - Apache-2.0 WITH LLVM-exception: LLVM-derived sources in c10 
(SmallVector.{h,cpp},
+#    FunctionRef.h, llvmMathExtras.h, sparse_bitset.h) link into 
libc10/libtorch_cpu;
+#    upstream started declaring it too in 2.13.0 (PEP 639 pyproject license 
expression).
+#  - Zlib: aten/src/ATen/native/cpu/avx_mathfun.h (the only zlib-licensed code 
that is
+#    built; third_party/fbgemm/external/asmjit is also zlib but 
USE_FBGEMM=OFF).
+#  - No copyleft is linked: third_party/ittapi is BSD-3-Clause OR GPL-2.0-only 
and we
+#    take the BSD branch; third_party/valgrind-headers carries valgrind's 
explicit
+#    BSD-style exception for valgrind.h/callgrind.h; the only GPL text in the 
tree is a
+#    test fixture under the unused (USE_KINETO=OFF) kineto/dynolog/cpr tree.
+License:        Apache-2.0 AND Apache-2.0 WITH LLVM-exception AND BSD-2-Clause 
AND BSD-3-Clause AND BSL-1.0 AND MIT AND Zlib
 URL:            https://pytorch.org
 Source0:        pytorch-v%{version}.tar.gz
 Source1:        releases.html
-
+Source2:        python-torch-rpmlintrc
 Patch1:         skip-third-party-check.patch
 Patch3:         pytorch-patch-onednn.patch
 Patch4:         disable-py312-intrinsics.patch
+# Still not upstream in 2.13.0: XNNPACK's neonsme2 stubs fall off the end of
+# non-void functions when built without XNN_ENABLE_KLEIDIAI. Not currently
+# compiled here, so it is latent rather than an FTBFS - keep it anyway.
 Patch5:         xnnpack-aarch64-fix.patch
-
-# A python call to cmake fails with a return code of 1 on this arch, disable 
it for now.
-# and 32-bit arm is not supported
-ExcludeArch:    %ix86 %{arm}
-
 BuildRequires:  %{python_module Gloo}
-%ifarch x86_64
-BuildRequires:  %{python_module PeachPy}
-%endif
 BuildRequires:  %{python_module PyYAML}
 BuildRequires:  %{python_module devel}
 BuildRequires:  %{python_module hypothesis}
@@ -92,44 +95,78 @@
 BuildRequires:  %{python_module setuptools}
 BuildRequires:  %{python_module typing_extensions}
 BuildRequires:  %{python_module typing}
-BuildRequires:  cmake >= 3.5
-BuildRequires:  eigen3-devel
+BuildRequires:  cmake >= 3.27
 BuildRequires:  fdupes
-%if 0%{?suse_version} >= 1600
-BuildRequires:  gcc-c++
-%else
-BuildRequires:  gcc12
-BuildRequires:  gcc12-c++
-%endif
 BuildRequires:  git
-BuildRequires:  glog-devel
-BuildRequires:  gtest
 BuildRequires:  leveldb-devel
 BuildRequires:  libnuma-devel
 BuildRequires:  libopenblas_pthreads-devel
-BuildRequires:  libuv-devel
 BuildRequires:  lmdb-devel
 BuildRequires:  ninja
 BuildRequires:  nlohmann_json-devel
-%ifarch x86_64 aarch64 ppc64le riscv64
-BuildRequires:  onednn-devel
-%endif
 BuildRequires:  openblas-devel
 BuildRequires:  opencl-cpp-headers
 BuildRequires:  opencl-headers
-BuildRequires:  opencv-devel
 BuildRequires:  openssl-devel
+BuildRequires:  pkgconfig
 BuildRequires:  protobuf-c
-BuildRequires:  protobuf-devel
 BuildRequires:  python-rpm-macros
 BuildRequires:  snappy-devel
+BuildRequires:  pkgconfig(eigen3)
+BuildRequires:  pkgconfig(gtest)
+BuildRequires:  pkgconfig(gtest_main)
+BuildRequires:  pkgconfig(libglog)
+BuildRequires:  pkgconfig(libuv)
+# opencv-devel only ships opencv4.pc; plain pkgconfig(opencv) is unresolvable
+BuildRequires:  pkgconfig(opencv4)
+BuildRequires:  pkgconfig(protobuf)
+BuildRequires:  pkgconfig(protobuf-lite)
+Requires:       libtorch%{?pkg_suffix} = %{version}
+Requires:       python-Jinja2
+Requires:       python-filelock
+Requires:       python-fsspec >= 0.8.5
+Requires:       python-networkx >= 2.5.1
+# Not in upstream's install_requires - upstream keeps numpy optional so the 
PyPI
+# wheel stays slim, but we build against numpy-devel (numpy support is compiled
+# into torch._C) and 29 shipped modules import it at module scope. python-six
+# (no importer left in 2.13.0) and python-protobuf (only 
torch.utils.tensorboard
+# wants it, and that hard-imports tensorboard, which Factory does not have) 
were
+# caffe2-era leftovers and are gone.
+Requires:       python-numpy
+Requires:       python-setuptools >= 77.0.3
+Requires:       python-sympy >= 1.13.3
+Requires:       python-typing_extensions >= 4.10.0
+Provides:       python-caffe2%{?pkg_suffix} = %{version}
+Provides:       python-pytorch%{?pkg_suffix} = %{version}
+# A python call to cmake fails with a return code of 1 on this arch, disable 
it for now.
+# and 32-bit arm is not supported
+ExcludeArch:    %{ix86} %{arm}
+%if %{with libalternatives}
+BuildRequires:  alts
+Requires:       alts
+%else
+Requires(post): update-alternatives
+Requires(postun): update-alternatives
+%endif
+%ifarch x86_64
+BuildRequires:  %{python_module PeachPy}
+%endif
+%if 0%{?suse_version} >= 1600
+BuildRequires:  gcc-c++
+%else
+BuildRequires:  gcc12
+BuildRequires:  gcc12-c++
+%endif
+%ifarch x86_64 aarch64 ppc64le riscv64
+BuildRequires:  onednn-devel
+%endif
 %if %{with cuda}
-BuildRequires:  cuda-compiler-%cudaver
-BuildRequires:  cuda-cudart-dev-%cudaver
-BuildRequires:  cuda-libraries-dev-%cudaver
-BuildRequires:  cuda-misc-headers-%cudaver
-BuildRequires:  cuda-nsight-%cudaver
-BuildRequires:  cuda-toolkit-%cudaver
+BuildRequires:  cuda-compiler-%{cudaver}
+BuildRequires:  cuda-cudart-dev-%{cudaver}
+BuildRequires:  cuda-libraries-dev-%{cudaver}
+BuildRequires:  cuda-misc-headers-%{cudaver}
+BuildRequires:  cuda-nsight-%{cudaver}
+BuildRequires:  cuda-toolkit-%{cudaver}
 BuildRequires:  libcudnn7-devel
 BuildRequires:  libnccl-devel
 %endif
@@ -140,26 +177,15 @@
 %if %{with vulkan}
 BuildRequires:  VulkanMemoryAllocator-devel
 BuildRequires:  shaderc
-BuildRequires:  vulkan-devel
+BuildRequires:  pkgconfig(vulkan)
 Conflicts:      %{python_module torch}
 %endif
 %ifarch riscv64
 BuildRequires:  mold
 %endif
-Requires:       libtorch%{?pkg_suffix} = %{version}
-Requires:       python-numpy
-Requires:       python-protobuf
-Requires:       python-six
-Requires:       python-sympy
-Requires:       python-typing_extensions
-
-Provides:       python-caffe2%{?pkg_suffix} = %version
-Provides:       python-pytorch%{?pkg_suffix} = %version
-
-%if "%flavor" == ""
+%if "%{flavor}" == ""
 ExclusiveArch:  do_not_build
 %endif
-
 %python_subpackages
 
 %description
@@ -173,7 +199,6 @@
 
 %package devel
 Summary:        Headers for C/C++, cmake build description and libraries 
needed for development
-Group:          Development/Languages/Python
 Requires:       python-torch = %{version}
 %if %{with openmpi4}
 Conflicts:      %{python_module torch-devel}
@@ -189,12 +214,11 @@
 
 %package converters
 Summary:        Converters for onnx and caffe2
-Group:          Development/Languages/Python
-BuildArch:      noarch
 Requires:       python3-click
 Requires:       python3-onnx
 Requires:       python3-pip
 Requires:       python3-pname
+BuildArch:      noarch
 %if %{with openmpi4}
 Conflicts:      %{python_module torch-converters}
 %endif
@@ -207,7 +231,6 @@
 
 %package -n libtorch%{?pkg_suffix}
 Summary:        Library which used by %{name}
-Group:          Development/Libraries/Python
 %if %{with openmpi4}
 Conflicts:      libtorch
 %endif
@@ -221,6 +244,16 @@
 %prep
 %autosetup -p1 -n %{srcname}-v%{version}
 
+# 64 library modules carry a vestigial python shebang (56 "#!/usr/bin/env
+# python3", 4 the typo "env/python3", 4 plain "#!/usr/bin/python3") yet
+# install 0644 and are only ever imported - the sole
+# console script, torchrun, is generated by pip. Drop the line instead of
+# rewriting the interpreter: rpmlint reports the shebang, not the interpreter.
+# Here and not in %%install so that the byte-code %%pyproject_install generates
+# stays valid and the %%fdupes hardlinks survive.
+find torch torchgen functorch -name '*.py' -type f -print0 |
+  xargs -0 -r sed -i '1{/^#!.*python/d}'
+
 %build
 cat > buildvars <<EOF
 export CMAKE_C_FLAGS="%{optflags}"
@@ -232,8 +265,8 @@
 export BLAS=OpenBLAS
 export MAX_JOBS=%{?jobs}
 %if 0%{?suse_version} >= 1600
-export CC=gcc-%gcc_version
-export CXX=g++-%gcc_version
+export CC=gcc-%{gcc_version}
+export CXX=g++-%{gcc_version}
 %else
 export CC=gcc-12
 export CXX=g++-12
@@ -249,6 +282,9 @@
 
 # Hardware acceleration
 %if %{with cuda}
+# Literal paths on purpose: /usr/local/cuda-* is the CUDA installer's own
+# layout, not a path we own, and %%{_prefix}/local is not the same statement.
+# spec-cleaner rewrites these - accepted deviation.
 export USE_SYSTEM_NCCL=ON
 export NCCL_INCLUDE_DIR="/usr/include/"
 export USE_CUDA=ON
@@ -294,7 +330,7 @@
 export CFLAGS="\${CMAKE_C_FLAGS} -fno-lto"
 export CXXFLAGS="\${CMAKE_CXX_FLAGS} -fno-lto"
 %if %{with vulkan}
-export CXXFLAGS="\${CXXFLAGS} -I /usr/ -Wno-error=return-type"
+export CXXFLAGS="\${CXXFLAGS} -I %{_prefix}/ -Wno-error=return-type"
 %endif
 %ifarch aarch64
 export CFLAGS="\${CFLAGS} -Wno-incompatible-pointer-types"
@@ -315,9 +351,16 @@
 export BUILD_PYTHON=ON
 %pyproject_install
 
+# 2.13.0 started vendoring third_party license texts into dist-info/licenses;
+# two arrive mode 0755 and miniz's has CRLF, which rpmlint reads as a script.
+# Must precede %%fdupes: sed -i replaces the inode, so doing this afterwards
+# breaks the hardlinks and reintroduces the duplicate waste fdupes removed.
+find %{buildroot} -path '*.dist-info/licenses/*' -type f -exec chmod 0644 {} +
+find %{buildroot} -path '*.dist-info/licenses/*' -type f -exec sed -i 
's|\r$||' {} +
+
 %python_expand %fdupes %{buildroot}%{$python_sitearch}
 
-# Move libtorch libraries to %{_libdir} for the separate libtorch package
+# Move libtorch libraries to %%{_libdir} for the separate libtorch package
 # Only move core libtorch libraries, not all .so files
 %python_expand mkdir -p %{buildroot}%{_libdir}
 %python_expand cp -P %{buildroot}%{$python_sitearch}/torch/lib/libtorch.so* 
%{buildroot}%{_libdir}/ 2>/dev/null || true
@@ -330,7 +373,7 @@
 # The shipped CMake package config (Caffe2Targets*.cmake, TorchConfig.cmake)
 # references these libraries relative to the torch/ install prefix
 # (${_IMPORT_PREFIX}/lib/lib*.so and find_library(... PATHS 
${TORCH_INSTALL_PREFIX}/lib)).
-# Recreate them as symlinks to the moved libraries in %{_libdir} so that
+# Recreate them as symlinks to the moved libraries in %%{_libdir} so that
 # find_package(Torch) resolves for downstream C++ consumers.
 %python_expand ln -sf %{_libdir}/libtorch.so 
%{buildroot}%{$python_sitearch}/torch/lib/libtorch.so
 %python_expand ln -sf %{_libdir}/libtorch_cpu.so 
%{buildroot}%{$python_sitearch}/torch/lib/libtorch_cpu.so
@@ -338,10 +381,6 @@
 
 %python_clone -a %{buildroot}%{_bindir}/torchrun
 
-# Fix shebang lines to use /usr/bin/python3 instead of /usr/bin/env python3
-find %{buildroot} -type f -name "*.py" -exec sed -i 's|#!/usr/bin/env 
python3|#!/usr/bin/python3|g' {} \;
-find %{buildroot} -type f -name "*.py" -exec sed -i 
's|#!/usr/bin/env/python3|#!/usr/bin/python3|g' {} \;
-
 # Move header files from main package to devel package locations
 %python_expand mkdir -p 
%{buildroot}%{$python_sitearch}/torch-devel/csrc/inductor/aoti_runtime
 %python_expand mkdir -p %{buildroot}%{$python_sitearch}/torch-devel/lib/libshm
@@ -350,11 +389,19 @@
 %python_expand mv %{buildroot}%{$python_sitearch}/torch/lib/libshm/*.h 
%{buildroot}%{$python_sitearch}/torch-devel/lib/libshm/
 %python_expand rm -rf %{buildroot}%{$python_sitearch}/torch/lib/libshm_windows
 
+%pre
+%python_libalternatives_reset_alternative torchrun
+
+%post
+%python_install_alternative torchrun
+
+%postun
+%python_uninstall_alternative torchrun
+
 %post -n libtorch%{?pkg_suffix} -p /sbin/ldconfig
 %postun -n libtorch%{?pkg_suffix} -p /sbin/ldconfig
 
 %files %{python_files}
-%defattr(-,root,root)
 %doc README.md NOTICE
 %license LICENSE
 %{python_sitearch}/torch*
@@ -369,7 +416,7 @@
 %exclude %{python_sitearch}/torch-devel
 # The real libtorch libraries live in the separate libtorch package; the main
 # package ships only compatibility symlinks under torch/lib pointing at
-# %{_libdir} so the shipped CMake config resolves for downstream consumers.
+# %%{_libdir} so the shipped CMake config resolves for downstream consumers.
 %python_alternative %{_bindir}/torchrun
 
 %files %{python_files devel}

++++++ _service ++++++
--- /var/tmp/diff_new_pack.pO6wkx/_old  2026-09-09 16:23:39.903320129 +0200
+++ /var/tmp/diff_new_pack.pO6wkx/_new  2026-09-09 16:23:39.906320255 +0200
@@ -2,7 +2,7 @@
   <service name="tar_scm" mode="manual">
     <param name="scm">git</param>
     <param name="url">https://github.com/pytorch/pytorch</param>
-    <param name="revision">v2.12.0</param>
+    <param name="revision">v2.13.0</param>
     <param name="versionformat">@PARENT_TAG@</param>
     <param name="submodules">enable</param>
   </service>

++++++ python-torch-rpmlintrc ++++++
# torch/_thread_safe_fork.py is empty by design: the OSS tree ships the module
# with no body, only Meta's internal build patches fork-safety hooks into it.
# It is imported unconditionally by torch/_inductor/compile_worker/*, so it has
# to ship - deleting it would be an ImportError on every torch.compile run.
addFilter("zero-length .*/torch/_thread_safe_fork\.py")

# numpy is deliberately not in upstream's install_requires (upstream keeps the
# PyPI wheel slim), but we build against numpy-devel, so numpy support is
# compiled into torch._C, and 29 shipped modules import numpy at module scope.
# Keeping the Requires is intentional; rationale also sits next to it in the 
spec.
# Anchored to torch's own packages so an unrelated future numpy leftover still 
shows.
addFilter("python3\d+-torch.*python-leftover-require .*numpy")

++++++ pytorch-v2.12.0.tar.gz -> pytorch-v2.13.0.tar.gz ++++++
/work/SRC/openSUSE:Factory/python-torch/pytorch-v2.12.0.tar.gz 
/work/SRC/openSUSE:Factory/.python-torch.new.1265/pytorch-v2.13.0.tar.gz 
differ: char 12, line 1

Reply via email to