openSUSE Commits
Threads by month
- ----- 2025 -----
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- 1 participants
- 383994 discussions
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package libcircle for openSUSE:Factory checked in at 2021-04-29 01:38:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libcircle (Old)
and /work/SRC/openSUSE:Factory/.libcircle.new.12324 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libcircle"
Thu Apr 29 01:38:22 2021 rev:3 rq:889002 version:0.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/libcircle/libcircle.changes 2019-10-16 09:18:08.263026486 +0200
+++ /work/SRC/openSUSE:Factory/.libcircle.new.12324/libcircle.changes 2021-04-29 01:39:28.418669692 +0200
@@ -1,0 +2,22 @@
+Wed Apr 28 08:07:05 UTC 2021 - Nicolas Morey-Chaisemartin <nmoreychaisemartin(a)suse.com>
+
+- Update to version 0.3
+ - New features:
+ - Added tree-based termination detection for improved scalability over
+ circle-based token passing. Enable with new CIRCLE_TERM_TREE flag
+ during CIRCLE_init or CIRCLE_set_options.
+ - Changed CIRCLE_abort() to use a tree-based broadcast from a direct
+ send to all ranks.
+ - Added CIRCLE_set_reduce_period(seconds) to customize period between
+ consecutive reductions.
+ - Added CIRCLE_set_tree_width(width) to customize width of internal
+ communication tree.
+ - Reduction callbacks invoked when work loop completes, in addition to
+ periodically during the work loop
+ - Bug fixes:
+ - Compare to MPI_REQUEST_NULL instead of MPI_PROC_NULL to complete
+ send request during token exchange.
+ - Configure script updated to detect MPICH
+- Cleanup spec file
+
+-------------------------------------------------------------------
Old:
----
libcircle-0.2.1-rc.1.tar.gz
New:
----
libcircle-0.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libcircle.spec ++++++
--- /var/tmp/diff_new_pack.dmDHOo/_old 2021-04-29 01:39:28.822670263 +0200
+++ /var/tmp/diff_new_pack.dmDHOo/_new 2021-04-29 01:39:28.826670269 +0200
@@ -1,7 +1,7 @@
#
# spec file for package libcircle
#
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2021 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -16,23 +16,25 @@
#
+%define lib_major 2
+
Name: libcircle
-Version: 0.2.1~rc1
+Version: 0.3
Release: 0
-%define myversion 0.2.1-rc.1
-Source: https://github.com/hpc/libcircle/releases/download/%{myversion}/%{name}-%{m…
+Source: https://github.com/hpc/libcircle/archive/v%{version}.tar.gz#/%{name}-%{vers…
BuildRoot: %{_tmppath}/%{name}-%{version}-build
URL: http://github.com/hpc/libcircle
Summary: A library used to distribute workloads
License: BSD-3-Clause-LBNL
Group: Development/Libraries/C and C++
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
-
+BuildRequires: autoconf
+BuildRequires: automake
BuildRequires: doxygen
BuildRequires: fdupes
BuildRequires: graphviz
+BuildRequires: libtool
BuildRequires: openmpi-macros-devel
BuildRequires: pkgconfig
BuildRequires: pkgconfig(check)
@@ -40,12 +42,12 @@
%description
A simple interface for processing workloads using an automatically distributed global queue.
-%package -n libcircle2
+%package -n libcircle%{lib_major}
Summary: A library used to distribute workloads
Group: System/Libraries
%openmpi_requires
-%description -n libcircle2
+%description -n libcircle%{lib_major}
A simple interface for processing workloads using an automatically distributed global queue.
%package devel
@@ -59,13 +61,14 @@
This package contains development headers and libraries for libcircle
%prep
-%setup -n %{name}-%{myversion}
+%setup -n %{name}-%{version}
#avoid date in doxygen footer
sed -i '/^HTML_FOOTER/s/=.*/= footer.html/' doc/Doxyfile.in
echo > doc/footer.html
%build
%setup_openmpi
+./autogen.sh
%configure --enable-tests --enable-doxygen --disable-static
make %{?_smp_mflags}
@@ -81,12 +84,12 @@
# Test timeout expired on OpenSuse build
#make check
-%post -n libcircle2 -p /sbin/ldconfig
-%postun -n libcircle2 -p /sbin/ldconfig
+%post -n libcircle%{lib_major} -p /sbin/ldconfig
+%postun -n libcircle%{lib_major} -p /sbin/ldconfig
-%files -n libcircle2
+%files -n libcircle%{lib_major}
%defattr(-,root,root,0755)
-%{_libdir}/libcircle.so.*
+%{_libdir}/libcircle.so.%{lib_major}*
%license COPYING
%files devel
++++++ libcircle-0.2.1-rc.1.tar.gz -> libcircle-0.3.tar.gz ++++++
++++ 42094 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-IMDbPY for openSUSE:Factory checked in at 2021-04-29 01:38:21
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-IMDbPY (Old)
and /work/SRC/openSUSE:Factory/.python-IMDbPY.new.12324 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-IMDbPY"
Thu Apr 29 01:38:21 2021 rev:5 rq:888990 version:2021.4.18
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-IMDbPY/python-IMDbPY.changes 2021-03-10 08:58:54.914991786 +0100
+++ /work/SRC/openSUSE:Factory/.python-IMDbPY.new.12324/python-IMDbPY.changes 2021-04-29 01:39:26.930667586 +0200
@@ -1,0 +2,15 @@
+Wed Apr 28 09:29:47 UTC 2021 - Mark��ta Machov�� <mmachova(a)suse.com>
+
+- Update to 2021.04.18
+ [general]
+ * #289: Serbian translations
+ * #290: update Portuguese translations
+ * #291: allow direct access to filmography keys
+ * #299: add pagination to get_movie_list (courtesy of Stein van Broekhoven)
+ * #300: any iterable can be used as season_nums parameter of update_series_seasons
+ * #305: fix ability to set logging level - #310: fix build of locales .mo files
+ * #312: extract localized title
+ [sql]
+ * #287: fix missing logger
+
+-------------------------------------------------------------------
Old:
----
IMDbPY-2020.9.25.tar.gz
New:
----
IMDbPY-2021.4.18.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-IMDbPY.spec ++++++
--- /var/tmp/diff_new_pack.FnfEG0/_old 2021-04-29 01:39:27.378668220 +0200
+++ /var/tmp/diff_new_pack.FnfEG0/_new 2021-04-29 01:39:27.382668226 +0200
@@ -19,7 +19,7 @@
%define skip_python2 1
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-IMDbPY
-Version: 2020.9.25
+Version: 2021.4.18
Release: 0
Summary: Python package to access the IMDb's database
License: GPL-2.0-or-later
@@ -32,9 +32,9 @@
BuildRequires: python-rpm-macros
Requires: python-SQLAlchemy
Requires: python-lxml
-BuildArch: noarch
Requires(post): update-alternatives
-Requires(postun): update-alternatives
+Requires(postun):update-alternatives
+BuildArch: noarch
%python_subpackages
%description
++++++ IMDbPY-2020.9.25.tar.gz -> IMDbPY-2021.4.18.tar.gz ++++++
++++ 2364 lines of diff (skipped)
++++++ do_not_install_scripts.patch ++++++
--- /var/tmp/diff_new_pack.FnfEG0/_old 2021-04-29 01:39:27.506668401 +0200
+++ /var/tmp/diff_new_pack.FnfEG0/_new 2021-04-29 01:39:27.506668401 +0200
@@ -6,14 +6,16 @@
Example scripts are installed under /usr/bin and it's prefered to keep
them in an examples directory.
---- a/setup.py
-+++ b/setup.py
-@@ -103,7 +103,7 @@
+Index: IMDbPY-2021.4.18/setup.py
+===================================================================
+--- IMDbPY-2021.4.18.orig/setup.py
++++ IMDbPY-2021.4.18/setup.py
+@@ -92,7 +92,7 @@ params = {
'classifiers': [_f for _f in classifiers.split("\n") if _f],
'url': home_page,
'download_url': dwnl_url,
- 'scripts': scripts,
+# 'scripts': scripts,
- 'data_files': data_files,
- 'install_requires': ['SQLAlchemy', 'lxml'],
- 'extras_require': {
+ 'package_data': {
+ # Here, the "*" represents any possible language ID.
+ 'imdb.locale': [
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package zim for openSUSE:Factory checked in at 2021-04-29 01:38:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/zim (Old)
and /work/SRC/openSUSE:Factory/.zim.new.12324 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "zim"
Thu Apr 29 01:38:19 2021 rev:9 rq:888978 version:0.73.5
Changes:
--------
--- /work/SRC/openSUSE:Factory/zim/zim.changes 2021-04-21 21:00:34.434312337 +0200
+++ /work/SRC/openSUSE:Factory/.zim.new.12324/zim.changes 2021-04-29 01:39:25.370665379 +0200
@@ -1,0 +2,15 @@
+Mon Apr 26 21:51:31 UTC 2021 - Ferdinand Thiessen <rpm(a)fthiessen.de>
+
+- Update to version 0.73.5:
+ * Fix regression for ���www.��� links in pages
+ * Fix bug with email address or url wrapped in higlight markup
+ * Fix bug with handling newline in inline formatting
+ * Fix bug when deleting a bullet-like sequence
+ * Fix bug with relative links in single page export
+ * Fix bug if notebook name is not set
+ * Interpret pasted text as ���wiki��� format and add ���Paste As Verbatim���
+ * Update default application lookup to latest spec
+ * Fix portable environment windows installer
+ * Merge Weblate translations
+
+-------------------------------------------------------------------
Old:
----
zim-0.73.4.tar.gz
New:
----
zim-0.73.5.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ zim.spec ++++++
--- /var/tmp/diff_new_pack.HW2HXY/_old 2021-04-29 01:39:25.854666064 +0200
+++ /var/tmp/diff_new_pack.HW2HXY/_new 2021-04-29 01:39:25.858666070 +0200
@@ -20,7 +20,7 @@
%define skip_python2 1
Name: zim
-Version: 0.73.4
+Version: 0.73.5
Release: 0
Summary: A Desktop Wiki
License: GPL-2.0-or-later
@@ -34,11 +34,6 @@
BuildRequires: hicolor-icon-theme
BuildRequires: python3
BuildRequires: typelib-1_0-Gtk-3_0
-# We need the %%mime_database_*, %%desktop_database_* and %%icon_theme_cache_*
-# macros for old suse versions
-%if 0%{?suse_version} < 1330
-BuildRequires: shared-mime-info
-%endif
BuildRequires: update-desktop-files
Requires: python3-gobject
Requires: python3-pyxdg
@@ -77,10 +72,6 @@
%fdupes -s %{buildroot}
-%desktop_database_post
-
-%desktop_database_postun
-
%files
%defattr(-,root,root)
%license LICENSE
++++++ zim-0.73.4.tar.gz -> zim-0.73.5.tar.gz ++++++
++++ 53633 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-gpxpy for openSUSE:Factory checked in at 2021-04-29 01:38:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-gpxpy (Old)
and /work/SRC/openSUSE:Factory/.python-gpxpy.new.12324 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-gpxpy"
Thu Apr 29 01:38:20 2021 rev:4 rq:888985 version:1.4.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-gpxpy/python-gpxpy.changes 2020-05-28 09:16:44.892882868 +0200
+++ /work/SRC/openSUSE:Factory/.python-gpxpy.new.12324/python-gpxpy.changes 2021-04-29 01:39:26.322666726 +0200
@@ -1,0 +2,10 @@
+Wed Apr 28 09:01:30 UTC 2021 - Mark��ta Machov�� <mmachova(a)suse.com>
+
+- update to 1.4.2
+ * Consider microseconds when total_seconds o timedelta is requested
+ * Use list instead of getchildren for Python 3.9 compatibility
+ * get_nearest_location(location) has the property that if 'location'
+ is a point on the track, the point after 'location' on the track
+ is returned
+
+-------------------------------------------------------------------
Old:
----
gpxpy-1.4.0.tar.gz
New:
----
gpxpy-1.4.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-gpxpy.spec ++++++
--- /var/tmp/diff_new_pack.V9SwYU/_old 2021-04-29 01:39:26.726667298 +0200
+++ /var/tmp/diff_new_pack.V9SwYU/_new 2021-04-29 01:39:26.730667304 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-gpxpy
#
-# Copyright (c) 2020 SUSE LLC
+# Copyright (c) 2021 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
%define skip_python2 1
Name: python-gpxpy
-Version: 1.4.0
+Version: 1.4.2
Release: 0
Summary: GPX file parser and GPS track manipulation library
License: Apache-2.0
@@ -30,7 +30,7 @@
BuildRequires: fdupes
BuildRequires: python-rpm-macros
Requires(post): update-alternatives
-Requires(postun): update-alternatives
+Requires(postun):update-alternatives
BuildArch: noarch
%python_subpackages
++++++ gpxpy-1.4.0.tar.gz -> gpxpy-1.4.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gpxpy-1.4.0/PKG-INFO new/gpxpy-1.4.2/PKG-INFO
--- old/gpxpy-1.4.0/PKG-INFO 2020-01-16 20:43:18.000000000 +0100
+++ new/gpxpy-1.4.2/PKG-INFO 2020-06-22 08:57:48.000000000 +0200
@@ -1,8 +1,8 @@
Metadata-Version: 2.1
Name: gpxpy
-Version: 1.4.0
+Version: 1.4.2
Summary: GPX file parser and GPS track manipulation library
-Home-page: http://www.trackprofiler.com/gpxpy/index.html
+Home-page: https://github.com/tkrajina/gpxpy
Author: Tomo Krajina
Author-email: tkrajina(a)gmail.com
License: Apache License, Version 2.0
@@ -76,7 +76,7 @@
## GPX version
- gpx.py can parse and generate GPX 1.0 and 1.1 files. Note that the generated file will always be a valid XML document, but it may not be (strictly speaking) a valid GPX document. For example, if you set gpx.email to "my.email AT mail.com" the generated GPX tag won't confirm to the regex pattern. And the file won't be valid. Most applications will ignore such errors, but... Be aware of this!
+ gpx.py can parse and generate GPX 1.0 and 1.1 files. The generated file will always be a valid XML document, but it may not be (strictly speaking) a valid GPX document. For example, if you set gpx.email to "my.email AT mail.com" the generated GPX tag won't confirm to the regex pattern. And the file won't be valid. Most applications will ignore such errors, but... Be aware of this!
Be aware that the gpxpy object model *is not 100% equivalent* with the underlying GPX XML file schema. That's because the library object model works with both GPX 1.0 and 1.1.
@@ -88,9 +88,7 @@
## XML parsing
- If lxml is available, then it will be used for XML parsing.
- Otherwise minidom is used.
- Note that lxml is 2-3 times faster so, if you can choose -- use it :)
+ If lxml is available, then it will be used for XML parsing, otherwise minidom is used. Lxml is 2-3 times faster so, if you can choose -- use it.
The GPX version is automatically determined when parsing by reading the version attribute in the gpx node. If this attribute is not present then the version is assumed to be 1.0. A specific version can be forced by setting the `version` parameter in the parse function. Possible values for the 'version' parameter are `1.0`, `1.1` and `None`.
@@ -98,7 +96,7 @@
Branches:
- * `branch` contains the code of the latest release
+ * `master` contains the code of the latest release
* `dev` branch is where code for the next release should go.
Send your pull request against `dev`, not `master`!
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gpxpy-1.4.0/README.md new/gpxpy-1.4.2/README.md
--- old/gpxpy-1.4.0/README.md 2020-01-16 20:41:16.000000000 +0100
+++ new/gpxpy-1.4.2/README.md 2020-05-16 08:46:48.000000000 +0200
@@ -68,7 +68,7 @@
## GPX version
-gpx.py can parse and generate GPX 1.0 and 1.1 files. Note that the generated file will always be a valid XML document, but it may not be (strictly speaking) a valid GPX document. For example, if you set gpx.email to "my.email AT mail.com" the generated GPX tag won't confirm to the regex pattern. And the file won't be valid. Most applications will ignore such errors, but... Be aware of this!
+gpx.py can parse and generate GPX 1.0 and 1.1 files. The generated file will always be a valid XML document, but it may not be (strictly speaking) a valid GPX document. For example, if you set gpx.email to "my.email AT mail.com" the generated GPX tag won't confirm to the regex pattern. And the file won't be valid. Most applications will ignore such errors, but... Be aware of this!
Be aware that the gpxpy object model *is not 100% equivalent* with the underlying GPX XML file schema. That's because the library object model works with both GPX 1.0 and 1.1.
@@ -80,9 +80,7 @@
## XML parsing
-If lxml is available, then it will be used for XML parsing.
-Otherwise minidom is used.
-Note that lxml is 2-3 times faster so, if you can choose -- use it :)
+If lxml is available, then it will be used for XML parsing, otherwise minidom is used. Lxml is 2-3 times faster so, if you can choose -- use it.
The GPX version is automatically determined when parsing by reading the version attribute in the gpx node. If this attribute is not present then the version is assumed to be 1.0. A specific version can be forced by setting the `version` parameter in the parse function. Possible values for the 'version' parameter are `1.0`, `1.1` and `None`.
@@ -90,7 +88,7 @@
Branches:
-* `branch` contains the code of the latest release
+* `master` contains the code of the latest release
* `dev` branch is where code for the next release should go.
Send your pull request against `dev`, not `master`!
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gpxpy-1.4.0/gpxpy/__init__.py new/gpxpy-1.4.2/gpxpy/__init__.py
--- old/gpxpy-1.4.0/gpxpy/__init__.py 2020-01-16 20:42:14.000000000 +0100
+++ new/gpxpy-1.4.2/gpxpy/__init__.py 2020-06-22 08:57:11.000000000 +0200
@@ -16,7 +16,7 @@
from . import gpx as mod_gpx
-__version__ = '1.4.0'
+__version__ = '1.4.2'
def parse(xml_or_file: Union[AnyStr, IO[str]], version: Optional[str] = None) -> mod_gpx.GPX:
"""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gpxpy-1.4.0/gpxpy/gpx.py new/gpxpy-1.4.2/gpxpy/gpx.py
--- old/gpxpy-1.4.0/gpxpy/gpx.py 2020-01-16 20:41:16.000000000 +0100
+++ new/gpxpy-1.4.2/gpxpy/gpx.py 2020-06-22 08:55:50.000000000 +0200
@@ -125,7 +125,7 @@
class MinimumMaximum(NamedTuple):
minimum: Optional[float]
maximum: Optional[float]
-class NearestLocationData(NamedTuple):
+class NearestLocationData(NamedTuple): # this is also what walk() returns/iterates over
location: "GPXTrackPoint"
track_no: int
segment_no: int
@@ -781,7 +781,7 @@
for track_point in self.points:
track_point.move(location_delta)
- def walk(self, only_points: bool=False) -> Iterator[Any]: # TODO: find a better solution for typing
+ def walk(self, only_points: bool=False) -> Iterator[Any]: # Union[GPXTrackPoint, Tuple[GPXTrackPoint, int]]]:
"""
Generator for iterating over segment points
@@ -797,7 +797,7 @@
point_no: int
Not included in yield if only_points is true
"""
- for point_no, point in enumerate(self.points):
+ for point_no, point in enumerate(self.points if self.points else []):
if only_points:
yield point
else:
@@ -904,18 +904,16 @@
speed_kmh: float = 0
if seconds > 0 and distance is not None:
# TODO: compute threshold in m/s instead this to kmh every time:
- speed_kmh = (distance / 1000.) / (mod_utils.total_seconds(timedelta) / 60. ** 2)
-
- #print speed, stopped_speed_threshold
- if distance:
- if speed_kmh <= stopped_speed_threshold:
- stopped_time += mod_utils.total_seconds(timedelta)
- stopped_distance += distance
- else:
- moving_time += mod_utils.total_seconds(timedelta)
- moving_distance += distance
- if moving_time:
- speeds_and_distances.append((distance / mod_utils.total_seconds(timedelta), distance, ))
+ speed_kmh = (distance / 1000.) / (seconds / 60. ** 2)
+ if distance:
+ if speed_kmh <= stopped_speed_threshold:
+ stopped_time += seconds
+ stopped_distance += distance
+ else:
+ moving_time += seconds
+ moving_distance += distance
+ if moving_time:
+ speeds_and_distances.append((distance / seconds, distance, ))
max_speed = None
if speeds_and_distances:
@@ -1218,27 +1216,9 @@
def get_nearest_location(self, location: mod_geo.Location) -> Optional[NearestLocationData]:
""" Return the (location, track_point_no) on this track segment """
- if not self.points:
- return None
-
- result: Optional[GPXTrackPoint] = None
- current_distance = None
- result_track_point_no = None
- for i in range(len(self.points)):
- track_point = self.points[i]
- if not result:
- result = track_point
- else:
- distance = track_point.distance_2d(location)
- #print current_distance, distance
- if not current_distance or distance < current_distance:
- current_distance = distance
- result = track_point
- result_track_point_no = i
-
- if result is not None and result_track_point_no is not None:
- return NearestLocationData(result, -1, -1, result_track_point_no)
- return None
+ return min((NearestLocationData(pt, -1, -1, pt_no) for (pt, pt_no) in self.walk())
+ ,key=lambda x: x.location.distance_2d(location) if x is not None else float('INF')
+ ,default=None)
def smooth(self, vertical: bool=True, horizontal: bool=False, remove_extremes: bool=False) -> None:
""" "Smooths" the elevation graph. Can be called multiple times. """
@@ -1565,7 +1545,7 @@
return bounds
- def walk(self, only_points: bool=False) -> Iterator[Union[GPXTrackPoint, Tuple[GPXTrackPoint, int, int]]]:
+ def walk(self, only_points: bool=False) -> Iterator[Any]: #Union[GPXTrackPoint, Tuple[GPXTrackPoint, int, int]]]:
"""
Generator used to iterates through track
@@ -1584,8 +1564,8 @@
point_no : integer
Index of point. This is suppressed if only_points is True.
"""
- for segment_no, segment in enumerate(self.segments):
- for point_no, point in enumerate(segment.points):
+ for segment_no, segment in enumerate(self.segments if self.segments else []):
+ for point_no, point in enumerate(segment.points if segment.points else []):
if only_points:
yield point
else:
@@ -1914,30 +1894,10 @@
def get_nearest_location(self, location: mod_geo.Location) -> Optional[NearestLocationData]:
""" Returns (location, track_segment_no, track_point_no) for nearest location on track """
- if not self.segments:
- return None
-
- result: Optional[GPXTrackPoint] = None
- distance: float = -1
- result_track_segment_no: int = -1
- result_track_point_no: int = -1
-
- for i in range(len(self.segments)):
- track_segment = self.segments[i]
- nearest_loc_info = track_segment.get_nearest_location(location)
- nearest_location_distance = None
- if nearest_loc_info:
- nearest_location_distance = nearest_loc_info.location.distance_2d(location)
- if distance is not None and nearest_location_distance is not None and (distance < 0 or nearest_location_distance < distance):
- distance = nearest_location_distance
- result = nearest_loc_info.location
- result_track_segment_no = i
- result_track_point_no = nearest_loc_info.point_no
-
- if result:
- return NearestLocationData(result, -1, result_track_segment_no, result_track_point_no)
- return None
-
+ return min((NearestLocationData(pt, -1, seg, pt_no) for (pt, seg, pt_no) in self.walk())
+ ,key=lambda x: x.location.distance_2d(location) if x is not None else float('INF')
+ ,default=None)
+
def clone(self) -> "GPXTrack":
return mod_copy.deepcopy(self)
@@ -2354,9 +2314,9 @@
point_no : integer
Index of point. This is suppressed if only_points is True.
"""
- for track_no, track in enumerate(self.tracks):
- for segment_no, segment in enumerate(track.segments):
- for point_no, point in enumerate(segment.points):
+ for track_no, track in enumerate(self.tracks if self.tracks else [] ):
+ for segment_no, segment in enumerate(track.segments if track.segments else []):
+ for point_no, point in enumerate(segment.points if segment.points else []):
if only_points:
yield point
else:
@@ -2549,32 +2509,13 @@
return result
+
def get_nearest_location(self, location: mod_geo.Location) -> Optional[NearestLocationData]:
""" Returns (location, track_no, track_segment_no, track_point_no) for the
nearest location on map """
- if not self.tracks:
- return None
-
- result: Optional[GPXTrackPoint] = None
- distance = None
- result_track_no: int = -1
- result_segment_no: int = -1
- result_point_no: int = -1
- for i in range(len(self.tracks)):
- track = self.tracks[i]
- nearest_loc_info = track.get_nearest_location(location)
- if nearest_loc_info:
- nearest_location_distance = nearest_loc_info.location.distance_2d(location)
- if not distance or nearest_location_distance < distance:
- result = nearest_loc_info.location
- distance = nearest_location_distance
- result_track_no = i
- result_segment_no = nearest_loc_info.segment_no
- result_point_no = nearest_loc_info.point_no
-
- if result:
- return NearestLocationData(result, result_track_no, result_segment_no, result_point_no)
- return None
+ return min((NearestLocationData(pt, tr, seg, pt_no) for (pt,tr, seg, pt_no) in self.walk())
+ ,key=lambda x: x.location.distance_2d(location) if x is not None else float('INF')
+ ,default=None)
def add_elevation(self, delta: float) -> None:
"""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gpxpy-1.4.0/gpxpy/parser.py new/gpxpy-1.4.2/gpxpy/parser.py
--- old/gpxpy-1.4.0/gpxpy/parser.py 2020-01-16 20:41:16.000000000 +0100
+++ new/gpxpy-1.4.2/gpxpy/parser.py 2020-06-22 08:55:50.000000000 +0200
@@ -80,6 +80,8 @@
"""
text = xml_or_file.read() if hasattr(xml_or_file, 'read') else xml_or_file # type: ignore
+ if isinstance(text, bytes):
+ text = text.decode()
self.xml = mod_utils.make_str(cast(str, text))
def parse(self, version: Optional[str]=None) -> mod_gpx.GPX:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gpxpy-1.4.0/gpxpy/utils.py new/gpxpy-1.4.2/gpxpy/utils.py
--- old/gpxpy-1.4.0/gpxpy/utils.py 2020-01-16 20:41:16.000000000 +0100
+++ new/gpxpy-1.4.2/gpxpy/utils.py 2020-05-16 08:48:16.000000000 +0200
@@ -17,7 +17,7 @@
import xml.sax.saxutils as mod_saxutils
import datetime as mod_datetime
-from typing import Any, AnyStr, List, Optional
+from typing import Any, AnyStr, List, Optional, cast
def to_xml(tag: str, attributes: Any=None, content: Any=None, default: Any=None, escape: bool=False, prettyprint: bool=True, indent: str='') -> str:
if not prettyprint:
@@ -71,7 +71,7 @@
""" Some versions of python don't have the timedelta.total_seconds() method. """
if timedelta is None:
return None
- return (timedelta.days * 86400) + timedelta.seconds
+ return timedelta.total_seconds()
def make_str(s: AnyStr) -> str:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gpxpy-1.4.0/gpxpy.egg-info/PKG-INFO new/gpxpy-1.4.2/gpxpy.egg-info/PKG-INFO
--- old/gpxpy-1.4.0/gpxpy.egg-info/PKG-INFO 2020-01-16 20:43:18.000000000 +0100
+++ new/gpxpy-1.4.2/gpxpy.egg-info/PKG-INFO 2020-06-22 08:57:48.000000000 +0200
@@ -1,8 +1,8 @@
Metadata-Version: 2.1
Name: gpxpy
-Version: 1.4.0
+Version: 1.4.2
Summary: GPX file parser and GPS track manipulation library
-Home-page: http://www.trackprofiler.com/gpxpy/index.html
+Home-page: https://github.com/tkrajina/gpxpy
Author: Tomo Krajina
Author-email: tkrajina(a)gmail.com
License: Apache License, Version 2.0
@@ -76,7 +76,7 @@
## GPX version
- gpx.py can parse and generate GPX 1.0 and 1.1 files. Note that the generated file will always be a valid XML document, but it may not be (strictly speaking) a valid GPX document. For example, if you set gpx.email to "my.email AT mail.com" the generated GPX tag won't confirm to the regex pattern. And the file won't be valid. Most applications will ignore such errors, but... Be aware of this!
+ gpx.py can parse and generate GPX 1.0 and 1.1 files. The generated file will always be a valid XML document, but it may not be (strictly speaking) a valid GPX document. For example, if you set gpx.email to "my.email AT mail.com" the generated GPX tag won't confirm to the regex pattern. And the file won't be valid. Most applications will ignore such errors, but... Be aware of this!
Be aware that the gpxpy object model *is not 100% equivalent* with the underlying GPX XML file schema. That's because the library object model works with both GPX 1.0 and 1.1.
@@ -88,9 +88,7 @@
## XML parsing
- If lxml is available, then it will be used for XML parsing.
- Otherwise minidom is used.
- Note that lxml is 2-3 times faster so, if you can choose -- use it :)
+ If lxml is available, then it will be used for XML parsing, otherwise minidom is used. Lxml is 2-3 times faster so, if you can choose -- use it.
The GPX version is automatically determined when parsing by reading the version attribute in the gpx node. If this attribute is not present then the version is assumed to be 1.0. A specific version can be forced by setting the `version` parameter in the parse function. Possible values for the 'version' parameter are `1.0`, `1.1` and `None`.
@@ -98,7 +96,7 @@
Branches:
- * `branch` contains the code of the latest release
+ * `master` contains the code of the latest release
* `dev` branch is where code for the next release should go.
Send your pull request against `dev`, not `master`!
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gpxpy-1.4.0/gpxpy.egg-info/SOURCES.txt new/gpxpy-1.4.2/gpxpy.egg-info/SOURCES.txt
--- old/gpxpy-1.4.0/gpxpy.egg-info/SOURCES.txt 2020-01-16 20:43:18.000000000 +0100
+++ new/gpxpy-1.4.2/gpxpy.egg-info/SOURCES.txt 2020-06-22 08:57:48.000000000 +0200
@@ -30,10 +30,12 @@
test_files/gpx1.1_with_all_fields.gpx
test_files/gpx1.1_with_extensions.gpx
test_files/gpx1.1_with_extensions_without_namespaces.gpx
+test_files/gpx_with_garmin_extension.gpx
test_files/korita-zbevnica.gpx
test_files/route.gpx
test_files/track-with-empty-segment.gpx
test_files/track-with-extremes.gpx
+test_files/track-with-less-sec-time.gpx
test_files/track-with-small-floats.gpx
test_files/track_with_dilution_errors.gpx
test_files/track_with_speed.gpx
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gpxpy-1.4.0/setup.py new/gpxpy-1.4.2/setup.py
--- old/gpxpy-1.4.0/setup.py 2020-01-16 20:41:16.000000000 +0100
+++ new/gpxpy-1.4.2/setup.py 2020-06-17 07:01:30.000000000 +0200
@@ -34,7 +34,7 @@
license='Apache License, Version 2.0',
author='Tomo Krajina',
author_email='tkrajina(a)gmail.com',
- url='http://www.trackprofiler.com/gpxpy/index.html',
+ url='https://github.com/tkrajina/gpxpy',
packages=['gpxpy', ],
python_requires=">=3.6",
classifiers=[
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gpxpy-1.4.0/test.py new/gpxpy-1.4.2/test.py
--- old/gpxpy-1.4.0/test.py 2020-01-16 20:41:16.000000000 +0100
+++ new/gpxpy-1.4.2/test.py 2020-06-22 08:55:50.000000000 +0200
@@ -135,7 +135,7 @@
## input()
-def node_strip(text: AnyStr) -> AnyStr:
+def node_strip(text: str) -> str:
if text is None:
return ''
return text.strip()
@@ -185,6 +185,13 @@
with open('test_files/korita-zbevnica.gpx', encoding='utf-8') as f:
mod_gpxpy.parse(f)
+ def test_parse_bytes(self) -> None:
+ # Must not throw any exception:
+ with open('test_files/korita-zbevnica.gpx', encoding='utf-8') as f:
+ byts = f.read().encode(encoding='utf-8')
+ print(type(byts))
+ mod_gpxpy.parse(byts)
+
def test_simple_parse_function_invalid_xml(self) -> None:
try:
mod_gpxpy.parse('<gpx></gpx')
@@ -345,6 +352,18 @@
self.assertTrue(gpx.tracks[2].has_times())
self.assertTrue(gpx.tracks[3].has_times())
+ def test_total_time_support_less_one_sec(self) -> None:
+ start_time = mod_datetime.datetime(2018, 7, 4, 0, 0, 0)
+ end_time = mod_datetime.datetime(2018, 7, 4, 0, 0, 0, 994000)
+ d_time = end_time - start_time
+ moving_time = total_seconds(d_time)
+ self.assertEqual(0.994, moving_time)
+
+
+ def test_total_time_none(self) -> None:
+ moving_time = total_seconds(None) #type: ignore
+ self.assertIsNone(moving_time)
+
def test_unicode_name(self) -> None:
gpx = self.parse('unicode.gpx', encoding='utf-8')
name = gpx.waypoints[0].name
@@ -381,26 +400,38 @@
## self.assertTrue(make_str(security) == 'Open')
def test_nearest_location_1(self) -> None:
+ def test_nearest_gpx(gpx: mod_gpx.GPX) -> None:
+ def test_nearest(gpx: mod_gpx.GPX,loc: mod_geo.Location) -> None:
+ def test_nearest_part(gpx_part: Union[mod_gpx.GPX, mod_gpx.GPXTrack, mod_gpx.GPXTrackSegment], loc: mod_geo.Location) -> mod_gpx.NearestLocationData:
+ nearest_loc_info = gpx_part.get_nearest_location(loc)
+ print(gpx_part,nearest_loc_info)
+ self.assertTrue(nearest_loc_info is not None)
+ location = nearest_loc_info.location # type: ignore
+ nearest_nearest_loc_info = gpx_part.get_nearest_location(location)
+ self.assertTrue(nearest_nearest_loc_info == nearest_loc_info)
+ return nearest_loc_info # type: ignore
+
+ nearest_loc_info =test_nearest_part( gpx, loc)
+ location=nearest_loc_info.location
+ point = gpx.tracks[nearest_loc_info.track_no].segments[nearest_loc_info.segment_no].points[nearest_loc_info.point_no]
+ self.assertTrue(point.distance_2d(location) < 0.001) # type: ignore
+ self.assertTrue(point.distance_2d(nearest_loc_info.location) < 0.001) # type: ignore
+ test_nearest_part( gpx.tracks[nearest_loc_info.track_no], loc)
+ test_nearest_part( gpx.tracks[nearest_loc_info.track_no].segments[nearest_loc_info.segment_no], loc)
+
+ test_nearest(gpx,mod_geo.Location(45.451058791, 14.027903696))
+ test_nearest(gpx,mod_geo.Location(1, 1))
+ test_nearest(gpx,mod_geo.Location(50,50))
+
gpx = self.parse('korita-zbevnica.gpx')
-
- location = mod_geo.Location(45.451058791, 14.027903696)
- nearest_loc_info = gpx.get_nearest_location(location)
- print(nearest_loc_info)
- self.assertTrue(nearest_loc_info is not None)
- point = gpx.tracks[nearest_loc_info.track_no].segments[nearest_loc_info.segment_no].points[nearest_loc_info.point_no] # type: ignore
- self.assertTrue(point.distance_2d(location) < 0.001) # type: ignore
- self.assertTrue(point.distance_2d(nearest_loc_info.location) < 0.001) # type: ignore
-
- location = mod_geo.Location(1, 1)
- nearest_location, track_no, track_segment_no, track_point_no = gpx.get_nearest_location(location) # type: ignore
- point = gpx.tracks[track_no].segments[track_segment_no].points[track_point_no]
- self.assertTrue(point.distance_2d(nearest_location) < 0.001) # type: ignore
-
- location = mod_geo.Location(50, 50)
- nearest_location, track_no, track_segment_no, track_point_no = gpx.get_nearest_location(location) # type: ignore
- point = gpx.tracks[track_no].segments[track_segment_no].points[track_point_no]
- self.assertTrue(point.distance_2d(nearest_location) < 0.001) # type: ignore
-
+ test_nearest_gpx(gpx)
+ gpx.tracks[0].segments[0].points = None # type: ignore
+ test_nearest_gpx(gpx)
+ gpx.tracks[0].segments = None # type: ignore
+ test_nearest_gpx(gpx)
+ gpx.tracks = None # type: ignore
+ self.assertTrue( gpx.get_nearest_location(mod_geo.Location(1, 1)) is None)
+
def test_long_timestamps(self) -> None:
# Check if timestamps in format: 1901-12-13T20:45:52.2073437Z work
gpx = self.parse('Mojstrovka.gpx')
@@ -879,6 +910,15 @@
self.assertTrue(test_gpx.tracks[0].segments[0].points[0].vertical_dilution == 301.1)
self.assertTrue(test_gpx.tracks[0].segments[0].points[0].position_dilution == 302.1)
+ def test_subsecond_speed(self) -> None:
+ t1 = mod_datetime.datetime(2020, 1, 1, 0, 0, 0, 0)
+ pt1 = mod_gpx.GPXTrackPoint(0, 0, time=t1)
+ pt2 = mod_gpx.GPXTrackPoint(1, 1, time=t1 + mod_datetime.timedelta(milliseconds=500))
+ print(pt1.time)
+ print(pt2.time)
+ speed = pt1.speed_between(pt2)
+ self.assertTrue(speed > 0) # type: ignore
+
def test_course_between(self) -> None:
gpx = mod_gpx.GPX()
track = mod_gpx.GPXTrack()
@@ -1131,7 +1171,7 @@
for tmp_point in track.walk():
self.assertTrue(tmp_point)
- for point, segment_no, point_no in track.walk(): # type: ignore
+ for point, segment_no, point_no in track.walk():
self.assertTrue(point)
self.assertEqual(segment_no, len(track.segments) - 1)
@@ -3129,7 +3169,15 @@
gpx = mod_gpxpy.parse(f)
self.assertEqual(2, len(gpx.waypoints[0].extensions))
self.assertEqual("bbb", gpx.waypoints[0].extensions[0].text)
- self.assertEqual("eee", gpx.waypoints[0].extensions[1].getchildren()[0].text.strip())
+ self.assertEqual("eee", list(gpx.waypoints[0].extensions[1])[0].text.strip())
+
+ def test_garmin_extension(self) -> None:
+ f = open('test_files/gpx_with_garmin_extension.gpx', 'r')
+ gpx = mod_gpxpy.parse(f)
+ xml = gpx.to_xml()
+ self.assertTrue("<gpxtpx:TrackPointExtension>" in xml)
+ self.assertTrue("<gpxtpx:hr>171</gpxtpx:hr>" in xml)
+ print(gpx.to_xml())
def test_with_ns_namespace(self) -> None:
gpx_with_ns = mod_gpxpy.parse("""<?xml version="1.0" encoding="UTF-8"?>
@@ -3163,8 +3211,8 @@
for gpx in [gpx_with_ns, reparsed]:
extensions = gpx.tracks[0].segments[0].points[0].extensions
self.assertEqual(1, len(extensions))
- self.assertEqual("125", extensions[0].getchildren()[0].text.strip())
- self.assertEqual("75", extensions[0].getchildren()[1].text.strip())
+ self.assertEqual("125", list(extensions[0])[0].text.strip())
+ self.assertEqual("75", list(extensions[0])[1].text.strip())
def test_join_gpx_xml_files(self) -> None:
import gpxpy.gpxxml
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gpxpy-1.4.0/test_files/gpx_with_garmin_extension.gpx new/gpxpy-1.4.2/test_files/gpx_with_garmin_extension.gpx
--- old/gpxpy-1.4.0/test_files/gpx_with_garmin_extension.gpx 1970-01-01 01:00:00.000000000 +0100
+++ new/gpxpy-1.4.2/test_files/gpx_with_garmin_extension.gpx 2020-06-22 08:55:50.000000000 +0200
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gpx
+ version="1.1"
+ creator="Runkeeper - http://www.runkeeper.com"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns="http://www.topografix.com/GPX/1/1"
+ xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd"
+ xmlns:gpxtpx="http://www.garmin.com/xmlschemas/TrackPointExtension/v1">
+<wpt lat="37.778259000" lon="-122.391386000">
+<ele>3.4</ele><time>2016-06-17T23:41:03Z</time><extensions><gpxtpx:TrackPointExtension><gpxtpx:hr>171</gpxtpx:hr></gpxtpx:TrackPointExtension></extensions>
+</wpt>
+</gpx>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gpxpy-1.4.0/test_files/track-with-less-sec-time.gpx new/gpxpy-1.4.2/test_files/track-with-less-sec-time.gpx
--- old/gpxpy-1.4.0/test_files/track-with-less-sec-time.gpx 1970-01-01 01:00:00.000000000 +0100
+++ new/gpxpy-1.4.2/test_files/track-with-less-sec-time.gpx 2020-05-16 08:46:48.000000000 +0200
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<gpx xmlns="http://www.topografix.com/GPX/1/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gpxtpx="http://www.garmin.com/xmlschemas/TrackPointExtension/v1" xmlns:gpxx="http://www.garmin.com/xmlschemas/GpxExtensions/v3" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd http://www.garmin.com/xmlschemas/GpxExtensions/v3 http://www.garmin.com/xmlschemas/GpxExtensionsv3.xsd http://www.garmin.com/xmlschemas/TrackPointExtension/v1 http://www.garmin.com/xmlschemas/TrackPointExtensionv1.xsd" version="1.1" creator="NikePlus GPX Bridge">
+ <trk>
+ <type>run</type>
+ <trkseg>
+ <trkpt lon="9.992872" lat="57.011456">
+ <ele>23.5536</ele>
+ <time>2015-12-11T15:43:13.000+01:00</time>
+ </trkpt>
+ <trkpt lon="9.992874" lat="57.01147">
+ <ele>23.551199</ele>
+ <time>2015-12-11T15:43:13.994+01:00</time>
+ </trkpt>
+ </trkseg>
+ </trk>
+</gpx>
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package monitoring-plugins for openSUSE:Factory checked in at 2021-04-29 01:38:18
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/monitoring-plugins (Old)
and /work/SRC/openSUSE:Factory/.monitoring-plugins.new.12324 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "monitoring-plugins"
Thu Apr 29 01:38:18 2021 rev:19 rq:888965 version:2.3.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/monitoring-plugins/monitoring-plugins.changes 2020-10-20 16:24:32.526411306 +0200
+++ /work/SRC/openSUSE:Factory/.monitoring-plugins.new.12324/monitoring-plugins.changes 2021-04-29 01:39:22.554661395 +0200
@@ -1,0 +2,78 @@
+Wed Apr 21 07:47:25 UTC 2021 - Lars Vogdt <lars(a)linux-schulserver.de>
+
+- Update to 2.3.1:
+ Enhancements
+ * check_curl: Add an option to verify the peer certificate & host using the system CA's
+ Fixes
+ * check_icmp: fix simple typo, conspicuosly -> conspicuously
+ * check_curl: fixed help, usage and errors for TLS 1.3
+ * check_curl: fixed a potential buffer overflow in url buffer
+ * check_dns: split multiple IP addresses passed in one -a argument
+ * check_curl: added string_statuscode function for printing HTTP/1.1 and HTTP/2 correctly
+ * check_curl: fix crash if http header contains leading spaces
+ * check_curl: display a specific human-readable error message where possible
+ * check_pgsql: Using snprintf which honors the buffers size and guarantees null termination.
+ * check_snmp: put the "c" (to mark a counter) after the perfdata value
+ * check_http: Increase regexp limit
+ * check_http: make -C obvious
+ * check_curl: Increase regexp limit (to 1024 as in check_http)
+ * check_curl: make -C obvious (from check_http)
+- refreshed patches:
+ + monitoring-plugins-1.4.6-no_chown.patch
+ + monitoring-plugins-2.1.1-check_logfile.patch
+ + monitoring-plugins-2.2-mariadb_102_build_fix.patch
+ + monitoring-plugins-2.3-check_ntp_perf_absolute.patch
+ + monitoring-plugins-too_few_arguments_for_check_disk.patch
+ + monitoring-plugins-wrong_return_in_check_swap.patch
+ + monitoring-plugins.check_hpjd.c-64bit-portability-issue.patch
+ + monitoring-plugins.check_snmp.arrayaddress.patch
+- add sha1 checksum file as source
+
+-------------------------------------------------------------------
+Thu Jan 14 20:47:42 UTC 2021 - Lars Vogdt <lars(a)linux-schulserver.de>
+
+- Update to 2.3 (final):
+ Enhancements
+ * check_dns: allow 'expected address' (-a) to be specified in CIDR notation (IPv4 only).
+ * check_dns: allow for IPv6 RDNS
+ * check_dns: Accept CIDR
+ * check_dns: allow unsorted addresses
+ * check_dns: allow forcing complete match of all addresses
+ * check_apt: add --only-critical switch
+ * check_apt: add -l/--list option to print packages
+ * check_file_age: add range checking
+ * check_file_age: enable to test for maximum file size
+ * check_apt: adding packages-warning option
+ * check_load: Adding top consuming processes option
+ * check_http: Adding Proxy-Authorization and extra headers
+ * check_snmp: make calcualtion of timeout value in help output more clear
+ * check_uptime: new plugin for checking uptime to see how long the system is running
+ * check_curl: check_http replacement based on libcurl
+ * check_http: Allow user to specify HTTP method after proxy CONNECT
+ * check_http: Add new flag --show-body/-B to print body
+ * check_cluster: Added data argument validation
+ * check_icmp: Add IPv6 support
+ * check_icmp: Automatically detect IP protocol
+ * check_icmp: emit error if multiple protocol version
+ * check_disk: add support to display inodes usage in perfdata
+ * check_hpjd: Added -D option to disable warning on 'out of paper'
+ * check_http: support the --show-body/-B flag when --expect is used
+ * check_mysql: allow mariadbclient to be used
+ * check_tcp: add --sni
+ * check_dns: detect unreachable dns service in nslookup output
+ Fixes
+ * Fix regression where check_dhcp was rereading response in a tight loop
+ * check_dns: fix error detection on sles nslookup
+ * check_disk_smb: fix timeout issue
+ * check_swap: repaired -n behaviour
+ * check_icmp: Correctly set address_family on lookup
+ * check_icmp: Do not overwrite -4,-6 on lookup
+ * check_smtp: initializes n before it is used
+ * check_dns: fix typo in parameter description
+ * check_by_ssh: fix child process leak on timeouts
+ * check_mysql: Allow sockets to be specified to -H
+ * check_procs: improve command examples for 'at least' processes
+ * check_disk: include -P switch in help
+ * check_mailq: restore accidentially removed options
+
+-------------------------------------------------------------------
Old:
----
_service
monitoring-plugins-2.3~alpha.20200520T233014.cadac85e.obscpio
monitoring-plugins-2.3~alpha.20200520T233014.cadac85e.tar.xz
New:
----
monitoring-plugins-2.3.1.tar.gz
monitoring-plugins-2.3.1.tar.gz.sha1
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ monitoring-plugins.spec ++++++
--- /var/tmp/diff_new_pack.qnHpHV/_old 2021-04-29 01:39:23.262662397 +0200
+++ /var/tmp/diff_new_pack.qnHpHV/_new 2021-04-29 01:39:23.266662402 +0200
@@ -1,7 +1,7 @@
#
# spec file for package monitoring-plugins
#
-# Copyright (c) 2020 SUSE LLC
+# Copyright (c) 2021 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,14 +17,15 @@
Name: monitoring-plugins
-Version: 2.3~alpha.20200520T233014.cadac85e
+Version: 2.3.1
Release: 0
Summary: The Monitoring Plug-Ins
License: GPL-2.0-or-later AND GPL-3.0-only
Group: System/Monitoring
URL: http://monitoring-plugins.org/
-Source0: %{name}-%{version}.tar.xz
+Source0: %{name}-%{version}.tar.gz
Source1: %{name}-rpmlintrc
+Source2: %{name}-%{version}.tar.gz.sha1
Source11: %{name}-permissions
Source12: %{name}-README.SUSE
Source13: %{name}-README.SUSE-check_dhcp
++++++ monitoring-plugins-1.4.6-no_chown.patch ++++++
--- /var/tmp/diff_new_pack.qnHpHV/_old 2021-04-29 01:39:23.334662499 +0200
+++ /var/tmp/diff_new_pack.qnHpHV/_new 2021-04-29 01:39:23.334662499 +0200
@@ -1,7 +1,7 @@
-Index: monitoring-plugins-2.2/plugins-root/Makefile.am
+Index: monitoring-plugins-2.3.1/plugins-root/Makefile.am
===================================================================
---- monitoring-plugins-2.2.orig/plugins-root/Makefile.am
-+++ monitoring-plugins-2.2/plugins-root/Makefile.am
+--- monitoring-plugins-2.3.1.orig/plugins-root/Makefile.am
++++ monitoring-plugins-2.3.1/plugins-root/Makefile.am
@@ -47,7 +47,6 @@ INSTALL_SUID = \
echo " $(INSTALL_PROGRAM) $$p $(DESTDIR)$(libexecdir)/$$p"; \
$(INSTALL_PROGRAM) $$p $(DESTDIR)$(libexecdir)/$$p; \
@@ -16,10 +16,10 @@
rm -f $$TMPFILE; \
- if test $$can_create_suid_root_executable = yes; then \
- $(INSTALL_SUID); \
-+ $(INSTALL_SUID); \
-+ if test $$can_create_suid_root_executable != yes; then \
- else \
- echo "WARNING: insufficient access; not installing setuid plugins"; \
++ $(INSTALL_SUID); \
++ if test $$can_create_suid_root_executable != yes; then \
+ echo "WARNING: insufficient access; not installing plugins as setuid"; \
echo "NOTE: to install setuid plugins, run 'make install-root' as root"; \
+ echo "NOTE: or fix this in your packaging (like the specfile)"; \
++++++ monitoring-plugins-2.1.1-check_logfile.patch ++++++
--- /var/tmp/diff_new_pack.qnHpHV/_old 2021-04-29 01:39:23.342662510 +0200
+++ /var/tmp/diff_new_pack.qnHpHV/_new 2021-04-29 01:39:23.346662515 +0200
@@ -1,7 +1,7 @@
-Index: monitoring-plugins-2.2/plugins-scripts/check_log.sh
+Index: monitoring-plugins-2.3.1/plugins-scripts/check_log.sh
===================================================================
---- monitoring-plugins-2.2.orig/plugins-scripts/check_log.sh
-+++ monitoring-plugins-2.2/plugins-scripts/check_log.sh
+--- monitoring-plugins-2.3.1.orig/plugins-scripts/check_log.sh
++++ monitoring-plugins-2.3.1/plugins-scripts/check_log.sh
@@ -115,27 +115,27 @@ while test -n "$1"; do
exit $STATE_OK
;;
++++++ monitoring-plugins-2.2-mariadb_102_build_fix.patch ++++++
--- /var/tmp/diff_new_pack.qnHpHV/_old 2021-04-29 01:39:23.354662527 +0200
+++ /var/tmp/diff_new_pack.qnHpHV/_new 2021-04-29 01:39:23.354662527 +0200
@@ -30,11 +30,11 @@
plugins/check_mysql_query.c | 8 ++++++--
2 files changed, 12 insertions(+), 4 deletions(-)
-diff --git a/plugins/check_mysql.c b/plugins/check_mysql.c
-index 5773afd9..c44919d0 100644
---- a/plugins/check_mysql.c
-+++ b/plugins/check_mysql.c
-@@ -36,6 +36,10 @@ const char *email = "devel(a)monitoring-plugins.org";
+Index: monitoring-plugins-2.3.1/plugins/check_mysql.c
+===================================================================
+--- monitoring-plugins-2.3.1.orig/plugins/check_mysql.c
++++ monitoring-plugins-2.3.1/plugins/check_mysql.c
+@@ -36,6 +36,10 @@ const char *email = "devel@monitoring-pl
#define SLAVERESULTSIZE 70
@@ -54,7 +54,7 @@
int check_slave = 0, warn_sec = 0, crit_sec = 0;
int ignore_auth = 0;
int verbose = 0;
-@@ -505,7 +509,7 @@ void
+@@ -508,7 +512,7 @@ void
print_help (void)
{
char *myport;
@@ -63,11 +63,11 @@
print_revision (progname, NP_VERSION);
-diff --git a/plugins/check_mysql_query.c b/plugins/check_mysql_query.c
-index 49a14dd3..6f492442 100644
---- a/plugins/check_mysql_query.c
-+++ b/plugins/check_mysql_query.c
-@@ -33,6 +33,10 @@ const char *progname = "check_mysql_query";
+Index: monitoring-plugins-2.3.1/plugins/check_mysql_query.c
+===================================================================
+--- monitoring-plugins-2.3.1.orig/plugins/check_mysql_query.c
++++ monitoring-plugins-2.3.1/plugins/check_mysql_query.c
+@@ -33,6 +33,10 @@ const char *progname = "check_mysql_quer
const char *copyright = "1999-2007";
const char *email = "devel(a)monitoring-plugins.org";
@@ -96,4 +96,3 @@
print_revision (progname, NP_VERSION);
-
++++++ monitoring-plugins-2.3-check_ntp_perf_absolute.patch ++++++
--- /var/tmp/diff_new_pack.qnHpHV/_old 2021-04-29 01:39:23.366662544 +0200
+++ /var/tmp/diff_new_pack.qnHpHV/_new 2021-04-29 01:39:23.366662544 +0200
@@ -1,6 +1,8 @@
---- monitoring-plugins-2.3~alpha.20200520T233014.cadac85e/plugins/check_ntp_time.c 2020/10/12 16:05:30 1.1
-+++ monitoring-plugins-2.3~alpha.20200520T233014.cadac85e/plugins/check_ntp_time.c 2020/10/12 16:07:13
-@@ -533,7 +533,7 @@
+Index: monitoring-plugins-2.3.1/plugins/check_ntp_time.c
+===================================================================
+--- monitoring-plugins-2.3.1.orig/plugins/check_ntp_time.c
++++ monitoring-plugins-2.3.1/plugins/check_ntp_time.c
+@@ -533,7 +533,7 @@ int process_arguments(int argc, char **a
char *perfd_offset (double offset)
{
++++++ monitoring-plugins-2.3.1.tar.gz.sha1 ++++++
8cb4d72920ed99ff922b6989fe5213ea76b9388e *monitoring-plugins-2.3.1.tar.gz
++++++ monitoring-plugins-too_few_arguments_for_check_disk.patch ++++++
--- /var/tmp/diff_new_pack.qnHpHV/_old 2021-04-29 01:39:23.542662793 +0200
+++ /var/tmp/diff_new_pack.qnHpHV/_new 2021-04-29 01:39:23.542662793 +0200
@@ -1,8 +1,8 @@
-Index: monitoring-plugins-2.2/plugins/check_disk.c
+Index: monitoring-plugins-2.3.1/plugins/check_disk.c
===================================================================
---- monitoring-plugins-2.2.orig/plugins/check_disk.c
-+++ monitoring-plugins-2.2/plugins/check_disk.c
-@@ -997,7 +997,7 @@ get_stats (struct parameter_list *p, str
+--- monitoring-plugins-2.3.1.orig/plugins/check_disk.c
++++ monitoring-plugins-2.3.1/plugins/check_disk.c
+@@ -1030,7 +1030,7 @@ get_stats (struct parameter_list *p, str
if (verbose >= 3)
printf("Group %s: adding %llu blocks sized %llu, (%s) used_units=%g free_units=%g total_units=%g fsu_blocksize=%llu mult=%llu\n",
p_list->group, tmpfsp.fsu_bavail, tmpfsp.fsu_blocksize, p_list->best_match->me_mountdir, p_list->dused_units, p_list->dfree_units,
++++++ monitoring-plugins-wrong_return_in_check_swap.patch ++++++
--- /var/tmp/diff_new_pack.qnHpHV/_old 2021-04-29 01:39:23.550662804 +0200
+++ /var/tmp/diff_new_pack.qnHpHV/_new 2021-04-29 01:39:23.550662804 +0200
@@ -29,11 +29,11 @@
Additional info:
https://bugzilla.redhat.com/512559
-Index: monitoring-plugins-2.2/plugins/check_swap.c
+Index: monitoring-plugins-2.3.1/plugins/check_swap.c
===================================================================
---- monitoring-plugins-2.2.orig/plugins/check_swap.c
-+++ monitoring-plugins-2.2/plugins/check_swap.c
-@@ -125,7 +125,7 @@
+--- monitoring-plugins-2.3.1.orig/plugins/check_swap.c
++++ monitoring-plugins-2.3.1/plugins/check_swap.c
+@@ -125,7 +125,7 @@ main (int argc, char **argv)
free_swap_mb += dskfree_mb;
if (allswaps) {
if (dsktotal_mb == 0)
++++++ monitoring-plugins.check_hpjd.c-64bit-portability-issue.patch ++++++
--- /var/tmp/diff_new_pack.qnHpHV/_old 2021-04-29 01:39:23.570662832 +0200
+++ /var/tmp/diff_new_pack.qnHpHV/_new 2021-04-29 01:39:23.570662832 +0200
@@ -1,8 +1,8 @@
-Index: monitoring-plugins-2.2/plugins/check_hpjd.c
+Index: monitoring-plugins-2.3.1/plugins/check_hpjd.c
===================================================================
---- monitoring-plugins-2.2.orig/plugins/check_hpjd.c
-+++ monitoring-plugins-2.2/plugins/check_hpjd.c
-@@ -66,7 +66,7 @@
+--- monitoring-plugins-2.3.1.orig/plugins/check_hpjd.c
++++ monitoring-plugins-2.3.1/plugins/check_hpjd.c
+@@ -66,7 +66,7 @@ void print_usage (void);
char *community = NULL;
char *address = NULL;
++++++ monitoring-plugins.check_snmp.arrayaddress.patch ++++++
--- /var/tmp/diff_new_pack.qnHpHV/_old 2021-04-29 01:39:23.578662844 +0200
+++ /var/tmp/diff_new_pack.qnHpHV/_new 2021-04-29 01:39:23.578662844 +0200
@@ -1,13 +1,13 @@
-Index: monitoring-plugins-2.2/plugins/check_snmp.c
+Index: monitoring-plugins-2.3.1/plugins/check_snmp.c
===================================================================
---- monitoring-plugins-2.2.orig/plugins/check_snmp.c
-+++ monitoring-plugins-2.2/plugins/check_snmp.c
-@@ -588,7 +588,7 @@ main (int argc, char **argv)
- strncat(perfstr, critical_thresholds, sizeof(perfstr)-strlen(perfstr)-1);
- }
+--- monitoring-plugins-2.3.1.orig/plugins/check_snmp.c
++++ monitoring-plugins-2.3.1/plugins/check_snmp.c
+@@ -576,7 +576,7 @@ main (int argc, char **argv)
+ len = sizeof(perfstr)-strlen(perfstr)-1;
+ strncat(perfstr, show, len>ptr-show ? ptr-show : len);
- if (type)
+ if (type[0])
strncat(perfstr, type, sizeof(perfstr)-strlen(perfstr)-1);
- strncat(perfstr, " ", sizeof(perfstr)-strlen(perfstr)-1);
- }
+
+ if (warning_thresholds) {
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package tiled for openSUSE:Factory checked in at 2021-04-29 01:38:16
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/tiled (Old)
and /work/SRC/openSUSE:Factory/.tiled.new.12324 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "tiled"
Thu Apr 29 01:38:16 2021 rev:28 rq:888963 version:1.6.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/tiled/tiled.changes 2021-04-27 21:34:58.604014856 +0200
+++ /work/SRC/openSUSE:Factory/.tiled.new.12324/tiled.changes 2021-04-29 01:39:21.882660444 +0200
@@ -1,0 +2,8 @@
+Wed Apr 28 07:56:48 UTC 2021 - Michael Vetter <mvetter(a)suse.com>
+
+- Update tiled-endl.patch:
+ Update from commit 7059846dc551a5d6b3cda8c78aa990aff8a4861f
+ to final one 068d0bf2e9632bf7473b40e4073eb3787f8889d1 since it
+ works with more Qt versions
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ tiled-endl.patch ++++++
--- /var/tmp/diff_new_pack.Zf4X0m/_old 2021-04-29 01:39:22.346661101 +0200
+++ /var/tmp/diff_new_pack.Zf4X0m/_new 2021-04-29 01:39:22.346661101 +0200
@@ -1,18 +1,162 @@
-From 7059846dc551a5d6b3cda8c78aa990aff8a4861f Mon Sep 17 00:00:00 2001
+From 068d0bf2e9632bf7473b40e4073eb3787f8889d1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thorbj=C3=B8rn=20Lindeijer?= <bjorn(a)lindeijer.nl>
Date: Mon, 26 Apr 2021 19:12:00 +0200
Subject: [PATCH] Fixed compilation issue with GCC 10
main.cpp:334:33: error no match for 'operator<<' (operand types are 'QTextStream' and '<unresolved overloaded function type>'
+
+Closes #3037
---
- src/tiled/main.cpp | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
+ src/libtiled/qtcompat_p.h | 8 +++++++-
+ src/plugins/tengine/tengineplugin.cpp | 26 ++++++++++++--------------
+ src/tiled/main.cpp | 14 +++++---------
+ 3 files changed, 24 insertions(+), 24 deletions(-)
+diff --git a/src/libtiled/qtcompat_p.h b/src/libtiled/qtcompat_p.h
+index aad3d87dd5..2252975fdd 100644
+--- a/src/libtiled/qtcompat_p.h
++++ b/src/libtiled/qtcompat_p.h
+@@ -19,7 +19,7 @@
+
+ #pragma once
+
+-#include <qglobal.h>
++#include <QTextStream>
+
+ #if QT_VERSION < QT_VERSION_CHECK(5,7,0)
+ namespace QtPrivate
+@@ -60,6 +60,12 @@ void qAsConst(const T &&) Q_DECL_EQ_DELETE;
+
+ #endif
+
++#if QT_VERSION < QT_VERSION_CHECK(5,14,0)
++namespace Qt {
++using ::endl;
++}
++#endif
++
+ #if QT_VERSION >= QT_VERSION_CHECK(6,0,0)
+ using QStringRef = QStringView;
+ #endif
+diff --git a/src/plugins/tengine/tengineplugin.cpp b/src/plugins/tengine/tengineplugin.cpp
+index b7b2cf3d1a..b397a598cd 100644
+--- a/src/plugins/tengine/tengineplugin.cpp
++++ b/src/plugins/tengine/tengineplugin.cpp
+@@ -38,6 +38,8 @@
+
+ #include <QtMath>
+
++#include "qtcompat_p.h"
++
+ using namespace Tengine;
+
+ TenginePlugin::TenginePlugin()
+@@ -57,10 +59,6 @@ bool TenginePlugin::write(const Tiled::Map *map, const QString &fileName, Option
+ }
+ QTextStream out(file.device());
+
+-#if QT_VERSION >= QT_VERSION_CHECK(5,14,0)
+- using Qt::endl;
+-#endif
+-
+ // Write the header
+ const QString header = map->property("header").toString();
+ #if QT_VERSION >= QT_VERSION_CHECK(6,0,0)
+@@ -69,7 +67,7 @@ bool TenginePlugin::write(const Tiled::Map *map, const QString &fileName, Option
+ const auto lines = header.splitRef("\\n");
+ #endif
+ for (const auto &line : lines)
+- out << line << endl;
++ out << line << Qt::endl;
+
+ const int width = map->width();
+ const int height = map->height();
+@@ -192,7 +190,7 @@ bool TenginePlugin::write(const Tiled::Map *map, const QString &fileName, Option
+ }
+ }
+ // Write the definitions to the file
+- out << "-- defineTile section" << endl;
++ out << "-- defineTile section" << Qt::endl;
+ for (i = cachedTiles.constBegin(); i != cachedTiles.constEnd(); ++i) {
+ QString displayString = i.key();
+ // Only print the emptyTile definition if there were empty tiles
+@@ -206,11 +204,11 @@ bool TenginePlugin::write(const Tiled::Map *map, const QString &fileName, Option
+ if (!args.isEmpty()) {
+ args = QString(", %1").arg(args);
+ }
+- out << QString("defineTile(\"%1\"%2)").arg(displayString, args) << endl;
++ out << QString("defineTile(\"%1\"%2)").arg(displayString, args) << Qt::endl;
+ }
+
+ // Check for an ObjectGroup named AddSpot
+- out << endl << "-- addSpot section" << endl;
++ out << Qt::endl << "-- addSpot section" << Qt::endl;
+ for (Layer *layer : map->layers()) {
+ ObjectGroup *objectLayer = layer->asObjectGroup();
+ if (objectLayer && objectLayer->name().startsWith("addspot", Qt::CaseInsensitive)) {
+@@ -225,7 +223,7 @@ bool TenginePlugin::write(const Tiled::Map *map, const QString &fileName, Option
+ }
+ for (int y = qFloor(obj->y()); y <= qFloor(obj->y() + obj->height()); ++y) {
+ for (int x = qFloor(obj->x()); x <= qFloor(obj->x() + obj->width()); ++x) {
+- out << QString("addSpot({%1, %2}%3)").arg(x).arg(y).arg(args) << endl;
++ out << QString("addSpot({%1, %2}%3)").arg(x).arg(y).arg(args) << Qt::endl;
+ }
+ }
+ }
+@@ -233,7 +231,7 @@ bool TenginePlugin::write(const Tiled::Map *map, const QString &fileName, Option
+ }
+
+ // Check for an ObjectGroup named AddZone
+- out << endl << "-- addZone section" << endl;
++ out << Qt::endl << "-- addZone section" << Qt::endl;
+ for (Layer *layer : map->layers()) {
+ ObjectGroup *objectLayer = layer->asObjectGroup();
+ if (objectLayer && objectLayer->name().startsWith("addzone", Qt::CaseInsensitive)) {
+@@ -250,7 +248,7 @@ bool TenginePlugin::write(const Tiled::Map *map, const QString &fileName, Option
+ int top_left_y = qFloor(obj->y());
+ int bottom_right_x = qFloor(obj->x() + obj->width());
+ int bottom_right_y = qFloor(obj->y() + obj->height());
+- out << QString("addZone({%1, %2, %3, %4}%5)").arg(top_left_x).arg(top_left_y).arg(bottom_right_x).arg(bottom_right_y).arg(args) << endl;
++ out << QString("addZone({%1, %2, %3, %4}%5)").arg(top_left_x).arg(top_left_y).arg(bottom_right_x).arg(bottom_right_y).arg(args) << Qt::endl;
+ }
+ }
+ }
+@@ -280,8 +278,8 @@ bool TenginePlugin::write(const Tiled::Map *map, const QString &fileName, Option
+ itemStop = "";
+ seperator = "";
+ }
+- out << endl << "-- ASCII map section" << endl;
+- out << "return " << returnStart << endl;
++ out << Qt::endl << "-- ASCII map section" << Qt::endl;
++ out << "return " << returnStart << Qt::endl;
+ for (int y = 0; y < height; ++y) {
+ out << lineStart;
+ for (int x = 0; x < width; ++x) {
+@@ -290,7 +288,7 @@ bool TenginePlugin::write(const Tiled::Map *map, const QString &fileName, Option
+ if (y == height - 1) {
+ out << lineStop << returnStop;
+ } else {
+- out << lineStop << endl;
++ out << lineStop << Qt::endl;
+ }
+ }
+
diff --git a/src/tiled/main.cpp b/src/tiled/main.cpp
-index fce9f3cd2d..b9b89e2203 100644
+index fce9f3cd2d..d583aa23e7 100644
--- a/src/tiled/main.cpp
+++ b/src/tiled/main.cpp
-@@ -260,7 +260,7 @@ void CommandLineHandler::showVersion()
+@@ -66,10 +66,6 @@ static QTextStream& stdOut()
+ return ts;
+ }
+
+-#if QT_VERSION >= QT_VERSION_CHECK(5,14,0)
+-using Qt::endl;
+-#endif
+-
+ namespace {
+
+ class CommandLineHandler : public CommandLineParser
+@@ -260,7 +256,7 @@ void CommandLineHandler::showVersion()
if (!showedVersion) {
showedVersion = true;
stdOut() << QApplication::applicationDisplayName() << " "
@@ -21,7 +165,7 @@
quit = true;
}
}
-@@ -317,9 +317,9 @@ void CommandLineHandler::showExportFormats()
+@@ -317,9 +313,9 @@ void CommandLineHandler::showExportFormats()
}
formats.sort(Qt::CaseSensitive);
@@ -33,7 +177,7 @@
formats.clear();
const auto tilesetFormats = PluginManager::objects<TilesetFormat>();
-@@ -329,9 +329,9 @@ void CommandLineHandler::showExportFormats()
+@@ -329,9 +325,9 @@ void CommandLineHandler::showExportFormats()
}
formats.sort(Qt::CaseSensitive);
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package diff-pdf for openSUSE:Factory checked in at 2021-04-29 01:38:14
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/diff-pdf (Old)
and /work/SRC/openSUSE:Factory/.diff-pdf.new.12324 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "diff-pdf"
Thu Apr 29 01:38:14 2021 rev:5 rq:888966 version:0.5
Changes:
--------
--- /work/SRC/openSUSE:Factory/diff-pdf/diff-pdf.changes 2021-01-01 21:13:42.095385962 +0100
+++ /work/SRC/openSUSE:Factory/.diff-pdf.new.12324/diff-pdf.changes 2021-04-29 01:39:20.650658701 +0200
@@ -1,0 +2,17 @@
+Wed Apr 28 07:54:00 UTC 2021 - Martin Pluskal <mpluskal(a)suse.com>
+
+- Update to version 0.5:
+ * Reflect renaming of package from Ubuntu 20.10 on
+ * Increase version to v0.5
+ * Add --grayscale option
+ * Show default DPI value used in --help output
+ * Remove code for old versions of glib and wxWidgets
+ * Tiny code formatting fixes
+ * Add rasterization DPI option (#71)
+ * AppVeyor: fix MSYS2 build
+ * Remove legacy poppler-cairo dependency (#69)
+ * Add instructions for installing on Fedora and CentOS 8 (#66)
+- Drop no longer needed fix-find-poppler.patch
+- Switch to obs scm _service
+
+-------------------------------------------------------------------
Old:
----
diff-pdf-0.4.1.tar.gz
diff-pdf.1
fix-find-poppler.patch
New:
----
_service
_servicedata
diff-pdf-0.5.obscpio
diff-pdf.obsinfo
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ diff-pdf.spec ++++++
--- /var/tmp/diff_new_pack.qmYrh6/_old 2021-04-29 01:39:21.158659420 +0200
+++ /var/tmp/diff_new_pack.qmYrh6/_new 2021-04-29 01:39:21.158659420 +0200
@@ -1,7 +1,7 @@
#
# spec file for package diff-pdf
#
-# Copyright (c) 2020 SUSE LLC
+# Copyright (c) 2021 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,18 +17,17 @@
Name: diff-pdf
-Version: 0.4.1
+Version: 0.5
Release: 0
Summary: Simple PDF comparison tool
License: GPL-2.0-only AND LGPL-2.0-only
Group: Productivity/Publishing/PDF
URL: https://vslavik.github.io/diff-pdf/
-Source0: https://github.com/vslavik/diff-pdf/archive/v%{version}/%{name}-%{version}.…
-Source1: %{name}.1
-Patch0: fix-find-poppler.patch
+Source0: %{name}-%{version}.tar.gz
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: gcc-c++
+BuildRequires: help2man
BuildRequires: pkgconfig
BuildRequires: wxWidgets-devel
BuildRequires: pkgconfig(cairo)
@@ -40,7 +39,7 @@
diff-pdf is a simple tool for comparing two PDF files.
%prep
-%autosetup -p1
+%autosetup
%build
./bootstrap
@@ -50,9 +49,9 @@
%install
%make_install
-#help2man -N -n "%%{summary}" --version-string="%%{version}" --no-discard-stderr \
-# -o %%{buildroot}%%{_mandir}/man1/%%{name}.1 %%{buildroot}%%{_bindir}/%%{name}
-install -D -m 0644 -t %{buildroot}%{_mandir}/man1/ %{SOURCE1}
+install -d %{buildroot}%{_mandir}/man1/
+help2man -N -n "%{summary}" --version-string="%{version}" --no-discard-stderr \
+ -o %{buildroot}%{_mandir}/man1/%{name}.1 %{buildroot}%{_bindir}/%{name}
%files
%license COPYING COPYING.icons
++++++ _service ++++++
<services>
<service name="obs_scm" mode="disabled">
<param name="versionformat">@PARENT_TAG@</param>
<param name="url">https://github.com/vslavik/diff-pdf.git</param>
<param name="scm">git</param>
<param name="changesgenerate">enable</param>
<param name="exclude">.*</param>
<param name="versionrewrite-pattern">v(.*)</param>
</service>
<service name="tar" mode="buildtime"/>
<service name="recompress" mode="buildtime">
<param name="compression">gz</param>
<param name="file">*.tar</param>
</service>
<service name="set_version" mode="disabled">
</service>
</services>
++++++ _servicedata ++++++
<servicedata>
<service name="tar_scm">
<param name="url">https://github.com/vslavik/diff-pdf.git</param>
<param name="changesrevision">201dab3d230c0d9513d9330bd10030d590894056</param></service></servicedata>++++++ diff-pdf.obsinfo ++++++
name: diff-pdf
version: 0.5
mtime: 1614361918
commit: 201dab3d230c0d9513d9330bd10030d590894056
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package clazy for openSUSE:Factory checked in at 2021-04-29 01:38:15
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/clazy (Old)
and /work/SRC/openSUSE:Factory/.clazy.new.12324 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "clazy"
Thu Apr 29 01:38:15 2021 rev:17 rq:888964 version:1.9
Changes:
--------
--- /work/SRC/openSUSE:Factory/clazy/clazy.changes 2021-04-19 21:07:27.520160639 +0200
+++ /work/SRC/openSUSE:Factory/.clazy.new.12324/clazy.changes 2021-04-29 01:39:21.326659657 +0200
@@ -1,0 +2,5 @@
+Wed Apr 21 07:17:51 UTC 2021 - Christophe Giboudeaux <christophe(a)krop.fr>
+
+- Make sure C++17 support is available for Leap builds.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ clazy.spec ++++++
--- /var/tmp/diff_new_pack.qeYE4x/_old 2021-04-29 01:39:21.738660240 +0200
+++ /var/tmp/diff_new_pack.qeYE4x/_new 2021-04-29 01:39:21.738660240 +0200
@@ -29,7 +29,12 @@
BuildRequires: clang
BuildRequires: clang-devel >= 7.0
BuildRequires: cmake >= 3.7
+%if 0%{?suse_version} == 1500
+# C++17 is required
+BuildRequires: gcc10-c++
+%else
BuildRequires: libstdc++-devel
+%endif
%requires_eq clang%{_llvm_sonum}
%description
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package mmc-utils for openSUSE:Factory checked in at 2021-04-29 01:38:13
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/mmc-utils (Old)
and /work/SRC/openSUSE:Factory/.mmc-utils.new.12324 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mmc-utils"
Thu Apr 29 01:38:13 2021 rev:14 rq:888951 version:0.1+git.20210330
Changes:
--------
--- /work/SRC/openSUSE:Factory/mmc-utils/mmc-utils.changes 2020-02-05 19:41:40.187266775 +0100
+++ /work/SRC/openSUSE:Factory/.mmc-utils.new.12324/mmc-utils.changes 2021-04-29 01:39:12.522647180 +0200
@@ -1,0 +2,14 @@
+Wed Apr 28 07:43:21 UTC 2021 - Martin Pluskal <mpluskal(a)suse.com>
+
+- Update to version 0.1+git.20210330:
+ * Various fixes
+ * Add various SD/eMMC vendors to table
+ * Fix parsing of Product Revision and Serial Number
+ * mmc_cmds.c: fix build with gcc 4.9
+ * mmc-utils: Add AUTO_EN support in the BKOPS_EN
+ * mmc-utils: Expand 'writeprotect boot'
+ * mmc-utils: Fix scaling of cache size
+ * rpmb: Zero-init MMC_IOC_MULTI_CMD structures
+ * mmc-utils: let FFU mode use CMD23 and CMD25
+
+-------------------------------------------------------------------
Old:
----
mmc-utils-0.1+git.20191004.obscpio
New:
----
mmc-utils-0.1+git.20210330.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ mmc-utils.spec ++++++
--- /var/tmp/diff_new_pack.vN3KdQ/_old 2021-04-29 01:39:13.014647877 +0200
+++ /var/tmp/diff_new_pack.vN3KdQ/_new 2021-04-29 01:39:13.018647883 +0200
@@ -1,7 +1,7 @@
#
# spec file for package mmc-utils
#
-# Copyright (c) 2020 SUSE LLC
+# Copyright (c) 2021 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,12 +17,12 @@
Name: mmc-utils
-Version: 0.1+git.20191004
+Version: 0.1+git.20210330
Release: 0
Summary: Tools for MMC/SD devices
License: GPL-2.0-only
Group: Hardware/Other
-URL: http://git.kernel.org/cgit/linux/kernel/git/cjb/mmc-utils.git/
+URL: https://git.kernel.org/cgit/linux/kernel/git/cjb/mmc-utils.git/
Source0: %{name}-%{version}.tar.gz
Source1: https://www.gnu.org/licenses/gpl-2.0.txt
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.vN3KdQ/_old 2021-04-29 01:39:13.054647934 +0200
+++ /var/tmp/diff_new_pack.vN3KdQ/_new 2021-04-29 01:39:13.058647940 +0200
@@ -1,4 +1,4 @@
<servicedata>
<service name="tar_scm">
<param name="url">git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc-utils.git</param>
- <param name="changesrevision">73d6c59af8d1bcedf5de4aa1f5d5b7f765f545f5</param></service></servicedata>
\ No newline at end of file
+ <param name="changesrevision">e9654ebc4a6a48642848822c4a1355a9de4958d1</param></service></servicedata>
\ No newline at end of file
++++++ mmc-utils-0.1+git.20191004.obscpio -> mmc-utils-0.1+git.20210330.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mmc-utils-0.1+git.20191004/lsmmc.c new/mmc-utils-0.1+git.20210330/lsmmc.c
--- old/mmc-utils-0.1+git.20191004/lsmmc.c 2019-10-05 02:47:33.000000000 +0200
+++ new/mmc-utils-0.1+git.20210330/lsmmc.c 2021-03-30 15:28:34.000000000 +0200
@@ -112,7 +112,7 @@
{
.type = "sd",
.id = 0x1b,
- .manufacturer = "Transcend",
+ .manufacturer = "Transcend/Samsung",
},
{
.type = "sd",
@@ -122,7 +122,7 @@
{
.type = "sd",
.id = 0x1d,
- .manufacturer = "Corsair",
+ .manufacturer = "Corsair/AData",
},
{
.type = "sd",
@@ -136,6 +136,11 @@
},
{
.type = "sd",
+ .id = 0x27,
+ .manufacturer = "Delkin/Phison",
+ },
+ {
+ .type = "sd",
.id = 0x28,
.manufacturer = "Lexar",
},
@@ -146,6 +151,11 @@
},
{
.type = "sd",
+ .id = 0x31,
+ .manufacturer = "Silicon Power",
+ },
+ {
+ .type = "sd",
.id = 0x33,
.manufacturer = "STMicroelectronics",
},
@@ -161,6 +171,21 @@
},
{
.type = "sd",
+ .id = 0x74,
+ .manufacturer = "Transcend",
+ },
+ {
+ .type = "sd",
+ .id = 0x76,
+ .manufacturer = "Patriot",
+ },
+ {
+ .type = "sd",
+ .id = 0x82,
+ .manufacturer = "Gobe/Sony",
+ },
+ {
+ .type = "sd",
.id = 0x89,
.manufacturer = "Unknown",
},
@@ -224,6 +249,11 @@
.id = 0x70,
.manufacturer = "Kingston",
},
+ {
+ .type = "mmc",
+ .id = 0xfe,
+ .manufacturer = "Micron",
+ },
};
/* Command line parsing functions */
@@ -524,9 +554,9 @@
printf("\tOID: %s\n", oid);
printf("\tPNM: %s\n", pnm);
printf("\tPRV: 0x%01x%01x ", prv_major, prv_minor);
- printf("(%d.%d)\n", prv_major, prv_minor);
+ printf("(%u.%u)\n", prv_major, prv_minor);
printf("\tPSN: 0x%08x\n", psn);
- printf("\tMDT: 0x%02x%01x %d %s\n", mdt_year, mdt_month,
+ printf("\tMDT: 0x%02x%01x %u %s\n", mdt_year, mdt_month,
2000 + mdt_year, months[mdt_month]);
printf("\tCRC: 0x%02x\n", crc);
} else {
@@ -536,9 +566,9 @@
else
printf("manufacturer: 'Unlisted' '%s'\n", oid);
- printf("product: '%s' %d.%d\n", pnm, prv_major, prv_minor);
+ printf("product: '%s' %u.%u\n", pnm, prv_major, prv_minor);
printf("serial: 0x%08x\n", psn);
- printf("manfacturing date: %d %s\n", 2000 + mdt_year,
+ printf("manufacturing date: %u %s\n", 2000 + mdt_year,
months[mdt_month]);
}
}
@@ -562,7 +592,7 @@
unsigned int crc;
parse_bin(cid, "8u6r2u8u48a4u4u32u4u4u7u1r",
- &mid, &cbx, &oid, &pnm[0], &psn, &prv_major, &prv_minor,
+ &mid, &cbx, &oid, &pnm[0], &prv_major, &prv_minor, &psn,
&mdt_year, &mdt_month, &crc);
pnm[6] = '\0';
@@ -595,9 +625,9 @@
printf("\tOID: 0x%01x\n", oid);
printf("\tPNM: %s\n", pnm);
printf("\tPRV: 0x%01x%01x ", prv_major, prv_minor);
- printf("(%d.%d)\n", prv_major, prv_minor);
+ printf("(%u.%u)\n", prv_major, prv_minor);
printf("\tPSN: 0x%08x\n", psn);
- printf("\tMDT: 0x%01x%01x %d %s\n", mdt_month, mdt_year,
+ printf("\tMDT: 0x%01x%01x %u %s\n", mdt_month, mdt_year,
1997 + mdt_year, months[mdt_month]);
printf("\tCRC: 0x%02x\n", crc);
} else {
@@ -607,9 +637,9 @@
else
printf("manufacturer: 'Unlisted' '%c'\n", oid);
- printf("product: '%s' %d.%d\n", pnm, prv_major, prv_minor);
+ printf("product: '%s' %u.%u\n", pnm, prv_major, prv_minor);
printf("serial: 0x%08x\n", psn);
- printf("manfacturing date: %d %s\n", 1997 + mdt_year,
+ printf("manufacturing date: %u %s\n", 1997 + mdt_year,
months[mdt_month]);
}
}
@@ -699,7 +729,7 @@
printf("======SD/CSD======\n");
- printf("\tCSD_STRUCTURE: %d\n", csd_structure);
+ printf("\tCSD_STRUCTURE: %u\n", csd_structure);
printf("\tTAAC: 0x%02x (", taac);
switch (taac_timevalue) {
@@ -786,7 +816,7 @@
if (csd_structure == 1 && taac != 0x0e)
printf("Warn: Invalid TAAC (should be 0x0e)\n");
- printf("\tNSAC: %d clocks\n", nsac);
+ printf("\tNSAC: %u clocks\n", nsac);
if (csd_structure == 1 && nsac != 0x00)
printf("Warn: Invalid NSAC (should be 0x00)\n");
@@ -1073,12 +1103,12 @@
if (erase_blk_en != 0x01)
printf("Warn: Invalid ERASE_BLK_EN (should be 0x01)\n");
- printf("\tSECTOR_SIZE: 0x%02x (Erasable sector: %d blocks)\n",
+ printf("\tSECTOR_SIZE: 0x%02x (Erasable sector: %u blocks)\n",
sector_size, sector_size + 1);
if (sector_size != 0x7f)
printf("Warn: Invalid SECTOR_SIZE (should be 0x7f)\n");
- printf("\tWP_GRP_SIZE: 0x%02x (Write protect group: %d blocks)\n",
+ printf("\tWP_GRP_SIZE: 0x%02x (Write protect group: %u blocks)\n",
wp_grp_size, wp_grp_size + 1);
if (wp_grp_size != 0x00)
printf("Warn: Invalid WP_GRP_SIZE (should be 0x00)\n");
@@ -1087,7 +1117,7 @@
if (wp_grp_enable != 0x00)
printf("Warn: Invalid WP_GRP_ENABLE (should be 0x00)\n");
- printf("\tR2W_FACTOR: 0x%01x (Write %d times read)\n",
+ printf("\tR2W_FACTOR: 0x%01x (Write %u times read)\n",
r2w_factor, r2w_factor);
if (r2w_factor != 0x02)
printf("Warn: Invalid R2W_FACTOR (should be 0x02)\n");
@@ -1169,7 +1199,7 @@
else
printf("%.2fbyte", memory_capacity * 1.0);
- printf(" (%lld bytes, %lld sectors, %d bytes each)\n",
+ printf(" (%llu bytes, %llu sectors, %d bytes each)\n",
memory_capacity, blocks, block_size);
} else {
unsigned long long blocks = 0;
@@ -1232,7 +1262,7 @@
else
printf("%.2fbyte", memory_capacity * 1.0);
- printf(" (%lld bytes, %lld sectors, %d bytes each)\n",
+ printf(" (%llu bytes, %llu sectors, %d bytes each)\n",
memory_capacity, blocks, block_size);
}
}
@@ -1426,7 +1456,7 @@
break;
}
- printf("\tNSAC: %d clocks\n", nsac);
+ printf("\tNSAC: %u clocks\n", nsac);
printf("\tTRAN_SPEED: 0x%02x (", tran_speed);
switch (tran_speed_timevalue) {
case 0x0:
@@ -1734,10 +1764,10 @@
printf("\tC_SIZE_MULT: 0x%01x\n", c_size_mult);
printf("\tERASE_GRP_SIZE: 0x%02x\n", erase_grp_size);
- printf("\tERASE_GRP_MULT: 0x%02x (%d write blocks/erase group)\n",
+ printf("\tERASE_GRP_MULT: 0x%02x (%u write blocks/erase group)\n",
erase_grp_mult, (erase_grp_size + 1) *
(erase_grp_mult + 1));
- printf("\tWP_GRP_SIZE: 0x%02x (%d blocks/write protect group)\n",
+ printf("\tWP_GRP_SIZE: 0x%02x (%u blocks/write protect group)\n",
wp_grp_size, wp_grp_size + 1);
printf("\tWP_GRP_ENABLE: 0x%01x\n", wp_grp_enable);
@@ -1754,7 +1784,7 @@
break;
}
- printf("\tR2W_FACTOR: 0x%01x (Write %d times read)\n",
+ printf("\tR2W_FACTOR: 0x%01x (Write %u times read)\n",
r2w_factor, r2w_factor);
printf("\tWRITE_BL_LEN: 0x%01x (", write_bl_len);
@@ -1884,7 +1914,7 @@
else
printf("%.2fbyte", memory_capacity * 1.0);
- printf(" (%lld bytes, %lld sectors, %d bytes each)\n",
+ printf(" (%llu bytes, %llu sectors, %d bytes each)\n",
memory_capacity, blocks, block_size);
} else {
int mult;
@@ -1961,7 +1991,7 @@
printf("%.2fKbyte", memory_capacity / (1024.0));
else
printf("%.2fbyte", memory_capacity * 1.0);
- printf(" (%lld bytes, %lld sectors, %d bytes each)\n",
+ printf(" (%llu bytes, %llu sectors, %d bytes each)\n",
memory_capacity, blocks, block_size);
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mmc-utils-0.1+git.20191004/mmc.c new/mmc-utils-0.1+git.20210330/mmc.c
--- old/mmc-utils-0.1+git.20191004/mmc.c 2019-10-05 02:47:33.000000000 +0200
+++ new/mmc-utils-0.1+git.20210330/mmc.c 2021-03-30 15:28:34.000000000 +0200
@@ -64,9 +64,20 @@
NULL
},
{ do_writeprotect_boot_set, -1,
- "writeprotect boot set", "<device>\n"
- "Set the boot partitions write protect status for <device>.\nThis sets the eMMC boot partitions to be write-protected until\nthe next boot.",
- NULL
+ "writeprotect boot set",
+#ifdef DANGEROUS_COMMANDS_ENABLED
+ "[-p] "
+#endif /* DANGEROUS_COMMANDS_ENABLED */
+ "<device> [<number>]\n"
+ "Set the boot partition write protect status for <device>.\n"
+ "If <number> is passed (0 or 1), only protect that particular\n"
+ "eMMC boot partition, otherwise protect both. It will be\n"
+ "write-protected until the next boot.\n"
+#ifdef DANGEROUS_COMMANDS_ENABLED
+ " -p Protect partition permanently instead.\n"
+ " NOTE! -p is a one-time programmable (unreversible) change.\n"
+#endif /* DANGEROUS_COMMANDS_ENABLED */
+ , NULL
},
{ do_writeprotect_user_set, -4,
"writeprotect user set", "<type>" "<start block>" "<blocks>" "<device>\n"
@@ -120,9 +131,12 @@
"<boot_bus_width> must be \"x1|x4|x8\"",
NULL
},
- { do_write_bkops_en, -1,
- "bkops enable", "<device>\n"
- "Enable the eMMC BKOPS feature on <device>.\nNOTE! This is a one-time programmable (unreversible) change.",
+ { do_write_bkops_en, -2,
+ "bkops_en", "<auto|manual> <device>\n"
+ "Enable the eMMC BKOPS feature on <device>.\n"
+ "The auto (AUTO_EN) setting is only supported on eMMC 5.0 or newer.\n"
+ "Setting auto won't have any effect if manual is set.\n"
+ "NOTE! Setting manual (MANUAL_EN) is one-time programmable (unreversible) change.",
NULL
},
{ do_hwreset_en, -1,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mmc-utils-0.1+git.20191004/mmc.h new/mmc-utils-0.1+git.20210330/mmc.h
--- old/mmc-utils-0.1+git.20191004/mmc.h 2019-10-05 02:47:33.000000000 +0200
+++ new/mmc-utils-0.1+git.20210330/mmc.h 2021-03-30 15:28:34.000000000 +0200
@@ -29,6 +29,7 @@
#define R1_SWITCH_ERROR (1 << 7) /* sx, c */
#define MMC_SWITCH_MODE_WRITE_BYTE 0x03 /* Set target to value */
#define MMC_READ_MULTIPLE_BLOCK 18 /* adtc [31:0] data addr R1 */
+#define MMC_SET_BLOCK_COUNT 23 /* adtc [31:0] data addr R1 */
#define MMC_WRITE_BLOCK 24 /* adtc [31:0] data addr R1 */
#define MMC_WRITE_MULTIPLE_BLOCK 25 /* adtc R1 */
#define MMC_SET_WRITE_PROT 28 /* ac [31:0] data addr R1b */
@@ -74,6 +75,7 @@
#define EXT_CSD_PART_CONFIG 179
#define EXT_CSD_BOOT_BUS_CONDITIONS 177
#define EXT_CSD_ERASE_GROUP_DEF 175
+#define EXT_CSD_BOOT_WP_STATUS 174
#define EXT_CSD_BOOT_WP 173
#define EXT_CSD_USER_WP 171
#define EXT_CSD_FW_CONFIG 169 /* R/W */
@@ -126,9 +128,10 @@
#define EN_REL_WR (1<<2)
/*
- * BKOPS_EN field definition
+ * BKOPS_EN field definitions
*/
-#define BKOPS_ENABLE (1<<0)
+#define BKOPS_MAN_ENABLE (1<<0)
+#define BKOPS_AUTO_ENABLE (1<<1)
/*
* EXT_CSD field definitions
@@ -143,9 +146,19 @@
#define EXT_CSD_HPI_SUPP (1<<0)
#define EXT_CSD_HPI_IMPL (1<<1)
#define EXT_CSD_CMD_SET_NORMAL (1<<0)
+/* NOTE: The eMMC spec calls the partitions "Area 1" and "Area 2", but Linux
+ * calls them mmcblk0boot0 and mmcblk0boot1. To avoid confustion between the two
+ * numbering schemes, this tool uses 0 and 1 throughout. */
+#define EXT_CSD_BOOT_WP_S_AREA_1_PERM (0x08)
+#define EXT_CSD_BOOT_WP_S_AREA_1_PWR (0x04)
+#define EXT_CSD_BOOT_WP_S_AREA_0_PERM (0x02)
+#define EXT_CSD_BOOT_WP_S_AREA_0_PWR (0x01)
+#define EXT_CSD_BOOT_WP_B_SEC_WP_SEL (0x80)
#define EXT_CSD_BOOT_WP_B_PWR_WP_DIS (0x40)
#define EXT_CSD_BOOT_WP_B_PERM_WP_DIS (0x10)
+#define EXT_CSD_BOOT_WP_B_PERM_WP_SEC_SEL (0x08)
#define EXT_CSD_BOOT_WP_B_PERM_WP_EN (0x04)
+#define EXT_CSD_BOOT_WP_B_PWR_WP_SEC_SEL (0x02)
#define EXT_CSD_BOOT_WP_B_PWR_WP_EN (0x01)
#define EXT_CSD_BOOT_INFO_HS_MODE (1<<2)
#define EXT_CSD_BOOT_INFO_DDR_DDR (1<<1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mmc-utils-0.1+git.20191004/mmc_cmds.c new/mmc-utils-0.1+git.20210330/mmc_cmds.c
--- old/mmc-utils-0.1+git.20191004/mmc_cmds.c 2019-10-05 02:47:33.000000000 +0200
+++ new/mmc-utils-0.1+git.20210330/mmc_cmds.c 2021-03-30 15:28:34.000000000 +0200
@@ -202,11 +202,19 @@
else
printf("possible\n");
- printf(" ro lock status: ");
- if (reg & EXT_CSD_BOOT_WP_B_PWR_WP_EN)
+ reg = ext_csd[EXT_CSD_BOOT_WP_STATUS];
+ printf(" partition 0 ro lock status: ");
+ if (reg & EXT_CSD_BOOT_WP_S_AREA_0_PERM)
+ printf("locked permanently\n");
+ else if (reg & EXT_CSD_BOOT_WP_S_AREA_0_PWR)
printf("locked until next power on\n");
- else if (reg & EXT_CSD_BOOT_WP_B_PERM_WP_EN)
+ else
+ printf("not locked\n");
+ printf(" partition 1 ro lock status: ");
+ if (reg & EXT_CSD_BOOT_WP_S_AREA_1_PERM)
printf("locked permanently\n");
+ else if (reg & EXT_CSD_BOOT_WP_S_AREA_1_PWR)
+ printf("locked until next power on\n");
else
printf("not locked\n");
}
@@ -252,6 +260,7 @@
print_writeprotect_boot_status(ext_csd);
+ close(fd);
return ret;
}
@@ -260,13 +269,28 @@
__u8 ext_csd[512], value;
int fd, ret;
char *device;
+ char *end;
+ int argi = 1;
+ int permanent = 0;
+ int partition = -1;
- if (nargs != 2) {
- fprintf(stderr, "Usage: mmc writeprotect boot set </path/to/mmcblkX>\n");
+#ifdef DANGEROUS_COMMANDS_ENABLED
+ if (!strcmp(argv[argi], "-p")){
+ permanent = 1;
+ argi++;
+ }
+#endif
+
+ if (nargs < 1 + argi || nargs > 2 + argi) {
+ fprintf(stderr, "Usage: mmc writeprotect boot set "
+#ifdef DANGEROUS_COMMANDS_ENABLED
+ "[-p] "
+#endif
+ "</path/to/mmcblkX> [0|1]\n");
exit(1);
}
- device = argv[1];
+ device = argv[argi++];
fd = open(device, O_RDWR);
if (fd < 0) {
@@ -274,14 +298,49 @@
exit(1);
}
+ if (nargs == 1 + argi) {
+ partition = strtoul(argv[argi], &end, 0);
+ if (*end != '\0' || !(partition == 0 || partition == 1)) {
+ fprintf(stderr, "Invalid partition number (must be 0 or 1): %s\n",
+ argv[argi]);
+ exit(1);
+ }
+ }
+
ret = read_extcsd(fd, ext_csd);
if (ret) {
fprintf(stderr, "Could not read EXT_CSD from %s\n", device);
exit(1);
}
- value = ext_csd[EXT_CSD_BOOT_WP] |
- EXT_CSD_BOOT_WP_B_PWR_WP_EN;
+ value = ext_csd[EXT_CSD_BOOT_WP];
+ /*
+ * If permanent protection is already on for one partition and we're
+ * trying to enable power-reset protection for the other we need to make
+ * sure the selection bit for permanent protection still points to the
+ * former or we'll accidentally permanently protect the latter.
+ */
+ if ((value & EXT_CSD_BOOT_WP_B_PERM_WP_EN) && !permanent) {
+ if (ext_csd[EXT_CSD_BOOT_WP_STATUS] &
+ EXT_CSD_BOOT_WP_S_AREA_1_PERM) {
+ value |= EXT_CSD_BOOT_WP_B_PERM_WP_SEC_SEL;
+ if (partition != 1)
+ partition = 0;
+ } else {
+ /* PERM_WP_SEC_SEL cleared -> pointing to partition 0 */
+ if (partition != 0)
+ partition = 1;
+ }
+ }
+ if (partition != -1) {
+ value |= EXT_CSD_BOOT_WP_B_SEC_WP_SEL;
+ if (partition == 1)
+ value |= permanent ? EXT_CSD_BOOT_WP_B_PERM_WP_SEC_SEL
+ : EXT_CSD_BOOT_WP_B_PWR_WP_SEC_SEL;
+ }
+ value |= permanent ? EXT_CSD_BOOT_WP_B_PERM_WP_EN
+ : EXT_CSD_BOOT_WP_B_PWR_WP_EN;
+
ret = write_extcsd_value(fd, EXT_CSD_BOOT_WP, value);
if (ret) {
fprintf(stderr, "Could not write 0x%02x to "
@@ -290,6 +349,7 @@
exit(1);
}
+ close(fd);
return ret;
}
@@ -378,6 +438,7 @@
if (last_wpblk != (x + y - 1))
print_wp_status(wp_sizeblks, last_wpblk, cnt - 1, last_prot);
+ close(fd);
return ret;
}
@@ -524,6 +585,7 @@
printf("MMC does not support disabling 512B emulation mode.\n");
}
+ close(fd);
return ret;
}
@@ -595,6 +657,7 @@
value, EXT_CSD_PART_CONFIG, device);
exit(1);
}
+ close(fd);
return ret;
}
@@ -716,6 +779,7 @@
exit(1);
}
+ close(fd);
return ret;
}
@@ -734,13 +798,15 @@
__u8 ext_csd[512], value = 0;
int fd, ret;
char *device;
+ char *en_type;
- if (nargs != 2) {
- fprintf(stderr, "Usage: mmc bkops enable </path/to/mmcblkX>\n");
- exit(1);
+ if (nargs != 3) {
+ fprintf(stderr, "Usage: mmc bkops_en <auto|manual> </path/to/mmcblkX>\n");
+ exit(1);
}
- device = argv[1];
+ en_type = argv[1];
+ device = argv[2];
fd = open(device, O_RDWR);
if (fd < 0) {
@@ -754,18 +820,26 @@
exit(1);
}
- if (!(ext_csd[EXT_CSD_BKOPS_SUPPORT] & 0x1)) {
- fprintf(stderr, "%s doesn't support BKOPS\n", device);
+ if (strcmp(en_type, "auto") == 0) {
+ if (ext_csd[EXT_CSD_REV] < EXT_CSD_REV_V5_0) {
+ fprintf(stderr, "%s doesn't support AUTO_EN in the BKOPS_EN register\n", device);
+ exit(1);
+ }
+ ret = write_extcsd_value(fd, EXT_CSD_BKOPS_EN, BKOPS_AUTO_ENABLE);
+ } else if (strcmp(en_type, "manual") == 0) {
+ ret = write_extcsd_value(fd, EXT_CSD_BKOPS_EN, BKOPS_MAN_ENABLE);
+ } else {
+ fprintf(stderr, "%s invalid mode for BKOPS_EN requested: %s. Valid options: auto or manual\n", en_type, device);
exit(1);
}
- ret = write_extcsd_value(fd, EXT_CSD_BKOPS_EN, BKOPS_ENABLE);
if (ret) {
fprintf(stderr, "Could not write 0x%02x to EXT_CSD[%d] in %s\n",
value, EXT_CSD_BKOPS_EN, device);
exit(1);
}
+ close(fd);
return ret;
}
@@ -796,6 +870,7 @@
printf("SEND_STATUS response: 0x%08x\n", response);
+ close(fd);
return ret;
}
@@ -1419,8 +1494,8 @@
printf("Power off notification [POWER_OFF_LONG_TIME: 0x%02x]\n",
ext_csd[247]);
printf("Cache Size [CACHE_SIZE] is %d KiB\n",
- ext_csd[249] << 0 | (ext_csd[250] << 8) |
- (ext_csd[251] << 16) | (ext_csd[252] << 24));
+ (ext_csd[249] << 0 | (ext_csd[250] << 8) |
+ (ext_csd[251] << 16) | (ext_csd[252] << 24)) / 8);
}
/* A441: Reserved [501:247]
@@ -1615,11 +1690,11 @@
printf("Write reliability setting register"
" [WR_REL_SET]: 0x%02x\n", reg);
- printf(" user area: %s\n", reg & (1<<0) ? reliable : fast);
+ printf(" user area: %s\n", (reg & (1<<0)) ? reliable : fast);
int i;
for (i = 1; i <= 4; i++) {
printf(" partition %d: %s\n", i,
- reg & (1<<i) ? reliable : fast);
+ (reg & (1<<i)) ? reliable : fast);
}
reg = ext_csd[EXT_CSD_WR_REL_PARAM];
@@ -1837,6 +1912,7 @@
exit(1);
}
+ close(fd);
return ret;
}
@@ -1915,14 +1991,16 @@
u_int16_t rpmb_type;
struct mmc_ioc_multi_cmd *mioc;
struct mmc_ioc_cmd *ioc;
- struct rpmb_frame frame_status = {0};
+ struct rpmb_frame frame_status;
+
+ memset(&frame_status, 0, sizeof(frame_status));
if (!frame_in || !frame_out || !out_cnt)
return -EINVAL;
/* prepare arguments for MMC_IOC_MULTI_CMD ioctl */
mioc = (struct mmc_ioc_multi_cmd *)
- malloc(sizeof (struct mmc_ioc_multi_cmd) +
+ calloc(1, sizeof (struct mmc_ioc_multi_cmd) +
RPMB_MULTI_CMD_MAX_CMDS * sizeof (struct mmc_ioc_cmd));
if (!mioc) {
return -ENOMEM;
@@ -2422,6 +2500,7 @@
exit(1);
}
+ close(fd);
return ret;
}
@@ -2446,12 +2525,13 @@
int sect_done = 0, retry = 3, ret = -EINVAL;
unsigned int sect_size;
__u8 ext_csd[512];
- __u8 *buf;
+ __u8 *buf = NULL;
__u32 arg;
off_t fw_size;
ssize_t chunk_size;
char *device;
- struct mmc_ioc_multi_cmd *multi_cmd;
+ struct mmc_ioc_multi_cmd *multi_cmd = NULL;
+ __u32 blocks = 1;
if (nargs != 3) {
fprintf(stderr, "Usage: ffu <image name> </path/to/mmcblkX> \n");
@@ -2471,14 +2551,6 @@
exit(1);
}
- buf = malloc(512);
- multi_cmd = calloc(1, sizeof(struct mmc_ioc_multi_cmd) +
- 3 * sizeof(struct mmc_ioc_cmd));
- if (!buf || !multi_cmd) {
- perror("failed to allocate memory");
- goto out;
- }
-
ret = read_extcsd(dev_fd, ext_csd);
if (ret) {
fprintf(stderr, "Could not read EXT_CSD from %s\n", device);
@@ -2503,9 +2575,17 @@
}
fw_size = lseek(img_fd, 0, SEEK_END);
+ if (fw_size > MMC_IOC_MAX_BYTES || fw_size == 0) {
+ fprintf(stderr, "Wrong firmware size");
+ goto out;
+ }
- if (fw_size == 0) {
- fprintf(stderr, "Firmware image is empty");
+ /* allocate maximum required */
+ buf = malloc(fw_size);
+ multi_cmd = calloc(1, sizeof(struct mmc_ioc_multi_cmd) +
+ 4 * sizeof(struct mmc_ioc_cmd));
+ if (!buf || !multi_cmd) {
+ perror("failed to allocate memory");
goto out;
}
@@ -2515,14 +2595,19 @@
goto out;
}
+ /* calculate required fw blocks for CMD25 */
+ blocks = fw_size / sect_size;
+
/* set CMD ARG */
arg = ext_csd[EXT_CSD_FFU_ARG_0] |
ext_csd[EXT_CSD_FFU_ARG_1] << 8 |
ext_csd[EXT_CSD_FFU_ARG_2] << 16 |
ext_csd[EXT_CSD_FFU_ARG_3] << 24;
+ /* prepare multi_cmd for FFU based on cmd to be used */
+
/* prepare multi_cmd to be sent */
- multi_cmd->num_of_cmds = 3;
+ multi_cmd->num_of_cmds = 4;
/* put device into ffu mode */
multi_cmd->cmds[0].opcode = MMC_SWITCH;
@@ -2533,37 +2618,42 @@
multi_cmd->cmds[0].flags = MMC_RSP_SPI_R1B | MMC_RSP_R1B | MMC_CMD_AC;
multi_cmd->cmds[0].write_flag = 1;
+ /* send block count */
+ multi_cmd->cmds[1].opcode = MMC_SET_BLOCK_COUNT;
+ multi_cmd->cmds[1].arg = blocks;
+ multi_cmd->cmds[1].flags = MMC_RSP_SPI_R1 | MMC_RSP_R1 | MMC_CMD_AC;
+
/* send image chunk */
- multi_cmd->cmds[1].opcode = MMC_WRITE_BLOCK;
- multi_cmd->cmds[1].blksz = sect_size;
- multi_cmd->cmds[1].blocks = 1;
- multi_cmd->cmds[1].arg = arg;
- multi_cmd->cmds[1].flags = MMC_RSP_SPI_R1 | MMC_RSP_R1 | MMC_CMD_ADTC;
- multi_cmd->cmds[1].write_flag = 1;
- mmc_ioc_cmd_set_data(multi_cmd->cmds[1], buf);
+ multi_cmd->cmds[2].opcode = MMC_WRITE_MULTIPLE_BLOCK;
+ multi_cmd->cmds[2].blksz = sect_size;
+ multi_cmd->cmds[2].blocks = blocks;
+ multi_cmd->cmds[2].arg = arg;
+ multi_cmd->cmds[2].flags = MMC_RSP_SPI_R1 | MMC_RSP_R1 | MMC_CMD_ADTC;
+ multi_cmd->cmds[2].write_flag = 1;
+ mmc_ioc_cmd_set_data(multi_cmd->cmds[2], buf);
/* return device into normal mode */
- multi_cmd->cmds[2].opcode = MMC_SWITCH;
- multi_cmd->cmds[2].arg = (MMC_SWITCH_MODE_WRITE_BYTE << 24) |
+ multi_cmd->cmds[3].opcode = MMC_SWITCH;
+ multi_cmd->cmds[3].arg = (MMC_SWITCH_MODE_WRITE_BYTE << 24) |
(EXT_CSD_MODE_CONFIG << 16) |
(EXT_CSD_NORMAL_MODE << 8) |
EXT_CSD_CMD_SET_NORMAL;
- multi_cmd->cmds[2].flags = MMC_RSP_SPI_R1B | MMC_RSP_R1B | MMC_CMD_AC;
- multi_cmd->cmds[2].write_flag = 1;
+ multi_cmd->cmds[3].flags = MMC_RSP_SPI_R1B | MMC_RSP_R1B | MMC_CMD_AC;
+ multi_cmd->cmds[3].write_flag = 1;
do_retry:
/* read firmware chunk */
lseek(img_fd, 0, SEEK_SET);
- chunk_size = read(img_fd, buf, 512);
+ chunk_size = read(img_fd, buf, fw_size);
- while (chunk_size > 0) {
+ if (chunk_size > 0) {
/* send ioctl with multi-cmd */
ret = ioctl(dev_fd, MMC_IOC_MULTI_CMD, multi_cmd);
if (ret) {
perror("Multi-cmd ioctl");
/* In case multi-cmd ioctl failed before exiting from ffu mode */
- ioctl(dev_fd, MMC_IOC_CMD, &multi_cmd->cmds[2]);
+ ioctl(dev_fd, MMC_IOC_CMD, &multi_cmd->cmds[3]);
goto out;
}
@@ -2590,9 +2680,6 @@
} else {
fprintf(stderr, "Programmed %d/%jd bytes\r", sect_done * sect_size, (intmax_t)fw_size);
}
-
- /* read the next firmware chunk (if any) */
- chunk_size = read(img_fd, buf, 512);
}
if ((sect_done * sect_size) == fw_size) {
@@ -2629,7 +2716,7 @@
if (ret) {
perror("Multi-cmd ioctl failed setting install mode");
/* In case multi-cmd ioctl failed before exiting from ffu mode */
- ioctl(dev_fd, MMC_IOC_CMD, &multi_cmd->cmds[2]);
+ ioctl(dev_fd, MMC_IOC_CMD, &multi_cmd->cmds[3]);
goto out;
}
++++++ mmc-utils.obsinfo ++++++
--- /var/tmp/diff_new_pack.vN3KdQ/_old 2021-04-29 01:39:13.178648110 +0200
+++ /var/tmp/diff_new_pack.vN3KdQ/_new 2021-04-29 01:39:13.178648110 +0200
@@ -1,5 +1,5 @@
name: mmc-utils
-version: 0.1+git.20191004
-mtime: 1570236453
-commit: 73d6c59af8d1bcedf5de4aa1f5d5b7f765f545f5
+version: 0.1+git.20210330
+mtime: 1617110914
+commit: e9654ebc4a6a48642848822c4a1355a9de4958d1
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package fwts for openSUSE:Factory checked in at 2021-04-29 01:38:11
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/fwts (Old)
and /work/SRC/openSUSE:Factory/.fwts.new.12324 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "fwts"
Thu Apr 29 01:38:11 2021 rev:58 rq:888948 version:21.03.00
Changes:
--------
--- /work/SRC/openSUSE:Factory/fwts/fwts.changes 2021-04-15 16:58:36.506787383 +0200
+++ /work/SRC/openSUSE:Factory/.fwts.new.12324/fwts.changes 2021-04-29 01:39:11.650645944 +0200
@@ -1,0 +2,5 @@
+Wed Apr 28 07:37:50 UTC 2021 - Martin Pluskal <mpluskal(a)suse.com>
+
+- Switch to obs scm _service
+
+-------------------------------------------------------------------
Old:
----
fwts-V21.03.00.tar.gz
New:
----
_service
_servicedata
fwts-21.03.00.obscpio
fwts.obsinfo
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ fwts.spec ++++++
--- /var/tmp/diff_new_pack.1FqVt2/_old 2021-04-29 01:39:12.322646897 +0200
+++ /var/tmp/diff_new_pack.1FqVt2/_new 2021-04-29 01:39:12.326646902 +0200
@@ -23,7 +23,7 @@
License: GPL-2.0-or-later
Group: Development/Tools/Other
URL: https://wiki.ubuntu.com/Kernel/Reference/fwts
-Source0: https://fwts.ubuntu.com/release/%{name}-V%{version}.tar.gz
+Source0: %{name}-%{version}.tar.gz
# PATCH-FIX-OPENSUSE fwts-no-compiletime.patch
Patch1: fwts-no-compiletime.patch
# PATCH-FIX-OPENSUSE fwts-fix-non-acpi.patch
@@ -56,7 +56,7 @@
issues.
%prep
-%autosetup -c %{name}-V%{version} -p1
+%autosetup -p1
%build
find . -name Makefile.am -exec sed -i "s|-Werror||g" {} +
++++++ _service ++++++
<services>
<service name="obs_scm" mode="disabled">
<param name="versionformat">@PARENT_TAG@</param>
<param name="url">https://git.launchpad.net/fwts</param>
<param name="scm">git</param>
<param name="changesgenerate">enable</param>
<param name="exclude">.*</param>
<param name="versionrewrite-pattern">V(.*)</param>
</service>
<service name="tar" mode="buildtime"/>
<service name="recompress" mode="buildtime">
<param name="compression">gz</param>
<param name="file">*.tar</param>
</service>
<service name="set_version" mode="disabled">
</service>
</services>
++++++ _servicedata ++++++
<servicedata>
<service name="tar_scm">
<param name="url">https://git.launchpad.net/fwts</param>
<param name="changesrevision">779d290ddc28cf55ed8f939e610ab02425ef2ec4</param></service></servicedata>++++++ fwts.obsinfo ++++++
name: fwts
version: 21.03.00
mtime: 1619418370
commit: 779d290ddc28cf55ed8f939e610ab02425ef2ec4
1
0