openSUSE Commits
Threads by month
- ----- 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
March 2023
- 2 participants
- 2681 discussions
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-cligj for openSUSE:Factory checked in at 2022-04-28 23:07:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-cligj (Old)
and /work/SRC/openSUSE:Factory/.python-cligj.new.1538 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-cligj"
Thu Apr 28 23:07:52 2022 rev:2 rq:973538 version:0.7.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-cligj/python-cligj.changes 2019-03-10 09:36:21.436162133 +0100
+++ /work/SRC/openSUSE:Factory/.python-cligj.new.1538/python-cligj.changes 2022-04-28 23:07:56.736686031 +0200
@@ -1,0 +2,17 @@
+Mon Apr 25 13:47:41 UTC 2022 - Stefan Br��ns <stefan.bruens(a)rwth-aachen.de>
+
+- Update to 0.7.2:
+ * Permit use with click versions 8 and higher.
+- Update to 0.7.1:
+ * Future deprecation warning added in 0.7.0 has been changed.
+ Cligj version 1.0.0 will support Python versions >= 3.6.
+- Update to 0.7.0:
+ * Warn about deprecation of support for Python versions < 3.7
+ in 1.0.0 (#33).
+ * Warn about future change in --sequence default when the option
+ is used (#31).
+- Update to 0.6.0:
+ * Always use `encoding='utf-8'` when opening input GeoJSON (#27).
+ * Improve docstrings (#22).
+
+-------------------------------------------------------------------
Old:
----
cligj-0.5.0.tar.gz
New:
----
cligj-0.7.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-cligj.spec ++++++
--- /var/tmp/diff_new_pack.nCHSqc/_old 2022-04-28 23:07:57.216686554 +0200
+++ /var/tmp/diff_new_pack.nCHSqc/_new 2022-04-28 23:07:57.220686558 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-cligj
#
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2022 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -13,15 +13,16 @@
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
+#
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-cligj
-Version: 0.5.0
+Version: 0.7.2
Release: 0
License: BSD-3-Clause
Summary: Click params for commmand line interfaces to GeoJSON
-Url: https://github.com/mapbox/cligj
+URL: https://github.com/mapbox/cligj
Group: Development/Languages/Python
# pypi source lack license and tests
Source: https://github.com/mapbox/cligj/archive/%{version}.tar.gz#/cligj-%{version}…
@@ -35,7 +36,6 @@
Requires: python-click
BuildArch: noarch
-
%python_subpackages
%description
++++++ cligj-0.5.0.tar.gz -> cligj-0.7.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cligj-0.5.0/.travis.yml new/cligj-0.7.2/.travis.yml
--- old/cligj-0.5.0/.travis.yml 2018-09-26 17:58:55.000000000 +0200
+++ new/cligj-0.7.2/.travis.yml 2021-05-28 23:21:08.000000000 +0200
@@ -1,10 +1,9 @@
sudo: false
language: python
python:
- - "2.7"
- - "3.3"
- - "3.4"
- - "3.5"
+ - "3.6"
+ - "3.7"
+ - "3.8"
install:
- "pip install coveralls"
- "pip install -e .[test]"
@@ -17,4 +16,4 @@
tags: true
provider: pypi
distributions: "sdist bdist_wheel"
- user: mapboxci
+ user: __token__
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cligj-0.5.0/CHANGES.txt new/cligj-0.7.2/CHANGES.txt
--- old/cligj-0.5.0/CHANGES.txt 2018-09-26 17:58:55.000000000 +0200
+++ new/cligj-0.7.2/CHANGES.txt 2021-05-28 23:21:08.000000000 +0200
@@ -1,6 +1,36 @@
Changes
=======
+0.7.1 (2010-11-20)
+------------------
+
+- Future deprecation warning added in 0.7.0 has been changed. Cligj version
+ 1.0.0 will support Python versions >= 3.6.
+
+0.7.0 (2010-10-21)
+------------------
+
+- Warn about deprecation of support for Python versions < 3.7 in 1.0.0 (#33).
+- Warn about future change in --sequence default when the option is used (#31).
+
+0.6.0 (2020-10-19)
+------------------
+
+No changes since 0.6b1.
+
+0.6b1 (2020-10-14)
+------------------
+
+Future changes:
+
+- Feature sequences, not collections, will be the default form of output in
+ version 1.0 (#20).
+
+Bug fixes:
+
+- Always use `encoding='utf-8'` when opening input GeoJSON (#27).
+- Improve docstrings (#22).
+
0.5.0 (2018-09-26)
------------------
@@ -20,7 +50,7 @@
0.3.0 (2015-08-12)
------------------
-- Deprecation of the cligj.plugins module (#6). Please switch to the
+- Deprecation of the cligj.plugins module (#6). Please switch to the
click-plugins module: https://github.com/click-contrib/click-plugins. The
cligj.plugins module will be removed from cligj at version 1.0.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cligj-0.5.0/MANIFEST.in new/cligj-0.7.2/MANIFEST.in
--- old/cligj-0.5.0/MANIFEST.in 1970-01-01 01:00:00.000000000 +0100
+++ new/cligj-0.7.2/MANIFEST.in 2021-05-28 23:21:08.000000000 +0200
@@ -0,0 +1,4 @@
+include CHANGES.txt
+include LICENSE
+
+graft tests
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cligj-0.5.0/README.rst new/cligj-0.7.2/README.rst
--- old/cligj-0.5.0/README.rst 2018-09-26 17:58:55.000000000 +0200
+++ new/cligj-0.7.2/README.rst 2021-05-28 23:21:08.000000000 +0200
@@ -1,8 +1,8 @@
cligj
======
-.. image:: https://travis-ci.org/mapbox/cligj.svg
- :target: https://travis-ci.org/mapbox/cligj
+.. image:: https://travis-ci.com/mapbox/cligj.svg
+ :target: https://travis-ci.com/mapbox/cligj
.. image:: https://coveralls.io/repos/mapbox/cligj/badge.png?branch=master
:target: https://coveralls.io/r/mapbox/cligj?branch=master
@@ -10,7 +10,7 @@
Common arguments and options for GeoJSON processing commands, using Click.
`cligj` is for Python developers who create command line interfaces for geospatial data.
-`cligj` allows you to quickly build consistent, well-tested and interoperable CLIs for handling GeoJSON.
+`cligj` allows you to quickly build consistent, well-tested and interoperable CLIs for handling GeoJSON.
Arguments
@@ -76,11 +76,15 @@
reads and writes GeoJSON expects a text containing a single feature collection,
that's the default, and a LF-delimited sequence of texts containing one GeoJSON
feature each is a feature that is turned on using the ``--sequence`` option.
-To write sequences of feature texts that conform to the `JSON Text Sequences
-proposed standard
-<http://tools.ietf.org/html/draft-ietf-json-text-sequence-13>`__ (and might
-contain pretty-printed JSON) with the ASCII Record Separator (0x1e) as
-a delimiter, use the ``--rs`` option
+To write sequences of feature texts that conform to the `GeoJSON Text Sequences
+standard <https://tools.ietf.org/html/rfc8142>`__ (and might contain
+pretty-printed JSON) with the ASCII Record Separator (0x1e) as a delimiter, use
+the ``--rs`` option
+
+.. warning:: Future change warning
+ GeoJSON sequences (`--sequence`), not collections (`--no-sequence`), will be
+ the default in version 1.0.0.
+
.. code-block:: python
@@ -125,7 +129,6 @@
False).
--help Show this message and exit.
-
And can be used like this
.. code-block:: console
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cligj-0.5.0/cligj/__init__.py new/cligj-0.7.2/cligj/__init__.py
--- old/cligj-0.5.0/cligj/__init__.py 2018-09-26 17:58:55.000000000 +0200
+++ new/cligj-0.7.2/cligj/__init__.py 2021-05-28 23:21:08.000000000 +0200
@@ -1,12 +1,21 @@
-# cligj
+"""cligj
-# Shared arguments and options.
+A package of arguments, options, and parsers for the Python GeoJSON
+ecosystem.
+"""
+
+import sys
+from warnings import warn
import click
from .features import normalize_feature_inputs
-# Arguments.
+__version__ = "0.7.2"
+
+if sys.version_info < (3, 6):
+ warn("cligj 1.0.0 will require Python >= 3.6", FutureWarning)
+
# Multiple input files.
files_in_arg = click.argument(
@@ -97,8 +106,14 @@
'--sequence/--no-sequence',
default=False,
help="Write a LF-delimited sequence of texts containing individual "
- "objects or write a single JSON text containing a feature "
- "collection object (the default).")
+ "objects or write a single JSON text containing a feature "
+ "collection object (the default).",
+ callback=lambda ctx, param, value: warn(
+ "Sequences of Features, not FeatureCollections, will be the default in version 1.0.0",
+ FutureWarning,
+ )
+ or value,
+)
use_rs_opt = click.option(
'--rs/--no-rs',
@@ -109,8 +124,8 @@
"(default is False).")
-# GeoJSON output mode option.
def geojson_type_collection_opt(default=False):
+ """GeoJSON FeatureCollection output mode"""
return click.option(
'--collection',
'geojson_type',
@@ -120,6 +135,7 @@
def geojson_type_feature_opt(default=False):
+ """GeoJSON Feature or Feature sequence output mode"""
return click.option(
'--feature',
'geojson_type',
@@ -129,6 +145,7 @@
def geojson_type_bbox_opt(default=False):
+ """GeoJSON bbox output mode"""
return click.option(
'--bbox',
'geojson_type',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cligj-0.5.0/cligj/features.py new/cligj-0.7.2/cligj/features.py
--- old/cligj-0.5.0/cligj/features.py 2018-09-26 17:58:55.000000000 +0200
+++ new/cligj-0.7.2/cligj/features.py 2021-05-28 23:21:08.000000000 +0200
@@ -1,3 +1,5 @@
+"""Feature parsing and normalization"""
+
from itertools import chain
import json
import re
@@ -23,10 +25,16 @@
"[lng, lat]", or "lng, lat", or "lng lat".
If no value is provided, features will be read from stdin.
+
+ Yields
+ ------
+ Mapping
+ A GeoJSON Feature represented by a Python mapping
+
"""
for feature_like in value or ('-',):
try:
- with click.open_file(feature_like) as src:
+ with click.open_file(feature_like, encoding="utf-8") as src:
for feature in iter_features(iter(src)):
yield feature
except IOError:
@@ -55,6 +63,12 @@
A function that will be applied to each extracted feature. It
takes a feature object and may return a replacement feature or
None -- in which case iter_features does not yield.
+
+ Yields
+ ------
+ Mapping
+ A GeoJSON Feature represented by a Python mapping
+
"""
func = func or (lambda x: x)
first_line = next(geojsonfile)
@@ -136,9 +150,20 @@
def to_feature(obj):
- """Takes a feature or a geometry
- returns feature verbatim or
- wraps geom in a feature with empty properties
+ """Converts an object to a GeoJSON Feature
+
+ Returns feature verbatim or wraps geom in a feature with empty
+ properties.
+
+ Raises
+ ------
+ ValueError
+
+ Returns
+ -------
+ Mapping
+ A GeoJSON Feature represented by a Python mapping
+
"""
if obj['type'] == 'Feature':
return obj
@@ -177,13 +202,13 @@
an iterable of objects with a geo interface and
normalizes it to the former."""
for obj in feature_objs:
- if hasattr(obj, "__geo_interface__") and \
- 'type' in obj.__geo_interface__.keys() and \
- obj.__geo_interface__['type'] == 'Feature':
+ if (
+ hasattr(obj, "__geo_interface__")
+ and "type" in obj.__geo_interface__.keys()
+ and obj.__geo_interface__["type"] == "Feature"
+ ):
yield obj.__geo_interface__
- elif isinstance(obj, dict) and 'type' in obj and \
- obj['type'] == 'Feature':
+ elif isinstance(obj, dict) and "type" in obj and obj["type"] == "Feature":
yield obj
else:
- raise ValueError("Did not recognize object {0}"
- "as GeoJSON Feature".format(obj))
+ raise ValueError("Did not recognize object as GeoJSON Feature")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cligj-0.5.0/setup.cfg new/cligj-0.7.2/setup.cfg
--- old/cligj-0.5.0/setup.cfg 1970-01-01 01:00:00.000000000 +0100
+++ new/cligj-0.7.2/setup.cfg 2021-05-28 23:21:08.000000000 +0200
@@ -0,0 +1,2 @@
+[metadata]
+license_file = LICENSE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cligj-0.5.0/setup.py new/cligj-0.7.2/setup.py
--- old/cligj-0.5.0/setup.py 2018-09-26 17:58:55.000000000 +0200
+++ new/cligj-0.7.2/setup.py 2021-05-28 23:21:08.000000000 +0200
@@ -1,28 +1,32 @@
from codecs import open as codecs_open
+
from setuptools import setup, find_packages
+with open("cligj/__init__.py") as f:
+ for line in f:
+ if "__version__" in line:
+ version = line.split("=")[1].strip().strip('"').strip("'")
+ continue
-# Get the long description from the relevant file
with codecs_open('README.rst', encoding='utf-8') as f:
long_description = f.read()
-setup(name='cligj',
- version='0.5.0',
- description=u"Click params for commmand line interfaces to GeoJSON",
- long_description=long_description,
- classifiers=[],
- keywords='',
- author=u"Sean Gillies",
- author_email='sean(a)mapbox.com',
- url='https://github.com/mapbox/cligj',
- license='BSD',
- packages=find_packages(exclude=['ez_setup', 'examples', 'tests']),
- include_package_data=True,
- zip_safe=False,
- install_requires=[
- 'click >= 4.0, < 8'
- ],
- extras_require={
- 'test': ['pytest-cov'],
- })
+setup(
+ name="cligj",
+ version=version,
+ description=u"Click params for commmand line interfaces to GeoJSON",
+ long_description=long_description,
+ classifiers=[],
+ keywords="",
+ author=u"Sean Gillies",
+ author_email="sean(a)mapbox.com",
+ url="https://github.com/mapbox/cligj",
+ license="BSD",
+ packages=find_packages(exclude=["ez_setup", "examples", "tests"]),
+ include_package_data=True,
+ zip_safe=False,
+ python_requires=">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, <4",
+ install_requires=["click >= 4.0"],
+ extras_require={"test": ["pytest-cov"],},
+)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cligj-0.5.0/tests/test_cli.py new/cligj-0.7.2/tests/test_cli.py
--- old/cligj-0.5.0/tests/test_cli.py 2018-09-26 17:58:55.000000000 +0200
+++ new/cligj-0.7.2/tests/test_cli.py 2021-05-28 23:21:08.000000000 +0200
@@ -1,7 +1,9 @@
import os
import os.path
+import sys
import click
+import pytest
import cligj
@@ -155,62 +157,67 @@
assert result.output.splitlines() == ['geographic']
-def test_sequence(runner):
+(a)pytest.mark.filterwarnings("ignore")
+(a)pytest.mark.parametrize(
+ ("opt", "val"),
+ [
+ ("--sequence", True),
+ ("--no-sequence", False),
+ (None, cligj.__version__.startswith("1.0")),
+ ],
+)
+def test_sequence(runner, opt, val):
+ """True becomes the default in 1.0"""
@click.command()
@cligj.sequence_opt
def cmd(sequence):
- click.echo("%s" % sequence)
+ click.echo(str(sequence))
- result = runner.invoke(cmd)
+ result = runner.invoke(cmd, [opt] if opt is not None else [])
assert not result.exception
- assert result.output.splitlines() == ['False']
+ assert result.output.splitlines() == [str(val)]
- result = runner.invoke(cmd, ['--sequence'])
- assert not result.exception
- assert result.output.splitlines() == ['True']
- result = runner.invoke(cmd, ['--no-sequence'])
- assert not result.exception
- assert result.output.splitlines() == ['False']
+(a)pytest.mark.skipif(sys.version_info < (3,), reason="Requires Python 3")
+(a)pytest.mark.xfail(cligj.__version__.startswith("1.0"), reason="No warning in 1.0")
+def test_sequence_warns(runner):
+ """Warn about --sequence until 1.0"""
+ @click.command()
+ @cligj.sequence_opt
+ def cmd(sequence):
+ click.echo(str(sequence))
+
+ with pytest.warns(FutureWarning):
+ result = runner.invoke(cmd, ["--sequence"])
-def test_sequence_rs(runner):
+(a)pytest.mark.filterwarnings("ignore")
+(a)pytest.mark.parametrize(("opt", "val"), [("--rs", True), (None, False)])
+def test_sequence_rs(runner, opt, val):
@click.command()
@cligj.sequence_opt
@cligj.use_rs_opt
def cmd(sequence, use_rs):
- click.echo("%s" % sequence)
- click.echo("%s" % use_rs)
+ click.echo(str(sequence))
+ click.echo(str(use_rs))
- result = runner.invoke(cmd, ['--sequence', '--rs'])
+ result = runner.invoke(cmd, ["--sequence"] + ([opt] if opt is not None else []))
assert not result.exception
- assert result.output.splitlines() == ['True', 'True']
-
- result = runner.invoke(cmd, ['--sequence'])
- assert not result.exception
- assert result.output.splitlines() == ['True', 'False']
+ assert result.output.splitlines() == ["True", str(val)]
-def test_geojson_type(runner):
+(a)pytest.mark.parametrize(
+ ("opt", "val"),
+ [("--collection", "collection"), ("--feature", "feature"), ("--bbox", "bbox")],
+)
+def test_geojson_type(runner, opt, val):
@click.command()
@cligj.geojson_type_collection_opt(True)
@cligj.geojson_type_feature_opt(False)
@cligj.geojson_type_bbox_opt(False)
def cmd(geojson_type):
- click.echo("%s" % geojson_type)
-
- result = runner.invoke(cmd)
- assert not result.exception
- assert result.output.splitlines() == ['collection']
-
- result = runner.invoke(cmd, ['--collection'])
- assert not result.exception
- assert result.output.splitlines() == ['collection']
-
- result = runner.invoke(cmd, ['--feature'])
- assert not result.exception
- assert result.output.splitlines() == ['feature']
+ click.echo(str(geojson_type))
- result = runner.invoke(cmd, ['--bbox'])
+ result = runner.invoke(cmd, [opt])
assert not result.exception
- assert result.output.splitlines() == ['bbox']
+ assert result.output.splitlines() == [val]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cligj-0.5.0/tests/twopoints.geojson new/cligj-0.7.2/tests/twopoints.geojson
--- old/cligj-0.5.0/tests/twopoints.geojson 2018-09-26 17:58:55.000000000 +0200
+++ new/cligj-0.7.2/tests/twopoints.geojson 2021-05-28 23:21:08.000000000 +0200
@@ -1 +1 @@
-{"features": [{"bbox": [-122.9292140099711, 45.37948199034149, -122.44106199104115, 45.858097009742835], "center": [-122.7282, 45.5801], "context": [{"id": "postcode.2503633822", "text": "97203"}, {"id": "region.3470299826", "text": "Oregon"}, {"id": "country.4150104525", "short_code": "us", "text": "United States"}], "geometry": {"coordinates": [-122.7282, 45.5801], "type": "Point"}, "id": "place.42767", "place_name": "Portland, Oregon, United States", "properties": {}, "relevance": 0.999, "text": "Portland", "type": "Feature"}, {"bbox": [-121.9779540096568, 43.74737999114854, -120.74788099000016, 44.32812500969035], "center": [-121.3153, 44.0582], "context": [{"id": "postcode.3332732485", "text": "97701"}, {"id": "region.3470299826", "text": "Oregon"}, {"id": "country.4150104525", "short_code": "us", "text": "United States"}], "geometry": {"coordinates": [-121.3153, 44.0582], "type": "Point"}, "id": "place.3965", "place_name": "Bend, Oregon, United States", "properties": {}, "rele
vance": 0.999, "text": "Bend", "type": "Feature"}], "type": "FeatureCollection"}
+{"features": [{"bbox": [-122.9292140099711, 45.37948199034149, -122.44106199104115, 45.858097009742835], "center": [-122.7282, 45.5801], "context": [{"id": "postcode.2503633822", "text": "97203"}, {"id": "region.3470299826", "text": "Oregon"}, {"id": "country.4150104525", "short_code": "us", "text": "United States"}], "geometry": {"coordinates": [-122.7282, 45.5801], "type": "Point"}, "id": "place.42767", "place_name": "Portland, Oregon, United States", "properties": {}, "relevance": 0.999, "text": "Portland", "type": "Feature"}, {"bbox": [-121.9779540096568, 43.74737999114854, -120.74788099000016, 44.32812500969035], "center": [-121.3153, 44.0582], "context": [{"id": "postcode.3332732485", "text": "97701"}, {"id": "region.3470299826", "text": "Oregon"}, {"id": "country.4150104525", "short_code": "us", "text": "United States"}], "geometry": {"coordinates": [-121.3153, 44.0582], "type": "Point"}, "id": "place.3965", "place_name": "Bend, ����regon, United States", "properties": {}, "r
elevance": 0.999, "text": "Bend", "type": "Feature"}], "type": "FeatureCollection"}
2
1
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package 000release-packages for openSUSE:Factory checked in at 2023-03-31 21:41:53
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/000release-packages (Old)
and /work/SRC/openSUSE:Factory/.000release-packages.new.31432 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "000release-packages"
Fri Mar 31 21:41:53 2023 rev:2194 rq: version:unknown
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ MicroOS-release.spec ++++++
--- /var/tmp/diff_new_pack.m2HBgn/_old 2023-03-31 21:41:56.373673640 +0200
+++ /var/tmp/diff_new_pack.m2HBgn/_new 2023-03-31 21:41:56.377673658 +0200
@@ -17,7 +17,7 @@
Name: MicroOS-release
-Version: 20230330
+Version: 20230331
Release: 0
Summary: openSUSE MicroOS
License: GPL-2.0-or-later
@@ -176,9 +176,9 @@
%include %{SOURCE100}
Provides: %name-%version
Provides: product() = MicroOS
-Provides: product(MicroOS) = 20230330-0
+Provides: product(MicroOS) = 20230331-0
Provides: product-label() = openSUSE%20MicroOS
-Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Amicroos%3A20230330
+Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Amicroos%3A20230331
Provides: product-url(releasenotes) = http%3A%2F%2Fdoc.opensuse.org%2Frelease%2Dnotes%2Fx86_64%2FopenSUSE%2FTumbleweed%2Frelease%2Dnotes%2DopenSUSE.rpm
Provides: product-endoflife()
Requires: product_flavor(MicroOS)
@@ -194,7 +194,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(dvd)
-Provides: product_flavor(MicroOS) = 20230330-0
+Provides: product_flavor(MicroOS) = 20230331-0
Summary: openSUSE MicroOS%{?betaversion: %{betaversion}}
%description dvd
@@ -210,7 +210,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance)
-Provides: product_flavor(MicroOS) = 20230330-0
+Provides: product_flavor(MicroOS) = 20230331-0
Summary: openSUSE MicroOS%{?betaversion: %{betaversion}}
%description appliance
@@ -274,11 +274,11 @@
<product schemeversion="0">
<vendor>openSUSE</vendor>
<name>MicroOS</name>
- <version>20230330</version>
+ <version>20230331</version>
<release>0</release>
<endoflife></endoflife>
<arch>%{_target_cpu}</arch>
- <cpeid>cpe:/o:opensuse:microos:20230330</cpeid>
+ <cpeid>cpe:/o:opensuse:microos:20230331</cpeid>
<productline>MicroOS</productline>
<register>
<pool>
++++++ openSUSE-Addon-NonOss-release.spec ++++++
--- /var/tmp/diff_new_pack.m2HBgn/_old 2023-03-31 21:41:56.401673760 +0200
+++ /var/tmp/diff_new_pack.m2HBgn/_new 2023-03-31 21:41:56.405673777 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package openSUSE-Addon-NonOss-release (Version 20230330)
+# spec file for package openSUSE-Addon-NonOss-release (Version 20230331)
#
# Copyright (c) 2023 openSUSE.
#
@@ -16,7 +16,7 @@
Name: openSUSE-Addon-NonOss-release
%define product openSUSE-Addon-NonOss
Summary: openSUSE NonOSS Addon%{?betaversion: %{betaversion}}
-Version: 20230330
+Version: 20230331
Release: 0
License: BSD-3-Clause
Group: System/Fhs
@@ -24,9 +24,9 @@
Provides: %name-%version
Provides: product() = openSUSE%2DAddon%2DNonOss
-Provides: product(openSUSE-Addon-NonOss) = 20230330-0
+Provides: product(openSUSE-Addon-NonOss) = 20230331-0
Provides: product-label() = non%20oss%20addon
-Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Aopensuse%2Daddon%2Dnonoss%3A20230330
+Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Aopensuse%2Daddon%2Dnonoss%3A20230331
AutoReqProv: on
@@ -49,10 +49,10 @@
<product schemeversion="0">
<vendor>openSUSE</vendor>
<name>openSUSE-Addon-NonOss</name>
- <version>20230330</version>
+ <version>20230331</version>
<release>0</release>
<arch>%{_target_cpu}</arch>
- <cpeid>cpe:/o:opensuse:opensuse-addon-nonoss:20230330</cpeid>
+ <cpeid>cpe:/o:opensuse:opensuse-addon-nonoss:20230331</cpeid>
<register>
<pool>
</pool>
++++++ openSUSE-release.spec ++++++
--- /var/tmp/diff_new_pack.m2HBgn/_old 2023-03-31 21:41:56.437673913 +0200
+++ /var/tmp/diff_new_pack.m2HBgn/_new 2023-03-31 21:41:56.441673930 +0200
@@ -20,7 +20,7 @@
#define betaversion %{nil}
%define codename Tumbleweed
Name: openSUSE-release
-Version: 20230330
+Version: 20230331
Release: 0
# 0 is the product release, not the build release of this package
Summary: openSUSE Tumbleweed
@@ -180,7 +180,7 @@
%include %{SOURCE100}
Provides: %name-%version
Provides: product() = openSUSE
-Provides: product(openSUSE) = 20230330-0
+Provides: product(openSUSE) = 20230331-0
%ifarch x86_64
Provides: product-register-target() = openSUSE%2DTumbleweed%2Dx86_64
%endif
@@ -194,7 +194,7 @@
Provides: product-register-target() = openSUSE%2DTumbleweed%2Daarch64
%endif
Provides: product-label() = openSUSE
-Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Aopensuse%3A20230330
+Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Aopensuse%3A20230331
Provides: product-url(releasenotes) = http%3A%2F%2Fdoc.opensuse.org%2Frelease%2Dnotes%2Fx86_64%2FopenSUSE%2FTumbleweed%2Frelease%2Dnotes%2DopenSUSE.rpm
Provides: product-url(repository) = http%3A%2F%2Fdownload.opensuse.org%2Ftumbleweed%2Frepo%2Foss%2F
Requires: product_flavor(openSUSE)
@@ -208,7 +208,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(ftp)
-Provides: product_flavor(openSUSE) = 20230330-0
+Provides: product_flavor(openSUSE) = 20230331-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description ftp
@@ -223,7 +223,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(mini)
-Provides: product_flavor(openSUSE) = 20230330-0
+Provides: product_flavor(openSUSE) = 20230331-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description mini
@@ -238,7 +238,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(dvd)
-Provides: product_flavor(openSUSE) = 20230330-0
+Provides: product_flavor(openSUSE) = 20230331-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description dvd
@@ -253,7 +253,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(livecd-kde)
-Provides: product_flavor(openSUSE) = 20230330-0
+Provides: product_flavor(openSUSE) = 20230331-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description livecd-kde
@@ -268,7 +268,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(livecd-x11)
-Provides: product_flavor(openSUSE) = 20230330-0
+Provides: product_flavor(openSUSE) = 20230331-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description livecd-x11
@@ -283,7 +283,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(livecd-gnome)
-Provides: product_flavor(openSUSE) = 20230330-0
+Provides: product_flavor(openSUSE) = 20230331-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description livecd-gnome
@@ -298,7 +298,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(livecd-xfce)
-Provides: product_flavor(openSUSE) = 20230330-0
+Provides: product_flavor(openSUSE) = 20230331-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description livecd-xfce
@@ -313,7 +313,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(usb-kde)
-Provides: product_flavor(openSUSE) = 20230330-0
+Provides: product_flavor(openSUSE) = 20230331-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description usb-kde
@@ -328,7 +328,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(usb-gnome)
-Provides: product_flavor(openSUSE) = 20230330-0
+Provides: product_flavor(openSUSE) = 20230331-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description usb-gnome
@@ -343,7 +343,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(usb-x11)
-Provides: product_flavor(openSUSE) = 20230330-0
+Provides: product_flavor(openSUSE) = 20230331-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description usb-x11
@@ -358,7 +358,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance)
-Provides: product_flavor(openSUSE) = 20230330-0
+Provides: product_flavor(openSUSE) = 20230331-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description appliance
@@ -373,7 +373,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance-docker)
-Provides: product_flavor(openSUSE) = 20230330-0
+Provides: product_flavor(openSUSE) = 20230331-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description appliance-docker
@@ -388,7 +388,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance-kvm)
-Provides: product_flavor(openSUSE) = 20230330-0
+Provides: product_flavor(openSUSE) = 20230331-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description appliance-kvm
@@ -403,7 +403,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance-vmware)
-Provides: product_flavor(openSUSE) = 20230330-0
+Provides: product_flavor(openSUSE) = 20230331-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description appliance-vmware
@@ -418,7 +418,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance-openstack)
-Provides: product_flavor(openSUSE) = 20230330-0
+Provides: product_flavor(openSUSE) = 20230331-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description appliance-openstack
@@ -433,7 +433,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance-hyperv)
-Provides: product_flavor(openSUSE) = 20230330-0
+Provides: product_flavor(openSUSE) = 20230331-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description appliance-hyperv
@@ -448,7 +448,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance-vagrant)
-Provides: product_flavor(openSUSE) = 20230330-0
+Provides: product_flavor(openSUSE) = 20230331-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description appliance-vagrant
@@ -463,7 +463,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance-wsl)
-Provides: product_flavor(openSUSE) = 20230330-0
+Provides: product_flavor(openSUSE) = 20230331-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description appliance-wsl
@@ -478,7 +478,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance-custom)
-Provides: product_flavor(openSUSE) = 20230330-0
+Provides: product_flavor(openSUSE) = 20230331-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description appliance-custom
@@ -557,10 +557,10 @@
<product schemeversion="0">
<vendor>openSUSE</vendor>
<name>openSUSE</name>
- <version>20230330</version>
+ <version>20230331</version>
<release>0</release>
<arch>%{_target_cpu}</arch>
- <cpeid>cpe:/o:opensuse:opensuse:20230330</cpeid>
+ <cpeid>cpe:/o:opensuse:opensuse:20230331</cpeid>
<productline>openSUSE</productline>
<register>
<pool>
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package cvise for openSUSE:Factory checked in at 2023-03-31 21:16:18
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/cvise (Old)
and /work/SRC/openSUSE:Factory/.cvise.new.31432 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "cvise"
Fri Mar 31 21:16:18 2023 rev:71 rq:1076474 version:2.7.0+git.20230331.62a7391
Changes:
--------
--- /work/SRC/openSUSE:Factory/cvise/cvise.changes 2023-03-30 22:51:41.712712277 +0200
+++ /work/SRC/openSUSE:Factory/.cvise.new.31432/cvise.changes 2023-03-31 21:16:44.746731722 +0200
@@ -1,0 +2,6 @@
+Fri Mar 31 14:05:13 UTC 2023 - mliska(a)suse.cz
+
+- Update to version 2.7.0+git.20230331.62a7391:
+ * Fix one -Wdangling-reference and disable -Werror for it.
+
+-------------------------------------------------------------------
Old:
----
cvise-2.7.0+git.20230330.8b25bd7.tar.xz
New:
----
cvise-2.7.0+git.20230331.62a7391.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ cvise.spec ++++++
--- /var/tmp/diff_new_pack.tVIuUk/_old 2023-03-31 21:16:45.294734337 +0200
+++ /var/tmp/diff_new_pack.tVIuUk/_new 2023-03-31 21:16:45.298734356 +0200
@@ -17,7 +17,7 @@
Name: cvise
-Version: 2.7.0+git.20230330.8b25bd7
+Version: 2.7.0+git.20230331.62a7391
Release: 0
Summary: Super-parallel Python port of the C-Reduce
License: BSD-3-Clause
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.tVIuUk/_old 2023-03-31 21:16:45.402734852 +0200
+++ /var/tmp/diff_new_pack.tVIuUk/_new 2023-03-31 21:16:45.406734871 +0200
@@ -1,6 +1,6 @@
<servicedata>
<service name="tar_scm">
<param name="url">https://github.com/marxin/cvise</param>
- <param name="changesrevision">8b25bd725316edc5e73c002a083274f9b062c5ad</param></service></servicedata>
+ <param name="changesrevision">62a7391cdb990ce443ecbb408f8c2e9942dfba25</param></service></servicedata>
(No newline at EOF)
++++++ cvise-2.7.0+git.20230330.8b25bd7.tar.xz -> cvise-2.7.0+git.20230331.62a7391.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-2.7.0+git.20230330.8b25bd7/CMakeLists.txt new/cvise-2.7.0+git.20230331.62a7391/CMakeLists.txt
--- old/cvise-2.7.0+git.20230330.8b25bd7/CMakeLists.txt 2023-03-30 11:44:57.000000000 +0200
+++ new/cvise-2.7.0+git.20230331.62a7391/CMakeLists.txt 2023-03-31 16:04:45.000000000 +0200
@@ -148,11 +148,6 @@
)
check_cxx_compiler_flag(
- "-Wdangling-reference"
- SUPPORTS_WDANGLING_REFERENCE
-)
-
-check_cxx_compiler_flag(
"-Wmaybe-uninitialized"
SUPPORTS_MAYBE_UNINITIALIZED
)
@@ -169,9 +164,6 @@
if(SUPPORTS_WMISMATCHED_NEW_DELETE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=mismatched-new-delete")
endif()
- if(SUPPORTS_WDANGLING_REFERENCE)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=dangling-reference")
- endif()
if(SUPPORTS_MAYBE_UNINITIALIZED)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-error=maybe-uninitialized")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=maybe-uninitialized")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-2.7.0+git.20230330.8b25bd7/clang_delta/RemoveNestedFunction.cpp new/cvise-2.7.0+git.20230331.62a7391/clang_delta/RemoveNestedFunction.cpp
--- old/cvise-2.7.0+git.20230330.8b25bd7/clang_delta/RemoveNestedFunction.cpp 2023-03-30 11:44:57.000000000 +0200
+++ new/cvise-2.7.0+git.20230331.62a7391/clang_delta/RemoveNestedFunction.cpp 2023-03-31 16:04:45.000000000 +0200
@@ -197,7 +197,7 @@
);
for (unsigned I = 1; I < NumArgs; ++I) {
- const TemplateArgument &Arg = TST->template_arguments()[I];
+ const TemplateArgument Arg = TST->template_arguments()[I];
Stream << ", ";
Arg.print(getPrintingPolicy(), Stream
#if LLVM_VERSION_MAJOR >= 13
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package gnome-characters for openSUSE:Factory checked in at 2023-03-31 21:16:16
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gnome-characters (Old)
and /work/SRC/openSUSE:Factory/.gnome-characters.new.31432 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gnome-characters"
Fri Mar 31 21:16:16 2023 rev:29 rq:1076457 version:44.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/gnome-characters/gnome-characters.changes 2023-03-24 15:19:56.554738238 +0100
+++ /work/SRC/openSUSE:Factory/.gnome-characters.new.31432/gnome-characters.changes 2023-03-31 21:16:44.090728592 +0200
@@ -1,0 +2,6 @@
+Fri Mar 31 05:40:13 UTC 2023 - Bj��rn Lie <bjorn.lie(a)gmail.com>
+
+- Replace noto-coloremoji-fonts with google-noto-coloremoji-fonts
+ Recommends, font package was renamed.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gnome-characters.spec ++++++
--- /var/tmp/diff_new_pack.P0Reek/_old 2023-03-31 21:16:44.546730768 +0200
+++ /var/tmp/diff_new_pack.P0Reek/_new 2023-03-31 21:16:44.554730806 +0200
@@ -39,7 +39,7 @@
BuildRequires: pkgconfig(pango)
BuildRequires: pkgconfig(pangoft2)
# Ensure default sections are filled with content
-Recommends: noto-coloremoji-fonts
+Recommends: google-noto-coloremoji-fonts
%description
A simple utility application to find and insert unusual characters.
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package gnome-tour for openSUSE:Factory checked in at 2023-03-31 21:16:14
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gnome-tour (Old)
and /work/SRC/openSUSE:Factory/.gnome-tour.new.31432 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gnome-tour"
Fri Mar 31 21:16:14 2023 rev:6 rq:1076454 version:44.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/gnome-tour/gnome-tour.changes 2023-03-24 15:20:08.946802852 +0100
+++ /work/SRC/openSUSE:Factory/.gnome-tour.new.31432/gnome-tour.changes 2023-03-31 21:16:43.174724222 +0200
@@ -1,0 +2,5 @@
+Fri Mar 31 07:01:52 UTC 2023 - Bj��rn Lie <bjorn.lie(a)gmail.com>
+
+- Add _constraints file, set minimum hdd to 5 gig.
+
+-------------------------------------------------------------------
New:
----
_constraints
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ _constraints ++++++
<constraints>
<hardware>
<disk>
<size unit="G">5</size>
</disk>
</hardware>
</constraints>
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package blosc2 for openSUSE:Factory checked in at 2023-03-31 21:16:13
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/blosc2 (Old)
and /work/SRC/openSUSE:Factory/.blosc2.new.31432 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "blosc2"
Fri Mar 31 21:16:13 2023 rev:4 rq:1076449 version:2.8.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/blosc2/blosc2.changes 2023-03-30 22:52:44.729049509 +0200
+++ /work/SRC/openSUSE:Factory/.blosc2.new.31432/blosc2.changes 2023-03-31 21:16:42.474720882 +0200
@@ -1,0 +2,5 @@
+Fri Mar 31 09:26:42 UTC 2023 - Ben Greiner <code(a)bnavigator.de>
+
+- Add _constraints
+
+-------------------------------------------------------------------
New:
----
_constraints
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ _constraints ++++++
<constraints>
<hardware>
<memory>
<size unit="G">9</size>
</memory>
<disk>
<size unit="G">9</size>
</disk>
</hardware>
</constraints>
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package seamonkey for openSUSE:Factory checked in at 2023-03-31 21:16:05
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/seamonkey (Old)
and /work/SRC/openSUSE:Factory/.seamonkey.new.31432 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "seamonkey"
Fri Mar 31 21:16:05 2023 rev:22 rq:1076437 version:2.53.16
Changes:
--------
--- /work/SRC/openSUSE:Factory/seamonkey/seamonkey.changes 2023-01-20 17:39:45.428878624 +0100
+++ /work/SRC/openSUSE:Factory/.seamonkey.new.31432/seamonkey.changes 2023-03-31 21:16:39.118704869 +0200
@@ -1,0 +2,38 @@
+Wed Mar 31 07:22:42 UTC 2023 - Tristan Miller <psychonaut(a)nothingisreal.com>
+
+- update to SeaMonkey 2.53.16
+ * No throbber in plaintext editor bug 85498.
+ * Remove unused gridlines class from EdAdvancedEdit bug 1806632.
+ * Remove ESR 91 links from debugQA bug 1804534.
+ * Rename devtools/shim to devtools/startup bug 1812367.
+ * Remove unused seltype=text|cell css bug 1806653.
+ * Implement new shared tree styling bug 1807802.
+ * Use `win.focus()` in macWindowMenu.js bug 1807817.
+ * Remove WCAP provider bug 1579020.
+ * Remove ftp/file tree view support bug 1239239.
+ * Change calendar list tree to a list bug 1561530.
+ * Various other updates to the calendar code.
+ * Continue the switch from Python 2 to Python 3 in the build system.
+ * Verified compatibility with Rust 1.66.1.
+ * SeaMonkey 2.53.16 uses the same backend as Firefox and contains
+ the relevant Firefox 60.8 security fixes.
+ * SeaMonkey 2.53.16 shares most parts of the mail and news code with
+ Thunderbird. Please read the Thunderbird 60.8.0 release notes for
+ specific security fixes in this release.
+ * Additional important security fixes up to Current Firefox 102.9
+ and Thunderbird 102.9 ESR plus many enhancements have been
+ backported. We will continue to enhance SeaMonkey security in
+ subsequent 2.53.x beta and release versions as fast as we are able
+ to.
+- update seamonkey-GNUmakefile patch per
+ https://bugzilla.mozilla.org/show_bug.cgi?id=1692516#c11 to reflect
+ changes in the new way of packing langpacks
+- remove obsolete patch mozilla-language.patch
+- remove obsolete patch seamonkey-spellcheck.patch
+- remove --enable-system-hunspell from .mozconfig per
+ https://bugzilla.mozilla.org/show_bug.cgi?id=1820413
+- add build dependency on clang
+- request inclusion in Leap 15.4:
+ https://bugzilla.opensuse.org/show_bug.cgi?id=1209994
+
+-------------------------------------------------------------------
@@ -64 +102 @@
- https://bugzilla.opensuse.org/show_bug.cgi?id=
+ https://bugzilla.opensuse.org/show_bug.cgi?id=1207332
Old:
----
mozilla-language.patch
seamonkey-2.53.15.source-l10n.tar.xz
seamonkey-2.53.15.source.tar.xz
seamonkey-spellcheck.patch
New:
----
seamonkey-2.53.16.source-l10n.tar.xz
seamonkey-2.53.16.source.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ seamonkey.spec ++++++
--- /var/tmp/diff_new_pack.ABZiqj/_old 2023-03-31 21:16:42.086719030 +0200
+++ /var/tmp/diff_new_pack.ABZiqj/_new 2023-03-31 21:16:42.094719068 +0200
@@ -17,6 +17,9 @@
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
+# upstream default is clang (to use gcc for large parts set to 0)
+%define clang_build 0
+
Name: seamonkey
BuildRequires: Mesa-devel
BuildRequires: alsa-devel
@@ -61,11 +64,17 @@
BuildRequires: rust-cbindgen
BuildRequires: git
BuildRequires: nasm >= 2.13
+#BuildRequires: llvm-devel
+%if (0%{?sle_version} >= 120000 && 0%{?sle_version} < 150000)
+BuildRequires: clang6-devel
+%else
+BuildRequires: clang-devel >= 5
+%endif
Provides: web_browser
Provides: browser(npapi)
-Version: 2.53.15
+Version: 2.53.16
Release: 0
-%define releasedate 20230120000000
+%define releasedate 20230331000000
Summary: An integrated web browser, composer, mail/news client, and IRC client
License: MPL-2.0
Group: Productivity/Networking/Web/Browsers
@@ -80,11 +89,9 @@
Source11: seamonkey-appdata.tar.bz2
Source12: seamonkey-GNUmakefile
Patch1: mozilla-nongnome-proxies.patch
-Patch2: mozilla-language.patch
Patch3: mozilla-ntlm-full-path.patch
Patch4: seamonkey-lto.patch
Patch5: seamonkey-man-page.patch
-Patch6: seamonkey-spellcheck.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
PreReq: /bin/sh coreutils
Provides: seamonkey-mail = %{version}
@@ -213,15 +220,10 @@
cp %{SOURCE12} GNUmakefile
%patch1 -p2
-%patch2 -p2
%patch3 -p2
%patch4 -p1
%patch5 -p0
-if [ $(gcc -dumpversion | awk -F. '{print $1}') -ge 12 ]; then
-%patch6 -p1
-fi
-
cat << EOF > .mozconfig
mk_add_options MOZILLA_OFFICIAL=1
mk_add_options BUILD_OFFICIAL=1
@@ -276,7 +278,6 @@
ac_add_options --disable-crashreporter
ac_add_options --disable-updater
ac_add_options --enable-startup-notification
-ac_add_options --enable-system-hunspell
ac_add_options --enable-alsa
%if %has_system_cairo
ac_add_options --enable-system-cairo
@@ -317,7 +318,16 @@
export MOZ_BUILD_DATE=%{releasedate}
export MOZILLA_OFFICIAL=1
export BUILD_OFFICIAL=1
+
export CFLAGS="%{optflags} -fno-strict-aliasing"
+%if 0%{?clang_build} == 0
+export CC=gcc
+export CXX=g++
+%if 0%{?gcc_version:%{gcc_version}} >= 12
+export CFLAGS="$CFLAGS -fimplicit-constexpr"
+%endif
+%endif
+
if [ $(gcc -dumpversion | awk -F. '{print $1}') -ge 6 ]; then
export CFLAGS+=" -fno-delete-null-pointer-checks -fno-lifetime-dse -fno-schedule-insns2"
fi
@@ -329,8 +339,10 @@
export LDFLAGS="${LDFLAGS} -Wl,--no-keep-memory -Wl,--reduce-memory-overheads"
%endif
%ifarch ppc64 ppc64le
+%if 0%{?clang_build} == 0
export CFLAGS="$CFLAGS -mminimal-toc"
%endif
+%endif
export CXXFLAGS="$CFLAGS"
#
++++++ seamonkey-2.53.15.source-l10n.tar.xz -> seamonkey-2.53.16.source-l10n.tar.xz ++++++
/work/SRC/openSUSE:Factory/seamonkey/seamonkey-2.53.15.source-l10n.tar.xz /work/SRC/openSUSE:Factory/.seamonkey.new.31432/seamonkey-2.53.16.source-l10n.tar.xz differ: char 61472, line 240
++++++ seamonkey-2.53.15.source.tar.xz -> seamonkey-2.53.16.source.tar.xz ++++++
/work/SRC/openSUSE:Factory/seamonkey/seamonkey-2.53.15.source.tar.xz /work/SRC/openSUSE:Factory/.seamonkey.new.31432/seamonkey-2.53.16.source.tar.xz differ: char 26, line 1
++++++ seamonkey-GNUmakefile ++++++
--- /var/tmp/diff_new_pack.ABZiqj/_old 2023-03-31 21:16:42.198719565 +0200
+++ /var/tmp/diff_new_pack.ABZiqj/_new 2023-03-31 21:16:42.202719584 +0200
@@ -143,37 +143,27 @@
$(stage)-%:
$(MAKE) -C $(OBJDIR)/comm/suite/locales langpack-$*
-# Combine extensions data with the main localization stuff and leave only one manifest file
- for manifest in `find $@/extensions -name "*.manifest" -print` ; \
- do \
- while read keyword name lang path rest ; \
- do \
- [ "$$keyword" = locale ] || continue ; \
- [ "$$lang" = "$*" ] || continue ; \
- [ "$${path%/*/}/$$name/" = "$$path" ] || continue ; \
- tar -C $${manifest%/*}/$${path%/*/} -chf - $$name | tar -C $@/chrome/$*/locale/$* -xf - ; \
- echo "locale $$name $* $*/locale/$*/$$name/$${rest:+ $$rest}" >> $(a)/chrome/$*.manifest ; \
- done < $$manifest ; \
- done
+# Cleanup of old manifest files
+ find $@ -name "*.manifest" -print | xargs rm -f
- sed 's,$*/locale/$*,chrome/&,' $(a)/chrome/$*.manifest | sort > $(a)/chrome.manifest
- rm -f $(a)/chrome/$*.manifest
+ find $@ -name ".mkdir.done" -print | xargs rm -f
+ find $@/extensions -name "defaults" -type d -print | xargs rm -rf
# Spanish locales other than es-ES are from Latam, where the es-AR langpack is most preferred
- [ $* = es-AR ] && sed -i '/^locale/ s/ es-AR / es /' $(a)/chrome.manifest || :
+ [ $* = es-AR ] && sed -i '/"es-AR": {/ s/es-AR/es/' $(a)/manifest.json || :
locale-%: REL_NAME = extensions/langpack-$*(a)seamonkey.mozilla.org.xpi
locale-%: DEST_NAME = $(OBJDIR)/dist/bin/$(REL_NAME)
locale-%: manifest_entry = @RESPATH@/$(REL_NAME)
-# To avoid performance issues in multi-locale installs, put the manifest files
+# To avoid performance issues in multi-locale installs, put manifest.json file
# into the beginning of the archive, and do not compress them.
locale-%: $(stage)-% $(PACKAGE_MANIFEST)
rm -f $(DEST_NAME)
- cd $<; zip -0 -D -X $(DEST_NAME) chrome.manifest install.rdf
- cd $<; zip -g -r -9 -D -X $(DEST_NAME) chrome/$*
+ cd $<; zip -0 -D -X $(DEST_NAME) manifest.json
+ cd $<; zip -g -r -9 -D -X $(DEST_NAME) chrome extensions
fgrep $(manifest_entry) $(PACKAGE_MANIFEST) || echo $(manifest_entry) >>$(PACKAGE_MANIFEST)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package liferea for openSUSE:Factory checked in at 2023-03-31 21:16:04
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/liferea (Old)
and /work/SRC/openSUSE:Factory/.liferea.new.31432 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "liferea"
Fri Mar 31 21:16:04 2023 rev:11 rq:1076442 version:1.14.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/liferea/liferea.changes 2023-03-14 18:17:13.331917022 +0100
+++ /work/SRC/openSUSE:Factory/.liferea.new.31432/liferea.changes 2023-03-31 21:16:14.946589536 +0200
@@ -1,0 +2,11 @@
+Wed Mar 29 13:35:08 UTC 2023 - Marcel Kuehlhorn <tux93(a)opensuse.org>
+
+- Update to version 1.14.3:
+ * fix crash when refreshing feeds (gh#lwindolf/liferea#1212)
+ * fix memory leak when reloading CSS
+ * fix crash in conf_get_bool_value_from_schema
+ (gh#lwindolf/liferea#1214)
+ * fix failing build in launchpad PPA due to auto_test
+ permission issue (gh#lwindolf/liferea#1215)
+
+-------------------------------------------------------------------
Old:
----
liferea-1.14.1.tar.bz2
New:
----
liferea-1.14.3.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ liferea.spec ++++++
--- /var/tmp/diff_new_pack.TgCJF3/_old 2023-03-31 21:16:15.470592036 +0200
+++ /var/tmp/diff_new_pack.TgCJF3/_new 2023-03-31 21:16:15.478592074 +0200
@@ -17,7 +17,7 @@
Name: liferea
-Version: 1.14.1
+Version: 1.14.3
Release: 0
Summary: Linux Feed Reader
License: GPL-2.0-only
++++++ liferea-1.14.1.tar.bz2 -> liferea-1.14.3.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.14.1/ChangeLog new/liferea-1.14.3/ChangeLog
--- old/liferea-1.14.1/ChangeLog 2023-03-12 21:00:22.000000000 +0100
+++ new/liferea-1.14.3/ChangeLog 2023-03-23 20:43:06.000000000 +0100
@@ -1,3 +1,26 @@
+2023-03-23 Lars Windolf <lars.windolf(a)gmx.de>
+
+ Version 1.14.3
+
+ * Fixes #1214: crash in conf_get_bool_value_from_schema
+ (mozbugbox, reported by Mikel Olasagasti)
+
+ * Fixes #1215: failed to build in launchpad PPA due to
+ auto_test permission issue (reported by PandaJim)
+
+
+
+2023-03-20 Lars Windolf <lars.windolf(a)gmx.de>
+
+ Version 1.14.2
+
+ * Fixes #1212: 1.14.1 crash when refreshing feeds.
+ (mozbugbox, reported by Froggy232)
+
+ * Fixes a memory leak when reloading CSS
+ (Lars Windolf)
+
+
2023-03-12 Lars Windolf <lars.windolf(a)gmx.de>
Version 1.14.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.14.1/Makefile.am new/liferea-1.14.3/Makefile.am
--- old/liferea-1.14.1/Makefile.am 2022-10-14 22:26:42.000000000 +0200
+++ new/liferea-1.14.3/Makefile.am 2023-03-13 22:06:28.000000000 +0100
@@ -96,3 +96,6 @@
po/liferea.pot:
cd po && $(MAKE) liferea.pot
+
+test:
+ cd src/tests && make test
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.14.1/Makefile.in new/liferea-1.14.3/Makefile.in
--- old/liferea-1.14.1/Makefile.in 2023-03-12 21:11:56.000000000 +0100
+++ new/liferea-1.14.3/Makefile.in 2023-03-23 20:19:31.000000000 +0100
@@ -1174,6 +1174,9 @@
po/liferea.pot:
cd po && $(MAKE) liferea.pot
+test:
+ cd src/tests && make test
+
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.14.1/configure new/liferea-1.14.3/configure
--- old/liferea-1.14.1/configure 2023-03-12 21:11:56.000000000 +0100
+++ new/liferea-1.14.3/configure 2023-03-23 20:19:31.000000000 +0100
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.71 for liferea 1.14.1.
+# Generated by GNU Autoconf 2.71 for liferea 1.14.3.
#
# Report bugs to <liferea-devel(a)lists.sourceforge.net>.
#
@@ -621,8 +621,8 @@
# Identity of this package.
PACKAGE_NAME='liferea'
PACKAGE_TARNAME='liferea'
-PACKAGE_VERSION='1.14.1'
-PACKAGE_STRING='liferea 1.14.1'
+PACKAGE_VERSION='1.14.3'
+PACKAGE_STRING='liferea 1.14.3'
PACKAGE_BUGREPORT='liferea-devel(a)lists.sourceforge.net'
PACKAGE_URL=''
@@ -1435,7 +1435,7 @@
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures liferea 1.14.1 to adapt to many kinds of systems.
+\`configure' configures liferea 1.14.3 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1506,7 +1506,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of liferea 1.14.1:";;
+ short | recursive ) echo "Configuration of liferea 1.14.3:";;
esac
cat <<\_ACEOF
@@ -1637,7 +1637,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-liferea configure 1.14.1
+liferea configure 1.14.3
generated by GNU Autoconf 2.71
Copyright (C) 2021 Free Software Foundation, Inc.
@@ -1855,7 +1855,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by liferea $as_me 1.14.1, which was
+It was created by liferea $as_me 1.14.3, which was
generated by GNU Autoconf 2.71. Invocation command line was
$ $0$ac_configure_args_raw
@@ -3203,7 +3203,7 @@
# Define the identity of the package.
PACKAGE='liferea'
- VERSION='1.14.1'
+ VERSION='1.14.3'
printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@@ -16861,7 +16861,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by liferea $as_me 1.14.1, which was
+This file was extended by liferea $as_me 1.14.3, which was
generated by GNU Autoconf 2.71. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -16929,7 +16929,7 @@
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config='$ac_cs_config_escaped'
ac_cs_version="\\
-liferea config.status 1.14.1
+liferea config.status 1.14.3
configured by $0, generated by GNU Autoconf 2.71,
with options \\"\$ac_cs_config\\"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.14.1/configure.ac new/liferea-1.14.3/configure.ac
--- old/liferea-1.14.1/configure.ac 2023-03-12 21:00:39.000000000 +0100
+++ new/liferea-1.14.3/configure.ac 2023-03-23 20:19:11.000000000 +0100
@@ -1,6 +1,6 @@
dnl Process this file with autoconf to produce a configure script.
-AC_INIT([liferea],[1.14.1],[liferea-devel(a)lists.sourceforge.net])
+AC_INIT([liferea],[1.14.3],[liferea-devel(a)lists.sourceforge.net])
AC_CANONICAL_HOST
AC_CONFIG_SRCDIR([src/feedlist.c])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.14.1/net.sourceforge.liferea.appdata.xml new/liferea-1.14.3/net.sourceforge.liferea.appdata.xml
--- old/liferea-1.14.1/net.sourceforge.liferea.appdata.xml 2023-03-09 21:33:01.000000000 +0100
+++ new/liferea-1.14.3/net.sourceforge.liferea.appdata.xml 2023-03-14 00:25:53.000000000 +0100
@@ -104,6 +104,16 @@
<content_attribute id="money-gambling">none</content_attribute>
</content_rating>
<releases>
+ <release version="1.14.1" date="2023-03-13">
+ <description>
+ <p>CVE-2023-1350 Remote code execution on feed enrichment</p>
+ <ul>Changes
+ <li>Fixes CVE-2023-1350: RCE vulnerability on feed enrichment (Alexander Erwin Ittner)</li>
+ <li>Fixes #1200: Crash on double free (mozbugbox)</li>
+ <li>Improve #1192 be reordering widget creation order (Lars Windolf)</li>
+ </ul>
+ </description>
+ </release>
<release version="1.14.0" date="2023-01-10">
<description>
<p>Features introduced with 1.14:</p>
@@ -127,11 +137,11 @@
</li>
<li>GUI
<ul>
- <li>New view mode 'Automatic' which switches between 'Normal' and 'Wide' mode based
+ <li>New view mode 'Automatic' which switches between 'Normal' and 'Wide' mode based
on the window proportions.</li>
<li>Liferea now supports the new GTK dark theme logic, where in the GTK/GNOME preferences
you define wether you "prefer" dark mode or light mode</li>
- <li>Favicon discovery improvements: now detects all types of Apple Touch Icons, MS Tile
+ <li>Favicon discovery improvements: now detects all types of Apple Touch Icons, MS Tile
Images and Safari Mask Icons</li>
<li>Increase size of stored favicons to 128x128px to improve icon quality in 3-pane wide view.</li>
<li>Make several plugins support gettext</li>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.14.1/net.sourceforge.liferea.appdata.xml.in new/liferea-1.14.3/net.sourceforge.liferea.appdata.xml.in
--- old/liferea-1.14.1/net.sourceforge.liferea.appdata.xml.in 2023-02-04 22:50:17.000000000 +0100
+++ new/liferea-1.14.3/net.sourceforge.liferea.appdata.xml.in 2023-03-13 23:31:44.000000000 +0100
@@ -105,6 +105,16 @@
<content_attribute id="money-gambling">none</content_attribute>
</content_rating>
<releases>
+ <release date="2023-03-13" version="1.14.1">
+ <description>
+ <p>CVE-2023-1350 Remote code execution on feed enrichment</p>
+ <ul>Changes
+ <li>Fixes CVE-2023-1350: RCE vulnerability on feed enrichment (Alexander Erwin Ittner)</li>
+ <li>Fixes #1200: Crash on double free (mozbugbox)</li>
+ <li>Improve #1192 be reordering widget creation order (Lars Windolf)</li>
+ </ul>
+ </description>
+ </release>
<release date="2023-01-10" version="1.14.0">
<description>
<p>Features introduced with 1.14:</p>
@@ -128,11 +138,11 @@
</li>
<li>GUI
<ul>
- <li>New view mode 'Automatic' which switches between 'Normal' and 'Wide' mode based
+ <li>New view mode 'Automatic' which switches between 'Normal' and 'Wide' mode based
on the window proportions.</li>
<li>Liferea now supports the new GTK dark theme logic, where in the GTK/GNOME preferences
you define wether you "prefer" dark mode or light mode</li>
- <li>Favicon discovery improvements: now detects all types of Apple Touch Icons, MS Tile
+ <li>Favicon discovery improvements: now detects all types of Apple Touch Icons, MS Tile
Images and Safari Mask Icons</li>
<li>Increase size of stored favicons to 128x128px to improve icon quality in 3-pane wide view.</li>
<li>Make several plugins support gettext</li>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.14.1/po/liferea.pot new/liferea-1.14.3/po/liferea.pot
--- old/liferea-1.14.1/po/liferea.pot 2023-03-12 21:12:00.000000000 +0100
+++ new/liferea-1.14.3/po/liferea.pot 2023-03-20 22:19:41.000000000 +0100
@@ -8,7 +8,7 @@
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-03-12 21:12+0100\n"
+"POT-Creation-Date: 2023-03-20 22:19+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.14.1/src/common.c new/liferea-1.14.3/src/common.c
--- old/liferea-1.14.1/src/common.c 2023-03-09 23:13:43.000000000 +0100
+++ new/liferea-1.14.3/src/common.c 2023-03-23 20:36:21.000000000 +0100
@@ -1,7 +1,7 @@
/**
* @file common.c common routines for Liferea
*
- * Copyright (C) 2003-2013 Lars Windolf <lars.windolf(a)gmx.de>
+ * Copyright (C) 2003-2023 Lars Windolf <lars.windolf(a)gmx.de>
* Copyright (C) 2004-2006 Nathan J. Conrad <t98502(a)users.sourceforge.net>
* Copyright (C) 2004 Karl Soderstrom <ks(a)xanadunet.net>
* Copyright (C) 2022 Lorenzo L. Ancora <admin(a)lorenzoancora.info>
@@ -74,6 +74,7 @@
static void
common_init_paths (void)
{
+ gchar *filename;
gchar *lifereaCachePath = g_build_filename (g_get_user_cache_dir(), "liferea", NULL);
common_check_dir (g_strdup (lifereaCachePath));
@@ -84,6 +85,12 @@
common_check_dir (g_build_filename (g_get_user_config_dir(), "liferea", NULL));
common_check_dir (g_build_filename (g_get_user_data_dir(), "liferea", NULL));
+ /* Install default stylesheet if it does not yet exist */
+ filename = common_create_config_filename ("liferea.css");
+ if (!g_file_test (filename, G_FILE_TEST_EXISTS))
+ common_copy_file (PACKAGE_DATA_DIR "/" PACKAGE "/css/user.css", filename);
+ g_free(filename);
+
/* ensure reasonable default umask */
umask (077);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.14.1/src/itemlist.c new/liferea-1.14.3/src/itemlist.c
--- old/liferea-1.14.1/src/itemlist.c 2023-02-04 22:50:17.000000000 +0100
+++ new/liferea-1.14.3/src/itemlist.c 2023-03-20 22:13:20.000000000 +0100
@@ -499,8 +499,14 @@
while (iter) {
itemPtr item = (itemPtr) iter->data;
- itemlist_request_remove_item (item);
- db_item_remove (item->id);
+ if (itemlist->priv->selectedId != item->id) {
+ itemview_remove_item(item);
+ db_item_remove(item->id);
+ } else {
+ itemlist_request_remove_item(item);
+ }
+ g_object_unref (item);
+
iter = g_list_next (iter);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.14.1/src/render.c new/liferea-1.14.3/src/render.c
--- old/liferea-1.14.1/src/render.c 2023-01-09 23:24:32.000000000 +0100
+++ new/liferea-1.14.3/src/render.c 2023-03-23 20:39:46.000000000 +0100
@@ -1,7 +1,7 @@
/**
* @file render.c generic GTK theme and XSLT rendering handling
*
- * Copyright (C) 2006-2022 Lars Windolf <lars.windolf(a)gmx.de>
+ * Copyright (C) 2006-2023 Lars Windolf <lars.windolf(a)gmx.de>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -41,9 +41,13 @@
#include "render.h"
#include "xml.h"
-/* Liferea provides special screens and the item and the feed displays
- using self-generated HTML. To separate code and layout and to easily
- localize the layout it is provided by automake XSL stylesheet templates.
+/* Liferea renders items and feed info using self-generated HTML in a WebkitGTK
+ widget. While this provides rendering flexibility it also requires us to do
+ CSS color theming to match the GTK theme and localization of HTML rendered
+ UI literals.
+
+ To separate code and layout and to easily localize the layout it is
+ provided in the form of automake XSL stylesheet templates.
Using automake translations are merged into those XSL stylesheets. On
startup Liferea loads those expanded XSL stylesheets. During startup
@@ -56,7 +60,6 @@
and performs CSS adaptions to the current GTK theme. */
static renderParamPtr langParams = NULL; /* the current locale settings (for localization stylesheet) */
-
static GHashTable *stylesheets = NULL; /* XSLT stylesheet cache */
static void
@@ -66,39 +69,6 @@
g_free (paramSet);
}
-static void
-render_init (void)
-{
- gchar **shortlang = NULL; /* e.g. "de" */
- gchar **lang = NULL; /* e.g. "de_AT" */
- gchar *filename;
-
- if (langParams)
- render_parameter_free (langParams);
-
- /* Install default stylesheet if it does not yet exist */
- filename = common_create_config_filename ("liferea.css");
- if (!g_file_test (filename, G_FILE_TEST_EXISTS))
- common_copy_file (PACKAGE_DATA_DIR "/" PACKAGE "/css/user.css", filename);
- g_free(filename);
-
- /* Prepare localization parameters */
- debug1 (DEBUG_HTML, "XSLT localisation: setlocale(LC_MESSAGES, NULL) reports '%s'", setlocale(LC_MESSAGES, NULL));
- lang = g_strsplit (setlocale (LC_MESSAGES, NULL), "@", 0);
- shortlang = g_strsplit (setlocale (LC_MESSAGES, NULL), "_", 0);
-
- langParams = render_parameter_new ();
- render_parameter_add (langParams, "lang='%s'", lang[0]);
- render_parameter_add (langParams, "shortlang='%s'", shortlang[0]);
- debug2 (DEBUG_HTML, "XSLT localisation: lang='%s' shortlang='%s'", lang[0], shortlang[0]);
-
- g_strfreev (shortlang);
- g_strfreev (lang);
-
- if (!stylesheets)
- stylesheets = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL);
-}
-
static xsltStylesheetPtr
render_load_stylesheet (const gchar *xsltName)
{
@@ -107,8 +77,26 @@
xmlDocPtr xsltDoc, resDoc;
gchar *filename;
+ if (!langParams) {
+ /* Prepare localization parameters */
+ gchar **shortlang = NULL; /* e.g. "de" */
+ gchar **lang = NULL; /* e.g. "de_AT" */
+
+ debug1 (DEBUG_HTML, "XSLT localisation: setlocale(LC_MESSAGES, NULL) reports '%s'", setlocale(LC_MESSAGES, NULL));
+ lang = g_strsplit (setlocale (LC_MESSAGES, NULL), "@", 0);
+ shortlang = g_strsplit (setlocale (LC_MESSAGES, NULL), "_", 0);
+
+ langParams = render_parameter_new ();
+ render_parameter_add (langParams, "lang='%s'", lang[0]);
+ render_parameter_add (langParams, "shortlang='%s'", shortlang[0]);
+ debug2 (DEBUG_HTML, "XSLT localisation: lang='%s' shortlang='%s'", lang[0], shortlang[0]);
+
+ g_strfreev (shortlang);
+ g_strfreev (lang);
+ }
+
if (!stylesheets)
- render_init ();
+ stylesheets = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL);
/* try to serve the stylesheet from the cache */
xslt = (xsltStylesheetPtr)g_hash_table_lookup (stylesheets, xsltName);
@@ -351,17 +339,17 @@
g_return_val_if_fail (themeColors != NULL, NULL);
- userCss = g_string_new(NULL);
+ userCss = g_string_new (NULL);
userStyleSheetFile = common_create_config_filename ("liferea.css");
- if (g_file_get_contents(userStyleSheetFile, &tmp, NULL, NULL)) {
- tmp = render_set_theme_colors(tmp);
- g_string_append(userCss, tmp);
- g_free(tmp);
+ if (g_file_get_contents (userStyleSheetFile, &tmp, NULL, NULL)) {
+ tmp = render_set_theme_colors (tmp);
+ g_string_append (userCss, tmp);
+ g_free (tmp);
}
- g_free(userStyleSheetFile);
+ g_free (userStyleSheetFile);
}
return userCss->str;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.14.1/src/tests/parse_xml.c new/liferea-1.14.3/src/tests/parse_xml.c
--- old/liferea-1.14.1/src/tests/parse_xml.c 2023-01-05 22:00:01.000000000 +0100
+++ new/liferea-1.14.3/src/tests/parse_xml.c 2023-03-13 23:31:44.000000000 +0100
@@ -29,7 +29,7 @@
gboolean result;
} *tcXPathPtr;
-struct tcXPath tc_xpath[][4] = {
+struct tcXPath tc_xpath[] = {
{
"/parse_xml/xpath_find_empty_doc",
"<?xml version = \"1.0\"?>\n<nothing/>",
@@ -63,11 +63,11 @@
gchar *xpath_expression; // expression that must not be found
} *tcStripperPtr;
-struct tcStripper tc_strippers[][3] = {
+struct tcStripper tc_strippers[] = {
{
- "/xhtml_strip/onload",
- "<div onload='alert(\"Hallo\");'></div>< div onload=\"alert('Hallo');\"></div>",
- "//div/@onload"
+ .name = "/xhtml_strip/onload",
+ .xml_string = "<div onload='alert(\"Hallo\");'></div>< div onload=\"alert('Hallo');\"></div>",
+ .xpath_expression = "//div/@onload"
},
{
"/xhtml_strip/meta",
@@ -147,11 +147,11 @@
g_test_init (&argc, &argv, NULL);
- for (int i = 0; tc_xpath[i]->xml_string != NULL; i++) {
- g_test_add_data_func (tc_xpath[i]->name, &tc_xpath[i], &tc_xpath_find);
+ for (int i = 0; tc_xpath[i].name != NULL; i++) {
+ g_test_add_data_func (tc_xpath[i].name, &tc_xpath[i], &tc_xpath_find);
}
- for (int i = 0; tc_strippers[i]->xml_string != NULL; i++) {
- g_test_add_data_func (tc_strippers[i]->name, &tc_strippers[i], &tc_strip);
+ for (int i = 0; tc_strippers[i].name != NULL; i++) {
+ g_test_add_data_func (tc_strippers[i].name, &tc_strippers[i], &tc_strip);
}
result = g_test_run();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.14.1/src/ui/liferea_shell.c new/liferea-1.14.3/src/ui/liferea_shell.c
--- old/liferea-1.14.1/src/ui/liferea_shell.c 2023-02-08 21:29:29.000000000 +0100
+++ new/liferea-1.14.3/src/ui/liferea_shell.c 2023-03-23 20:17:32.000000000 +0100
@@ -1387,6 +1387,7 @@
liferea_shell_update_toolbar ();
liferea_shell_update_history_actions ();
liferea_shell_setup_URL_receiver ();
+ liferea_shell_restore_state (overrideWindowState);
gtk_widget_set_sensitive (GTK_WIDGET (shell->feedlistViewWidget), TRUE);
@@ -1406,7 +1407,6 @@
G_CALLBACK (liferea_shell_update_node_actions), NULL);
/* 11.) Restore latest layout and selection */
- liferea_shell_restore_state (overrideWindowState);
conf_get_int_value (DEFAULT_VIEW_MODE, &mode);
itemview_set_layout (mode);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.14.1/src/webkit/webkit.c new/liferea-1.14.3/src/webkit/webkit.c
--- old/liferea-1.14.1/src/webkit/webkit.c 2023-03-09 20:07:20.000000000 +0100
+++ new/liferea-1.14.3/src/webkit/webkit.c 2023-03-20 21:53:18.000000000 +0100
@@ -712,6 +712,7 @@
NULL,
NULL);
webkit_user_content_manager_add_style_sheet (manager, user_stylesheet);
+ g_free (css);
}
/**
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package yq for openSUSE:Factory checked in at 2023-03-31 21:16:02
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yq (Old)
and /work/SRC/openSUSE:Factory/.yq.new.31432 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yq"
Fri Mar 31 21:16:02 2023 rev:9 rq:1076429 version:4.33.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/yq/yq.changes 2023-03-28 17:52:06.787770334 +0200
+++ /work/SRC/openSUSE:Factory/.yq.new.31432/yq.changes 2023-03-31 21:16:10.726569401 +0200
@@ -1,0 +2,11 @@
+Fri Mar 31 08:42:46 UTC 2023 - Dirk M��ller <dmueller(a)suse.com>
+
+- update to 4.33.2:
+ * Add ``--nul-output|-0`` flag to separate element with NUL
+ character (#1550) Thanks @vaab!
+ * Add removable-media interface plug declaration to the snap
+ packaging(#1618) Thanks @brlin-tw!
+ * Scalar output now handled in csv, tsv and property files
+ * Bumped dependency versions
+
+-------------------------------------------------------------------
Old:
----
yq-4.33.1.tar.gz
New:
----
yq-4.33.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yq.spec ++++++
--- /var/tmp/diff_new_pack.KMyS95/_old 2023-03-31 21:16:11.742574249 +0200
+++ /var/tmp/diff_new_pack.KMyS95/_new 2023-03-31 21:16:11.762574344 +0200
@@ -20,7 +20,7 @@
%global import_path %{provider_prefix}
Name: yq
-Version: 4.33.1
+Version: 4.33.2
Release: 0
Summary: A portable command-line YAML processor
License: MIT
++++++ vendor.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/alecthomas/participle/v2/COPYING new/vendor/github.com/alecthomas/participle/v2/COPYING
--- old/vendor/github.com/alecthomas/participle/v2/COPYING 2023-03-27 21:29:51.000000000 +0200
+++ new/vendor/github.com/alecthomas/participle/v2/COPYING 2023-03-31 09:53:37.000000000 +0200
@@ -1,4 +1,4 @@
-Copyright (C) 2017 Alec Thomas
+Copyright (C) 2017-2022 Alec Thomas
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/alecthomas/participle/v2/lexer/api.go new/vendor/github.com/alecthomas/participle/v2/lexer/api.go
--- old/vendor/github.com/alecthomas/participle/v2/lexer/api.go 2023-03-27 21:29:51.000000000 +0200
+++ new/vendor/github.com/alecthomas/participle/v2/lexer/api.go 2023-03-31 09:53:37.000000000 +0200
@@ -70,7 +70,7 @@
//
// eg.
//
-// lex = lexer.Must(lexer.Build(`Symbol = "symbol" .`))
+// lex = lexer.Must(lexer.Build(`Symbol = "symbol" .`))
func Must(def Definition, err error) Definition {
if err != nil {
panic(err)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/alecthomas/participle/v2/lexer/codegen.go new/vendor/github.com/alecthomas/participle/v2/lexer/codegen.go
--- old/vendor/github.com/alecthomas/participle/v2/lexer/codegen.go 2023-03-27 21:29:51.000000000 +0200
+++ new/vendor/github.com/alecthomas/participle/v2/lexer/codegen.go 1970-01-01 01:00:00.000000000 +0100
@@ -1,439 +0,0 @@
-package lexer
-
-import (
- "fmt"
- "io"
- "regexp"
- "regexp/syntax"
- "sort"
- "text/template"
- "unicode/utf8"
-)
-
-var codegenBackrefRe = regexp.MustCompile(`(\\+)(\d)`)
-
-var codegenTemplate *template.Template = template.Must(template.New("lexgen").Funcs(template.FuncMap{
- "IsPush": func(r Rule) string {
- if p, ok := r.Action.(ActionPush); ok {
- return p.State
- }
- return ""
- },
- "IsPop": func(r Rule) bool {
- _, ok := r.Action.(ActionPop)
- return ok
- },
- "IsReturn": func(r Rule) bool {
- return r == ReturnRule
- },
- "OrderRules": orderRules,
- "HaveBackrefs": func(def *StatefulDefinition, state string) bool {
- for _, rule := range def.Rules()[state] {
- if codegenBackrefRe.MatchString(rule.Pattern) {
- return true
- }
- }
- return false
- },
-}).Parse(`
-// Code generated by Participle. DO NOT EDIT.
-package {{.Package}}
-
-import (
- "io"
- "strings"
- "unicode/utf8"
- "regexp/syntax"
-
- "github.com/alecthomas/participle/v2"
- "github.com/alecthomas/participle/v2/lexer"
-)
-
-var _ syntax.Op
-
-var Lexer lexer.Definition = definitionImpl{}
-
-type definitionImpl struct {}
-
-func (definitionImpl) Symbols() map[string]lexer.TokenType {
- return map[string]lexer.TokenType{
-{{- range $sym, $rn := .Def.Symbols}}
- "{{$sym}}": {{$rn}},
-{{- end}}
- }
-}
-
-func (definitionImpl) LexString(filename string, s string) (lexer.Lexer, error) {
- return &lexerImpl{
- s: s,
- pos: lexer.Position{
- Filename: filename,
- Line: 1,
- Column: 1,
- },
- states: []lexerState{lexerState{name: "Root"}},
- }, nil
-}
-
-func (d definitionImpl) LexBytes(filename string, b []byte) (lexer.Lexer, error) {
- return d.LexString(filename, string(b))
-}
-
-func (d definitionImpl) Lex(filename string, r io.Reader) (lexer.Lexer, error) {
- s := &strings.Builder{}
- _, err := io.Copy(s, r)
- if err != nil {
- return nil, err
- }
- return d.LexString(filename, s.String())
-}
-
-type lexerState struct {
- name string
- groups []string
-}
-
-type lexerImpl struct {
- s string
- p int
- pos lexer.Position
- states []lexerState
-}
-
-func (l *lexerImpl) Next() (lexer.Token, error) {
- if l.p == len(l.s) {
- return lexer.EOFToken(l.pos), nil
- }
- var (
- state = l.states[len(l.states)-1]
- groups []int
- sym lexer.TokenType
- )
- switch state.name {
-{{- range $state := .Def.Rules|OrderRules}}
- case "{{$state.Name}}":
-{{- range $i, $rule := $state.Rules}}
- {{- if $i}} else {{end -}}
-{{- if .Pattern -}}
- if match := match{{.Name}}(l.s, l.p); match[1] != 0 {
- sym = {{index $.Def.Symbols .Name}}
- groups = match[:]
-{{- else if .|IsReturn -}}
- if true {
-{{- end}}
-{{- if .|IsPush}}
- l.states = append(l.states, lexerState{name: "{{.|IsPush}}"{{if HaveBackrefs $.Def $state.Name}}, groups: l.sgroups(groups){{end}}})
-{{- else if (or (.|IsPop) (.|IsReturn))}}
- l.states = l.states[:len(l.states)-1]
-{{- if .|IsReturn}}
- return l.Next()
-{{- end}}
-{{- else if not .Action}}
-{{- else}}
- Unsupported action {{.Action}}
-{{- end}}
- }
-{{- end}}
-{{- end}}
- }
- if groups == nil {
- sample := []rune(l.s[l.p:])
- if len(sample) > 16 {
- sample = append(sample[:16], []rune("...")...)
- }
- return lexer.Token{}, participle.Errorf(l.pos, "invalid input text %q", sample)
- }
- pos := l.pos
- span := l.s[groups[0]:groups[1]]
- l.p = groups[1]
- l.pos.Advance(span)
- return lexer.Token{
- Type: sym,
- Value: span,
- Pos: pos,
- }, nil
-}
-
-func (l *lexerImpl) sgroups(match []int) []string {
- sgroups := make([]string, len(match)/2)
- for i := 0; i < len(match)-1; i += 2 {
- sgroups[i/2] = l.s[l.p+match[i]:l.p+match[i+1]]
- }
- return sgroups
-}
-
-`))
-
-// ExperimentalGenerateLexer generates Go code implementing the given stateful lexer.
-//
-// The generated code should in general by around 10x faster and produce zero garbage per token.
-//
-// NOTE: This is an experimental interface and subject to change.
-func ExperimentalGenerateLexer(w io.Writer, pkg string, def *StatefulDefinition) error {
- type ctx struct {
- Package string
- Def *StatefulDefinition
- }
- rules := def.Rules()
- err := codegenTemplate.Execute(w, ctx{pkg, def})
- if err != nil {
- return err
- }
- seen := map[string]bool{} // Rules can be duplicated by Include().
- for _, rules := range orderRules(rules) {
- for _, rule := range rules.Rules {
- if rule.Name == "" {
- panic(rule)
- }
- if seen[rule.Name] {
- continue
- }
- seen[rule.Name] = true
- fmt.Fprintf(w, "\n")
- err := generateRegexMatch(w, rule.Name, rule.Pattern)
- if err != nil {
- return err
- }
- }
- }
- return nil
-}
-
-type orderedRule struct {
- Name string
- Rules []Rule
-}
-
-func orderRules(rules Rules) []orderedRule {
- orderedRules := []orderedRule{}
- for name, rules := range rules {
- orderedRules = append(orderedRules, orderedRule{
- Name: name,
- Rules: rules,
- })
- }
- sort.Slice(orderedRules, func(i, j int) bool {
- return orderedRules[i].Name < orderedRules[j].Name
- })
- return orderedRules
-}
-
-func generateRegexMatch(w io.Writer, name, pattern string) error {
- re, err := syntax.Parse(pattern, syntax.Perl)
- if err != nil {
- return err
- }
- ids := map[string]int{}
- idn := 0
- reid := func(re *syntax.Regexp) int {
- key := re.Op.String() + ":" + re.String()
- id, ok := ids[key]
- if ok {
- return id
- }
- id = idn
- idn++
- ids[key] = id
- return id
- }
- exists := func(re *syntax.Regexp) bool {
- key := re.Op.String() + ":" + re.String()
- _, ok := ids[key]
- return ok
- }
- re = re.Simplify()
- fmt.Fprintf(w, "// %s\n", re)
- fmt.Fprintf(w, "func match%s(s string, p int) (groups [%d]int) {\n", name, 2*re.MaxCap()+2)
- flattened := flatten(re)
-
- // Fast-path a single literal.
- if len(flattened) == 1 && re.Op == syntax.OpLiteral {
- n := utf8.RuneCountInString(string(re.Rune))
- if n == 1 {
- fmt.Fprintf(w, "if p < len(s) && s[p] == %q {\n", re.Rune[0])
- } else {
- fmt.Fprintf(w, "if p+%d < len(s) && s[p:p+%d] == %q {\n", n, n, string(re.Rune))
- }
- fmt.Fprintf(w, "groups[0] = p\n")
- fmt.Fprintf(w, "groups[1] = p + %d\n", n)
- fmt.Fprintf(w, "}\n")
- fmt.Fprintf(w, "return\n")
- fmt.Fprintf(w, "}\n")
- return nil
- }
- for _, re := range flattened {
- if exists(re) {
- continue
- }
- fmt.Fprintf(w, "// %s (%s)\n", re, re.Op)
- fmt.Fprintf(w, "l%d := func(s string, p int) int {\n", reid(re))
- if re.Flags&syntax.NonGreedy != 0 {
- panic("non-greedy match not supported: " + re.String())
- }
- switch re.Op {
- case syntax.OpNoMatch: // matches no strings
- fmt.Fprintf(w, "return p\n")
-
- case syntax.OpEmptyMatch: // matches empty string
- fmt.Fprintf(w, "if len(s) == 0 { return p }\n")
- fmt.Fprintf(w, "return -1\n")
-
- case syntax.OpLiteral: // matches Runes sequence
- n := utf8.RuneCountInString(string(re.Rune))
- if n == 1 {
- fmt.Fprintf(w, "if p < len(s) && s[p] == %q { return p+1 }\n", re.Rune[0])
- } else {
- fmt.Fprintf(w, "if p+%d < len(s) && s[p:p+%d] == %q { return p+%d }\n", n, n, string(re.Rune), n)
- }
- fmt.Fprintf(w, "return -1\n")
-
- case syntax.OpCharClass: // matches Runes interpreted as range pair list
- fmt.Fprintf(w, "if len(s) <= p { return -1 }\n")
- needDecode := false
- for i := 0; i < len(re.Rune); i += 2 {
- l, r := re.Rune[i], re.Rune[i+1]
- ln, rn := utf8.RuneLen(l), utf8.RuneLen(r)
- if ln != 1 || rn != 1 {
- needDecode = true
- break
- }
- }
- if needDecode {
- fmt.Fprintf(w, "var (rn rune; n int)\n")
- decodeRune(w, "p", "rn", "n")
- } else {
- fmt.Fprintf(w, "rn := s[p]\n")
- }
- fmt.Fprintf(w, "switch {\n")
- for i := 0; i < len(re.Rune); i += 2 {
- l, r := re.Rune[i], re.Rune[i+1]
- ln, rn := utf8.RuneLen(l), utf8.RuneLen(r)
- if ln == 1 && rn == 1 {
- if l == r {
- fmt.Fprintf(w, "case rn == %q: return p+1\n", l)
- } else {
- fmt.Fprintf(w, "case rn >= %q && rn <= %q: return p+1\n", l, r)
- }
- } else {
- if l == r {
- fmt.Fprintf(w, "case rn == %q: return p+n\n", l)
- } else {
- fmt.Fprintf(w, "case rn >= %q && rn <= %q: return p+n\n", l, r)
- }
- }
- }
- fmt.Fprintf(w, "}\n")
- fmt.Fprintf(w, "return -1\n")
-
- case syntax.OpAnyCharNotNL: // matches any character except newline
- fmt.Fprintf(w, "var (rn rune; n int)\n")
- decodeRune(w, "p", "rn", "n")
- fmt.Fprintf(w, "if len(s) <= p+n || rn == '\\n' { return -1 }\n")
- fmt.Fprintf(w, "return p+n\n")
-
- case syntax.OpAnyChar: // matches any character
- fmt.Fprintf(w, "var n int\n")
- fmt.Fprintf(w, "if s[p] < utf8.RuneSelf {\n")
- fmt.Fprintf(w, " n = 1\n")
- fmt.Fprintf(w, "} else {\n")
- fmt.Fprintf(w, " _, n = utf8.DecodeRuneInString(s[p:])\n")
- fmt.Fprintf(w, "}\n")
- fmt.Fprintf(w, "if len(s) <= p+n { return -1 }\n")
- fmt.Fprintf(w, "return p+n\n")
-
- case syntax.OpWordBoundary, syntax.OpNoWordBoundary,
- syntax.OpBeginText, syntax.OpEndText,
- syntax.OpBeginLine, syntax.OpEndLine:
- fmt.Fprintf(w, "var l, u rune = -1, -1\n")
- fmt.Fprintf(w, "if p == 0 {\n")
- decodeRune(w, "0", "u", "_")
- fmt.Fprintf(w, "} else if p == len(s) {\n")
- fmt.Fprintf(w, " l, _ = utf8.DecodeLastRuneInString(s)\n")
- fmt.Fprintf(w, "} else {\n")
- fmt.Fprintf(w, " var ln int\n")
- decodeRune(w, "p", "l", "ln")
- fmt.Fprintf(w, " if p+ln <= len(s) {\n")
- decodeRune(w, "p+ln", "u", "_")
- fmt.Fprintf(w, " }\n")
- fmt.Fprintf(w, "}\n")
- fmt.Fprintf(w, "op := syntax.EmptyOpContext(l, u)\n")
- lut := map[syntax.Op]string{
- syntax.OpWordBoundary: "EmptyWordBoundary",
- syntax.OpNoWordBoundary: "EmptyNoWordBoundary",
- syntax.OpBeginText: "EmptyBeginText",
- syntax.OpEndText: "EmptyEndText",
- syntax.OpBeginLine: "EmptyBeginLine",
- syntax.OpEndLine: "EmptyEndLine",
- }
- fmt.Fprintf(w, "if op & syntax.%s != 0 { return p }\n", lut[re.Op])
- fmt.Fprintf(w, "return -1\n")
-
- case syntax.OpCapture: // capturing subexpression with index Cap, optional name Name
- fmt.Fprintf(w, "np := l%d(s, p)\n", reid(re.Sub0[0]))
- fmt.Fprintf(w, "if np != -1 {\n")
- fmt.Fprintf(w, " groups[%d] = p\n", re.Cap*2)
- fmt.Fprintf(w, " groups[%d] = np\n", re.Cap*2+1)
- fmt.Fprintf(w, "}\n")
- fmt.Fprintf(w, "return np")
-
- case syntax.OpStar: // matches Sub[0] zero or more times
- fmt.Fprintf(w, "for len(s) > p {\n")
- fmt.Fprintf(w, "if np := l%d(s, p); np == -1 { return p } else { p = np }\n", reid(re.Sub0[0]))
- fmt.Fprintf(w, "}\n")
- fmt.Fprintf(w, "return p\n")
-
- case syntax.OpPlus: // matches Sub[0] one or more times
- fmt.Fprintf(w, "if p = l%d(s, p); p == -1 { return -1 }\n", reid(re.Sub0[0]))
- fmt.Fprintf(w, "for len(s) > p {\n")
- fmt.Fprintf(w, "if np := l%d(s, p); np == -1 { return p } else { p = np }\n", reid(re.Sub0[0]))
- fmt.Fprintf(w, "}\n")
- fmt.Fprintf(w, "return p\n")
-
- case syntax.OpQuest: // matches Sub[0] zero or one times
- fmt.Fprintf(w, "if np := l%d(s, p); np != -1 { return np }\n", reid(re.Sub0[0]))
- fmt.Fprintf(w, "return p\n")
-
- case syntax.OpRepeat: // matches Sub[0] at least Min times, at most Max (Max == -1 is no limit)
- panic("??")
-
- case syntax.OpConcat: // matches concatenation of Subs
- for _, sub := range re.Sub {
- fmt.Fprintf(w, "if p = l%d(s, p); p == -1 { return -1 }\n", reid(sub))
- }
- fmt.Fprintf(w, "return p\n")
-
- case syntax.OpAlternate: // matches alternation of Subs
- for _, sub := range re.Sub {
- fmt.Fprintf(w, "if np := l%d(s, p); np != -1 { return np }\n", reid(sub))
- }
- fmt.Fprintf(w, "return -1\n")
- }
- fmt.Fprintf(w, "}\n")
- }
- fmt.Fprintf(w, "np := l%d(s, p)\n", reid(re))
- fmt.Fprintf(w, "if np == -1 {\n")
- fmt.Fprintf(w, " return\n")
- fmt.Fprintf(w, "}\n")
- fmt.Fprintf(w, "groups[0] = p\n")
- fmt.Fprintf(w, "groups[1] = np\n")
- fmt.Fprintf(w, "return\n")
- fmt.Fprintf(w, "}\n")
- return nil
-}
-
-// This exists because of https://github.com/golang/go/issues/31666
-func decodeRune(w io.Writer, offset string, rn string, n string) {
- fmt.Fprintf(w, "if s[%s] < utf8.RuneSelf {\n", offset)
- fmt.Fprintf(w, " %s, %s = rune(s[%s]), 1\n", rn, n, offset)
- fmt.Fprintf(w, "} else {\n")
- fmt.Fprintf(w, " %s, %s = utf8.DecodeRuneInString(s[%s:])\n", rn, n, offset)
- fmt.Fprintf(w, "}\n")
-}
-
-func flatten(re *syntax.Regexp) (out []*syntax.Regexp) {
- for _, sub := range re.Sub {
- out = append(out, flatten(sub)...)
- }
- out = append(out, re)
- return
-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/alecthomas/participle/v2/lexer/peek.go new/vendor/github.com/alecthomas/participle/v2/lexer/peek.go
--- old/vendor/github.com/alecthomas/participle/v2/lexer/peek.go 2023-03-27 21:29:51.000000000 +0200
+++ new/vendor/github.com/alecthomas/participle/v2/lexer/peek.go 2023-03-31 09:53:37.000000000 +0200
@@ -2,16 +2,23 @@
// PeekingLexer supports arbitrary lookahead as well as cloning.
type PeekingLexer struct {
- rawCursor RawCursor
- cursor int
- eof Token
- tokens []Token
- elide map[TokenType]bool
+ Checkpoint
+ tokens []Token
+ elide map[TokenType]bool
}
// RawCursor index in the token stream.
type RawCursor int
+// Checkpoint wraps the mutable state of the PeekingLexer.
+//
+// Copying and restoring just this state is a bit faster than copying the entire PeekingLexer.
+type Checkpoint struct {
+ rawCursor RawCursor // The raw position of the next possibly elided token
+ nextCursor RawCursor // The raw position of the next non-elided token
+ cursor int // Index of the next non-elided token among other non-elided tokens
+}
+
// Upgrade a Lexer to a PeekingLexer with arbitrary lookahead.
//
// "elide" is a slice of token types to elide from processing.
@@ -27,12 +34,12 @@
if err != nil {
return r, err
}
+ r.tokens = append(r.tokens, t)
if t.EOF() {
- r.eof = t
break
}
- r.tokens = append(r.tokens, t)
}
+ r.advanceToNonElided()
return r, nil
}
@@ -42,39 +49,48 @@
}
// Cursor position in tokens, excluding elided tokens.
-func (p *PeekingLexer) Cursor() int {
- return p.cursor
+func (c Checkpoint) Cursor() int {
+ return c.cursor
}
// RawCursor position in tokens, including elided tokens.
-func (p *PeekingLexer) RawCursor() RawCursor {
- return p.rawCursor
+func (c Checkpoint) RawCursor() RawCursor {
+ return c.rawCursor
}
// Next consumes and returns the next token.
-func (p *PeekingLexer) Next() Token {
- for int(p.rawCursor) < len(p.tokens) {
- t := p.tokens[p.rawCursor]
- p.rawCursor++
- if p.elide[t.Type] {
- continue
- }
- p.cursor++
+func (p *PeekingLexer) Next() *Token {
+ t := &p.tokens[p.nextCursor]
+ if t.EOF() {
return t
}
- return p.eof
+ p.nextCursor++
+ p.rawCursor = p.nextCursor
+ p.cursor++
+ p.advanceToNonElided()
+ return t
+}
+
+// Peek ahead at the next non-elided token.
+func (p *PeekingLexer) Peek() *Token {
+ return &p.tokens[p.nextCursor]
+}
+
+// RawPeek peeks ahead at the next raw token.
+//
+// Unlike Peek, this will include elided tokens.
+func (p *PeekingLexer) RawPeek() *Token {
+ return &p.tokens[p.rawCursor]
}
-// Peek ahead at the next token.
-func (p *PeekingLexer) Peek() Token {
- for i := int(p.rawCursor); i < len(p.tokens); i++ {
- t := p.tokens[i]
- if p.elide[t.Type] {
- continue
+// advanceToNonElided advances nextCursor to the closest non-elided token
+func (p *PeekingLexer) advanceToNonElided() {
+ for ; ; p.nextCursor++ {
+ t := &p.tokens[p.nextCursor]
+ if t.EOF() || !p.elide[t.Type] {
+ return
}
- return t
}
- return p.eof
}
// PeekAny peeks forward over elided and non-elided tokens.
@@ -85,42 +101,33 @@
// The returned RawCursor position is the location of the returned token.
// Use FastForward to move the internal cursors forward.
func (p *PeekingLexer) PeekAny(match func(Token) bool) (t Token, rawCursor RawCursor) {
- tokenCount := RawCursor(len(p.tokens))
- for i := p.rawCursor; i < tokenCount; i++ {
+ for i := p.rawCursor; ; i++ {
t = p.tokens[i]
- if match(t) || !p.elide[t.Type] {
+ if t.EOF() || match(t) || !p.elide[t.Type] {
return t, i
}
}
- return p.eof, tokenCount
}
// FastForward the internal cursors to this RawCursor position.
func (p *PeekingLexer) FastForward(rawCursor RawCursor) {
- tokenCount := RawCursor(len(p.tokens))
- for ; p.rawCursor <= rawCursor && p.rawCursor < tokenCount; p.rawCursor++ {
- t := p.tokens[p.rawCursor]
- if p.elide[t.Type] {
- continue
+ for ; p.rawCursor <= rawCursor; p.rawCursor++ {
+ t := &p.tokens[p.rawCursor]
+ if t.EOF() {
+ break
+ }
+ if !p.elide[t.Type] {
+ p.cursor++
}
- p.cursor++
}
+ p.nextCursor = p.rawCursor
+ p.advanceToNonElided()
}
-// RawPeek peeks ahead at the next raw token.
-//
-// Unlike Peek, this will include elided tokens.
-func (p *PeekingLexer) RawPeek() Token {
- if int(p.rawCursor) < len(p.tokens) {
- return p.tokens[p.rawCursor]
- }
- return p.eof
+func (p *PeekingLexer) MakeCheckpoint() Checkpoint {
+ return p.Checkpoint
}
-// Clone creates a clone of this PeekingLexer at its current token.
-//
-// The parent and clone are completely independent.
-func (p *PeekingLexer) Clone() *PeekingLexer {
- clone := *p
- return &clone
+func (p *PeekingLexer) LoadCheckpoint(checkpoint Checkpoint) {
+ p.Checkpoint = checkpoint
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/alecthomas/participle/v2/lexer/simple.go new/vendor/github.com/alecthomas/participle/v2/lexer/simple.go
--- old/vendor/github.com/alecthomas/participle/v2/lexer/simple.go 2023-03-27 21:29:51.000000000 +0200
+++ new/vendor/github.com/alecthomas/participle/v2/lexer/simple.go 2023-03-31 09:53:37.000000000 +0200
@@ -9,8 +9,8 @@
// MustSimple creates a new Stateful lexer with only a single root state.
//
// It panics if there is an error.
-func MustSimple(rules []SimpleRule, options ...Option) *StatefulDefinition {
- def, err := NewSimple(rules, options...)
+func MustSimple(rules []SimpleRule) *StatefulDefinition {
+ def, err := NewSimple(rules)
if err != nil {
panic(err)
}
@@ -18,10 +18,10 @@
}
// NewSimple creates a new Stateful lexer with only a single root state.
-func NewSimple(rules []SimpleRule, options ...Option) (*StatefulDefinition, error) {
+func NewSimple(rules []SimpleRule) (*StatefulDefinition, error) {
fullRules := make([]Rule, len(rules))
for i, rule := range rules {
fullRules[i] = Rule{Name: rule.Name, Pattern: rule.Pattern}
}
- return New(Rules{"Root": fullRules}, options...)
+ return New(Rules{"Root": fullRules})
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/alecthomas/participle/v2/lexer/stateful.go new/vendor/github.com/alecthomas/participle/v2/lexer/stateful.go
--- old/vendor/github.com/alecthomas/participle/v2/lexer/stateful.go 2023-03-27 21:29:51.000000000 +0200
+++ new/vendor/github.com/alecthomas/participle/v2/lexer/stateful.go 2023-03-31 09:53:37.000000000 +0200
@@ -1,6 +1,7 @@
package lexer
import (
+ "encoding/json"
"errors"
"fmt"
"io"
@@ -16,14 +17,101 @@
backrefReplace = regexp.MustCompile(`(\\+)(\d)`)
)
-// Option for modifying how the Lexer works.
-type Option func(d *StatefulDefinition)
-
// A Rule matching input and possibly changing state.
type Rule struct {
- Name string
- Pattern string
- Action Action
+ Name string `json:"name"`
+ Pattern string `json:"pattern"`
+ Action Action `json:"action"`
+}
+
+var _ json.Marshaler = &Rule{}
+var _ json.Unmarshaler = &Rule{}
+
+type jsonRule struct {
+ Name string `json:"name,omitempty"`
+ Pattern string `json:"pattern,omitempty"`
+ Action json.RawMessage `json:"action,omitempty"`
+}
+
+func (r *Rule) UnmarshalJSON(data []byte) error {
+ jrule := jsonRule{}
+ err := json.Unmarshal(data, &jrule)
+ if err != nil {
+ return err
+ }
+ r.Name = jrule.Name
+ r.Pattern = jrule.Pattern
+ jaction := struct {
+ Kind string `json:"kind"`
+ }{}
+ if jrule.Action == nil {
+ return nil
+ }
+ err = json.Unmarshal(jrule.Action, &jaction)
+ if err != nil {
+ return fmt.Errorf("could not unmarshal action %q: %w", string(jrule.Action), err)
+ }
+ var action Action
+ switch jaction.Kind {
+ case "push":
+ actual := ActionPush{}
+ if err := json.Unmarshal(jrule.Action, &actual); err != nil {
+ return err
+ }
+ action = actual
+ case "pop":
+ actual := ActionPop{}
+ if err := json.Unmarshal(jrule.Action, &actual); err != nil {
+ return err
+ }
+ action = actual
+ case "include":
+ actual := include{}
+ if err := json.Unmarshal(jrule.Action, &actual); err != nil {
+ return err
+ }
+ action = actual
+ case "":
+ default:
+ return fmt.Errorf("unknown action %q", jaction.Kind)
+ }
+ r.Action = action
+ return nil
+}
+
+func (r *Rule) MarshalJSON() ([]byte, error) {
+ jrule := jsonRule{
+ Name: r.Name,
+ Pattern: r.Pattern,
+ }
+ if r.Action != nil {
+ actionData, err := json.Marshal(r.Action)
+ if err != nil {
+ return nil, fmt.Errorf("failed to map action: %w", err)
+ }
+ jaction := map[string]interface{}{}
+ err = json.Unmarshal(actionData, &jaction)
+ if err != nil {
+ return nil, fmt.Errorf("failed to map action: %w", err)
+ }
+ switch r.Action.(type) {
+ case nil:
+ case ActionPop:
+ jaction["kind"] = "pop"
+ case ActionPush:
+ jaction["kind"] = "push"
+ case include:
+ jaction["kind"] = "include"
+ default:
+ return nil, fmt.Errorf("unsupported action %T", r.Action)
+ }
+ actionJSON, err := json.Marshal(jaction)
+ if err != nil {
+ return nil, err
+ }
+ jrule.Action = actionJSON
+ }
+ return json.Marshal(&jrule)
}
// Rules grouped by name.
@@ -52,19 +140,8 @@
applyRules(state string, rule int, rules compiledRules) error
}
-// InitialState overrides the default initial state of "Root".
-func InitialState(state string) Option {
- return func(d *StatefulDefinition) {
- d.initialState = state
- }
-}
-
-// MatchLongest causes the Lexer to continue checking rules past the first match.
-// If any subsequent rule has a longer match, it will be used instead.
-func MatchLongest() Option {
- return func(d *StatefulDefinition) {
- d.matchLongest = true
- }
+type validatingRule interface {
+ validate(rules Rules) error
}
// ActionPop pops to the previous state when the Rule matches.
@@ -92,7 +169,9 @@
func Return() Rule { return ReturnRule }
// ActionPush pushes the current state and switches to "State" when the Rule matches.
-type ActionPush struct{ State string }
+type ActionPush struct {
+ State string `json:"state"`
+}
func (p ActionPush) applyAction(lexer *StatefulLexer, groups []string) error {
if groups[0] == "" {
@@ -102,6 +181,13 @@
return nil
}
+func (p ActionPush) validate(rules Rules) error {
+ if _, ok := rules[p.State]; !ok {
+ return fmt.Errorf("push to unknown state %q", p.State)
+ }
+ return nil
+}
+
// Push to the given state.
//
// The target state will then be the set of rules used for matching
@@ -110,16 +196,18 @@
return ActionPush{state}
}
-type include struct{ state string }
+type include struct {
+ State string `json:"state"`
+}
func (i include) applyAction(lexer *StatefulLexer, groups []string) error {
panic("should not be called")
}
func (i include) applyRules(state string, rule int, rules compiledRules) error {
- includedRules, ok := rules[i.state]
+ includedRules, ok := rules[i.State]
if !ok {
- return fmt.Errorf("invalid include state %q", i.state)
+ return fmt.Errorf("invalid include state %q", i.State)
}
clone := make([]compiledRule, len(includedRules))
copy(clone, includedRules)
@@ -138,13 +226,12 @@
symbols map[string]TokenType
// Map of key->*regexp.Regexp
backrefCache sync.Map
- initialState string
matchLongest bool
}
// MustStateful creates a new stateful lexer and panics if it is incorrect.
-func MustStateful(rules Rules, options ...Option) *StatefulDefinition {
- def, err := New(rules, options...)
+func MustStateful(rules Rules) *StatefulDefinition {
+ def, err := New(rules)
if err != nil {
panic(err)
}
@@ -152,10 +239,15 @@
}
// New constructs a new stateful lexer from rules.
-func New(rules Rules, options ...Option) (*StatefulDefinition, error) {
+func New(rules Rules) (*StatefulDefinition, error) {
compiled := compiledRules{}
for key, set := range rules {
for i, rule := range set {
+ if validate, ok := rule.Action.(validatingRule); ok {
+ if err := validate.validate(rules); err != nil {
+ return nil, fmt.Errorf("invalid action for rule %q: %w", rule.Name, err)
+ }
+ }
pattern := "^(?:" + rule.Pattern + ")"
var (
re *regexp.Regexp
@@ -208,16 +300,16 @@
}
}
d := &StatefulDefinition{
- initialState: "Root",
- rules: compiled,
- symbols: symbols,
- }
- for _, option := range options {
- option(d)
+ rules: compiled,
+ symbols: symbols,
}
return d, nil
}
+func (d *StatefulDefinition) MarshalJSON() ([]byte, error) {
+ return json.Marshal(d.rules)
+}
+
// Rules returns the user-provided Rules used to construct the lexer.
func (d *StatefulDefinition) Rules() Rules {
out := Rules{}
@@ -234,7 +326,7 @@
return &StatefulLexer{
def: d,
data: s,
- stack: []lexerState{{name: d.initialState}},
+ stack: []lexerState{{name: "Root"}},
pos: Position{
Filename: filename,
Line: 1,
@@ -256,6 +348,7 @@
return d.symbols
}
+// lexerState stored when switching states in the lexer.
type lexerState struct {
name string
groups []string
@@ -345,12 +438,15 @@
if candidate.RE != nil {
return candidate.RE, nil
}
-
// We don't have a compiled RE. This means there are back-references
// that need to be substituted first.
- parent := l.stack[len(l.stack)-1]
- key := candidate.Pattern + "\000" + strings.Join(parent.groups, "\000")
- cached, ok := l.def.backrefCache.Load(key)
+ return BackrefRegex(&l.def.backrefCache, candidate.Pattern, l.stack[len(l.stack)-1].groups)
+}
+
+// BackrefRegex returns a compiled regular expression with backreferences replaced by groups.
+func BackrefRegex(backrefCache *sync.Map, input string, groups []string) (*regexp.Regexp, error) {
+ key := input + "\000" + strings.Join(groups, "\000")
+ cached, ok := backrefCache.Load(key)
if ok {
return cached.(*regexp.Regexp), nil
}
@@ -359,19 +455,19 @@
re *regexp.Regexp
err error
)
- pattern := backrefReplace.ReplaceAllStringFunc(candidate.Pattern, func(s string) string {
+ pattern := backrefReplace.ReplaceAllStringFunc(input, func(s string) string {
var rematch = backrefReplace.FindStringSubmatch(s)
n, nerr := strconv.ParseInt(rematch[2], 10, 64)
if nerr != nil {
err = nerr
return s
}
- if len(parent.groups) == 0 || int(n) >= len(parent.groups) {
- err = fmt.Errorf("invalid group %d from parent with %d groups", n, len(parent.groups))
+ if len(groups) == 0 || int(n) >= len(groups) {
+ err = fmt.Errorf("invalid group %d from parent with %d groups", n, len(groups))
return s
}
// concatenate the leading \\\\ which are already escaped to the quoted match.
- return rematch[1][:len(rematch[1])-1] + regexp.QuoteMeta(parent.groups[n])
+ return rematch[1][:len(rematch[1])-1] + regexp.QuoteMeta(groups[n])
})
if err == nil {
re, err = regexp.Compile("^(?:" + pattern + ")")
@@ -379,6 +475,6 @@
if err != nil {
return nil, fmt.Errorf("invalid backref expansion: %q: %s", pattern, err)
}
- l.def.backrefCache.Store(key, re)
+ backrefCache.Store(key, re)
return re, nil
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/goccy/go-yaml/ast/ast.go new/vendor/github.com/goccy/go-yaml/ast/ast.go
--- old/vendor/github.com/goccy/go-yaml/ast/ast.go 2023-03-27 21:29:51.000000000 +0200
+++ new/vendor/github.com/goccy/go-yaml/ast/ast.go 2023-03-31 09:53:37.000000000 +0200
@@ -1570,8 +1570,9 @@
diffLength := len(splittedValues[0]) - len(trimmedFirstValue)
if len(splittedValues) > 1 && value.Type() == StringType || value.Type() == LiteralType {
// If multi-line string, the space characters for indent have already been added, so delete them.
+ prefix := space + " "
for i := 1; i < len(splittedValues); i++ {
- splittedValues[i] = strings.TrimLeft(splittedValues[i], " ")
+ splittedValues[i] = strings.TrimPrefix(splittedValues[i], prefix)
}
}
newValues := []string{trimmedFirstValue}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/goccy/go-yaml/token/token.go new/vendor/github.com/goccy/go-yaml/token/token.go
--- old/vendor/github.com/goccy/go-yaml/token/token.go 2023-03-27 21:29:51.000000000 +0200
+++ new/vendor/github.com/goccy/go-yaml/token/token.go 2023-03-31 09:53:37.000000000 +0200
@@ -283,6 +283,28 @@
"False",
"FALSE",
}
+ // For compatibility with other YAML 1.1 parsers
+ // Note that we use these solely for encoding the bool value with quotes.
+ // go-yaml should not treat these as reserved keywords at parsing time.
+ // as go-yaml is supposed to be compliant only with YAML 1.2.
+ reservedLegacyBoolKeywords = []string{
+ "y",
+ "Y",
+ "yes",
+ "Yes",
+ "YES",
+ "n",
+ "N",
+ "no",
+ "No",
+ "NO",
+ "on",
+ "On",
+ "ON",
+ "off",
+ "Off",
+ "OFF",
+ }
reservedInfKeywords = []string{
".inf",
".Inf",
@@ -297,6 +319,11 @@
".NAN",
}
reservedKeywordMap = map[string]func(string, string, *Position) *Token{}
+ // reservedEncKeywordMap contains is the keyword map used at encoding time.
+ // This is supposed to be a superset of reservedKeywordMap,
+ // and used to quote legacy keywords present in YAML 1.1 or lesser for compatibility reasons,
+ // even though this library is supposed to be YAML 1.2-compliant.
+ reservedEncKeywordMap = map[string]func(string, string, *Position) *Token{}
)
func reservedKeywordToken(typ Type, value, org string, pos *Position) *Token {
@@ -317,7 +344,14 @@
}
}
for _, keyword := range reservedBoolKeywords {
- reservedKeywordMap[keyword] = func(value, org string, pos *Position) *Token {
+ f := func(value, org string, pos *Position) *Token {
+ return reservedKeywordToken(BoolType, value, org, pos)
+ }
+ reservedKeywordMap[keyword] = f
+ reservedEncKeywordMap[keyword] = f
+ }
+ for _, keyword := range reservedLegacyBoolKeywords {
+ reservedEncKeywordMap[keyword] = func(value, org string, pos *Position) *Token {
return reservedKeywordToken(BoolType, value, org, pos)
}
}
@@ -581,7 +615,7 @@
if value == "" {
return true
}
- if _, exists := reservedKeywordMap[value]; exists {
+ if _, exists := reservedEncKeywordMap[value]; exists {
return true
}
if stat := getNumberStat(value); stat.isNum {
@@ -589,7 +623,7 @@
}
first := value[0]
switch first {
- case '*', '&', '[', '{', '}', ']', ',', '!', '|', '>', '%', '\'', '"':
+ case '*', '&', '[', '{', '}', ']', ',', '!', '|', '>', '%', '\'', '"', '@':
return true
}
last := value[len(value)-1]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/pelletier/go-toml/v2/unstable/ast.go new/vendor/github.com/pelletier/go-toml/v2/unstable/ast.go
--- old/vendor/github.com/pelletier/go-toml/v2/unstable/ast.go 2023-03-27 21:29:51.000000000 +0200
+++ new/vendor/github.com/pelletier/go-toml/v2/unstable/ast.go 2023-03-31 09:53:37.000000000 +0200
@@ -58,7 +58,7 @@
// - Table and ArrayTable's children represent a dotted key (same as
// KeyValue, but without the first node being the value).
//
-// When relevant, Raw describes the range of bytes this node is refering to in
+// When relevant, Raw describes the range of bytes this node is referring to in
// the input document. Use Parser.Raw() to retrieve the actual bytes.
type Node struct {
Kind Kind
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/pelletier/go-toml/v2/unstable/parser.go new/vendor/github.com/pelletier/go-toml/v2/unstable/parser.go
--- old/vendor/github.com/pelletier/go-toml/v2/unstable/parser.go 2023-03-27 21:29:51.000000000 +0200
+++ new/vendor/github.com/pelletier/go-toml/v2/unstable/parser.go 2023-03-31 09:53:37.000000000 +0200
@@ -132,12 +132,12 @@
}
// Expression returns a pointer to the node representing the last successfully
-// parsed expresion.
+// parsed expression.
func (p *Parser) Expression() *Node {
return p.builder.NodeAt(p.ref)
}
-// Error returns any error that has occured during parsing.
+// Error returns any error that has occurred during parsing.
func (p *Parser) Error() error {
return p.err
}
@@ -402,6 +402,7 @@
// inline-table-keyvals = keyval [ inline-table-sep inline-table-keyvals ]
parent := p.builder.Push(Node{
Kind: InlineTable,
+ Raw: p.Range(b[:1]),
})
first := true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/modules.txt new/vendor/modules.txt
--- old/vendor/modules.txt 2023-03-27 21:29:51.000000000 +0200
+++ new/vendor/modules.txt 2023-03-31 09:53:38.000000000 +0200
@@ -1,7 +1,7 @@
# github.com/a8m/envsubst v1.4.2
## explicit; go 1.17
github.com/a8m/envsubst/parse
-# github.com/alecthomas/participle/v2 v2.0.0-beta.5
+# github.com/alecthomas/participle/v2 v2.0.0
## explicit; go 1.18
github.com/alecthomas/participle/v2/lexer
# github.com/alecthomas/repr v0.2.0
@@ -27,8 +27,8 @@
github.com/goccy/go-json/internal/encoder/vm_indent
github.com/goccy/go-json/internal/errors
github.com/goccy/go-json/internal/runtime
-# github.com/goccy/go-yaml v1.10.0
-## explicit; go 1.12
+# github.com/goccy/go-yaml v1.10.1
+## explicit; go 1.18
github.com/goccy/go-yaml/ast
github.com/goccy/go-yaml/lexer
github.com/goccy/go-yaml/printer
@@ -49,7 +49,7 @@
# github.com/mattn/go-isatty v0.0.17
## explicit; go 1.15
github.com/mattn/go-isatty
-# github.com/pelletier/go-toml/v2 v2.0.6
+# github.com/pelletier/go-toml/v2 v2.0.7
## explicit; go 1.16
github.com/pelletier/go-toml/v2/internal/characters
github.com/pelletier/go-toml/v2/internal/danger
++++++ yq-4.33.1.tar.gz -> yq-4.33.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yq-4.33.1/acceptance_tests/nul-separator.sh new/yq-4.33.2/acceptance_tests/nul-separator.sh
--- old/yq-4.33.1/acceptance_tests/nul-separator.sh 1970-01-01 01:00:00.000000000 +0100
+++ new/yq-4.33.2/acceptance_tests/nul-separator.sh 2023-03-31 01:21:59.000000000 +0200
@@ -0,0 +1,286 @@
+#!/bin/bash
+
+setUp() {
+ rm test*.yml || true
+}
+
+## Convenient bash shortcut to read records of NUL separated values
+## from stdin the safe way. See example usage in the next tests.
+read-0() {
+ local eof="" IFS=''
+ while [ "$1" ]; do
+ ## - The `-r` avoids bad surprise with '\n' and other interpreted
+ ## sequences that can be read.
+ ## - The `-d ''` is the (strange?) way to refer to NUL delimiter.
+ ## - The `--` is how to avoid unpleasant surprises if your
+ ## "$1" starts with "-" (minus) sign. This protection also
+ ## will produce a readable error if you want to try to start
+ ## your variable names with a "-".
+ read -r -d '' -- "$1" || eof=1
+ shift
+ done
+ [ -z "$eof" ] ## fail on EOF
+}
+
+## Convenient bash shortcut to be used with the next function `p-err`
+## to read NUL separated values the safe way AND catch any errors from
+## the process creating the stream of NUL separated data. See example
+## usage in the tests.
+read-0-err() {
+ local ret="$1" eof="" idx=0 last=
+ read -r -- "${ret?}" <<<"0"
+ shift
+ while [ "$1" ]; do
+ last=$idx
+ read -r -d '' -- "$1" || {
+ ## Put this last value in ${!ret}
+ eof="$1"
+ read -r -- "$ret" <<<"${!eof}"
+ break
+ }
+ ((idx++))
+ shift
+ done
+ [ -z "$eof" ] || {
+ if [ "$last" != 0 ]; then
+ ## Uhoh, we have no idea if the errorlevel of the internal
+ ## command was properly delimited with a NUL char, and
+ ## anyway something went really wrong at least about the
+ ## number of fields separated by NUL char and the one
+ ## expected.
+ echo "Error: read-0-err couldn't fill all value $ret = '${!ret}', '$eof', '${!eof}'" >&2
+ read -r -- "$ret" <<<"not-enough-values"
+ else
+ if ! [[ "${!ret}" =~ ^[0-9]+$ && "${!ret}" -ge 0 && "${!ret}" -le 127 ]]; then
+ ## This could happen if you don't use `p-err` wrapper,
+ ## or used stdout in unexpected ways in your inner
+ ## command.
+ echo "Error: last value is not a number, did you finish with an errorlevel ?" >&2
+ read -r -- "$ret" <<<"last-value-not-a-number"
+ fi
+ fi
+ false
+ }
+}
+
+## Simply runs command given as argument and adds errorlevel in the
+## standard output. Is expected to be used in tandem with
+## `read-0-err`.
+p-err() {
+ local exp="$1"
+ "$@"
+ printf "%s" "$?"
+}
+
+wyq-r() {
+ local exp="$1"
+ ./yq e -0 -r=false "$1"
+ printf "%s" "$?"
+}
+
+testBasicUsageRaw() {
+ cat >test.yml <<EOL
+a: foo
+b: bar
+EOL
+
+ printf "foo\0bar\0" > expected.out
+
+ ## We need to compare binary content here. We have to filter the compared
+ ## content through a representation that gets rid of NUL chars but accurately
+ ## transcribe the content.
+ ## Also as it would be nice to have a pretty output in case the test fails,
+ ## we use here 'hd': a widely available shortcut to 'hexdump' that will
+ ## pretty-print any binary to it's hexadecimal representation.
+ ##
+ ## Note that the standard `assertEquals` compare its arguments
+ ## value, but they can't hold NUL characters (this comes from the
+ ## limitation of the C API of `exec*(..)` functions that requires
+ ## `const char *arv[]`). And these are NUL terminated strings. As a
+ ## consequence, the NUL characters gets removed in bash arguments.
+ assertEquals "$(hd expected.out)" \
+ "$(./yq e -0 '.a, .b' test.yml | hd)"
+
+ rm expected.out
+}
+
+testBasicUsage() {
+ local a b
+ cat >test.yml <<EOL
+a: foo
+b: bar
+EOL
+
+ ## We provide 2 values, and ask to fill 2 variables.
+ read-0 a b < <(./yq e -0 '.a, .b' test.yml)
+ assertEquals "$?" "0" ## Everything is fine
+ assertEquals "foo" "$a" ## Values are correctly parsed
+ assertEquals "bar" "$b"
+
+ a=YYY ; b=XXX
+ ## Not enough values provided to fill `a` and `b`.
+ read-0 a b < <(./yq e -0 '.a' test.yml)
+ assertEquals "$?" "1" ## An error was emitted
+ assertEquals "foo" "$a" ## First value was correctly parsed
+ assertEquals "" "$b" ## Second was still reset
+
+ ## Error from inner command are not catchable !. Use
+ ## `read-0-err`/`p-err` for that.
+ read-0 a < <(printf "\0"; ./yq e -0 'xxx' test.yml; )
+ assertEquals "$?" "0"
+
+}
+
+testBasicUsageJson() {
+ cat >test.yml <<EOL
+a:
+ x: foo
+b: bar
+EOL
+
+ read-0 a b < <(./yq e -0 -o=json '.a, .b' test.yml)
+
+ assertEquals '{
+ "x": "foo"
+}' "$a"
+ assertEquals '"bar"' "$b"
+
+}
+
+testFailWithValueContainingNUL() {
+ local a b c
+ ## Note that value of field 'a' actually contains a NUL char !
+ cat >test.yml <<EOL
+a: "foo\u0000bar"
+b: 1
+c: |
+ wiz
+ boom
+EOL
+
+ ## We are looking for trouble with asking to separated fields with NUL
+ ## char and requested value `.a` actually contains itself a NUL char !
+ read-0 a b c < <(./yq e -0 '.a, .b, .c' test.yml)
+ assertNotEquals "0" "$?" ## read-0 failed to fill all values
+
+ ## But here, we can request for one value, even if `./yq` fails
+ read-0 b < <(./yq e -0 '.b, .a' test.yml)
+ assertEquals "0" "$?" ## read-0 succeeds at feeding the first value
+ ## Note: to catch the failure of `yq`, see in the next tests the usage
+ ## of `read-0-err`.
+
+ ## using -r=false solves any NUL containing value issues, but keeps
+ ## all in YAML representation:
+ read-0 a b c < <(./yq e -0 -r=false '.a, .b, .c' test.yml)
+ assertEquals "0" "$?" ## All goes well despite asking for `a` value
+
+ assertEquals '"foo\0bar"' "$a" ## This is a YAML string representation
+ assertEquals '1' "$b"
+ assertEquals '|
+ wiz
+ boom' "$c"
+}
+
+testStandardLoop() {
+ local E a b res
+
+ ## Here everything is normal: 4 values, that will be paired
+ ## in key/values.
+ cat >test.yml <<EOL
+- yay
+- wiz
+- hop
+- pow
+EOL
+
+ res=""
+ while read-0-err E a b; do
+ res+="$a: $b;"
+ done < <(p-err ./yq -0 '.[]' test.yml)
+
+ assertEquals "0" "$E" ## errorlevel of internal command
+ assertEquals "yay: wiz;hop: pow;" "$res" ## expected result
+}
+
+testStandardLoopWithoutEnoughValues() {
+ local E a b res
+
+ ## Here 5 values, there will be a missing value when reading
+ ## pairs of value.
+ cat >test.yml <<EOL
+- yay
+- wiz
+- hop
+- pow
+- kwak
+EOL
+
+ res=""
+ ## The loop will succeed 2 times then fail
+ while read-0-err E a b; do
+ res+="$a: $b;"
+ done < <(p-err ./yq -0 '.[]' test.yml)
+
+ assertEquals "not-enough-values" "$E" ## Not enough value error
+ assertEquals "yay: wiz;hop: pow;" "$res" ## the 2 full key/value pairs
+
+}
+
+testStandardLoopWithInternalCmdError() {
+ local E a b res
+
+ ## Note the third value contains a NUL char !
+ cat >test.yml <<EOL
+- yay
+- wiz
+- "foo\0bar"
+- hop
+- pow
+EOL
+
+ res=""
+ ## It should be only upon the second pass in the loop that
+ ## read-0-err will catch the fact that there is an error !
+ while read-0-err E a b; do
+ res+="$a: $b;"
+ done < <(p-err ./yq -0 '.[]' test.yml)
+ assertEquals "1" "$E" ## Internal command errorlevel (from `./yq`)
+ assertEquals "yay: wiz;" "$res" ## first 2 values were ok at least
+
+}
+
+testStandardLoopNotEnoughErrorEatsCmdError() {
+ local E a b res
+
+ ## Because of possible edge cases where the internal errorlevel
+ ## reported by `p-err` in the standard output might be mangled
+ ## with the unfinished record, `read-0-err E ...` will NOT report
+ ## the internal command error in the variable E and instead will
+ ## store the value 'not-enough-values'. In real world, anyway, you
+ ## will want to react the same if the internal command failed
+ ## and/or you didn't get as much values as expected while
+ ## reading. Keep in mind also that standard error is not
+ ## swallowed, so you can read reports from the inner command AND
+ ## from `read-0-err`.
+
+ ## Here, note that the fourth value contains a NUL char !
+ cat >test.yml <<EOL
+- yay
+- wiz
+- hop
+- "foo\0bar"
+- pow
+EOL
+
+ res=""
+ ## It should be only upon the second loop that read-0-err will catch
+ ## the fact that there are not enough data to fill the requested variables
+ while read-0-err E a b; do
+ res+="$a: $b;"
+ done < <(p-err ./yq -0 '.[]' test.yml)
+ assertEquals "not-enough-values" "$E" ## Not enough values error eats internal error !
+ assertEquals "yay: wiz;" "$res" ## first 2 values were ok at least
+}
+
+
+source ./scripts/shunit2
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yq-4.33.1/cmd/constant.go new/yq-4.33.2/cmd/constant.go
--- old/yq-4.33.1/cmd/constant.go 2023-03-26 01:12:36.000000000 +0100
+++ new/yq-4.33.2/cmd/constant.go 2023-03-31 01:21:59.000000000 +0200
@@ -18,6 +18,7 @@
var indent = 2
var noDocSeparators = false
var nullInput = false
+var nulSepOutput = false
var verbose = false
var version = false
var prettyPrint = false
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yq-4.33.1/cmd/evaluate_all_command.go new/yq-4.33.2/cmd/evaluate_all_command.go
--- old/yq-4.33.1/cmd/evaluate_all_command.go 2023-03-26 01:12:36.000000000 +0100
+++ new/yq-4.33.2/cmd/evaluate_all_command.go 2023-03-31 01:21:59.000000000 +0200
@@ -90,6 +90,9 @@
}
printer := yqlib.NewPrinter(encoder, printerWriter)
+ if nulSepOutput {
+ printer.SetNulSepOutput(true)
+ }
if frontMatter != "" {
frontMatterHandler := yqlib.NewFrontMatterHandler(args[0])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yq-4.33.1/cmd/evalute_sequence_command.go new/yq-4.33.2/cmd/evalute_sequence_command.go
--- old/yq-4.33.1/cmd/evalute_sequence_command.go 2023-03-26 01:12:36.000000000 +0100
+++ new/yq-4.33.2/cmd/evalute_sequence_command.go 2023-03-31 01:21:59.000000000 +0200
@@ -99,6 +99,9 @@
}
printer := yqlib.NewPrinter(encoder, printerWriter)
+ if nulSepOutput {
+ printer.SetNulSepOutput(true)
+ }
decoder, err := configureDecoder(false)
if err != nil {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yq-4.33.1/cmd/root.go new/yq-4.33.2/cmd/root.go
--- old/yq-4.33.1/cmd/root.go 2023-03-26 01:12:36.000000000 +0100
+++ new/yq-4.33.2/cmd/root.go 2023-03-31 01:21:59.000000000 +0200
@@ -86,6 +86,7 @@
rootCmd.PersistentFlags().BoolVarP(&writeInplace, "inplace", "i", false, "update the file inplace of first file given.")
rootCmd.PersistentFlags().VarP(unwrapScalarFlag, "unwrapScalar", "r", "unwrap scalar, print the value with no quotes, colors or comments. Defaults to true for yaml")
rootCmd.PersistentFlags().Lookup("unwrapScalar").NoOptDefVal = "true"
+ rootCmd.PersistentFlags().BoolVarP(&nulSepOutput, "nul-output", "0", false, "Use NUL char to separate values. If unwrap scalar is also set, fail if unwrapped scalar contains NUL char.")
rootCmd.PersistentFlags().BoolVarP(&prettyPrint, "prettyPrint", "P", false, "pretty print, shorthand for '... style = \"\"'")
rootCmd.PersistentFlags().BoolVarP(&exitStatus, "exit-status", "e", false, "set exit status if there are no matches or null or false is returned")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yq-4.33.1/cmd/version.go new/yq-4.33.2/cmd/version.go
--- old/yq-4.33.1/cmd/version.go 2023-03-26 01:12:36.000000000 +0100
+++ new/yq-4.33.2/cmd/version.go 2023-03-31 01:21:59.000000000 +0200
@@ -11,7 +11,7 @@
GitDescribe string
// Version is main version number that is being run at the moment.
- Version = "v4.33.1"
+ Version = "v4.33.2"
// VersionPrerelease is a pre-release marker for the version. If this is "" (empty string)
// then it means that it is a final release. Otherwise, this is a pre-release
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yq-4.33.1/go.mod new/yq-4.33.2/go.mod
--- old/yq-4.33.1/go.mod 2023-03-26 01:12:36.000000000 +0100
+++ new/yq-4.33.2/go.mod 2023-03-31 01:21:59.000000000 +0200
@@ -2,16 +2,16 @@
require (
github.com/a8m/envsubst v1.4.2
- github.com/alecthomas/participle/v2 v2.0.0-beta.5
+ github.com/alecthomas/participle/v2 v2.0.0
github.com/alecthomas/repr v0.2.0
github.com/dimchansky/utfbom v1.1.1
github.com/elliotchance/orderedmap v1.5.0
github.com/fatih/color v1.15.0
github.com/goccy/go-json v0.10.2
- github.com/goccy/go-yaml v1.10.0
+ github.com/goccy/go-yaml v1.10.1
github.com/jinzhu/copier v0.3.5
github.com/magiconair/properties v1.8.7
- github.com/pelletier/go-toml/v2 v2.0.6
+ github.com/pelletier/go-toml/v2 v2.0.7
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e
github.com/spf13/cobra v1.6.1
github.com/spf13/pflag v1.0.5
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yq-4.33.1/go.sum new/yq-4.33.2/go.sum
--- old/yq-4.33.1/go.sum 2023-03-26 01:12:36.000000000 +0100
+++ new/yq-4.33.2/go.sum 2023-03-31 01:21:59.000000000 +0200
@@ -1,8 +1,8 @@
github.com/a8m/envsubst v1.4.2 h1:4yWIHXOLEJHQEFd4UjrWDrYeYlV7ncFWJOCBRLOZHQg=
github.com/a8m/envsubst v1.4.2/go.mod h1:MVUTQNGQ3tsjOOtKCNd+fl8RzhsXcDvvAEzkhGtlsbY=
-github.com/alecthomas/assert/v2 v2.0.3 h1:WKqJODfOiQG0nEJKFKzDIG3E29CN2/4zR9XGJzKIkbg=
-github.com/alecthomas/participle/v2 v2.0.0-beta.5 h1:y6dsSYVb1G5eK6mgmy+BgI3Mw35a3WghArZ/Hbebrjo=
-github.com/alecthomas/participle/v2 v2.0.0-beta.5/go.mod h1:RC764t6n4L8D8ITAJv0qdokritYSNR3wV5cVwmIEaMM=
+github.com/alecthomas/assert/v2 v2.2.2 h1:Z/iVC0xZfWTaFNE6bA3z07T86hd45Xe2eLt6WVy2bbk=
+github.com/alecthomas/participle/v2 v2.0.0 h1:Fgrq+MbuSsJwIkw3fEj9h75vDP0Er5JzepJ0/HNHv0g=
+github.com/alecthomas/participle/v2 v2.0.0/go.mod h1:rAKZdJldHu8084ojcWevWAL8KmEU+AT+Olodb+WoN2Y=
github.com/alecthomas/repr v0.2.0 h1:HAzS41CIzNW5syS8Mf9UwXhNH1J9aix/BvDRf1Ml2Yk=
github.com/alecthomas/repr v0.2.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4=
github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
@@ -13,35 +13,26 @@
github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE=
github.com/elliotchance/orderedmap v1.5.0 h1:1IsExUsjv5XNBD3ZdC7jkAAqLWOOKdbPTmkHx63OsBg=
github.com/elliotchance/orderedmap v1.5.0/go.mod h1:wsDwEaX5jEoyhbs7x93zk2H/qv0zwuhg4inXhDkYqys=
-github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM=
github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs=
github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw=
-github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
-github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8=
-github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA=
-github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4=
github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU=
github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
-github.com/goccy/go-yaml v1.10.0 h1:rBi+5HGuznOxx0JZ+60LDY85gc0dyIJCIMvsMJTKSKQ=
-github.com/goccy/go-yaml v1.10.0/go.mod h1:h/18Lr6oSQ3mvmqFoWmQ47KChOgpfHpTyIHl3yVmpiY=
-github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/goccy/go-yaml v1.10.1 h1:neijiyxgQOmEyVw8ZsDxcCzkU3NJ5NS+q7xmnOcd8UQ=
+github.com/goccy/go-yaml v1.10.1/go.mod h1:H+mJrWtjPTJAHvRbV09MCK9xYwODM+wRTVFFTWckfng=
github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM=
github.com/inconshreveable/mousetrap v1.0.1 h1:U3uMjPSQEBMNp1lFxmllqCPM6P5u/Xq7Pgzkat/bFNc=
github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
github.com/jinzhu/copier v0.3.5 h1:GlvfUwHk62RokgqVNvYsku0TATCF7bAHVwEXoBh3iJg=
github.com/jinzhu/copier v0.3.5/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg=
-github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY=
github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
-github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
-github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
-github.com/pelletier/go-toml/v2 v2.0.6 h1:nrzqCb7j9cDFj2coyLNLaZuJTLjWjlaz6nvTvIwycIU=
-github.com/pelletier/go-toml/v2 v2.0.6/go.mod h1:eumQOmlWiOPt5WriQQqoM5y18pDHwha2N+QD+EUNTek=
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng=
github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
+github.com/pelletier/go-toml/v2 v2.0.7 h1:muncTPStnKRos5dpVKULv2FVd4bMOhNePj9CjgDb8Us=
+github.com/pelletier/go-toml/v2 v2.0.7/go.mod h1:eumQOmlWiOPt5WriQQqoM5y18pDHwha2N+QD+EUNTek=
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e h1:aoZm08cpOy4WuID//EZDgcC4zIxODThtZNPirFr42+A=
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
@@ -54,38 +45,24 @@
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
-github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
-golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
-golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ=
golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
-golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20220406163625-3f8b81556e12/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
-golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68=
golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
-golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f h1:uF6paiQQebLeSXkrTqHqz0MXhXXS1KgF41eUdBNvxK0=
golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/op/go-logging.v1 v1.0.0-20160211212156-b2cb9fa56473 h1:6D+BvnJ/j6e222UW8s2qTSe3wGBtvo0MbVQG/c5k8RE=
gopkg.in/op/go-logging.v1 v1.0.0-20160211212156-b2cb9fa56473/go.mod h1:N1eN2tsCx0Ydtgjl4cqmbRCsY4/+z4cYDeqwZTk6zog=
-gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yq-4.33.1/pkg/yqlib/csv_test.go new/yq-4.33.2/pkg/yqlib/csv_test.go
--- old/yq-4.33.1/pkg/yqlib/csv_test.go 2023-03-26 01:12:36.000000000 +0100
+++ new/yq-4.33.2/pkg/yqlib/csv_test.go 2023-03-31 01:21:59.000000000 +0200
@@ -127,6 +127,14 @@
scenarioType: "decode-csv-object",
},
{
+ description: "Scalar roundtrip",
+ skipDoc: true,
+ input: "mike\ncat",
+ expression: ".[0].mike",
+ expected: "cat\n",
+ scenarioType: "roundtrip-csv",
+ },
+ {
description: "Parse TSV into an array of objects",
subdescription: "First row is assumed to be the header row.",
input: tsvSimple,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yq-4.33.1/pkg/yqlib/encoder_csv.go new/yq-4.33.2/pkg/yqlib/encoder_csv.go
--- old/yq-4.33.1/pkg/yqlib/encoder_csv.go 2023-03-26 01:12:36.000000000 +0100
+++ new/yq-4.33.2/pkg/yqlib/encoder_csv.go 2023-03-31 01:21:59.000000000 +0200
@@ -103,6 +103,10 @@
}
func (e *csvEncoder) Encode(writer io.Writer, originalNode *yaml.Node) error {
+ if originalNode.Kind == yaml.ScalarNode {
+ return writeString(writer, originalNode.Value+"\n")
+ }
+
csvWriter := csv.NewWriter(writer)
csvWriter.Comma = e.separator
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yq-4.33.1/pkg/yqlib/encoder_properties.go new/yq-4.33.2/pkg/yqlib/encoder_properties.go
--- old/yq-4.33.1/pkg/yqlib/encoder_properties.go 2023-03-26 01:12:36.000000000 +0100
+++ new/yq-4.33.2/pkg/yqlib/encoder_properties.go 2023-03-31 01:21:59.000000000 +0200
@@ -63,6 +63,11 @@
}
func (pe *propertiesEncoder) Encode(writer io.Writer, node *yaml.Node) error {
+
+ if node.Kind == yaml.ScalarNode {
+ return writeString(writer, node.Value+"\n")
+ }
+
mapKeysToStrings(node)
p := properties.NewProperties()
err := pe.doEncode(p, node, "", nil)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yq-4.33.1/pkg/yqlib/printer.go new/yq-4.33.2/pkg/yqlib/printer.go
--- old/yq-4.33.1/pkg/yqlib/printer.go 2023-03-26 01:12:36.000000000 +0100
+++ new/yq-4.33.2/pkg/yqlib/printer.go 2023-03-31 01:21:59.000000000 +0200
@@ -2,6 +2,7 @@
import (
"bufio"
+ "bytes"
"container/list"
"fmt"
"io"
@@ -15,6 +16,7 @@
PrintedAnything() bool
//e.g. when given a front-matter doc, like jekyll
SetAppendix(reader io.Reader)
+ SetNulSepOutput(nulSepOutput bool)
}
type PrinterOutputFormat uint32
@@ -59,6 +61,7 @@
printedMatches bool
treeNavigator DataTreeNavigator
appendixReader io.Reader
+ nulSepOutput bool
}
func NewPrinter(encoder Encoder, printerWriter PrinterWriter) Printer {
@@ -67,9 +70,16 @@
printerWriter: printerWriter,
firstTimePrinting: true,
treeNavigator: NewDataTreeNavigator(),
+ nulSepOutput: false,
}
}
+func (p *resultsPrinter) SetNulSepOutput(nulSepOutput bool) {
+ log.Debug("Setting NUL separator output")
+
+ p.nulSepOutput = nulSepOutput
+}
+
func (p *resultsPrinter) SetAppendix(reader io.Reader) {
p.appendixReader = reader
}
@@ -84,6 +94,16 @@
return p.encoder.Encode(writer, node)
}
+func removeLastEOL(b *bytes.Buffer) {
+ data := b.Bytes()
+ n := len(data)
+ if n >= 2 && data[n-2] == '\r' && data[n-1] == '\n' {
+ b.Truncate(n - 2)
+ } else if n >= 1 && (data[n-1] == '\r' || data[n-1] == '\n') {
+ b.Truncate(n - 1)
+ }
+}
+
func (p *resultsPrinter) PrintResults(matchingNodes *list.List) error {
log.Debug("PrintResults for %v matches", matchingNodes.Len())
@@ -128,18 +148,40 @@
}
}
- if err := p.encoder.PrintLeadingContent(writer, mappedDoc.LeadingContent); err != nil {
+ var destination io.Writer = writer
+ tempBuffer := bytes.NewBuffer(nil)
+ if p.nulSepOutput {
+ destination = tempBuffer
+ }
+
+ if err := p.encoder.PrintLeadingContent(destination, mappedDoc.LeadingContent); err != nil {
return err
}
- if err := p.printNode(mappedDoc.Node, writer); err != nil {
+ if err := p.printNode(mappedDoc.Node, destination); err != nil {
return err
}
- if err := p.encoder.PrintLeadingContent(writer, mappedDoc.TrailingContent); err != nil {
+ if err := p.encoder.PrintLeadingContent(destination, mappedDoc.TrailingContent); err != nil {
return err
}
+ if p.nulSepOutput {
+ removeLastEOL(tempBuffer)
+ tempBufferBytes := tempBuffer.Bytes()
+ if bytes.IndexByte(tempBufferBytes, 0) != -1 {
+ return fmt.Errorf(
+ "Can't serialize value because it contains NUL char and you are using NUL separated output",
+ )
+ }
+ if _, err := writer.Write(tempBufferBytes); err != nil {
+ return err
+ }
+ if _, err := writer.Write([]byte{0}); err != nil {
+ return err
+ }
+ }
+
p.previousDocIndex = mappedDoc.Document
if err := writer.Flush(); err != nil {
return err
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yq-4.33.1/pkg/yqlib/printer_test.go new/yq-4.33.2/pkg/yqlib/printer_test.go
--- old/yq-4.33.1/pkg/yqlib/printer_test.go 2023-03-26 01:12:36.000000000 +0100
+++ new/yq-4.33.2/pkg/yqlib/printer_test.go 2023-03-31 01:21:59.000000000 +0200
@@ -340,3 +340,53 @@
writer.Flush()
test.AssertResult(t, expected, output.String())
}
+
+func TestPrinterNulSeparator(t *testing.T) {
+ var output bytes.Buffer
+ var writer = bufio.NewWriter(&output)
+ printer := NewSimpleYamlPrinter(writer, YamlOutputFormat, true, false, 2, false)
+ printer.SetNulSepOutput(true)
+ node, err := getExpressionParser().ParseExpression(".a")
+ if err != nil {
+ panic(err)
+ }
+ streamEvaluator := NewStreamEvaluator()
+ _, err = streamEvaluator.Evaluate("sample", strings.NewReader(multiDocSample), node, printer, NewYamlDecoder(ConfiguredYamlPreferences))
+ if err != nil {
+ panic(err)
+ }
+
+ writer.Flush()
+ expected := "banana\x00apple\x00coconut\x00"
+ test.AssertResult(t, expected, output.String())
+}
+
+func TestPrinterNulSeparatorWithJson(t *testing.T) {
+ var output bytes.Buffer
+ var writer = bufio.NewWriter(&output)
+ // note printDocSeparators is true, it should still not print document separators
+ // when outputing JSON.
+ encoder := NewJSONEncoder(0, false, false)
+ if encoder == nil {
+ t.Skipf("no support for %s output format", "json")
+ }
+ printer := NewPrinter(encoder, NewSinglePrinterWriter(writer))
+ printer.SetNulSepOutput(true)
+
+ inputs, err := readDocuments(strings.NewReader(multiDocSample), "sample.yml", 0, NewYamlDecoder(ConfiguredYamlPreferences))
+ if err != nil {
+ panic(err)
+ }
+
+ inputs.Front().Value.(*CandidateNode).LeadingContent = "# ignore this\n"
+
+ err = printer.PrintResults(inputs)
+ if err != nil {
+ panic(err)
+ }
+
+ expected := `{"a":"banana"}` + "\x00" + `{"a":"apple"}` + "\x00" + `{"a":"coconut"}` + "\x00"
+
+ writer.Flush()
+ test.AssertResult(t, expected, output.String())
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yq-4.33.1/pkg/yqlib/properties_test.go new/yq-4.33.2/pkg/yqlib/properties_test.go
--- old/yq-4.33.1/pkg/yqlib/properties_test.go 2023-03-26 01:12:36.000000000 +0100
+++ new/yq-4.33.2/pkg/yqlib/properties_test.go 2023-03-31 01:21:59.000000000 +0200
@@ -163,6 +163,14 @@
scenarioType: "decode",
},
{
+ description: "print scalar",
+ skipDoc: true,
+ input: "mike = cat",
+ expression: ".mike",
+ expected: "cat\n",
+ scenarioType: "roundtrip",
+ },
+ {
description: "Roundtrip",
input: expectedPropertiesUnwrapped,
expression: `.person.pets.0 = "dog"`,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yq-4.33.1/pkg/yqlib/xml_test.go new/yq-4.33.2/pkg/yqlib/xml_test.go
--- old/yq-4.33.1/pkg/yqlib/xml_test.go 2023-03-26 01:12:36.000000000 +0100
+++ new/yq-4.33.2/pkg/yqlib/xml_test.go 2023-03-31 01:21:59.000000000 +0200
@@ -302,6 +302,14 @@
scenarioType: "encode",
},
{
+ description: "Scalar roundtrip",
+ skipDoc: true,
+ input: "<mike>cat</mike>",
+ expression: ".mike",
+ expected: "cat",
+ scenarioType: "roundtrip",
+ },
+ {
description: "ProcInst with head comment round trip",
skipDoc: true,
input: expectedXmlProcInstAndHeadComment,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yq-4.33.1/release_notes.txt new/yq-4.33.2/release_notes.txt
--- old/yq-4.33.1/release_notes.txt 2023-03-26 01:12:36.000000000 +0100
+++ new/yq-4.33.2/release_notes.txt 2023-03-31 01:21:59.000000000 +0200
@@ -1,3 +1,7 @@
+4.33.1:
+ - Added read-only TOML support! #1364. Thanks @pelletier for making your API available in your toml lib :)
+ - Added warning when auto detect by file type is outputs JSON (#1608)
+
4.32.2:
- Fixed behaviour for unknown file types (defaults to yaml) #1609
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yq-4.33.1/snap/snapcraft.yaml new/yq-4.33.2/snap/snapcraft.yaml
--- old/yq-4.33.1/snap/snapcraft.yaml 2023-03-26 01:12:36.000000000 +0100
+++ new/yq-4.33.2/snap/snapcraft.yaml 2023-03-31 01:21:59.000000000 +0200
@@ -1,5 +1,5 @@
name: yq
-version: 'v4.33.1'
+version: 'v4.33.2'
summary: A lightweight and portable command-line YAML processor
description: |
The aim of the project is to be the jq or sed of yaml files.
@@ -9,7 +9,7 @@
apps:
yq:
command: yq
- plugs: [home]
+ plugs: [home, removable-media]
parts:
yq:
plugin: go
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package aravis for openSUSE:Factory checked in at 2023-03-31 21:16:00
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/aravis (Old)
and /work/SRC/openSUSE:Factory/.aravis.new.31432 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "aravis"
Fri Mar 31 21:16:00 2023 rev:3 rq:1076415 version:0.8.26
Changes:
--------
--- /work/SRC/openSUSE:Factory/aravis/aravis.changes 2022-11-30 15:00:22.225509915 +0100
+++ /work/SRC/openSUSE:Factory/.aravis.new.31432/aravis.changes 2023-03-31 21:16:07.742555163 +0200
@@ -1,0 +2,15 @@
+Mon Mar 27 19:22:47 UTC 2023 - Matwey Kornilov <matwey.kornilov(a)gmail.com>
+
+- Update to 0.8.26:
+ * viewer: fix pixel format selection #765
+
+- Changes for 0.8.25:
+ * viewer: add component selection support
+ * buffer: add component id getter
+ * buffer: fix multipart informations
+
+- Changes for 0.8.24:
+ * gv: fix multipart data accessor
+ * gv: improve error handling of network API
+
+-------------------------------------------------------------------
Old:
----
aravis-0.8.22.tar.xz
New:
----
aravis-0.8.26.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ aravis.spec ++++++
--- /var/tmp/diff_new_pack.qg16UQ/_old 2023-03-31 21:16:08.282557740 +0200
+++ /var/tmp/diff_new_pack.qg16UQ/_new 2023-03-31 21:16:08.286557758 +0200
@@ -1,7 +1,7 @@
#
# spec file for package aravis
#
-# Copyright (c) 2022 SUSE LLC
+# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -24,13 +24,13 @@
%define devname lib%{name}-%{sorel}-devel
%define typelibname typelib-1_0-Aravis-%{api}
Name: aravis
-Version: 0.8.22
+Version: 0.8.26
Release: 0
Summary: Glib/gobject based library implementing a Genicam interface
License: LGPL-2.1-or-later
Group: Productivity/Multimedia/Video/Players
URL: https://github.com/AravisProject/aravis
-Source0: https://github.com/AravisProject/%{name}/releases/download/%{version}/aravi…
+Source: https://github.com/AravisProject/%{name}/releases/download/%{version}/aravi…
BuildRequires: %{python_module gobject}
BuildRequires: gcc-c++
BuildRequires: gobject-introspection
@@ -126,6 +126,8 @@
%{_bindir}/arv-test-%{api}
%{_bindir}/arv-tool-%{api}
%{_mandir}/man1/arv-tool-*
+%{_mandir}/man1/arv-camera-test-*
+%{_mandir}/man1/arv-test-*
%files viewer -f %{name}-%{api}.lang
%{_bindir}/arv-viewer-%{api}
++++++ aravis-0.8.22.tar.xz -> aravis-0.8.26.tar.xz ++++++
++++ 14098 lines of diff (skipped)
1
0