Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package grass for openSUSE:Factory checked 
in at 2026-08-09 21:36:25
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/grass (Old)
 and      /work/SRC/openSUSE:Factory/.grass.new.16738 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "grass"

Sun Aug  9 21:36:25 2026 rev:17 rq:1370143 version:8.5.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/grass/grass.changes      2026-02-01 
22:06:06.526348941 +0100
+++ /work/SRC/openSUSE:Factory/.grass.new.16738/grass.changes   2026-08-09 
21:38:16.048227595 +0200
@@ -1,0 +2,52 @@
+Thu Aug  6 09:18:58 UTC 2026 - Martin Pluskal <[email protected]>
+
+- Update to version 8.5.0:
+  * New grass.tools Python API to call GRASS tools as functions
+  * Documentation rewritten in Markdown and rendered with MkDocs
+  * Parallelisation added to r.mapcalc, r.texture, r.horizon and
+    v.surf.rst cross-validation
+  * JSON output added across dozens of tools
+  * New r.smooth.edgepreserve tool for edge-preserving smoothing
+  * Multiple masks per mapset, with a new r.mask.status tool
+  * RegionManager and MaskManager context managers in grass.script
+  * More than 500 security issues reported by Coverity were fixed
+  * Raised minimum requirements to GDAL 3.7, PROJ 9.0, C++17 and
+    Python 3.10, and switched to the CBLAS and LAPACKE interfaces
+- Stop disabling the post-build checks. The package carried
+  "BuildRequires: -post-build-checks", which switched off
+  check-filelist, check-buildroot, check-rpaths, check-prereqs and the
+  rpmlint gate wholesale, hiding every problem listed below. It was
+  masking 79 directories owned by no package, so the file lists now
+  own their directories instead of only their contents
+- Build with the distribution optflags: CFLAGS discarded them
+  entirely, so all C code was built without the mandatory hardening
+  options and without debug information
+- Add a %check section that creates a temporary project and runs
+  modules and the Python scripting API through the freshly built
+  tree. It runs against the in-source build tree, because the
+  launcher ignores GISBASE and resolves itself from the compiled-in
+  prefix
+- Generate the translation file list at install time instead of
+  maintaining it by hand: the si and uk catalogues were both tagged
+  as %lang(sl), and hi and sv were not packaged at all
+- Byte-compile with hash-based invalidation and strip the shebang
+  from modules that are not executable: rpmlint errors drop from 440
+  to 4, the remainder being upstream issues
+- Add build dependencies on cblas, lapack and openblas, now required
+  directly by the C interfaces (boo#1273592)
+- Raise the minimum versions of gdal and proj to match upstream
+- Convert dependencies to their pkgconfig() form and escape the
+  strftime format in the reproducible-build timestamp, so that
+  spec-cleaner no longer rewrites either of them incorrectly
+- Replace the hand-written ldconfig scriptlets with
+  %ldconfig_scriptlets
+- Fix summaries of the doc and devel subpackages, which still
+  referred to GRASS GIS 7
+- Drop the conditionals for suse_version < 1550, no longer built
+
+-------------------------------------------------------------------
+Tue Aug  4 06:03:18 UTC 2026 - Dirk Stoecker <[email protected]>
+
+- Drop old obsoletes statement
+
+-------------------------------------------------------------------
@@ -528 +579,0 @@
-

Old:
----
  grass-8.4.2.tar.gz
  grass-8.4.2.tar.gz.sha256

New:
----
  grass-8.5.0.tar.gz
  grass-8.5.0.tar.gz.sha256

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

Other differences:
------------------
++++++ grass.spec ++++++
--- /var/tmp/diff_new_pack.z0D4Up/_old  2026-08-09 21:38:16.664248702 +0200
+++ /var/tmp/diff_new_pack.z0D4Up/_new  2026-08-09 21:38:16.668248839 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package grass
 #
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,84 +17,75 @@
 
 
 # Notice to maintainer : move this package to real lfhs
-%define        shortver 84
-%if 0%{?suse_version} >= 1550
-BuildRequires:  python3-wxPython
-%else
-BuildRequires:  python-wxWidgets-devel >= 3.0
-%endif
+%define         shortver 85
 
 Name:           grass
-Version:        8.4.2
+Version:        8.5.0
 Release:        0
 Summary:        Geographic Resources Analysis Support System
 License:        GPL-2.0-or-later
-Group:          Productivity/Scientific/Other
 URL:            https://grass.osgeo.org/
 Source0:         
https://github.com/OSGeo/grass/releases/download/%{version}/%{name}-%{version}.tar.gz
 Source1:         
https://github.com/OSGeo/grass/releases/download/%{version}/%{name}-%{version}.tar.gz.sha256
-BuildRequires:  -post-build-checks
-BuildRequires:  PDAL-devel
+BuildRequires:  PDAL-devel >= 1.7.1
 BuildRequires:  bison
 BuildRequires:  blas-devel
 BuildRequires:  fdupes
-BuildRequires:  fftw3-devel
 BuildRequires:  flex
-BuildRequires:  freetype2-devel
 BuildRequires:  gcc-c++
 BuildRequires:  lapack-devel
-BuildRequires:  libXmu-devel
-BuildRequires:  libbz2-devel
-BuildRequires:  libgdal-devel >= 3
+BuildRequires:  libgdal-devel >= 3.7
 BuildRequires:  libgeos-devel >= 3
 BuildRequires:  libjpeg-devel
 BuildRequires:  libpng-devel
-BuildRequires:  libtiff-devel
-BuildRequires:  libzstd-devel
 BuildRequires:  man
 BuildRequires:  mysql-devel
-BuildRequires:  ncurses-devel >= 5.5
-BuildRequires:  netcdf-devel
 BuildRequires:  perl
-BuildRequires:  postgresql-devel
-BuildRequires:  proj >= 6
-BuildRequires:  proj-devel >= 6
+BuildRequires:  pkgconfig
+BuildRequires:  proj >= 9
 BuildRequires:  python3-dateutil
-BuildRequires:  python3-devel
 BuildRequires:  python3-numpy
 BuildRequires:  python3-opengl
+BuildRequires:  python3-wxPython
 BuildRequires:  python3-xml
 BuildRequires:  readline-devel
 BuildRequires:  sqlite-devel
-BuildRequires:  unixODBC-devel
-BuildRequires:  zlib-devel
+BuildRequires:  pkgconfig(bzip2)
 BuildRequires:  pkgconfig(cairo)
+BuildRequires:  pkgconfig(cblas)
+BuildRequires:  pkgconfig(fftw3)
+BuildRequires:  pkgconfig(freetype2)
 BuildRequires:  pkgconfig(gl)
 BuildRequires:  pkgconfig(glu)
+BuildRequires:  pkgconfig(lapack)
+BuildRequires:  pkgconfig(libpq)
+BuildRequires:  pkgconfig(libtiff-4)
+BuildRequires:  pkgconfig(libzstd)
+BuildRequires:  pkgconfig(ncurses) >= 5.5
+BuildRequires:  pkgconfig(netcdf)
+BuildRequires:  pkgconfig(odbc)
+BuildRequires:  pkgconfig(openblas)
+BuildRequires:  pkgconfig(proj) >= 9
+BuildRequires:  pkgconfig(python3)
+BuildRequires:  pkgconfig(xmu)
+BuildRequires:  pkgconfig(zlib)
 # proj contains the required common data files
-Requires:       proj >= 6
+Requires:       proj >= 9
 Requires:       python3-dateutil
 Requires:       python3-numpy
 Requires:       python3-opengl
+Requires:       python3-wxPython
 Requires:       python3-xml
 Requires:       sqlite >= 3
 Requires:       unixODBC
 Requires:       xterm
 Recommends:     grass-doc
-Obsoletes:      grass7
-%if 0%{?suse_version} >= 1550
-Requires:       python3-wxPython
-%else
-Requires:       python-wxWidgets >= 2.8
-%endif
 
 %package doc
-Summary:        Documentation for GRASS GIS 7
-Group:          Documentation/Other
+Summary:        Documentation for GRASS GIS
 
 %package devel
-Summary:        Development files for GRASS GIS 7
-Group:          Development/Libraries/C and C++
+Summary:        Development files for GRASS GIS
 Requires:       grass = %{version}
 
 %description
@@ -113,7 +104,7 @@
 This package contains the HTML documentation files for GRASS GIS
 
 %prep
-%setup -q -n grass-%{version}
+%autosetup -n grass-%{version}
 
 %define grasver 
-@GRASS_VERSION_MAJOR@.@GRASS_VERSION_MINOR@.@GRASS_VERSION_RELEASE@
 %define grasver2 
'-${GRASS_VERSION_MAJOR}.${GRASS_VERSION_MINOR}.${GRASS_VERSION_RELEASE}'
@@ -122,7 +113,7 @@
 sed -i s/%{grasver}//g grass.pc.in
 sed -i s/%{grasver2}//g configure
 sed -i s/%{grasver2}//g Makefile
-sed -i -e "/GRASS_HEADERS_/ s/@GRASS_HEADERS_GIT_.*@/"$(date -d 
@${SOURCE_DATE_EPOCH} -u +%FT%T%:z)"/" include/grass/version.h.in
+sed -i -e "/GRASS_HEADERS_/ s/@GRASS_HEADERS_GIT_.*@/"$(date -d 
@${SOURCE_DATE_EPOCH} -u +%%FT%%T%%:z)"/" include/grass/version.h.in
 cat include/grass/version.h.in
 
 %define grassprefix %{_libdir}
@@ -130,8 +121,8 @@
 %define grasslib %{grassprefix}/%{name}%{shortver}/lib
 
 # configure with shared libs:
-# Pick for upstream travis, normal optflags are not supported
-export CFLAGS="-O2 -Werror=implicit-function-declaration"
+export CFLAGS="%{optflags} -Werror=implicit-function-declaration"
+export CXXFLAGS="%{optflags} -std=c++17"
 
 ./configure \
        --prefix=%{grassprefix} \
@@ -175,15 +166,11 @@
 %build
 # Make builds reproducible (e.g. "random" colortable example in documentation)
 export GRASS_RANDOM_SEED=1234
-make prefix=%{grassprefix} PREFIX=%{grassprefix} %{?_smp_mflags}
+%make_build prefix=%{grassprefix} PREFIX=%{grassprefix}
 
 %install
 make prefix=%{buildroot}%{grassprefix} PREFIX=%{buildroot}%{grassprefix} 
install
 
-# Program sets LD_LIBRARY_PATH pointing to in-source path
-# resulting in wrong requires, prevent that
-rm -rf dist.*
-
 # don't create a non-standard-directory for a single file
 mkdir -p %{buildroot}%{_bindir}
 mv %{buildroot}%{grassprefix}/bin/grass %{buildroot}%{_bindir}
@@ -194,6 +181,7 @@
 sed -i s:%{buildroot}::g %{buildroot}%{grassdir}/include/Make/Grass.make
 sed -i s:%{buildroot}::g %{buildroot}%{grassdir}/include/Make/Platform.make
 sed -i s:%{buildroot}::g %{buildroot}%{grassdir}%{_sysconfdir}/fontcap
+sed -i s:%{buildroot}::g 
%{buildroot}%{grassdir}%{_sysconfdir}/python/grass/app/resource_paths.py
 
 # make grass libraries available on the system
 install -d %{buildroot}%{_sysconfdir}/ld.so.conf.d
@@ -204,67 +192,96 @@
 mkdir -p %{buildroot}%{_datadir}/pixmaps
 ln -s %{grassdir}/share/icons/hicolor/192x192/apps/grass.png 
%{buildroot}%{_datadir}/pixmaps/grass.png
 
+# The blanket shebang rewrite in %%prep lands #!/usr/bin/python3 on library
+# modules that are not executable and are never run directly
+# (rpmlint: non-executable-script). This must come BEFORE byte-compiling:
+# editing the sources afterwards would invalidate the fresh bytecode again.
+find %{buildroot}%{grassdir} -name '*.py' ! -perm -u+x -exec sed -i 
'1{/^#!\/usr\/bin\/python3$/d}' {} +
+
+# Byte-compile with hash-based invalidation (PEP 552). Timestamp-based .pyc
+# cannot work here: the mtimes of the installed sources are clamped to
+# SOURCE_DATE_EPOCH for reproducibility after %%install has run, so any
+# timestamp we record is stale by the time the package is assembled
+# (rpmlint: python-bytecode-inconsistent-mtime).
+find %{buildroot}%{grassdir} -name __pycache__ -type d -prune -exec rm -rf {} +
+python3 -m compileall -q --invalidation-mode checked-hash \
+    -s %{buildroot} %{buildroot}%{grassdir} >/dev/null || :
+
 rm -rf %{buildroot}%{_libdir}/grass%{shortver}/utils/__pycache__
 
 echo %{grassdir} >%{buildroot}/%{_sysconfdir}/GRASSDIR
 
 %fdupes -s %{buildroot}%{grassdir}
 
-%post -p /sbin/ldconfig
-%postun -p /sbin/ldconfig
+# Generate the translation file list instead of hardcoding it: the .mo files
+# are compiled from locale/po/ at build time, so a hand-maintained list rots
+# silently as upstream adds languages -- si and uk were both mistagged as
+# %%lang(sl), and hi and sv were missing entirely.
+: > %{_builddir}/grass.lang
+for _mo in %{buildroot}%{grassdir}/locale/*/LC_MESSAGES; do
+    [ -d "$_mo" ] || continue
+    _lang=$(basename "$(dirname "$_mo")")
+    {
+      echo "%%lang($_lang) %%dir %{grassdir}/locale/$_lang"
+      echo "%%lang($_lang) %%dir %{grassdir}/locale/$_lang/LC_MESSAGES"
+      echo "%%lang($_lang) %{grassdir}/locale/$_lang/LC_MESSAGES/*.mo"
+    } >> %{_builddir}/grass.lang
+done
+
+%check
+# Exercise what was built. Use the in-source build tree, NOT the buildroot 
copy:
+# %%install rewrites the buildroot's paths to the final install location, and
+# GRASS's launcher deliberately ignores $GISBASE (RuntimePaths sets it with
+# use_env_values=False). It only falls back to locating itself when
+# %{grassdir} does not exist, so a buildroot-based check silently depends on no
+# GRASS being installed on the build host. The in-source tree is 
self-consistent.
+_grass="$(echo bin.*)/grass"
+
+# core: version reporting, region handling, and the Python scripting API
+$_grass --tmp-project XY --exec g.version -rge
+$_grass --tmp-project XY --exec g.region -p
+$_grass --tmp-project EPSG:4326 --exec python3 -c \
+    'import grass.script as gs; assert gs.parse_command("g.version", 
flags="g")["version"].startswith("%{version}")'
+
+# The installed programs embed LD_LIBRARY_PATH pointing at this in-source tree;
+# drop it now that the tests are done, so it cannot leak into the generated
+# requires at packaging time.
+rm -rf dist.* bin.*
+
+%ldconfig_scriptlets
 
 %files devel
+%dir %{grassdir}
 %{grassdir}/include
 %{_sysconfdir}/GRASSDIR
 
 %files doc
+%dir %{grassdir}
 %{grassdir}/docs
 
-%files
+%files -f %{_builddir}/grass.lang
 %config %{_sysconfdir}/ld.so.conf.d/grass-%{version}.conf
 %{_bindir}/%{name}
-%{grassdir}/bin/*
-%{grassdir}%{_sysconfdir}/*
-%{grassdir}/gui/*
-%{grassdir}/scripts/*
+%dir %{grassdir}
+%{grassdir}/bin
+%{grassdir}%{_sysconfdir}
+%{grassdir}/gui
+%{grassdir}/scripts
+%dir %{grassdir}/share
+%dir %{grassdir}/share/applications
 %{grassdir}/share/applications/grass.desktop
-%{grassdir}/share/icons/hicolor/*
+%{grassdir}/share/icons
+%dir %{grassdir}/share/metainfo
 %{grassdir}/share/metainfo/org.osgeo.grass.appdata.xml
 %{_datadir}/applications/grass.desktop
 %{_datadir}/pixmaps/grass.png
-%lang(ar) %{grassdir}/locale/ar/LC_MESSAGES/*.mo
-%lang(bn) %{grassdir}/locale/bn/LC_MESSAGES/*.mo
-%lang(cs) %{grassdir}/locale/cs/LC_MESSAGES/*.mo
-%lang(de) %{grassdir}/locale/de/LC_MESSAGES/*.mo
-%lang(el) %{grassdir}/locale/el/LC_MESSAGES/*.mo
-%lang(es) %{grassdir}/locale/es/LC_MESSAGES/*.mo
-%lang(fr) %{grassdir}/locale/fr/LC_MESSAGES/*.mo
-%lang(fi) %{grassdir}/locale/fi/LC_MESSAGES/*.mo
-%lang(hu) %{grassdir}/locale/hu/LC_MESSAGES/*.mo
-%lang(id) %{grassdir}/locale/id_ID/LC_MESSAGES/*.mo
-%lang(it) %{grassdir}/locale/it/LC_MESSAGES/*.mo
-%lang(ja) %{grassdir}/locale/ja/LC_MESSAGES/*.mo
-%lang(ko) %{grassdir}/locale/ko/LC_MESSAGES/*.mo
-%lang(lv) %{grassdir}/locale/lv/LC_MESSAGES/*.mo
-%lang(ml) %{grassdir}/locale/ml/LC_MESSAGES/*.mo
-%lang(pl) %{grassdir}/locale/pl/LC_MESSAGES/*.mo
-%lang(pt) %{grassdir}/locale/pt/LC_MESSAGES/*.mo
-%lang(pt_br) %{grassdir}/locale/pt_BR/LC_MESSAGES/*.mo
-%lang(ru) %{grassdir}/locale/ru/LC_MESSAGES/*.mo
-%lang(ro) %{grassdir}/locale/ro/LC_MESSAGES/*.mo
-%lang(sl) %{grassdir}/locale/sl/LC_MESSAGES/*.mo
-%lang(sl) %{grassdir}/locale/si/LC_MESSAGES/*.mo
-%lang(ta) %{grassdir}/locale/ta/LC_MESSAGES/*.mo
-%lang(th) %{grassdir}/locale/th/LC_MESSAGES/*.mo
-%lang(tr) %{grassdir}/locale/tr/LC_MESSAGES/*.mo
-%lang(sl) %{grassdir}/locale/uk/LC_MESSAGES/*.mo
-%lang(vi) %{grassdir}/locale/vi/LC_MESSAGES/*.mo
-%lang(zh) %{grassdir}/locale/zh/LC_MESSAGES/*.mo
-%lang(zh_cn) %{grassdir}/locale/zh_CN/LC_MESSAGES/*.mo
+%dir %{grassdir}/locale
+%dir %{grassdir}/utils
 %{grassdir}/utils/*.py*
 %{grassdir}/utils/g.echo
-%{grassdir}/driver/*
-%{grassdir}/fonts/*
+%{grassdir}/driver
+%{grassdir}/fonts
+%dir %{grasslib}
 %{grasslib}/*.so
 %{grassdir}/AUTHORS
 %{grassdir}/translators.csv

++++++ grass-8.4.2.tar.gz -> grass-8.5.0.tar.gz ++++++
/work/SRC/openSUSE:Factory/grass/grass-8.4.2.tar.gz 
/work/SRC/openSUSE:Factory/.grass.new.16738/grass-8.5.0.tar.gz differ: char 5, 
line 1

++++++ grass-8.4.2.tar.gz.sha256 -> grass-8.5.0.tar.gz.sha256 ++++++
--- /work/SRC/openSUSE:Factory/grass/grass-8.4.2.tar.gz.sha256  2026-02-01 
22:06:06.310339921 +0100
+++ /work/SRC/openSUSE:Factory/.grass.new.16738/grass-8.5.0.tar.gz.sha256       
2026-08-09 21:38:16.040227321 +0200
@@ -1 +1 @@
-68abc6c119939e40736a96360e9f6ab73e56f74772ec88c31688136215047a8c  
grass-8.4.2.tar.gz
+5d06c81504ea961fab709943cf41d8b3e27cdbaae7ccca5baf3f7bb0c5d9f33d  
grass-8.5.0.tar.gz

Reply via email to