openSUSE Commits
Threads by month
- ----- 2024 -----
- 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
January 2016
- 1 participants
- 1523 discussions
Hello community,
here is the log from the commit of package python-setuptools_scm for openSUSE:Factory checked in at 2016-01-23 01:15:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-setuptools_scm (Old)
and /work/SRC/openSUSE:Factory/.python-setuptools_scm.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-setuptools_scm"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-setuptools_scm/python-setuptools_scm.changes 2015-11-12 19:37:31.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.python-setuptools_scm.new/python-setuptools_scm.changes 2016-01-23 01:15:34.000000000 +0100
@@ -1,0 +2,23 @@
+Tue Jan 12 17:07:35 UTC 2016 - michael(a)stroeder.com
+
+- Update to 1.10.1:
+
+v1.10.1
+* fix issue #73 - in hg pre commit merge, consider parent1 instead of failing
+
+v1.10.0
+* add support for overriding the version number via the
+ environment variable SETUPTOOLS_SCM_PRETEND_VERSION
+* fix isssue #63 by adding the --match parameter to the git describe call
+ and prepare the possibility of passing more options to scm backends
+* fix issue #70 and #71 by introducing the parse keyword
+ to specify custom scm parsing, its an expert feature,
+ use with caution
+ this change also introduces the setuptools_scm.parse_scm_fallback
+ entrypoint which can be used to register custom archive fallbacks
+
+v1.9.0
+* Add :code:`relative_to` parameter to :code:`get_version` function;
+ fixes #44 per #45.
+
+-------------------------------------------------------------------
Old:
----
setuptools_scm-1.8.0.tar.bz2
New:
----
setuptools_scm-1.10.1.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-setuptools_scm.spec ++++++
--- /var/tmp/diff_new_pack.kvVxai/_old 2016-01-23 01:15:35.000000000 +0100
+++ /var/tmp/diff_new_pack.kvVxai/_new 2016-01-23 01:15:35.000000000 +0100
@@ -17,7 +17,7 @@
Name: python-setuptools_scm
-Version: 1.8.0
+Version: 1.10.1
Release: 0
Summary: Manage your versions by scm tags
License: MIT
++++++ setuptools_scm-1.8.0.tar.bz2 -> setuptools_scm-1.10.1.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/setuptools_scm-1.8.0/.hgtags new/setuptools_scm-1.10.1/.hgtags
--- old/setuptools_scm-1.8.0/.hgtags 1970-01-01 01:00:00.000000000 +0100
+++ new/setuptools_scm-1.10.1/.hgtags 2015-11-28 14:49:00.000000000 +0100
@@ -0,0 +1 @@
+1092123ef78598eade56aa9c57e484f3670c8da8 v1.9.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/setuptools_scm-1.8.0/CHANGELOG.rst new/setuptools_scm-1.10.1/CHANGELOG.rst
--- old/setuptools_scm-1.8.0/CHANGELOG.rst 2015-09-17 22:48:24.000000000 +0200
+++ new/setuptools_scm-1.10.1/CHANGELOG.rst 2015-12-10 21:58:57.000000000 +0100
@@ -1,4 +1,30 @@
+v1.10.1
+=======
+* fix issue #73 - in hg pre commit merge, consider parent1 instead of failing
+
+v1.10.0
+=======
+
+* add support for overriding the version number via the
+ environment variable SETUPTOOLS_SCM_PRETEND_VERSION
+
+* fix isssue #63 by adding the --match parameter to the git describe call
+ and prepare the possibility of passing more options to scm backends
+
+* fix issue #70 and #71 by introducing the parse keyword
+ to specify custom scm parsing, its an expert feature,
+ use with caution
+
+ this change also introduces the setuptools_scm.parse_scm_fallback
+ entrypoint which can be used to register custom archive fallbacks
+
+
+v1.9.0
+======
+
+* Add :code:`relative_to` parameter to :code:`get_version` function;
+ fixes #44 per #45.
v1.8.0
======
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/setuptools_scm-1.8.0/PKG-INFO new/setuptools_scm-1.10.1/PKG-INFO
--- old/setuptools_scm-1.8.0/PKG-INFO 2015-09-17 23:00:09.000000000 +0200
+++ new/setuptools_scm-1.10.1/PKG-INFO 2015-12-10 22:04:05.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: setuptools_scm
-Version: 1.8.0
+Version: 1.10.1
Summary: the blessed package to manage your versions by scm tags
Home-page: https://github.com/pypa/setuptools_scm/
Author: Ronny Pfannschmidt
@@ -13,7 +13,7 @@
in scm metadata instead of declaring them as the version argument
or in a scm managed file.
- It also handles file finders for the supperted scm's.
+ It also handles file finders for the supported scm's.
.. image:: https://travis-ci.org/pypa/setuptools_scm.svg?branch=master
:target: https://travis-ci.org/pypa/setuptools_scm
@@ -51,6 +51,17 @@
version = get_version()
+ Notable Plugins
+ ----------------
+
+ `setuptools_scm_git_archive <https://pypi.python.org/pypi/setuptools_scm_git_archive>`_
+ provides partial support for obtaining versions from git archvies
+ that belong to tagged versions. The only reason for not including
+ it in setuptools-scm itself is git/github not supporting
+ sufficient metadata for untagged/followup commits,
+ which is preventing a consistent UX.
+
+
Default versioning scheme
--------------------------
@@ -134,6 +145,18 @@
a newstyle format string thats given the current version as
the :code:`version` keyword argument for formatting
+ :relative_to:
+ a file from which root may be resolved. typically called by a
+ script or module that is not
+ in the root of the repository to direct setuptools_scm to the
+ root of the repository by supplying ``__file__``.
+
+ :parse:
+ a function that will be used instead of the discovered scm for parsing the version,
+ use with caution, this is a expert function and you should be closely familiar
+ with the setuptools_scm internals to use it
+
+
To use setuptools_scm in other Python code you can use the
``get_version`` function:
@@ -146,6 +169,15 @@
keyword arguments.
+ Environment Variables
+ ---------------------
+
+ :SETUPTOOLS_SCM_PRETEND_VERSION:
+ when defined and not empty,
+ its used as the primary source for the version number
+ in which case it will be a unparsed string
+
+
Extending setuptools_scm
------------------------
@@ -205,7 +237,7 @@
To support usage in :code:`setup.py` passing a callable into use_scm_version
is supported.
- Within that callable, setuptools_scm is availiable for import.
+ Within that callable, setuptools_scm is available for import.
The callable must return the configuration.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/setuptools_scm-1.8.0/README.rst new/setuptools_scm-1.10.1/README.rst
--- old/setuptools_scm-1.8.0/README.rst 2015-09-17 22:49:11.000000000 +0200
+++ new/setuptools_scm-1.10.1/README.rst 2015-12-07 21:45:49.000000000 +0100
@@ -5,7 +5,7 @@
in scm metadata instead of declaring them as the version argument
or in a scm managed file.
-It also handles file finders for the supperted scm's.
+It also handles file finders for the supported scm's.
.. image:: https://travis-ci.org/pypa/setuptools_scm.svg?branch=master
:target: https://travis-ci.org/pypa/setuptools_scm
@@ -43,6 +43,17 @@
version = get_version()
+Notable Plugins
+----------------
+
+`setuptools_scm_git_archive <https://pypi.python.org/pypi/setuptools_scm_git_archive>`_
+provides partial support for obtaining versions from git archvies
+that belong to tagged versions. The only reason for not including
+it in setuptools-scm itself is git/github not supporting
+sufficient metadata for untagged/followup commits,
+which is preventing a consistent UX.
+
+
Default versioning scheme
--------------------------
@@ -126,6 +137,18 @@
a newstyle format string thats given the current version as
the :code:`version` keyword argument for formatting
+:relative_to:
+ a file from which root may be resolved. typically called by a
+ script or module that is not
+ in the root of the repository to direct setuptools_scm to the
+ root of the repository by supplying ``__file__``.
+
+:parse:
+ a function that will be used instead of the discovered scm for parsing the version,
+ use with caution, this is a expert function and you should be closely familiar
+ with the setuptools_scm internals to use it
+
+
To use setuptools_scm in other Python code you can use the
``get_version`` function:
@@ -138,6 +161,15 @@
keyword arguments.
+Environment Variables
+---------------------
+
+:SETUPTOOLS_SCM_PRETEND_VERSION:
+ when defined and not empty,
+ its used as the primary source for the version number
+ in which case it will be a unparsed string
+
+
Extending setuptools_scm
------------------------
@@ -197,7 +229,7 @@
To support usage in :code:`setup.py` passing a callable into use_scm_version
is supported.
-Within that callable, setuptools_scm is availiable for import.
+Within that callable, setuptools_scm is available for import.
The callable must return the configuration.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/setuptools_scm-1.8.0/setup.cfg new/setuptools_scm-1.10.1/setup.cfg
--- old/setuptools_scm-1.8.0/setup.cfg 2015-09-17 23:00:09.000000000 +0200
+++ new/setuptools_scm-1.10.1/setup.cfg 2015-12-10 22:04:05.000000000 +0100
@@ -4,8 +4,11 @@
[devpi:upload]
formats = sdist,bdist_wheel
+[aliases]
+release = sdist bdist_wheel upload
+
[egg_info]
-tag_date = 0
tag_build =
+tag_date = 0
tag_svn_revision = 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/setuptools_scm-1.8.0/setup.py new/setuptools_scm-1.10.1/setup.py
--- old/setuptools_scm-1.8.0/setup.py 2015-09-17 23:00:09.000000000 +0200
+++ new/setuptools_scm-1.10.1/setup.py 2015-12-10 22:04:05.000000000 +0100
@@ -63,7 +63,7 @@
url='https://github.com/pypa/setuptools_scm/',
zip_safe=True,
# pass here since entrypints are not yet registred
- version="1.8.0",
+ version="1.10.1",
author='Ronny Pfannschmidt',
author_email='opensource(a)ronnypfannschmidt.de',
description=('the blessed package to manage your versions by scm tags'),
@@ -82,6 +82,12 @@
[setuptools_scm.parse_scm]
.hg = setuptools_scm.hg:parse
.git = setuptools_scm.git:parse
+
+ # those are left here for backward compatibility in the 1.x series
+ .hg_archival.txt = setuptools_scm.hg:parse_archival
+ PKG-INFO = setuptools_scm.hacks:parse_pkginfo
+
+ [setuptools_scm.parse_scm_fallback]
.hg_archival.txt = setuptools_scm.hg:parse_archival
PKG-INFO = setuptools_scm.hacks:parse_pkginfo
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/setuptools_scm-1.8.0/setuptools_scm/__init__.py new/setuptools_scm-1.10.1/setuptools_scm/__init__.py
--- old/setuptools_scm-1.8.0/setuptools_scm/__init__.py 2015-09-17 22:43:47.000000000 +0200
+++ new/setuptools_scm-1.10.1/setuptools_scm/__init__.py 2015-12-07 21:24:21.000000000 +0100
@@ -9,6 +9,9 @@
from .version import format_version
from .discover import find_matching_entrypoint
+PRETEND_KEY = 'SETUPTOOLS_SCM_PRETEND_VERSION'
+
+
TEMPLATES = {
'.py': """\
# coding: utf-8
@@ -24,16 +27,13 @@
def version_from_scm(root):
- ep = find_matching_entrypoint(root, 'setuptools_scm.parse_scm')
+ return _version_from_entrypoint(root, 'setuptools_scm.parse_scm')
+
+
+def _version_from_entrypoint(root, entrypoint):
+ ep = find_matching_entrypoint(root, entrypoint)
if ep:
return ep.load()(root)
- raise LookupError(
- "setuptools-scm was unable to detect version for %r.\n\n"
- "Make sure you're not using GitHub's tarballs (or similar ones), as "
- "those don't contain the necessary metadata. Use PyPI's tarballs "
- "instead.\n\nFor example, if you're using pip, instead of "
- "https://github.com/user/proj/archive/master.zip "
- "use git+https://github.com/user/proj.git#egg=proj" % root)
def dump_version(root, version, write_to, template=None):
@@ -56,15 +56,50 @@
fp.write(dump)
+def _do_parse(root, parse):
+ pretended = os.environ.get(PRETEND_KEY)
+ if pretended:
+ return pretended
+
+ if parse:
+ version = parse(root) or _version_from_entrypoint(
+ root, 'setuptools_scm.parse_scm_fallback')
+ else:
+ # include fallbacks after dropping them from the main entrypoint
+ version = version_from_scm(root)
+
+ if version:
+ return version
+
+ raise LookupError(
+ "setuptools-scm was unable to detect version for %r.\n\n"
+ "Make sure you're not using GitHub's tarballs (or similar ones), as "
+ "those don't contain the necessary metadata. Use PyPI's tarballs "
+ "instead.\n\nFor example, if you're using pip, instead of "
+ "https://github.com/user/proj/archive/master.zip "
+ "use git+https://github.com/user/proj.git#egg=proj" % root)
+
+
def get_version(root='.',
version_scheme='guess-next-dev',
local_scheme='node-and-date',
write_to=None,
- write_to_template=None):
+ write_to_template=None,
+ relative_to=None,
+ parse=None,
+ ):
+ """
+ If supplied, relative_to should be a file from which root may
+ be resolved. Typically called by a script or module that is not
+ in the root of the repository to direct setuptools_scm to the
+ root of the repository by supplying ``__file__``.
+ """
+ if relative_to:
+ root = os.path.join(os.path.dirname(relative_to), root)
root = os.path.abspath(root)
trace('root', repr(root))
- version = version_from_scm(root)
+ version = _do_parse(root, parse)
if version:
if isinstance(version, string_types):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/setuptools_scm-1.8.0/setuptools_scm/__main__.py new/setuptools_scm-1.10.1/setuptools_scm/__main__.py
--- old/setuptools_scm-1.8.0/setuptools_scm/__main__.py 2015-06-14 08:39:53.000000000 +0200
+++ new/setuptools_scm-1.10.1/setuptools_scm/__main__.py 2015-11-28 14:49:00.000000000 +0100
@@ -1,7 +1,8 @@
from __future__ import print_function
import sys
-from setuptools_scm import get_version, find_files, \
- _warn_if_setuptools_outdated
+from setuptools_scm import get_version
+from setuptools_scm.integration import find_files
+from setuptools_scm.version import _warn_if_setuptools_outdated
if __name__ == '__main__':
_warn_if_setuptools_outdated()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/setuptools_scm-1.8.0/setuptools_scm/git.py new/setuptools_scm-1.10.1/setuptools_scm/git.py
--- old/setuptools_scm-1.8.0/setuptools_scm/git.py 2015-09-17 22:46:32.000000000 +0200
+++ new/setuptools_scm-1.10.1/setuptools_scm/git.py 2015-12-07 18:44:51.000000000 +0100
@@ -4,10 +4,13 @@
FILES_COMMAND = 'git ls-files'
+DEFAULT_DESCRIBE = 'git describe --dirty --tags --long --match *.*'
-def parse(root):
+def parse(root, describe_command=DEFAULT_DESCRIBE):
real_root, _, ret = do_ex('git rev-parse --show-toplevel', root)
+ if ret:
+ return
trace('real root', real_root)
if abspath(realpath(real_root)) != abspath(realpath(root)):
return
@@ -15,7 +18,7 @@
if ret:
return meta('0.0')
rev_node = rev_node[:7]
- out, err, ret = do_ex('git describe --dirty --tags --long', root)
+ out, err, ret = do_ex(describe_command, root)
if '-' not in out and '.' not in out:
revs = do('git rev-list HEAD', root)
count = revs.count('\n')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/setuptools_scm-1.8.0/setuptools_scm/hg.py new/setuptools_scm-1.10.1/setuptools_scm/hg.py
--- old/setuptools_scm-1.8.0/setuptools_scm/hg.py 2015-09-17 22:46:32.000000000 +0200
+++ new/setuptools_scm-1.10.1/setuptools_scm/hg.py 2015-12-10 21:57:24.000000000 +0100
@@ -31,10 +31,12 @@
trace('initial node', root)
return meta('0.0', dirty=dirty)
- cmd = 'hg parents --template "{latesttag} {latesttagdistance}"'
+ # the newline is needed for merge stae, see issue 72
+ cmd = 'hg parents --template "{latesttag} {latesttagdistance}\n"'
out = do(cmd, root)
try:
- tag, dist = out.split()
+ # in merge state we assume parent 1 is fine
+ tag, dist = out.splitlines()[0].split()
if tag == 'null':
tag = '0.0'
dist = int(dist) + 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/setuptools_scm-1.8.0/setuptools_scm/version.py new/setuptools_scm-1.10.1/setuptools_scm/version.py
--- old/setuptools_scm-1.8.0/setuptools_scm/version.py 2015-09-17 22:46:32.000000000 +0200
+++ new/setuptools_scm-1.10.1/setuptools_scm/version.py 2015-11-28 20:33:43.000000000 +0100
@@ -22,8 +22,8 @@
def callable_or_entrypoint(group, callable_or_name):
trace('ep', (group, callable_or_name))
if isinstance(callable_or_name, str):
- ep = next(iter_entry_points(group, callable_or_name))
- return ep.load()
+ for ep in iter_entry_points(group, callable_or_name):
+ return ep.load()
else:
return callable_or_name
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/setuptools_scm-1.8.0/setuptools_scm.egg-info/PKG-INFO new/setuptools_scm-1.10.1/setuptools_scm.egg-info/PKG-INFO
--- old/setuptools_scm-1.8.0/setuptools_scm.egg-info/PKG-INFO 2015-09-17 23:00:09.000000000 +0200
+++ new/setuptools_scm-1.10.1/setuptools_scm.egg-info/PKG-INFO 2015-12-10 22:04:05.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: setuptools-scm
-Version: 1.8.0
+Version: 1.10.1
Summary: the blessed package to manage your versions by scm tags
Home-page: https://github.com/pypa/setuptools_scm/
Author: Ronny Pfannschmidt
@@ -13,7 +13,7 @@
in scm metadata instead of declaring them as the version argument
or in a scm managed file.
- It also handles file finders for the supperted scm's.
+ It also handles file finders for the supported scm's.
.. image:: https://travis-ci.org/pypa/setuptools_scm.svg?branch=master
:target: https://travis-ci.org/pypa/setuptools_scm
@@ -51,6 +51,17 @@
version = get_version()
+ Notable Plugins
+ ----------------
+
+ `setuptools_scm_git_archive <https://pypi.python.org/pypi/setuptools_scm_git_archive>`_
+ provides partial support for obtaining versions from git archvies
+ that belong to tagged versions. The only reason for not including
+ it in setuptools-scm itself is git/github not supporting
+ sufficient metadata for untagged/followup commits,
+ which is preventing a consistent UX.
+
+
Default versioning scheme
--------------------------
@@ -134,6 +145,18 @@
a newstyle format string thats given the current version as
the :code:`version` keyword argument for formatting
+ :relative_to:
+ a file from which root may be resolved. typically called by a
+ script or module that is not
+ in the root of the repository to direct setuptools_scm to the
+ root of the repository by supplying ``__file__``.
+
+ :parse:
+ a function that will be used instead of the discovered scm for parsing the version,
+ use with caution, this is a expert function and you should be closely familiar
+ with the setuptools_scm internals to use it
+
+
To use setuptools_scm in other Python code you can use the
``get_version`` function:
@@ -146,6 +169,15 @@
keyword arguments.
+ Environment Variables
+ ---------------------
+
+ :SETUPTOOLS_SCM_PRETEND_VERSION:
+ when defined and not empty,
+ its used as the primary source for the version number
+ in which case it will be a unparsed string
+
+
Extending setuptools_scm
------------------------
@@ -205,7 +237,7 @@
To support usage in :code:`setup.py` passing a callable into use_scm_version
is supported.
- Within that callable, setuptools_scm is availiable for import.
+ Within that callable, setuptools_scm is available for import.
The callable must return the configuration.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/setuptools_scm-1.8.0/setuptools_scm.egg-info/SOURCES.txt new/setuptools_scm-1.10.1/setuptools_scm.egg-info/SOURCES.txt
--- old/setuptools_scm-1.8.0/setuptools_scm.egg-info/SOURCES.txt 2015-09-17 23:00:09.000000000 +0200
+++ new/setuptools_scm-1.10.1/setuptools_scm.egg-info/SOURCES.txt 2015-12-10 22:04:05.000000000 +0100
@@ -1,4 +1,5 @@
.gitignore
+.hgtags
.travis.yml
CHANGELOG.rst
LICENSE
@@ -25,4 +26,7 @@
testing/conftest.py
testing/test_basic_api.py
testing/test_functions.py
+testing/test_git.py
+testing/test_main.py
+testing/test_mercurial.py
testing/test_regressions.py
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/setuptools_scm-1.8.0/setuptools_scm.egg-info/entry_points.txt new/setuptools_scm-1.10.1/setuptools_scm.egg-info/entry_points.txt
--- old/setuptools_scm-1.8.0/setuptools_scm.egg-info/entry_points.txt 2015-09-17 23:00:09.000000000 +0200
+++ new/setuptools_scm-1.10.1/setuptools_scm.egg-info/entry_points.txt 2015-12-10 22:04:05.000000000 +0100
@@ -8,6 +8,12 @@
[setuptools_scm.parse_scm]
.hg = setuptools_scm.hg:parse
.git = setuptools_scm.git:parse
+
+ # those are left here for backward compatibility in the 1.x series
+ .hg_archival.txt = setuptools_scm.hg:parse_archival
+ PKG-INFO = setuptools_scm.hacks:parse_pkginfo
+
+ [setuptools_scm.parse_scm_fallback]
.hg_archival.txt = setuptools_scm.hg:parse_archival
PKG-INFO = setuptools_scm.hacks:parse_pkginfo
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/setuptools_scm-1.8.0/testing/conftest.py new/setuptools_scm-1.10.1/testing/conftest.py
--- old/setuptools_scm-1.8.0/testing/conftest.py 2015-06-20 16:02:46.000000000 +0200
+++ new/setuptools_scm-1.10.1/testing/conftest.py 2015-11-29 17:37:41.000000000 +0100
@@ -1,4 +1,7 @@
import os
+import itertools
+import pytest
+
os.environ['SETUPTOOLS_SCM_DEBUG'] = '1'
VERSION_PKGS = ['setuptools', 'setuptools_scm']
@@ -10,3 +13,54 @@
version = pkg_resources.get_distribution(pkg).version
res.append('%s version %s' % (pkg, version))
return res
+
+
+class Wd(object):
+ commit_command = None
+ add_command = None
+
+ def __init__(self, cwd):
+ self.cwd = cwd
+ self.__counter = itertools.count()
+
+ def __call__(self, cmd, **kw):
+ if kw:
+ cmd = cmd.format(**kw)
+ from setuptools_scm.utils import do
+ return do(cmd, self.cwd)
+
+ def write(self, name, value, **kw):
+ filename = self.cwd.join(name)
+ if kw:
+ value = value.format(**kw)
+ filename.write(value)
+ return filename
+
+ def _reason(self, given_reason):
+ if given_reason is None:
+ return 'number-{c}'.format(c=next(self.__counter))
+ else:
+ return given_reason
+
+ def commit(self, reason=None):
+ reason = self._reason(reason)
+ self(self.commit_command, reason=reason)
+
+ def commit_testfile(self, reason=None):
+ reason = self._reason(reason)
+ self.write('test.txt', 'test {reason}', reason=reason)
+ self(self.add_command)
+ self.commit(reason=reason)
+
+ @property
+ def version(self):
+ __tracebackhide__ = True
+ from setuptools_scm import get_version
+ version = get_version(root=str(self.cwd))
+ print(version)
+ return version
+
+
+(a)pytest.fixture
+def wd(tmpdir):
+ return Wd(tmpdir)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/setuptools_scm-1.8.0/testing/test_basic_api.py new/setuptools_scm-1.10.1/testing/test_basic_api.py
--- old/setuptools_scm-1.8.0/testing/test_basic_api.py 2015-09-17 22:46:32.000000000 +0200
+++ new/setuptools_scm-1.10.1/testing/test_basic_api.py 2015-12-07 19:00:11.000000000 +0100
@@ -3,22 +3,9 @@
import pytest
import setuptools_scm
-from setuptools_scm import format_version
-from setuptools_scm import integration
from setuptools_scm import dump_version
-
from setuptools_scm.utils import data_from_mime, do
-from setuptools_scm.hg import archival_to_version
-
-
-def get_version(root, method='get_version', __tracebackhide__=False, **kw):
- call = getattr(setuptools_scm, method)
- data = call(root=root.strpath, **kw)
- if isinstance(data, dict):
- return format_version(data)
- else:
- return data
@pytest.mark.parametrize('cmd', ['ls', 'dir'])
@@ -28,35 +15,9 @@
do(cmd, str(tmpdir))
-class Wd(object):
- def __init__(self, cwd):
- self.cwd = cwd
-
- def __call__(self, cmd):
- return do(cmd, self.cwd)
-
- def write(self, name, value):
- filename = self.cwd.join(name)
- filename.write(value)
- return filename
-
- @property
- def version(self):
- __tracebackhide__ = True
- version = get_version(self.cwd, __tracebackhide__=True)
- print(version)
- return version
-
-
-(a)pytest.fixture
-def wd(tmpdir):
- return Wd(tmpdir)
-
-
-def test_data_from_mime(wd):
- tmpfile = wd.write(
- 'test.archival',
- 'name: test\nrevision: 1')
+def test_data_from_mime(tmpdir):
+ tmpfile = tmpdir.join('test.archival')
+ tmpfile.write('name: test\nrevision: 1')
res = data_from_mime(str(tmpfile))
assert res == {
@@ -65,135 +26,40 @@
}
-archival_mapping = {
- '1.0': {'tag': '1.0'},
- '1.1.dev3+n000000000000': {
- 'latesttag': '1.0',
- 'latesttagdistance': '3',
- 'node': '0'*20,
- },
- '0.0': {
- 'node': '0'*20,
- },
- '1.2.2': {'tag': 'release-1.2.2'},
- '1.2.2.dev0': {'tag': 'release-1.2.2.dev'},
-
-}
-
-
-(a)pytest.mark.parametrize('expected,data', sorted(archival_mapping.items()))
-def test_archival_to_version(expected, data):
- version = archival_to_version(data)
- assert format_version(
- version,
- version_scheme='guess-next-dev',
- local_scheme='node-and-date') == expected
-
-
-def test_version_from_git(wd):
- wd('git init')
- wd('git config user.email test(a)example.com')
- wd('git config user.name "a test"')
- assert wd.version == '0.0'
- wd.write('test.txt', 'test')
- wd('git add test.txt')
- wd('git commit -m commit')
-
- assert wd.version.startswith('0.1.dev1+')
- assert not wd.version.endswith('1-')
-
- wd('git tag v0.1')
- assert wd.version == '0.1'
-
- wd.write('test.txt', 'test2')
- assert wd.version.startswith('0.2.dev0+')
- wd('git add test.txt')
- wd('git commit -m commit')
- assert wd.version.startswith('0.2.dev1+')
- wd('git tag version-0.2')
- assert wd.version.startswith('0.2')
-
-
-# XXX: better tests for tag prefixes
-def test_version_from_hg_id(wd):
- wd('hg init')
- assert wd.version == '0.0'
- wd.write('test.txt', 'test')
- wd('hg add test.txt')
- wd('hg commit -m commit -u test -d "0 0"')
-
- assert wd.version.startswith('0.1.dev2+')
-
- # tagging commit is considered the tag
- wd('hg tag v0.1 -u test -d "0 0"')
+def test_version_from_pkginfo(wd):
+ wd.write('PKG-INFO', 'Version: 0.1')
assert wd.version == '0.1'
- wd.write('test.txt', 'test2')
-
- wd('hg commit -m commit2 -u test -d "0 0"')
- assert wd.version.startswith('0.2.dev2')
-
- wd('hg up v0.1')
- assert wd.version == '0.1'
- # commit originating from the taged revision
- # that is not a actual tag
- wd.write('test.txt', 'test2')
- wd('hg commit -m commit3 -u test -d "0 0"')
- assert wd.version.startswith('0.2.dev1+')
-
-
-def test_version_from_archival(tmpdir):
- tmpdir.join('.hg_archival.txt').write(
- 'node: 000000000000\n'
- 'tag: 0.1\n'
- )
- assert get_version(tmpdir) == '0.1'
-
- tmpdir.join('.hg_archival.txt').write(
- 'node: 000000000000\n'
- 'latesttag: 0.1\n'
- 'latesttagdistance: 3\n'
- )
-
- assert get_version(tmpdir) == '0.2.dev3+n000000000000'
-
-
-def test_version_from_pkginfo(tmpdir):
- tmpdir.join('PKG-INFO').write('Version: 0.1')
- assert get_version(tmpdir) == '0.1'
+def assert_root(monkeypatch, expected_root):
+ """
+ Patch version_from_scm to simply assert that root is expected root
+ """
+ def assertion(root, unused_parse):
+ assert root == expected_root
+ monkeypatch.setattr(setuptools_scm, '_do_parse', assertion)
def test_root_parameter_creation(monkeypatch):
- def assert_cwd(root, cache_file=None):
- assert root == os.getcwd()
- monkeypatch.setattr(setuptools_scm, 'version_from_scm', assert_cwd)
+ assert_root(monkeypatch, os.getcwd())
setuptools_scm.get_version()
def test_root_parameter_pass_by(monkeypatch):
- def assert_root_tmp(root):
- assert root == os.path.abspath('/tmp')
- monkeypatch.setattr(setuptools_scm, 'version_from_scm', assert_root_tmp)
+ assert_root(monkeypatch, '/tmp')
setuptools_scm.get_version(root='/tmp')
-def test_find_files_stop_at_root_hg(wd):
- wd('hg init')
- wd.write('test.txt', 'test')
- wd('hg add .')
- wd('hg commit -m test -u test')
- wd.cwd.ensure('project/setup.cfg')
- assert integration .find_files(str(wd.cwd/'project')) == []
-
-
-def test_find_files_stop_at_root_git(wd):
- wd('git init')
- wd.write('test.txt', 'test')
- wd('git add .')
- wd('git commit -m test -u test')
- wd.cwd.ensure('project/setup.cfg')
- assert integration.find_files(str(wd.cwd/'project')) == []
+def test_pretended(monkeypatch):
+ pretense = '2345'
+ monkeypatch.setenv(setuptools_scm.PRETEND_KEY, pretense)
+ assert setuptools_scm.get_version() == pretense
+
+
+def test_root_relative_to(monkeypatch):
+ assert_root(monkeypatch, '/tmp/alt')
+ __file__ = '/tmp/module/file.py'
+ setuptools_scm.get_version(root='../alt', relative_to=__file__)
def test_dump_version(tmpdir):
@@ -206,3 +72,9 @@
assert repr('1.0') in content
import ast
ast.parse(content)
+
+
+def test_parse_plain():
+ def parse(root):
+ return 'tricked you'
+ assert setuptools_scm.get_version(parse=parse) == 'tricked you'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/setuptools_scm-1.8.0/testing/test_git.py new/setuptools_scm-1.10.1/testing/test_git.py
--- old/setuptools_scm-1.8.0/testing/test_git.py 1970-01-01 01:00:00.000000000 +0100
+++ new/setuptools_scm-1.10.1/testing/test_git.py 2015-11-29 17:38:10.000000000 +0100
@@ -0,0 +1,44 @@
+from setuptools_scm import integration
+import pytest
+
+
+(a)pytest.fixture
+def wd(wd):
+ wd('git init')
+ wd('git config user.email test(a)example.com')
+ wd('git config user.name "a test"')
+ wd.add_command = 'git add .'
+ wd.commit_command = 'git commit -m test-{reason}'
+ return wd
+
+
+def test_version_from_git(wd):
+ assert wd.version == '0.0'
+
+ wd.commit_testfile()
+ assert wd.version.startswith('0.1.dev1+')
+ assert not wd.version.endswith('1-')
+
+ wd('git tag v0.1')
+ assert wd.version == '0.1'
+
+ wd.write('test.txt', 'test2')
+ assert wd.version.startswith('0.2.dev0+')
+
+ wd.commit_testfile()
+ assert wd.version.startswith('0.2.dev1+')
+
+ wd('git tag version-0.2')
+ assert wd.version.startswith('0.2')
+
+
+def test_find_files_stop_at_root_git(wd):
+ wd.commit_testfile()
+ wd.cwd.ensure('project/setup.cfg')
+ assert integration.find_files(str(wd.cwd/'project')) == []
+
+
+def test_alphanumeric_tags_match(wd):
+ wd.commit_testfile()
+ wd('git tag newstyle-development-started')
+ assert wd.version.startswith('0.1.dev1+')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/setuptools_scm-1.8.0/testing/test_main.py new/setuptools_scm-1.10.1/testing/test_main.py
--- old/setuptools_scm-1.8.0/testing/test_main.py 1970-01-01 01:00:00.000000000 +0100
+++ new/setuptools_scm-1.10.1/testing/test_main.py 2015-11-28 14:49:00.000000000 +0100
@@ -0,0 +1,9 @@
+import os.path
+
+
+def test_main():
+ mainfile = os.path.join(
+ os.path.dirname(__file__), "..", "setuptools_scm", "__main__.py")
+ with open(mainfile) as f:
+ code = compile(f.read(), "__main__.py", 'exec')
+ exec(code)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/setuptools_scm-1.8.0/testing/test_mercurial.py new/setuptools_scm-1.10.1/testing/test_mercurial.py
--- old/setuptools_scm-1.8.0/testing/test_mercurial.py 1970-01-01 01:00:00.000000000 +0100
+++ new/setuptools_scm-1.10.1/testing/test_mercurial.py 2015-12-10 21:58:05.000000000 +0100
@@ -0,0 +1,97 @@
+from setuptools_scm import format_version
+from setuptools_scm.hg import archival_to_version
+from setuptools_scm import integration
+
+import pytest
+
+
+(a)pytest.fixture
+def wd(wd):
+ wd('hg init')
+ wd.add_command = 'hg add .'
+ wd.commit_command = 'hg commit -m test-{reason} -u test -d "0 0"'
+ return wd
+
+archival_mapping = {
+ '1.0': {'tag': '1.0'},
+ '1.1.dev3+n000000000000': {
+ 'latesttag': '1.0',
+ 'latesttagdistance': '3',
+ 'node': '0'*20,
+ },
+ '0.0': {
+ 'node': '0'*20,
+ },
+ '1.2.2': {'tag': 'release-1.2.2'},
+ '1.2.2.dev0': {'tag': 'release-1.2.2.dev'},
+
+}
+
+
+(a)pytest.mark.parametrize('expected,data', sorted(archival_mapping.items()))
+def test_archival_to_version(expected, data):
+ version = archival_to_version(data)
+ assert format_version(
+ version,
+ version_scheme='guess-next-dev',
+ local_scheme='node-and-date') == expected
+
+
+def test_find_files_stop_at_root_hg(wd):
+ wd.commit_testfile()
+ wd.cwd.ensure('project/setup.cfg')
+ assert integration.find_files(str(wd.cwd/'project')) == []
+
+
+# XXX: better tests for tag prefixes
+def test_version_from_hg_id(wd):
+ assert wd.version == '0.0'
+
+ wd.commit_testfile()
+ assert wd.version.startswith('0.1.dev2+')
+
+ # tagging commit is considered the tag
+ wd('hg tag v0.1 -u test -d "0 0"')
+ assert wd.version == '0.1'
+
+ wd.commit_testfile()
+ assert wd.version.startswith('0.2.dev2')
+
+ wd('hg up v0.1')
+ assert wd.version == '0.1'
+
+ # commit originating from the taged revision
+ # that is not a actual tag
+ wd.commit_testfile()
+ assert wd.version.startswith('0.2.dev1+')
+
+
+def test_version_from_archival(wd):
+ # entrypoints are unordered,
+ # cleaning the wd ensure this test wont break randomly
+ wd.cwd.join('.hg').remove()
+ wd.write(
+ '.hg_archival.txt',
+ 'node: 000000000000\n'
+ 'tag: 0.1\n'
+ )
+ assert wd.version == '0.1'
+
+ wd.write(
+ '.hg_archival.txt',
+ 'node: 000000000000\n'
+ 'latesttag: 0.1\n'
+ 'latesttagdistance: 3\n'
+ )
+
+ assert wd.version == '0.2.dev3+n000000000000'
+
+
+(a)pytest.mark.issue('#72')
+def test_version_in_merge(wd):
+ wd.commit_testfile()
+ wd.commit_testfile()
+ wd('hg up 0')
+ wd.commit_testfile()
+ wd('hg merge')
+ assert wd.version is not None
1
0
Hello community,
here is the log from the commit of package perl-XML-XPath for openSUSE:Factory checked in at 2016-01-23 01:14:59
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-XML-XPath (Old)
and /work/SRC/openSUSE:Factory/.perl-XML-XPath.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-XML-XPath"
Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-XML-XPath/perl-XML-XPath.changes 2016-01-17 09:23:02.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.perl-XML-XPath.new/perl-XML-XPath.changes 2016-01-23 01:15:33.000000000 +0100
@@ -1,0 +2,21 @@
+Wed Jan 20 10:57:03 UTC 2016 - coolo(a)suse.com
+
+- updated to 1.24
+ see /usr/share/doc/packages/perl-XML-XPath/Changes
+
+ 1.24 2016-01-19 MANWAR
+ - Fixed issue RT# 111278 (XML::XPath::PerlSAX doesn't compile).
+
+-------------------------------------------------------------------
+Tue Jan 19 10:40:24 UTC 2016 - coolo(a)suse.com
+
+- updated to 1.23
+ see /usr/share/doc/packages/perl-XML-XPath/Changes
+
+ 1.23 2016-01-18 MANWAR
+ - Fixed issues RT# 6363 (using < in a query returns results as if <= had been used).
+
+ 1.22 2016-01-13 MANWAR
+ - Fixed issues RT# 30818 and RT# 80277.
+
+-------------------------------------------------------------------
Old:
----
XML-XPath-1.21.tar.gz
New:
----
XML-XPath-1.24.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ perl-XML-XPath.spec ++++++
--- /var/tmp/diff_new_pack.ewsS2A/_old 2016-01-23 01:15:34.000000000 +0100
+++ /var/tmp/diff_new_pack.ewsS2A/_new 2016-01-23 01:15:34.000000000 +0100
@@ -17,10 +17,10 @@
Name: perl-XML-XPath
-Version: 1.21
+Version: 1.24
Release: 0
%define cpan_name XML-XPath
-Summary: Set of Modules for Parsing and Evaluating Xpath Statements
+Summary: Parse and evaluate XPath statements
License: Artistic-2.0
Group: Development/Libraries/Perl
Url: http://search.cpan.org/dist/XML-XPath/
++++++ XML-XPath-1.21.tar.gz -> XML-XPath-1.24.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/Changes new/XML-XPath-1.24/Changes
--- old/XML-XPath-1.21/Changes 2016-01-12 11:37:46.000000000 +0100
+++ new/XML-XPath-1.24/Changes 2016-01-19 12:29:56.000000000 +0100
@@ -1,5 +1,14 @@
Revision history for XML::XPath
+1.24 2016-01-19 MANWAR
+ - Fixed issue RT# 111278 (XML::XPath::PerlSAX doesn't compile).
+
+1.23 2016-01-18 MANWAR
+ - Fixed issue RT# 6363 (using < in a query returns results as if <= had been used).
+
+1.22 2016-01-13 MANWAR
+ - Fixed issues RT# 30818 and RT# 80277.
+
1.21 2016-01-12 MANWAR
- Fixed issues RT# 14957 and RT# 30819.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/MANIFEST new/XML-XPath-1.24/MANIFEST
--- old/XML-XPath-1.21/MANIFEST 2016-01-12 11:38:11.000000000 +0100
+++ new/XML-XPath-1.24/MANIFEST 2016-01-19 12:30:34.000000000 +0100
@@ -27,6 +27,7 @@
lib/XML/XPath/Root.pm
lib/XML/XPath/PerlSAX.pm
lib/XML/XPath/Builder.pm
+t/00load.t
t/01basic.t
t/02descendant.t
t/03star.t
@@ -69,6 +70,9 @@
t/39contains.t
t/40substring_before.t
t/41substring_after.t
+t/42create_node.t
+t/43op_div.t
+t/44test_compare.t
t/rdf.t
t/remove.t
t/insert.t
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/META.json new/XML-XPath-1.24/META.json
--- old/XML-XPath-1.21/META.json 2016-01-12 11:38:11.000000000 +0100
+++ new/XML-XPath-1.24/META.json 2016-01-19 12:30:34.000000000 +0100
@@ -45,6 +45,6 @@
"web" : "https://github.com/manwar/XML-XPath"
}
},
- "version" : "1.21",
+ "version" : "1.24",
"x_serialization_backend" : "JSON::PP version 2.27203"
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/META.yml new/XML-XPath-1.24/META.yml
--- old/XML-XPath-1.21/META.yml 2016-01-12 11:38:11.000000000 +0100
+++ new/XML-XPath-1.24/META.yml 2016-01-19 12:30:34.000000000 +0100
@@ -22,5 +22,5 @@
perl: '5.006'
resources:
repository: https://github.com/manwar/XML-XPath.git
-version: '1.21'
+version: '1.24'
x_serialization_backend: 'CPAN::Meta::YAML version 0.012'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/lib/XML/XPath/Boolean.pm new/XML-XPath-1.24/lib/XML/XPath/Boolean.pm
--- old/XML-XPath-1.21/lib/XML/XPath/Boolean.pm 2016-01-12 10:47:37.000000000 +0100
+++ new/XML-XPath-1.24/lib/XML/XPath/Boolean.pm 2016-01-19 12:19:30.000000000 +0100
@@ -1,6 +1,6 @@
package XML::XPath::Boolean;
-$VERSION = '1.21';
+$VERSION = '1.24';
use XML::XPath::Number;
use XML::XPath::Literal;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/lib/XML/XPath/Builder.pm new/XML-XPath-1.24/lib/XML/XPath/Builder.pm
--- old/XML-XPath-1.21/lib/XML/XPath/Builder.pm 2016-01-12 10:47:45.000000000 +0100
+++ new/XML-XPath-1.24/lib/XML/XPath/Builder.pm 2016-01-19 12:19:40.000000000 +0100
@@ -1,6 +1,6 @@
package XML::XPath::Builder;
-$VERSION = '1.21';
+$VERSION = '1.24';
use strict; use warnings;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/lib/XML/XPath/Expr.pm new/XML-XPath-1.24/lib/XML/XPath/Expr.pm
--- old/XML-XPath-1.21/lib/XML/XPath/Expr.pm 2016-01-12 10:47:54.000000000 +0100
+++ new/XML-XPath-1.24/lib/XML/XPath/Expr.pm 2016-01-19 12:19:48.000000000 +0100
@@ -1,6 +1,6 @@
package XML::XPath::Expr;
-$VERSION = '1.21';
+$VERSION = '1.24';
use strict; use warnings;
@@ -331,7 +331,7 @@
sub op_le {
my ($node, $lhs, $rhs) = @_;
- op_gt($node, $rhs, $lhs);
+ op_ge($node, $rhs, $lhs);
}
sub op_ge {
@@ -360,31 +360,22 @@
!$rh_results->isa('XML::XPath::NodeSet'))) {
# (that says: one is a nodeset, and one is not a nodeset)
- my ($nodeset, $other);
- my ($true, $false);
if ($lh_results->isa('XML::XPath::NodeSet')) {
- $nodeset = $lh_results;
- $other = $rh_results;
- # we do this because unlike ==, these ops are direction dependant
- ($false, $true) = (XML::XPath::Boolean->False, XML::XPath::Boolean->True);
+ foreach my $node ($lh_results->get_nodelist) {
+ if ($node->to_number->value >= $rh_results->to_number->value) {
+ return XML::XPath::Boolean->True;
+ }
+ }
}
else {
- $nodeset = $rh_results;
- $other = $lh_results;
- # ditto above comment
- ($true, $false) = (XML::XPath::Boolean->False, XML::XPath::Boolean->True);
- }
-
- # True if and only if there is a node in the
- # nodeset such that the result of performing
- # the comparison on <type>(string_value($node))
- # is true.
- foreach my $node ($nodeset->get_nodelist) {
- if ($node->to_number->value >= $other->to_number->value) {
- return $true;
+ foreach my $node ($rh_results->get_nodelist) {
+ if ( $lh_results->to_number->value >= $node->to_number->value) {
+ return XML::XPath::Boolean->True;
+ }
}
}
- return $false;
+
+ return XML::XPath::Boolean->False;
}
else { # Neither is a nodeset
if ($lh_results->isa('XML::XPath::Boolean') ||
@@ -430,31 +421,22 @@
!$rh_results->isa('XML::XPath::NodeSet'))) {
# (that says: one is a nodeset, and one is not a nodeset)
- my ($nodeset, $other);
- my ($true, $false);
if ($lh_results->isa('XML::XPath::NodeSet')) {
- $nodeset = $lh_results;
- $other = $rh_results;
- # we do this because unlike ==, these ops are direction dependant
- ($false, $true) = (XML::XPath::Boolean->False, XML::XPath::Boolean->True);
+ foreach my $node ($lh_results->get_nodelist) {
+ if ($node->to_number->value > $rh_results->to_number->value) {
+ return XML::XPath::Boolean->True;
+ }
+ }
}
else {
- $nodeset = $rh_results;
- $other = $lh_results;
- # ditto above comment
- ($true, $false) = (XML::XPath::Boolean->False, XML::XPath::Boolean->True);
- }
-
- # True if and only if there is a node in the
- # nodeset such that the result of performing
- # the comparison on <type>(string_value($node))
- # is true.
- foreach my $node ($nodeset->get_nodelist) {
- if ($node->to_number->value > $other->to_number->value) {
- return $true;
+ foreach my $node ($rh_results->get_nodelist) {
+ if ( $lh_results->to_number->value > $node->to_number->value) {
+ return XML::XPath::Boolean->True;
+ }
}
}
- return $false;
+
+ return XML::XPath::Boolean->False;
}
else { # Neither is a nodeset
if ($lh_results->isa('XML::XPath::Boolean') ||
@@ -509,6 +491,18 @@
my $lh_results = $lhs->evaluate($node);
my $rh_results = $rhs->evaluate($node);
+ # handle zero devided cases.
+ if ($rh_results->to_number->value == 0) {
+ my $lv = $lh_results->to_number->value;
+ if ($lv == 0) {
+ return XML::XPath::Literal->new('NaN');
+ } elsif ($lv > 0) {
+ return XML::XPath::Literal->new('Infinity');
+ } elsif ($lv < 0) {
+ return XML::XPath::Literal->new('-Infinity');
+ }
+ }
+
my $result = eval {
$lh_results->to_number->value
/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/lib/XML/XPath/Function.pm new/XML-XPath-1.24/lib/XML/XPath/Function.pm
--- old/XML-XPath-1.21/lib/XML/XPath/Function.pm 2016-01-12 10:48:01.000000000 +0100
+++ new/XML-XPath-1.24/lib/XML/XPath/Function.pm 2016-01-19 12:19:57.000000000 +0100
@@ -1,6 +1,6 @@
package XML::XPath::Function;
-$VERSION = '1.21';
+$VERSION = '1.24';
use XML::XPath::Number;
use XML::XPath::Literal;
@@ -265,7 +265,7 @@
if (@params == 3) {
$len = $params[2]->value;
- if (($len eq 'NaN') || (($offset eq 'Infinity') && ($len eq 'Infinity'))) {
+ if (($len eq 'NaN') || (($offset =~ /Infinity/) && ($len eq 'Infinity'))) {
return XML::XPath::Literal->new('');
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/lib/XML/XPath/Literal.pm new/XML-XPath-1.24/lib/XML/XPath/Literal.pm
--- old/XML-XPath-1.21/lib/XML/XPath/Literal.pm 2016-01-12 10:48:12.000000000 +0100
+++ new/XML-XPath-1.24/lib/XML/XPath/Literal.pm 2016-01-19 12:20:07.000000000 +0100
@@ -1,6 +1,6 @@
package XML::XPath::Literal;
-$VERSION = '1.21';
+$VERSION = '1.24';
use XML::XPath::Boolean;
use XML::XPath::Number;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/lib/XML/XPath/LocationPath.pm new/XML-XPath-1.24/lib/XML/XPath/LocationPath.pm
--- old/XML-XPath-1.21/lib/XML/XPath/LocationPath.pm 2016-01-12 10:48:20.000000000 +0100
+++ new/XML-XPath-1.24/lib/XML/XPath/LocationPath.pm 2016-01-19 12:20:16.000000000 +0100
@@ -1,24 +1,24 @@
package XML::XPath::LocationPath;
-$VERSION = '1.21';
+$VERSION = '1.24';
use XML::XPath::Root;
use strict; use warnings;
sub new {
- my $class = shift;
- my $self = [];
- bless $self, $class;
+ my $class = shift;
+ my $self = [];
+ bless $self, $class;
}
sub as_string {
- my $self = shift;
- my $string;
- for (my $i = 0; $i < @$self; $i++) {
- $string .= $self->[$i]->as_string if defined $self->[$i]->as_string;
- $string .= "/" if $self->[$i+1];
- }
- return $string;
+ my $self = shift;
+ my $string;
+ for (my $i = 0; $i < @$self; $i++) {
+ $string .= $self->[$i]->as_string if defined $self->[$i]->as_string;
+ $string .= "/" if $self->[$i+1];
+ }
+ return $string;
}
sub as_xml {
@@ -34,29 +34,29 @@
}
sub set_root {
- my $self = shift;
- unshift @$self, XML::XPath::Root->new();
+ my $self = shift;
+ unshift @$self, XML::XPath::Root->new();
}
sub evaluate {
- my $self = shift;
- # context _MUST_ be a single node
- my $context = shift;
- die "No context" unless $context;
-
- # I _think_ this is how it should work :)
-
- my $nodeset = XML::XPath::NodeSet->new();
- $nodeset->push($context);
-
- foreach my $step (@$self) {
- # For each step
- # evaluate the step with the nodeset
- my $pos = 1;
- $nodeset = $step->evaluate($nodeset);
- }
+ my $self = shift;
+ # context _MUST_ be a single node
+ my $context = shift;
+ die "No context" unless $context;
+
+ # I _think_ this is how it should work :)
+
+ my $nodeset = XML::XPath::NodeSet->new();
+ $nodeset->push($context);
+
+ foreach my $step (@$self) {
+ # For each step
+ # evaluate the step with the nodeset
+ my $pos = 1;
+ $nodeset = $step->evaluate($nodeset);
+ }
- return $nodeset;
+ return $nodeset->remove_duplicates;
}
1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/lib/XML/XPath/Node/Attribute.pm new/XML-XPath-1.24/lib/XML/XPath/Node/Attribute.pm
--- old/XML-XPath-1.21/lib/XML/XPath/Node/Attribute.pm 2016-01-12 11:29:54.000000000 +0100
+++ new/XML-XPath-1.24/lib/XML/XPath/Node/Attribute.pm 2016-01-19 12:22:03.000000000 +0100
@@ -4,7 +4,7 @@
use vars qw/@ISA $VERSION/;
@ISA = ('XML::XPath::Node');
-$VERSION = '1.21';
+$VERSION = '1.24';
package XML::XPath::Node::AttributeImpl;
@@ -12,7 +12,7 @@
@ISA = ('XML::XPath::NodeImpl', 'XML::XPath::Node::Attribute');
use XML::XPath::Node ':node_keys';
-$VERSION = '1.21';
+$VERSION = '1.24';
sub new {
my $class = shift;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/lib/XML/XPath/Node/Comment.pm new/XML-XPath-1.24/lib/XML/XPath/Node/Comment.pm
--- old/XML-XPath-1.21/lib/XML/XPath/Node/Comment.pm 2016-01-12 11:30:02.000000000 +0100
+++ new/XML-XPath-1.24/lib/XML/XPath/Node/Comment.pm 2016-01-19 12:23:28.000000000 +0100
@@ -1,6 +1,6 @@
package XML::XPath::Node::Comment;
-$VERSION = '1.21';
+$VERSION = '1.24';
use strict; use warnings;
use vars qw/@ISA/;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/lib/XML/XPath/Node/Element.pm new/XML-XPath-1.24/lib/XML/XPath/Node/Element.pm
--- old/XML-XPath-1.21/lib/XML/XPath/Node/Element.pm 2016-01-12 11:30:10.000000000 +0100
+++ new/XML-XPath-1.24/lib/XML/XPath/Node/Element.pm 2016-01-19 12:23:35.000000000 +0100
@@ -1,6 +1,6 @@
package XML::XPath::Node::Element;
-$VERSION = '1.21';
+$VERSION = '1.24';
use strict; use warnings;
use vars qw/@ISA/;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/lib/XML/XPath/Node/Namespace.pm new/XML-XPath-1.24/lib/XML/XPath/Node/Namespace.pm
--- old/XML-XPath-1.21/lib/XML/XPath/Node/Namespace.pm 2016-01-12 11:30:19.000000000 +0100
+++ new/XML-XPath-1.24/lib/XML/XPath/Node/Namespace.pm 2016-01-19 12:23:42.000000000 +0100
@@ -1,6 +1,6 @@
package XML::XPath::Node::Namespace;
-$VERSION = '1.21';
+$VERSION = '1.24';
use strict; use warnings;
use vars qw/@ISA/;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/lib/XML/XPath/Node/PI.pm new/XML-XPath-1.24/lib/XML/XPath/Node/PI.pm
--- old/XML-XPath-1.21/lib/XML/XPath/Node/PI.pm 2016-01-12 11:30:27.000000000 +0100
+++ new/XML-XPath-1.24/lib/XML/XPath/Node/PI.pm 2016-01-19 12:23:47.000000000 +0100
@@ -1,6 +1,6 @@
package XML::XPath::Node::PI;
-$VERSION = '1.21';
+$VERSION = '1.24';
use strict; use warnings;
use vars qw/@ISA/;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/lib/XML/XPath/Node/Text.pm new/XML-XPath-1.24/lib/XML/XPath/Node/Text.pm
--- old/XML-XPath-1.21/lib/XML/XPath/Node/Text.pm 2016-01-12 11:30:37.000000000 +0100
+++ new/XML-XPath-1.24/lib/XML/XPath/Node/Text.pm 2016-01-19 12:23:58.000000000 +0100
@@ -1,6 +1,6 @@
package XML::XPath::Node::Text;
-$VERSION = '1.21';
+$VERSION = '1.24';
use strict; use warnings;
use vars qw/@ISA/;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/lib/XML/XPath/Node.pm new/XML-XPath-1.24/lib/XML/XPath/Node.pm
--- old/XML-XPath-1.21/lib/XML/XPath/Node.pm 2016-01-12 10:48:30.000000000 +0100
+++ new/XML-XPath-1.24/lib/XML/XPath/Node.pm 2016-01-19 12:20:26.000000000 +0100
@@ -1,6 +1,6 @@
package XML::XPath::Node;
-$VERSION = '1.21';
+$VERSION = '1.24';
use strict; use warnings;
use vars qw(@ISA @EXPORT $AUTOLOAD %EXPORT_TAGS @EXPORT_OK);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/lib/XML/XPath/NodeSet.pm new/XML-XPath-1.24/lib/XML/XPath/NodeSet.pm
--- old/XML-XPath-1.21/lib/XML/XPath/NodeSet.pm 2016-01-12 10:48:37.000000000 +0100
+++ new/XML-XPath-1.24/lib/XML/XPath/NodeSet.pm 2016-01-19 12:20:33.000000000 +0100
@@ -1,6 +1,6 @@
package XML::XPath::NodeSet;
-$VERSION = '1.21';
+$VERSION = '1.24';
use strict; use warnings;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/lib/XML/XPath/Number.pm new/XML-XPath-1.24/lib/XML/XPath/Number.pm
--- old/XML-XPath-1.21/lib/XML/XPath/Number.pm 2016-01-12 10:48:45.000000000 +0100
+++ new/XML-XPath-1.24/lib/XML/XPath/Number.pm 2016-01-19 12:20:40.000000000 +0100
@@ -1,6 +1,6 @@
package XML::XPath::Number;
-$VERSION = '1.21';
+$VERSION = '1.24';
use XML::XPath::Boolean;
use XML::XPath::Literal;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/lib/XML/XPath/Parser.pm new/XML-XPath-1.24/lib/XML/XPath/Parser.pm
--- old/XML-XPath-1.21/lib/XML/XPath/Parser.pm 2016-01-12 10:48:53.000000000 +0100
+++ new/XML-XPath-1.24/lib/XML/XPath/Parser.pm 2016-01-19 12:20:49.000000000 +0100
@@ -1,6 +1,6 @@
package XML::XPath::Parser;
-$VERSION = '1.21';
+$VERSION = '1.24';
use strict; use warnings;
use vars qw/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/lib/XML/XPath/PerlSAX.pm new/XML-XPath-1.24/lib/XML/XPath/PerlSAX.pm
--- old/XML-XPath-1.21/lib/XML/XPath/PerlSAX.pm 2016-01-12 10:49:01.000000000 +0100
+++ new/XML-XPath-1.24/lib/XML/XPath/PerlSAX.pm 2016-01-19 12:27:45.000000000 +0100
@@ -1,7 +1,8 @@
package XML::XPath::PerlSAX;
-$VERSION = '1.21';
+$VERSION = '1.24';
+use XML::XPath::Node qw(:node_keys);
use XML::XPath::XMLParser;
use strict; use warnings;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/lib/XML/XPath/Root.pm new/XML-XPath-1.24/lib/XML/XPath/Root.pm
--- old/XML-XPath-1.21/lib/XML/XPath/Root.pm 2016-01-12 10:49:10.000000000 +0100
+++ new/XML-XPath-1.24/lib/XML/XPath/Root.pm 2016-01-19 12:21:22.000000000 +0100
@@ -1,6 +1,6 @@
package XML::XPath::Root;
-$VERSION = '1.21';
+$VERSION = '1.24';
use strict; use warnings;
use XML::XPath::XMLParser;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/lib/XML/XPath/Step.pm new/XML-XPath-1.24/lib/XML/XPath/Step.pm
--- old/XML-XPath-1.21/lib/XML/XPath/Step.pm 2016-01-12 10:50:06.000000000 +0100
+++ new/XML-XPath-1.24/lib/XML/XPath/Step.pm 2016-01-19 12:21:31.000000000 +0100
@@ -1,6 +1,6 @@
package XML::XPath::Step;
-$VERSION = '1.21';
+$VERSION = '1.24';
use XML::XPath::Parser;
use XML::XPath::Node;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/lib/XML/XPath/Variable.pm new/XML-XPath-1.24/lib/XML/XPath/Variable.pm
--- old/XML-XPath-1.21/lib/XML/XPath/Variable.pm 2016-01-12 10:50:14.000000000 +0100
+++ new/XML-XPath-1.24/lib/XML/XPath/Variable.pm 2016-01-19 12:21:40.000000000 +0100
@@ -1,6 +1,6 @@
package XML::XPath::Variable;
-$VERSION = '1.21';
+$VERSION = '1.24';
use strict; use warnings;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/lib/XML/XPath/XMLParser.pm new/XML-XPath-1.24/lib/XML/XPath/XMLParser.pm
--- old/XML-XPath-1.21/lib/XML/XPath/XMLParser.pm 2016-01-12 10:50:24.000000000 +0100
+++ new/XML-XPath-1.24/lib/XML/XPath/XMLParser.pm 2016-01-19 12:21:50.000000000 +0100
@@ -1,11 +1,10 @@
package XML::XPath::XMLParser;
-$VERSION = '1.21';
+$VERSION = '1.24';
use strict; use warnings;
use XML::Parser;
-#use XML::XPath;
use XML::XPath::Node;
use XML::XPath::Node::Element;
use XML::XPath::Node::Text;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/lib/XML/XPath.pm new/XML-XPath-1.24/lib/XML/XPath.pm
--- old/XML-XPath-1.21/lib/XML/XPath.pm 2016-01-12 10:47:29.000000000 +0100
+++ new/XML-XPath-1.24/lib/XML/XPath.pm 2016-01-19 12:19:14.000000000 +0100
@@ -2,18 +2,18 @@
=head1 NAME
-XML::XPath - a set of modules for parsing and evaluating XPath statements
+XML::XPath - Parse and evaluate XPath statements.
=head1 VERSION
-Version 1.21
+Version 1.24
=cut
use strict; use warnings;
use vars qw($VERSION $AUTOLOAD $revision);
-$VERSION = '1.21';
+$VERSION = '1.24';
$XML::XPath::Namespaces = 1;
$XML::XPath::Debug = 0;
@@ -392,11 +392,19 @@
my $newnode = undef;
my($axis,$name) = ($path =~ /^(.*?)::(.*)$/);
if ($axis =~ /^child$/i) {
- $newnode = XML::XPath::Node::Element->new($name);
+ if ($name =~ /(\S+):(\S+)/) {
+ $newnode = XML::XPath::Node::Element->new($name, $1);
+ } else {
+ $newnode = XML::XPath::Node::Element->new($name);
+ }
return undef if (!defined $newnode);
$prev_node->appendChild($newnode);
} elsif ($axis =~ /^attribute$/i) {
- $newnode = XML::XPath::Node::Attribute->new($name, "");
+ if ($name =~ /(\S+):(\S+)/) {
+ $newnode = XML::XPath::Node::Attribute->new($name, "", $1);
+ } else {
+ $newnode = XML::XPath::Node::Attribute->new($name, "");
+ }
return undef if (!defined $newnode);
$prev_node->appendAttribute($newnode);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/t/00load.t new/XML-XPath-1.24/t/00load.t
--- old/XML-XPath-1.21/t/00load.t 1970-01-01 01:00:00.000000000 +0100
+++ new/XML-XPath-1.24/t/00load.t 2016-01-19 11:45:31.000000000 +0100
@@ -0,0 +1,34 @@
+#!perl
+
+use 5.006;
+use strict;
+use warnings FATAL => 'all';
+use Test::More tests => 23;
+
+BEGIN {
+ use_ok('XML::XPath') || print "Bail out!\n";
+ use_ok('XML::XPath::Boolean') || print "Bail out!\n";
+ use_ok('XML::XPath::Builder') || print "Bail out!\n";
+ use_ok('XML::XPath::Expr') || print "Bail out!\n";
+ use_ok('XML::XPath::Function') || print "Bail out!\n";
+ use_ok('XML::XPath::Literal') || print "Bail out!\n";
+ use_ok('XML::XPath::LocationPath') || print "Bail out!\n";
+ use_ok('XML::XPath::Node') || print "Bail out!\n";
+ use_ok('XML::XPath::Node::Attribute') || print "Bail out!\n";
+ use_ok('XML::XPath::Node::Comment') || print "Bail out!\n";
+ use_ok('XML::XPath::Node::Element') || print "Bail out!\n";
+ use_ok('XML::XPath::Node::Namespace') || print "Bail out!\n";
+ use_ok('XML::XPath::Node::PI') || print "Bail out!\n";
+ use_ok('XML::XPath::Node::Text') || print "Bail out!\n";
+ use_ok('XML::XPath::Node') || print "Bail out!\n";
+ use_ok('XML::XPath::NodeSet') || print "Bail out!\n";
+ use_ok('XML::XPath::Number') || print "Bail out!\n";
+ use_ok('XML::XPath::Parser') || print "Bail out!\n";
+ use_ok('XML::XPath::PerlSAX') || print "Bail out!\n";
+ use_ok('XML::XPath::Root') || print "Bail out!\n";
+ use_ok('XML::XPath::Step') || print "Bail out!\n";
+ use_ok('XML::XPath::Variable') || print "Bail out!\n";
+ use_ok('XML::XPath::XMLParser') || print "Bail out!\n";
+}
+
+diag( "Testing XML::XPath $XML::XPath::VERSION, Perl $], $^X" );
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/t/42create_node.t new/XML-XPath-1.24/t/42create_node.t
--- old/XML-XPath-1.21/t/42create_node.t 1970-01-01 01:00:00.000000000 +0100
+++ new/XML-XPath-1.24/t/42create_node.t 2016-01-12 20:31:39.000000000 +0100
@@ -0,0 +1,29 @@
+use strict;
+use warnings;
+use Test::More tests => 2;
+use XML::XPath;
+
+my $xp1 = new XML::XPath(xml => '<?xml version="1.0" encoding="UTF-8" ?>
+<n1:root xmlns:n1="http://n1.zzz.ru" xmlns:n2="http://n2.zzz.ru" xmlns:n3="http://n3.zzz.ru">
+<n2:a></n2:a></n1:root>');
+
+$xp1->createNode('/n1:root/n3:b/@aaa');
+$xp1->setNodeText('/n1:root/n3:b/@aaa','aaa');
+$xp1->createNode('/n1:root/n3:b/@ccc');
+$xp1->setNodeText('/n1:root/n3:b/@ccc','ccc');
+$xp1->createNode('/n1:root/n3:b');
+$xp1->setNodeText('/n1:root/n3:b','xxx');
+
+is($xp1->getNodeAsXML(), qq{<n1:root xmlns:n1="http://n1.zzz.ru" xmlns:n2="http://n2.zzz.ru" xmlns:n3="http://n3.zzz.ru">
+<n2:a /><n3:b aaa="aaa" ccc="ccc">xxx</n3:b></n1:root>});
+
+my $xp2 = new XML::XPath(xml => '<?xml version="1.0" encoding="UTF-8" ?>
+<root><a></a></root>');
+
+$xp2->createNode('/root/b/@aaa');
+$xp2->setNodeText('/root/b/@aaa','aaa');
+$xp2->createNode('/root/b/@ccc');
+$xp2->setNodeText('/root/b/@ccc','ccc');
+$xp2->setNodeText('/root/b','xxx');
+
+is($xp2->getNodeAsXML(), q{<root><a /><b aaa="aaa" ccc="ccc">xxx</b></root>});
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/t/43op_div.t new/XML-XPath-1.24/t/43op_div.t
--- old/XML-XPath-1.21/t/43op_div.t 1970-01-01 01:00:00.000000000 +0100
+++ new/XML-XPath-1.24/t/43op_div.t 2016-01-12 21:00:11.000000000 +0100
@@ -0,0 +1,15 @@
+use strict;
+use warnings;
+use Test::More tests => 5;
+use XML::XPath;
+
+my $xp = XML::XPath->new(ioref => *DATA);
+ok($xp);
+
+ok($xp->findvalue('4 div 2') == 2);
+is $xp->findvalue('4 div 0'), 'Infinity';
+is $xp->findvalue('-4 div 0'), '-Infinity';
+is $xp->findvalue('0 div 0'), 'NaN';
+
+__DATA__
+<p></p>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/t/44test_compare.t new/XML-XPath-1.24/t/44test_compare.t
--- old/XML-XPath-1.21/t/44test_compare.t 1970-01-01 01:00:00.000000000 +0100
+++ new/XML-XPath-1.24/t/44test_compare.t 2016-01-18 11:50:34.000000000 +0100
@@ -0,0 +1,27 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use XML::XPath;
+use Test::More;
+
+my $xml='<root att="root_att"><daughter att="3"/><daughter att="4"/><daughter att="5"/></root>';
+my %results= ( '/root/daughter[@att<"4"]' => 'daughter[3]',
+ '/root/daughter[@att<4]' => 'daughter[3]',
+ '//daughter[@att<4]' => 'daughter[3]',
+ '/root/daughter[@att>4]' => 'daughter[5]',
+ '/root/daughter[@att>5]' => '',
+ '/root/daughter[@att<3]' => '',
+ );
+
+plan tests => scalar keys %results;
+
+my $xpath = XML::XPath->new( xml => $xml);
+foreach my $path ( keys %results) {
+ my @xpath_result = $xpath->findnodes( $path);
+ is( dump_nodes( @xpath_result) => $results{$path}, "path: $path");
+}
+
+sub dump_nodes {
+ return join '-', map { $_->getName . "[" . $_->getAttribute( 'att') . "]" } @_
+}
1
0
Hello community,
here is the log from the commit of package autoyast2 for openSUSE:Factory checked in at 2016-01-23 01:14:55
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/autoyast2 (Old)
and /work/SRC/openSUSE:Factory/.autoyast2.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "autoyast2"
Changes:
--------
--- /work/SRC/openSUSE:Factory/autoyast2/autoyast2.changes 2016-01-16 11:56:45.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.autoyast2.new/autoyast2.changes 2016-01-23 01:15:31.000000000 +0100
@@ -1,0 +2,20 @@
+Wed Jan 20 16:31:03 CET 2016 - schubi(a)suse.de
+
+- LVM: taking care about "auto" option --> switching to "max".
+ (bnc#962034)
+- 3.1.113
+
+-------------------------------------------------------------------
+Tue Jan 19 15:19:04 CET 2016 - schubi(a)suse.de
+
+- Fixed rules.xml : OR operator is interpreted as AND.
+ (bnc#961941)
+- 3.1.112
+
+-------------------------------------------------------------------
+Tue Jan 19 11:40:38 UTC 2016 - igonzalezsosa(a)suse.com
+
+- Fix wrong warning message about the 'init' section
+ not being processed (bsc#962526)
+
+-------------------------------------------------------------------
Old:
----
autoyast2-3.1.111.tar.bz2
New:
----
autoyast2-3.1.113.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ autoyast2.spec ++++++
--- /var/tmp/diff_new_pack.jAf9ti/_old 2016-01-23 01:15:32.000000000 +0100
+++ /var/tmp/diff_new_pack.jAf9ti/_new 2016-01-23 01:15:32.000000000 +0100
@@ -17,7 +17,8 @@
Name: autoyast2
-Version: 3.1.111
+
+Version: 3.1.113
Release: 0
BuildRoot: %{_tmppath}/%{name}-%{version}-build
++++++ autoyast2-3.1.111.tar.bz2 -> autoyast2-3.1.113.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/autoyast2-3.1.111/package/autoyast2.changes new/autoyast2-3.1.113/package/autoyast2.changes
--- old/autoyast2-3.1.111/package/autoyast2.changes 2016-01-15 12:54:10.000000000 +0100
+++ new/autoyast2-3.1.113/package/autoyast2.changes 2016-01-21 10:44:11.000000000 +0100
@@ -1,4 +1,24 @@
-------------------------------------------------------------------
+Wed Jan 20 16:31:03 CET 2016 - schubi(a)suse.de
+
+- LVM: taking care about "auto" option --> switching to "max".
+ (bnc#962034)
+- 3.1.113
+
+-------------------------------------------------------------------
+Tue Jan 19 15:19:04 CET 2016 - schubi(a)suse.de
+
+- Fixed rules.xml : OR operator is interpreted as AND.
+ (bnc#961941)
+- 3.1.112
+
+-------------------------------------------------------------------
+Tue Jan 19 11:40:38 UTC 2016 - igonzalezsosa(a)suse.com
+
+- Fix wrong warning message about the 'init' section
+ not being processed (bsc#962526)
+
+-------------------------------------------------------------------
Fri Jan 15 10:30:58 CET 2016 - schubi(a)suse.de
- Installation with "autoyast=default". Fixed nil exception error.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/autoyast2-3.1.111/package/autoyast2.spec new/autoyast2-3.1.113/package/autoyast2.spec
--- old/autoyast2-3.1.111/package/autoyast2.spec 2016-01-15 12:54:10.000000000 +0100
+++ new/autoyast2-3.1.113/package/autoyast2.spec 2016-01-21 10:44:11.000000000 +0100
@@ -17,7 +17,8 @@
Name: autoyast2
-Version: 3.1.111
+
+Version: 3.1.113
Release: 0
BuildRoot: %{_tmppath}/%{name}-%{version}-build
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/autoyast2-3.1.111/src/modules/AutoInstallRules.rb new/autoyast2-3.1.113/src/modules/AutoInstallRules.rb
--- old/autoyast2-3.1.111/src/modules/AutoInstallRules.rb 2016-01-15 12:54:10.000000000 +0100
+++ new/autoyast2-3.1.113/src/modules/AutoInstallRules.rb 2016-01-21 10:44:11.000000000 +0100
@@ -466,13 +466,14 @@
rls.reject! {|r| r=="result"}
rls.push("result")
end
+ op = Ops.get_string(ruleset, "operator", "and")
+ rls.reject! {|r| r=="op"}
Builtins.y2milestone("Orderes Rules: %1", rls)
Builtins.foreach(rls) do |rule|
ruledef = ruleset.fetch( rule, {} )
Builtins.y2milestone("Rule: %1", rule)
Builtins.y2milestone("Ruledef: %1", ruledef)
match = Ops.get_string(ruledef, "match", "undefined")
- op = Ops.get_string(ruledef, "operator", "and")
matchtype = Ops.get_string(ruledef, "match_type", "exact")
easy_rules = [
"hostname",
@@ -822,7 +823,6 @@
@tomerge
)
end
-
nil
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/autoyast2-3.1.111/src/modules/AutoinstLVM.rb new/autoyast2-3.1.113/src/modules/AutoinstLVM.rb
--- old/autoyast2-3.1.111/src/modules/AutoinstLVM.rb 2016-01-15 12:54:10.000000000 +0100
+++ new/autoyast2-3.1.113/src/modules/AutoinstLVM.rb 2016-01-21 10:44:11.000000000 +0100
@@ -403,8 +403,11 @@
lv,
integer_k
)
- elsif Ops.get_string(lv, "size", "") == "max" &&
+ elsif (Ops.get_string(lv, "size", "") == "max" || Ops.get_string(lv, "size", "") == "auto") &&
Ops.less_or_equal(Ops.get_integer(lv, "stripes", 0), 1)
+ # "auto" size does not make sense here. But we are switching to the "max" behaviour in order
+ # not to produce an error and to evaluate other useable settings. (bnc#962034)
+ Report.Warning( "Option \"auto\" is not supported with LVM. Taking \"max\" option instead.") if lv["size"] == "auto"
max_counter = Ops.add(max_counter, 1)
end
deep_copy(lv)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/autoyast2-3.1.111/src/modules/Profile.rb new/autoyast2-3.1.113/src/modules/Profile.rb
--- old/autoyast2-3.1.111/src/modules/Profile.rb 2016-01-15 12:54:10.000000000 +0100
+++ new/autoyast2-3.1.113/src/modules/Profile.rb 2016-01-21 10:44:11.000000000 +0100
@@ -21,7 +21,10 @@
# Flags for setting the solver while the upgrade process with AutoYaST
"upgrade",
# Flags for controlling the update backups (see Installation module)
- "backup"
+ "backup",
+ # init section used by Kickstart and to pass additional arguments
+ # to Linuxrc (bsc#962526)
+ "init"
]
# Dropped YaST modules that used to provide AutoYaST functionality
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/autoyast2-3.1.111/test/AutoInstallRules_test.rb new/autoyast2-3.1.113/test/AutoInstallRules_test.rb
--- old/autoyast2-3.1.111/test/AutoInstallRules_test.rb 2016-01-15 12:54:10.000000000 +0100
+++ new/autoyast2-3.1.113/test/AutoInstallRules_test.rb 2016-01-21 10:44:11.000000000 +0100
@@ -114,6 +114,67 @@
end
end
+ describe "#Rules XML" do
+ it "Reading rules with -or- operator" do
+ expect(Yast::XML).to receive(:XMLToYCPFile).and_return(
+ { "rules"=>[{
+ "hostaddress"=>{"match"=>"10.69.57.43",
+ "match_type"=>"exact"},
+ "mac"=>{"match"=>"000c2903d288",
+ "match_type"=>"exact"},
+ "operator"=>"or",
+ "result"=>{"profile"=>"machine12.xml"}}]
+ }
+ )
+ expect(Yast::SCR).to receive(:Execute).with(Yast::Path.new(".target.bash_output"),
+ "if ( [ \"$hostaddress\" = \"10.69.57.43\" ] ) || ( [ \"$mac\" = \"000c2903d288\" ] ); then exit 0; else exit 1; fi",
+ {"hostaddress"=>"192.168.1.1", "mac"=>""}
+ )
+ .and_return({"stdout"=>"", "exit"=>0, "stderr"=>""})
+
+ subject.Read
+ end
+
+ it "Reading rules with -and- operator" do
+ expect(Yast::XML).to receive(:XMLToYCPFile).and_return(
+ { "rules"=>[{
+ "hostaddress"=>{"match"=>"10.69.57.43",
+ "match_type"=>"exact"},
+ "mac"=>{"match"=>"000c2903d288",
+ "match_type"=>"exact"},
+ "operator"=>"and",
+ "result"=>{"profile"=>"machine12.xml"}}]
+ }
+ )
+ expect(Yast::SCR).to receive(:Execute).with(Yast::Path.new(".target.bash_output"),
+ "if ( [ \"$hostaddress\" = \"10.69.57.43\" ] ) && ( [ \"$mac\" = \"000c2903d288\" ] ); then exit 0; else exit 1; fi",
+ {"hostaddress"=>"192.168.1.1", "mac"=>""}
+ )
+ .and_return({"stdout"=>"", "exit"=>0, "stderr"=>""})
+
+ subject.Read
+ end
+
+ it "Reading rules with default operator" do
+ expect(Yast::XML).to receive(:XMLToYCPFile).and_return(
+ { "rules"=>[{
+ "hostaddress"=>{"match"=>"10.69.57.43",
+ "match_type"=>"exact"},
+ "mac"=>{"match"=>"000c2903d288",
+ "match_type"=>"exact"},
+ "result"=>{"profile"=>"machine12.xml"}}]
+ }
+ )
+ expect(Yast::SCR).to receive(:Execute).with(Yast::Path.new(".target.bash_output"),
+ "if ( [ \"$hostaddress\" = \"10.69.57.43\" ] ) && ( [ \"$mac\" = \"000c2903d288\" ] ); then exit 0; else exit 1; fi",
+ {"hostaddress"=>"192.168.1.1", "mac"=>""}
+ )
+ .and_return({"stdout"=>"", "exit"=>0, "stderr"=>""})
+
+ subject.Read
+ end
+ end
+
describe "#Host ID" do
let(:wicked_output_path) { File.join(root_path, 'test', 'fixtures', 'output', 'wicked_output') }
it "returns host IP in hex format (initial Stage)" do
1
0
Hello community,
here is the log from the commit of package libreoffice for openSUSE:Factory checked in at 2016-01-23 01:14:51
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libreoffice (Old)
and /work/SRC/openSUSE:Factory/.libreoffice.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libreoffice"
Changes:
--------
--- /work/SRC/openSUSE:Factory/libreoffice/libreoffice.changes 2015-12-25 13:05:37.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.libreoffice.new/libreoffice.changes 2016-01-23 01:15:07.000000000 +0100
@@ -1,0 +2,43 @@
+Sun Jan 17 08:04:26 UTC 2016 - tchvatal(a)suse.com
+
+- Update to 5.1.0.2:
+ * More small fixes here and there for the RC2 release
+- Remove upstreamed patches:
+ * libreoffice-graphite.patch
+ * libreoffice-uno-py26.patch
+ * libreoffice-kde4-filelist.patch
+ * libreoffice-old-gtkapi.patch
+
+-------------------------------------------------------------------
+Wed Jan 13 01:55:23 UTC 2016 - tchvatal(a)suse.com
+
+- Reenable collada, debian and fedora both build with it so do the
+ same
+
+-------------------------------------------------------------------
+Wed Jan 13 01:52:54 UTC 2016 - tchvatal(a)suse.com
+
+- Set ulimit to unlimited prior build to allow better debugging of
+ build crashes
+
+-------------------------------------------------------------------
+Sun Jan 3 15:00:06 UTC 2016 - tchvatal(a)suse.com
+
+- Add patch attempting to fix build on old gtk2 versions:
+ * libreoffice-old-gtkapi.patch
+
+-------------------------------------------------------------------
+Mon Dec 28 16:25:19 UTC 2015 - tchvatal(a)suse.com
+
+- Add patch to fix filelist generating after kde3 removal:
+ * libreoffice-kde4-filelist.patch
+
+-------------------------------------------------------------------
+Tue Dec 22 14:43:52 UTC 2015 - tchvatal(a)suse.com
+
+- Add patch to fix graphite2 bundled build on SLE11:
+ * libreoffice-graphite.patch
+- Add patch to fix build of pyuno with python2.6:
+ * libreoffice-uno-py26.patch
+
+-------------------------------------------------------------------
@@ -7,0 +51,21 @@
+Mon Dec 21 10:36:40 UTC 2015 - tchvatal(a)suse.com
+
+- Version update to 5.1.0.1:
+ * Update few bundled libs for SLE11
+- Drop support for gvfs2
+- Drop kde/kdeab switches
+- Drop lockdown enabler
+
+-------------------------------------------------------------------
+Thu Dec 17 09:45:29 UTC 2015 - tchvatal(a)suse.com
+
+- Version update to 5.1.0.0.beta2:
+ * testing the changes for 5.1 series
+- Remove upstreamed patches:
+ * bnc-679938.diff
+ * bnc-889755.diff
+ * bnc-945047.diff
+ * bnc-954345.diff
+ * use-long-for-test-comparsion.patch
+
+-------------------------------------------------------------------
@@ -10 +74 @@
-- Version update to 5.0.4.2:
+- Version update to 5.0.4.2 bnc#959716:
Old:
----
36271d3fa0d9dec1632029b6d7aac925-liblangtag-0.5.1.tar.bz2
594eb47b4b1210e25438d51825404d5a-glew-1.10.0.zip
7681383be6ce489d84c1c74f4e7f9643-liborcus-0.7.0.tar.bz2
Firebird-2.5.2.26540-0.tar.bz2
bnc-679938.diff
bnc-889755.diff
bnc-945047.diff
bnc-954345.diff
d6eef4b4cacb2183f2bf265a5a03a354-boost_1_55_0.tar.bz2
e844caed8f2ca24c088505b0d6271bc0-icu4c-54_1-src.tgz
graphite2-1.2.4.tgz
libetonyek-0.1.3.tar.bz2
libmwaw-0.3.5.tar.bz2
libodfgen-0.1.4.tar.bz2
libreoffice-5.0.4.2.tar.xz
libreoffice-help-5.0.4.2.tar.xz
libreoffice-translations-5.0.4.2.tar.xz
libvisio-0.1.1.tar.bz2
libwps-0.4.0.tar.bz2
use-long-for-test-comparsion.patch
New:
----
3941e9cab2f4f9d8faee3e8d57ae7664-glew-1.12.0.zip
4b87018f7fff1d054939d19920b751a0-collada2gltf-master-cb1d97788a.tar.bz2
5c0c9ac0996fbb4a0e17780ff5441959-graphite2-minimal-1.3.4.tgz
Firebird-2.5.4.26856-0.tar.bz2
aa899eff126216dafe721149fbdb511b-liblangtag-0.5.8.tar.bz2
boost_1_59_0.tar.bz2
c4a2d71ff56aec5ebfab2a3f059be99d-icu4c-56_1-src.tgz
libetonyek-0.1.5.tar.bz2
libmwaw-0.3.7.tar.bz2
libodfgen-0.1.5.tar.bz2
liborcus-0.9.2.tar.gz
libreoffice-5.1.0.2.tar.xz
libreoffice-help-5.1.0.2.tar.xz
libreoffice-translations-5.1.0.2.tar.xz
libvisio-0.1.3.tar.bz2
libwps-0.4.2.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libreoffice.spec ++++++
--- /var/tmp/diff_new_pack.53uPYH/_old 2016-01-23 01:15:24.000000000 +0100
+++ /var/tmp/diff_new_pack.53uPYH/_new 2016-01-23 01:15:24.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package libreoffice
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -22,7 +22,7 @@
%define numbertext_version 0.9.5
# Urls
%define external_url http://dev-www.libreoffice.org/src/
-%define tarball_url http://download.documentfoundation.org/libreoffice/src/5.0.4
+%define tarball_url http://download.documentfoundation.org/libreoffice/src/5.1.0
# Old Make and bundle or not
%if 0%{?suse_version} > 1230
%bcond_with oldmake
@@ -64,7 +64,7 @@
%endif
# This is used due to the need for beta releases
Name: libreoffice
-Version: 5.0.4.2
+Version: 5.1.0.2
Release: 0
Summary: A Free Office Suite (Framework)
License: Apache-2.0 and Artistic-1.0 and BSD-3-Clause and BSD-4-Clause and GPL-2.0+ and LPPL-1.3c and LGPL-2.1+ and LGPL-3.0 and MPL-1.1 and MIT and SUSE-Public-Domain and W3C
@@ -83,6 +83,8 @@
# used extensions sources
Source450: %{external_url}/1f467e5bb703f12cbbb09d5cf67ecf4a-converttexttonumber-1-5-0.oxt
Source452: %{external_url}/90401bca927835b6fbae4a707ed187c8-nlpsolver-0.9.tar.bz2
+# This never had an release so just bundle it as per what other distros do
+Source1999: %{external_url}/4b87018f7fff1d054939d19920b751a0-collada2gltf-master-cb1d97788a.tar.bz2
# Internal bundled stuff we can't remove
# XMLSec is patched over and over in here
Source2000: %{external_url}/1f24ab1d39f4a51faf22244c94a6203f-xmlsec1-1.2.14.tar.gz
@@ -99,38 +101,38 @@
Source2006: %{external_url}/48d647fbd8ef8889e5a7f422c1bfda94-clucene-core-2.3.3.4.tar.gz
Source2007: %{external_url}/librevenge-0.0.2.tar.bz2
Source2008: %{external_url}/0168229624cfac409e766913506961a8-ucpp-1.3.2.tar.gz
-Source2009: %{external_url}/libetonyek-0.1.3.tar.bz2
+Source2009: %{external_url}/libetonyek-0.1.5.tar.bz2
Source2010: %{external_url}/libe-book-0.1.2.tar.bz2
Source2011: %{external_url}/libfreehand-0.1.1.tar.bz2
-Source2012: %{external_url}/libodfgen-0.1.4.tar.bz2
+Source2012: %{external_url}/libodfgen-0.1.5.tar.bz2
Source2013: %{external_url}/libcdr-0.1.1.tar.bz2
Source2014: %{external_url}/libmspub-0.1.2.tar.bz2
-Source2015: %{external_url}/libmwaw-0.3.5.tar.bz2
+Source2015: %{external_url}/libmwaw-0.3.7.tar.bz2
Source2016: %{external_url}/libpagemaker-0.0.2.tar.bz2
-Source2017: %{external_url}/libvisio-0.1.1.tar.bz2
+Source2017: %{external_url}/libvisio-0.1.3.tar.bz2
Source2018: %{external_url}/5821b806a98e6c38370970e682ce76e8-libcmis-0.5.0.tar.gz
Source2019: %{external_url}/libwpd-0.10.0.tar.bz2
Source2020: %{external_url}/libwpg-0.3.0.tar.bz2
-Source2021: %{external_url}/libwps-0.4.0.tar.bz2
+Source2021: %{external_url}/libwps-0.4.2.tar.bz2
Source2022: %{external_url}/libabw-0.1.1.tar.bz2
Source2023: %{external_url}/lcms2-2.6.tar.gz
Source2024: %{external_url}/17410483b5b5f267aa18b7e00b65e6e0-hsqldb_1_8_0.zip
Source2025: %{external_url}/mdds_0.12.1.tar.bz2
Source2026: %{external_url}/a233181e03d3c307668b4c722d881661-mariadb_client-2.0.0-src.tar.gz
Source2027: %{external_url}/7239a4430efd4d0189c4f24df67f08e5-mysql-connector-c++-1.1.4.tar.gz
-Source2028: %{external_url}/d6eef4b4cacb2183f2bf265a5a03a354-boost_1_55_0.tar.bz2
-Source2029: %{external_url}/594eb47b4b1210e25438d51825404d5a-glew-1.10.0.zip
+Source2028: %{external_url}/boost_1_59_0.tar.bz2
+Source2029: %{external_url}/3941e9cab2f4f9d8faee3e8d57ae7664-glew-1.12.0.zip
Source2030: %{external_url}/bae83fa5dc7f081768daace6e199adc3-glm-0.9.4.6-libreoffice.zip
-Source2031: %{external_url}/e844caed8f2ca24c088505b0d6271bc0-icu4c-54_1-src.tgz
-Source2032: %{external_url}/graphite2-1.2.4.tgz
-Source2033: %{external_url}/7681383be6ce489d84c1c74f4e7f9643-liborcus-0.7.0.tar.bz2
+Source2031: %{external_url}/c4a2d71ff56aec5ebfab2a3f059be99d-icu4c-56_1-src.tgz
+Source2032: %{external_url}/5c0c9ac0996fbb4a0e17780ff5441959-graphite2-minimal-1.3.4.tgz
+Source2033: %{external_url}/liborcus-0.9.2.tar.gz
Source2034: %{external_url}/harfbuzz-0.9.40.tar.bz2
Source2035: %{external_url}/32f8e1417a64d3c6f2c727f9053f55ea-redland-1.0.16.tar.gz
Source2036: %{external_url}/10d61fbaa6a06348823651b1bd7940fe-libexttextcat-3.4.4.tar.bz2
Source2037: %{external_url}/26b3e95ddf3d9c077c480ea45874b3b8-lp_solve_5.5.tar.gz
Source2038: %{external_url}/ec1941a74d3ef513c4ce57a9092b74e1-bsh-2.0b5-src.zip
Source2039: %{external_url}/798b2ffdc8bcfe7bca2cf92b62caf685-rhino1_5R5.zip
-Source2040: %{external_url}/Firebird-2.5.2.26540-0.tar.bz2
+Source2040: %{external_url}/Firebird-2.5.4.26856-0.tar.bz2
Source2041: %{external_url}/d62650a6f908e85643e557a236ea989c-vigra1.6.0.tar.gz
Source2042: %{external_url}/4ceb9316488b0ea01acf011023cf7fff-raptor2-2.0.9.tar.gz
Source2043: %{external_url}/625ff5f2f968dd908bca43c9469d6e6b-commons-lang-2.4-src.tar.gz
@@ -148,7 +150,7 @@
Source2055: %{external_url}/ace6ab49184e329db254e454a010f56d-libxml-1.1.7.zip
Source2056: %{external_url}/39bb3fcea1514f1369fcfc87542390fd-sacjava-1.3.zip
Source2057: %{external_url}/5ade6ae2a99bc1e9e57031ca88d36dad-hyphen-2.8.8.tar.gz
-Source2058: %{external_url}/36271d3fa0d9dec1632029b6d7aac925-liblangtag-0.5.1.tar.bz2
+Source2058: %{external_url}/aa899eff126216dafe721149fbdb511b-liblangtag-0.5.8.tar.bz2
Source2059: %{external_url}/c0b4799ea9850eae3ead14f0a60e9418-postgresql-9.2.1.tar.bz2
Source2060: %{external_url}/2e482c7567908d334785ce7d69ddfff7-commons-codec-1.6-src.tar.gz
Source2061: %{external_url}/b12c5f9cfdb6b04efce5a4a186b8416b-rasqal-0.9.30.tar.gz
@@ -169,16 +171,6 @@
Patch5: mediawiki-no-broken-help.diff
# PATCH-FIX-SUSE: do not declare java6 available for without system libs build
Patch7: 0001-Make-HAVE_JAVA6-be-always-false.patch
-# bnc#889755 - LO-L3: PPTX: chart axis number format incorrect
-Patch10: bnc-889755.diff
-# bnc#679938 - LO-L3: saving to doc file the chapter name in the header does not change with chapters
-Patch11: bnc-679938.diff
-# PATCH-FIX-UPSTREAM: taken from Master to fix flaky test
-Patch12: use-long-for-test-comparsion.patch
-# bnc#954345 - LO-L3: Insert-->Image-->Insert as Link hangs writer
-Patch13: bnc-954345.diff
-# bnc#945047 - LO-L3: LO is duplicating master pages
-Patch14: bnc-945047.diff
# try to save space by using hardlinks
Patch990: install-with-hardlinks.diff
BuildRequires: %{name}-share-linker
@@ -201,7 +193,6 @@
BuildRequires: gcc-c++
# Only for backtracking to see failing tests, pain to rebuild otherwise
BuildRequires: gdb
-BuildRequires: gnome-vfs2-devel
BuildRequires: gperf
BuildRequires: gtk2-devel
BuildRequires: hunspell-devel
@@ -286,7 +277,7 @@
BuildRequires: libcdr-devel >= 0.1
BuildRequires: libcmis-devel >= 0.5.0
BuildRequires: libe-book-devel >= 0.1.1
-BuildRequires: libetonyek-devel >= 0.1.2
+BuildRequires: libetonyek-devel >= 0.1.4
BuildRequires: libexif
BuildRequires: libexttextcat-devel >= 3.1.1
BuildRequires: libfbembed-devel
@@ -303,7 +294,7 @@
BuildRequires: libmysqlclient-devel
BuildRequires: libmysqlcppconn-devel >= 1.0.6
BuildRequires: libodfgen-devel >= 0.1.4
-BuildRequires: liborcus-devel >= 0.7.0
+BuildRequires: liborcus-devel >= 0.9.1
BuildRequires: libpagemaker-devel
BuildRequires: libredland-devel
BuildRequires: librepository
@@ -313,12 +304,13 @@
BuildRequires: libvisio-devel >= 0.1
BuildRequires: libwpd-devel >= 0.10
BuildRequires: libwpg-devel
-BuildRequires: libwps-devel >= 0.4.0
+BuildRequires: libwps-devel >= 0.4.2
BuildRequires: libxml2-devel
BuildRequires: libxslt-devel
BuildRequires: lpsolve-devel
BuildRequires: mdds-devel >= 0.12.0
BuildRequires: npapi-sdk
+BuildRequires: openCOLLADA-devel
BuildRequires: pentaho-libxml
BuildRequires: pentaho-reporting-flow-engine
BuildRequires: postgresql-devel
@@ -1006,11 +998,6 @@
%if !%{with systemlibs}
%patch7 -p1
%endif
-%patch10 -p1
-%patch11 -p1
-%patch12 -p1
-%patch13 -p1
-%patch14 -p1
%patch990 -p1
# 256x256 icons
tar -xjf %{SOURCE20}
@@ -1117,7 +1104,6 @@
--with-system-hunspell \
--with-system-mythes \
--with-system-bluez \
- --with-system-mesa-headers \
--with-system-openldap \
--with-system-odbc \
--with-system-nss \
@@ -1134,9 +1120,6 @@
--disable-fetch-external \
--with-external-tar="$RPM_SOURCE_DIR" \
--disable-epm \
- --disable-gnome-vfs \
- --disable-kdeab \
- --disable-kde \
--disable-online-update \
--disable-systray \
%if %{with newmedia}
@@ -1145,6 +1128,7 @@
--enable-gtk3 \
--with-doxygen \
--enable-gltf \
+ --enable-collada --with-system-opencollada \
%else
--enable-gstreamer-0-10 \
--disable-gstreamer-1-0 \
@@ -1173,7 +1157,6 @@
--enable-odk \
--enable-kde4 \
--enable-evolution2 \
- --enable-lockdown \
--enable-dbus \
--enable-hardlink-deliver \
--enable-ext-ct2n \
@@ -1187,13 +1170,14 @@
--enable-neon \
--disable-ccache \
--disable-coinmp \
- --disable-collada \
--enable-symbols
# no coinormp packages for coinmp
# hack to correctly bootstrap python stuff with system python, (deb#501028, i#90701)
sed -i -e "s|@INSTALLDIR@|%{_libdir}/%{name}|" pyuno/source/module/uno.py pyuno/source/officehelper.py
+# Allow deep backtracking if the build crashes
+ulimit -c unlimited
# just call make here as we added the jobs in configure
# The check phase is run here too if it is split with nocheck
# install of jars get broken sometimes
@@ -1341,10 +1325,6 @@
done
%endif
-# Merge kde and kde4 filelists as we do not bother with compat anymore
-# Not worth fixing unless really cleaning up the install completely
-cat file-lists/kde_list.txt >> file-lists/kde4_list.txt
-
# Remove pointless readmes
rm -rf %{buildroot}%{_libdir}/%{name}/readmes/
@@ -1555,21 +1535,26 @@
%files -f file-lists/base_list.txt base
%defattr(-,root,root)
+%{_datadir}/appdata/libreoffice-base.appdata.xml
%files -f file-lists/calc_list.txt calc
%defattr(-,root,root)
+%{_datadir}/appdata/libreoffice-calc.appdata.xml
%files -f file-lists/draw_list.txt draw
%defattr(-,root,root)
+%{_datadir}/appdata/libreoffice-draw.appdata.xml
%files -f file-lists/math_list.txt math
%defattr(-,root,root)
%files -f file-lists/impress_list.txt impress
%defattr(-,root,root)
+%{_datadir}/appdata/libreoffice-impress.appdata.xml
%files -f file-lists/writer_list.txt writer
%defattr(-,root,root)
+%{_datadir}/appdata/libreoffice-writer.appdata.xml
%files -f file-lists/postgresql_list.txt base-drivers-postgresql
%defattr(-,root,root)
++++++ Firebird-2.5.2.26540-0.tar.bz2 -> Firebird-2.5.4.26856-0.tar.bz2 ++++++
/work/SRC/openSUSE:Factory/libreoffice/Firebird-2.5.2.26540-0.tar.bz2 /work/SRC/openSUSE:Factory/.libreoffice.new/Firebird-2.5.4.26856-0.tar.bz2 differ: char 11, line 1
++++++ 36271d3fa0d9dec1632029b6d7aac925-liblangtag-0.5.1.tar.bz2 -> aa899eff126216dafe721149fbdb511b-liblangtag-0.5.8.tar.bz2 ++++++
++++ 40323 lines of diff (skipped)
++++++ d6eef4b4cacb2183f2bf265a5a03a354-boost_1_55_0.tar.bz2 -> boost_1_59_0.tar.bz2 ++++++
/work/SRC/openSUSE:Factory/libreoffice/d6eef4b4cacb2183f2bf265a5a03a354-boost_1_55_0.tar.bz2 /work/SRC/openSUSE:Factory/.libreoffice.new/boost_1_59_0.tar.bz2 differ: char 11, line 1
++++++ e844caed8f2ca24c088505b0d6271bc0-icu4c-54_1-src.tgz -> c4a2d71ff56aec5ebfab2a3f059be99d-icu4c-56_1-src.tgz ++++++
/work/SRC/openSUSE:Factory/libreoffice/e844caed8f2ca24c088505b0d6271bc0-icu4c-54_1-src.tgz /work/SRC/openSUSE:Factory/.libreoffice.new/c4a2d71ff56aec5ebfab2a3f059be99d-icu4c-56_1-src.tgz differ: char 5, line 1
++++++ libetonyek-0.1.3.tar.bz2 -> libetonyek-0.1.5.tar.bz2 ++++++
++++ 44646 lines of diff (skipped)
++++++ libmwaw-0.3.5.tar.bz2 -> libmwaw-0.3.7.tar.bz2 ++++++
++++ 43273 lines of diff (skipped)
++++++ libodfgen-0.1.4.tar.bz2 -> libodfgen-0.1.5.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libodfgen-0.1.4/ChangeLog new/libodfgen-0.1.5/ChangeLog
--- old/libodfgen-0.1.4/ChangeLog 2015-05-17 11:04:54.000000000 +0200
+++ new/libodfgen-0.1.5/ChangeLog 2015-10-24 09:58:58.000000000 +0200
@@ -1,3 +1,48 @@
+2015-10-24 osnola <alonso(a)loria.fr> [5109e2d2d68ed9c7033206d6a6f0a6cb401c7731]
+
+tOdfDocumentHandler.hxx: do not add attribute to enums, mingw32-g++ do not like that, configure.ac: check correctly if we need to add --std=c++11 + update NEWS file
+
+
+2015-10-03 osnola <alonso(a)loria.fr> [653de2329a6cc5f0c4751245ce5e90144b18f337]
+
+tSheetStyle.cxx: add some operators (plage, union, intersection and %) + accept also "librevenge:sheet-name" to define the sheet's name...
+
+
+2015-08-30 David Tardon <dtardon(a)redhat.com> [42f6ef8f4428e3d352166a45d179b0bd57db7a22]
+
+tautomatically pass -std=c++11 if needed
+
+
+2015-08-30 David Tardon <dtardon(a)redhat.com> [473698347afd9c4f53151ea2c82229640f3d5912]
+
+tremove unused argument
+
+
+2015-07-19 osnola <alonso(a)loria.fr> [ce4a03ca92873343c526f514f0e3a6353530cf69]
+
+tOdfGenerator: implements librevenge:replacement-objects...
+
+
+2015-06-23 David Tardon <dtardon(a)redhat.com> [8ef8c171ebe3c5daebdce80ee422cf7bb96aa3bc]
+
+tfix typo
+
+
+2015-06-23 osnola <alonso(a)loria.fr> [d55c58fad462a95db8474a240cef7236f5e98ac9]
+
+tGraphicStyle: also allow to set the opacity value:"draw:opacity" for surfaces which contain patterns, + add minimalist implementation of "measure": if drawPolyline is called with two points and draw:show-unit is set, then create a draw:measure tag instead of a draw:line...
+
+
+2015-05-19 Fridrich Štrba <fridrich.strba(a)bluewin.ch> [9b8e077429dd5cb3a5b3eb92aa86ef6a7204e2f5]
+
+tFixing werror build and wondering why developers don't use it :(
+
+
+2015-05-17 osnola <alonso(a)loria.fr> [6066227bc5d23b3d5ead3f1e7d4277e4c5484591]
+
+tconfigure.ac: bump version...
+
+
2015-05-17 osnola <alonso(a)loria.fr> [4300376e1617ffe93dde3bcb79e7031ee9707f83]
tupdate version and NEWS + add an ODFGENAPI inside the "enum OdfStreamType"'s definition
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libodfgen-0.1.4/NEWS new/libodfgen-0.1.5/NEWS
--- old/libodfgen-0.1.4/NEWS 2015-05-17 10:51:38.000000000 +0200
+++ new/libodfgen-0.1.5/NEWS 2015-10-23 20:19:16.000000000 +0200
@@ -1,3 +1,14 @@
+libodfgen 0.1.5
+- graphics:
+ + add code for librevenge:replacement-objects
+ + allow to set the opacity value:"draw:opacity" for surfaces which
+ contain patterns,
+ + add minimalist implementation of "measure": if drawPolyline is
+ called with two points and draw:show-unit is set, then create a
+ draw:measure tag instead of a draw:line...
+- sheet interface:
+ + add some operators (plage, union, intersection and %)
+
libodfgen 0.1.4
- drawing interface: do no forget to call startDocument/endDocument when
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libodfgen-0.1.4/configure new/libodfgen-0.1.5/configure
--- old/libodfgen-0.1.4/configure 2015-05-17 10:50:33.000000000 +0200
+++ new/libodfgen-0.1.5/configure 2015-10-24 09:34:58.000000000 +0200
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for libodfgen 0.1.4.
+# Generated by GNU Autoconf 2.69 for libodfgen 0.1.5.
#
#
# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -587,8 +587,8 @@
# Identity of this package.
PACKAGE_NAME='libodfgen'
PACKAGE_TARNAME='libodfgen'
-PACKAGE_VERSION='0.1.4'
-PACKAGE_STRING='libodfgen 0.1.4'
+PACKAGE_VERSION='0.1.5'
+PACKAGE_STRING='libodfgen 0.1.5'
PACKAGE_BUGREPORT=''
PACKAGE_URL=''
@@ -1357,7 +1357,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 libodfgen 0.1.4 to adapt to many kinds of systems.
+\`configure' configures libodfgen 0.1.5 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1427,7 +1427,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of libodfgen 0.1.4:";;
+ short | recursive ) echo "Configuration of libodfgen 0.1.5:";;
esac
cat <<\_ACEOF
@@ -1560,7 +1560,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-libodfgen configure 0.1.4
+libodfgen configure 0.1.5
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1959,7 +1959,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by libodfgen $as_me 0.1.4, which was
+It was created by libodfgen $as_me 0.1.5, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2825,7 +2825,7 @@
# Define the identity of the package.
PACKAGE='libodfgen'
- VERSION='0.1.4'
+ VERSION='0.1.5'
cat >>confdefs.h <<_ACEOF
@@ -16350,7 +16350,7 @@
LIBODFGEN_MINOR_VERSION=1
-LIBODFGEN_MICRO_VERSION=4
+LIBODFGEN_MICRO_VERSION=5
# AC_SUBST(LT_RELEASE, [libodfgen_version_major.libodfgen_version_minor])
LT_CURRENT=`expr 100 '*' 0 + 1`
@@ -16358,7 +16358,7 @@
LT_AGE=0
# LT_AGE=libodfgen_version_minor
-LT_REVISION=4
+LT_REVISION=5
@@ -16715,6 +16715,8 @@
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for c++11 shared ptr" >&5
$as_echo_n "checking for c++11 shared ptr... " >&6; }
+ save_CXXFLAGS="$CXXFLAGS"
+ CXXFLAGS="$CXXFLAGS -std=c++11"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -16745,6 +16747,36 @@
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ CXXFLAGS="$save_CXXFLAGS"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler needs -std=c++11" >&5
+$as_echo_n "checking whether the compiler needs -std=c++11... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+ #include <memory>
+int
+main ()
+{
+std::shared_ptr<int> p;
+
+ ;
+ return 0;
+}
+
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+else
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ CXXFLAGS="$CXXFLAGS -std=c++11"
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
if test "x$with_sharedptr" = "xtr1"; then :
@@ -17457,7 +17489,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by libodfgen $as_me 0.1.4, which was
+This file was extended by libodfgen $as_me 0.1.5, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -17523,7 +17555,7 @@
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-libodfgen config.status 0.1.4
+libodfgen config.status 0.1.5
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libodfgen-0.1.4/configure.ac new/libodfgen-0.1.5/configure.ac
--- old/libodfgen-0.1.4/configure.ac 2015-05-17 10:28:25.000000000 +0200
+++ new/libodfgen-0.1.5/configure.ac 2015-10-24 09:33:41.000000000 +0200
@@ -7,7 +7,7 @@
# ====================
m4_define([libodfgen_version_major],[0])
m4_define([libodfgen_version_minor],[1])
-m4_define([libodfgen_version_micro],[4])
+m4_define([libodfgen_version_micro],[5])
m4_define([libodfgen_version],[libodfgen_version_major.libodfgen_version_minor.libodfgen_version_micro])
# =============
@@ -216,6 +216,8 @@
AS_IF([test "x$with_sharedptr" = "xc++11"], [
AC_MSG_CHECKING([for c++11 shared ptr])
+ save_CXXFLAGS="$CXXFLAGS"
+ CXXFLAGS="$CXXFLAGS -std=c++11"
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM(
[[#include <memory>]],
@@ -227,8 +229,19 @@
], [
AC_MSG_RESULT([no])
AC_MSG_ERROR([Could not find C++11 implementation of shared_ptr])
+ ])
+ CXXFLAGS="$save_CXXFLAGS"
+ AC_MSG_CHECKING([whether the compiler needs -std=c++11])
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM(
+ [[#include <memory>]],
+ [[std::shared_ptr<int> p;]]
+ )
+ ], [
+ AC_MSG_RESULT([no])
], [
- [#include <memory>]
+ AC_MSG_RESULT([yes])
+ CXXFLAGS="$CXXFLAGS -std=c++11"
])
])
AS_IF([test "x$with_sharedptr" = "xtr1"], [
@@ -244,8 +257,6 @@
], [
AC_MSG_RESULT([no])
AC_MSG_ERROR([Could not find TR1 implementation of shared_ptr])
- ], [
- [#include <tr1/memory>]
])
])
AS_IF([test "x$with_sharedptr" = "xboost"], [
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libodfgen-0.1.4/inc/libodfgen/OdfDocumentHandler.hxx new/libodfgen-0.1.5/inc/libodfgen/OdfDocumentHandler.hxx
--- old/libodfgen-0.1.4/inc/libodfgen/OdfDocumentHandler.hxx 2015-05-17 10:32:40.000000000 +0200
+++ new/libodfgen-0.1.5/inc/libodfgen/OdfDocumentHandler.hxx 2015-10-24 09:37:52.000000000 +0200
@@ -32,7 +32,7 @@
*
* @sa OdgGenerator, OdpGenerator, OdtGenerator
*/
-enum ODFGENAPI OdfStreamType { ODF_FLAT_XML, ODF_CONTENT_XML, ODF_STYLES_XML, ODF_SETTINGS_XML, ODF_META_XML, ODF_MANIFEST_XML };
+enum OdfStreamType { ODF_FLAT_XML, ODF_CONTENT_XML, ODF_STYLES_XML, ODF_SETTINGS_XML, ODF_META_XML, ODF_MANIFEST_XML };
class OdfDocumentHandler;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libodfgen-0.1.4/src/GraphicStyle.cxx new/libodfgen-0.1.5/src/GraphicStyle.cxx
--- old/libodfgen-0.1.4/src/GraphicStyle.cxx 2015-05-07 14:14:57.000000000 +0200
+++ new/libodfgen-0.1.5/src/GraphicStyle.cxx 2015-07-16 15:15:13.000000000 +0200
@@ -60,6 +60,13 @@
pHandler->startElement("style:graphic-properties", graphicElement);
pHandler->endElement("style:graphic-properties");
+ if (mPropList["draw:show-unit"] && mPropList["draw:show-unit"]->getStr()=="true")
+ {
+ librevenge::RVNGPropertyList textElement;
+ textElement.insert("fo:font-size", 12, librevenge::RVNG_POINT);
+ pHandler->startElement("style:text-properties", textElement);
+ pHandler->endElement("style:text-properties");
+ }
pHandler->endElement("style:style");
}
@@ -361,7 +368,7 @@
librevenge::RVNGString GraphicStyleManager::getStyleNameForStrokeDash(librevenge::RVNGPropertyList const &style)
{
librevenge::RVNGPropertyList pList;
- if (style["svg:stoke-linecap"])
+ if (style["svg:stroke-linecap"])
pList.insert("draw:style", style["svg:stroke-linecap"]->getStr());
else
pList.insert("draw:style", "rect");
@@ -416,7 +423,7 @@
if (style["svg:stroke-linejoin"])
element.insert("draw:stroke-linejoin", style["svg:stroke-linejoin"]->getStr());
if (style["svg:stroke-linecap"])
- element.insert("svg:stoke-linecap", style["svg:stroke-linecap"]->getStr());
+ element.insert("svg:stroke-linecap", style["svg:stroke-linecap"]->getStr());
librevenge::RVNGString name("");
if (style["draw:stroke"] && style["draw:stroke"]->getStr() == "dash")
@@ -489,6 +496,8 @@
element.insert("draw:fill-image-ref-point-x", style["draw:fill-image-ref-point-x"]->getStr());
if (style["draw:fill-image-ref-point-y"])
element.insert("draw:fill-image-ref-point-y", style["draw:fill-image-ref-point-y"]->getStr());
+ if (style["draw:opacity"])
+ element.insert("draw:opacity", style["draw:opacity"]->getStr());
}
else
element.insert("draw:fill", "none");
@@ -562,6 +571,7 @@
static char const *(others[])=
{
"draw:ole-draw-aspect",
+ "draw:show-unit",
"fo:background-color",
"fo:border","fo:border-top","fo:border-left","fo:border-bottom","fo:border-right",
"fo:clip",
@@ -571,7 +581,7 @@
"style:mirror", "style:parent-style-name",
"style:run-through", "style:wrap"
};
- for (int b = 0; b < 18; b++)
+ for (int b = 0; b < 19; b++)
{
if (style[others[b]])
element.insert(others[b], style[others[b]]->getStr());
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libodfgen-0.1.4/src/OdcGenerator.cxx new/libodfgen-0.1.5/src/OdcGenerator.cxx
--- old/libodfgen-0.1.4/src/OdcGenerator.cxx 2015-01-01 10:14:57.000000000 +0100
+++ new/libodfgen-0.1.5/src/OdcGenerator.cxx 2015-06-23 09:37:46.000000000 +0200
@@ -137,7 +137,7 @@
// ok create a new list
librevenge::RVNGString sName("");
- sName.sprintf("Chart%i", mChartStyleHash.size());
+ sName.sprintf("Chart%i", (int)mChartStyleHash.size());
pList.insert("style:name", sName);
mChartStyleHash[sName] =pList;
mHashChartNameMap[hashKey] = sName;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libodfgen-0.1.4/src/OdfGenerator.cxx new/libodfgen-0.1.5/src/OdfGenerator.cxx
--- old/libodfgen-0.1.4/src/OdfGenerator.cxx 2015-03-12 09:15:21.000000000 +0100
+++ new/libodfgen-0.1.5/src/OdfGenerator.cxx 2015-10-23 20:13:18.000000000 +0200
@@ -1147,6 +1147,12 @@
else
mpCurrentStorage->push_back(new TagCloseElement("draw:image"));
}
+
+ librevenge::RVNGPropertyListVector const *replacements=propList.child("librevenge:replacement-objects");
+ if (!replacements)
+ return;
+ for (unsigned long c=0; c < replacements->count(); ++c)
+ insertBinaryObject((*replacements)[c]);
}
////////////////////////////////////////////////////////////
@@ -1284,7 +1290,10 @@
return;
}
librevenge::RVNGString sValue=getCurrentGraphicStyleName(propList);
- TagOpenElement *pDrawLineElement = new TagOpenElement("draw:line");
+ bool isMeasure=(propList["draw:show-unit"] && propList["draw:show-unit"]->getStr()=="true");
+ librevenge::RVNGString what= isMeasure ? "draw:measure" : "draw:line";
+
+ TagOpenElement *pDrawLineElement = new TagOpenElement(what);
addFrameProperties(propList, *pDrawLineElement);
pDrawLineElement->addAttribute("draw:style-name", sValue);
pDrawLineElement->addAttribute("svg:x1", (*vertices)[0]["svg:x"]->getStr());
@@ -1292,7 +1301,7 @@
pDrawLineElement->addAttribute("svg:x2", (*vertices)[1]["svg:x"]->getStr());
pDrawLineElement->addAttribute("svg:y2", (*vertices)[1]["svg:y"]->getStr());
mpCurrentStorage->push_back(pDrawLineElement);
- mpCurrentStorage->push_back(new TagCloseElement("draw:line"));
+ mpCurrentStorage->push_back(new TagCloseElement(what));
}
else
{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libodfgen-0.1.4/src/SectionStyle.cxx new/libodfgen-0.1.5/src/SectionStyle.cxx
--- old/libodfgen-0.1.4/src/SectionStyle.cxx 2014-09-14 11:23:29.000000000 +0200
+++ new/libodfgen-0.1.5/src/SectionStyle.cxx 2015-06-23 09:37:46.000000000 +0200
@@ -119,9 +119,9 @@
zone=Style::Z_ContentAutomatic;
librevenge::RVNGString name;
if (zone==Style::Z_StyleAutomatic)
- name.sprintf("Section_M%i", mStyleList.size());
+ name.sprintf("Section_M%i", (int)mStyleList.size());
else
- name.sprintf("Section%i", mStyleList.size());
+ name.sprintf("Section%i", (int)mStyleList.size());
shared_ptr<SectionStyle> style(new SectionStyle(propList, name.cstr(), zone));
mStyleList.push_back(style);
return name;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libodfgen-0.1.4/src/SheetStyle.cxx new/libodfgen-0.1.5/src/SheetStyle.cxx
--- old/libodfgen-0.1.4/src/SheetStyle.cxx 2015-03-12 08:55:28.000000000 +0100
+++ new/libodfgen-0.1.5/src/SheetStyle.cxx 2015-10-03 17:37:49.000000000 +0200
@@ -138,7 +138,7 @@
}
else if (type=="currency")
{
- what.sprintf("number:currency-style", type.c_str());
+ what = "number:currency-style";
TagOpenElement styleOpen(what);
styleOpen.addAttribute("style:name", getName());
styleOpen.write(pHandler);
@@ -562,11 +562,11 @@
}
std::string oper(list["librevenge:operator"]->getStr().cstr());
bool find=false;
- for (int w=0; w<15; ++w)
+ for (int w=0; w<19; ++w)
{
- static char const *(s_operators[15])=
+ static char const *(s_operators[19])=
{
- "(", ")", "+", "-", "*", "/", "=", "<>", ";", "<", ">", "<=", ">=", "^", "&"
+ "(", ")", "+", "-", "*", "/", "=", "<>", ";", "<", ">", "<=", ">=", "^", "&", "!", "~", ":", "%"
};
if (oper!=s_operators[w]) continue;
s << oper;
@@ -645,7 +645,8 @@
ODFGEN_DEBUG_MSG(("SheetManager::convertCellRange: find bad coordinate!!!\n"));
return res;
}
- if (list["librevenge:sheet"]) s << list["librevenge:sheet"]->getStr().cstr();
+ if (list["librevenge:sheet-name"]) s << list["librevenge:sheet-name"]->getStr().cstr();
+ else if (list["librevenge:sheet"]) s << list["librevenge:sheet"]->getStr().cstr();
s << ".";
if (list["librevenge:column-absolute"] && list["librevenge:column-absolute"]->getInt()) s << "$";
if (column>=26) s << char('A'+(column/26-1));
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libodfgen-0.1.4/src/TextRunStyle.cxx new/libodfgen-0.1.5/src/TextRunStyle.cxx
--- old/libodfgen-0.1.4/src/TextRunStyle.cxx 2015-01-01 10:14:57.000000000 +0100
+++ new/libodfgen-0.1.5/src/TextRunStyle.cxx 2015-10-23 20:13:32.000000000 +0200
@@ -215,11 +215,11 @@
// ok create a new style
if (currentZone==Style::Z_Style)
- sName.sprintf("S_N%i", mStyleHash.size());
+ sName.sprintf("S_N%i", (int)mStyleHash.size());
else if (currentZone==Style::Z_StyleAutomatic)
- sName.sprintf("S_M%i", mStyleHash.size());
+ sName.sprintf("S_M%i", (int)mStyleHash.size());
else
- sName.sprintf("S%i", mStyleHash.size());
+ sName.sprintf("S%i", (int)mStyleHash.size());
if (propList["style:display-name"])
{
librevenge::RVNGString name(propList["style:display-name"]->getStr());
@@ -361,11 +361,11 @@
librevenge::RVNGString sName("");
if (zone==Style::Z_Style)
- sName.sprintf("Span_N%i", mStyleHash.size());
+ sName.sprintf("Span_N%i", (int)mStyleHash.size());
else if (zone==Style::Z_StyleAutomatic)
- sName.sprintf("Span_M%i", mStyleHash.size());
+ sName.sprintf("Span_M%i", (int)mStyleHash.size());
else
- sName.sprintf("Span%i", mStyleHash.size());
+ sName.sprintf("Span%i", (int)mStyleHash.size());
shared_ptr<SpanStyle> span(new SpanStyle(sName.cstr(), propList, zone));
mStyleHash[sName] = span;
mHashNameMap[hashKey] = sName;
++++++ libreoffice-5.0.4.2.tar.xz -> libreoffice-5.1.0.2.tar.xz ++++++
/work/SRC/openSUSE:Factory/libreoffice/libreoffice-5.0.4.2.tar.xz /work/SRC/openSUSE:Factory/.libreoffice.new/libreoffice-5.1.0.2.tar.xz differ: char 26, line 1
++++++ libreoffice-help-5.0.4.2.tar.xz -> libreoffice-help-5.1.0.2.tar.xz ++++++
++++ 29572 lines of diff (skipped)
++++++ libreoffice-translations-5.0.4.2.tar.xz -> libreoffice-translations-5.1.0.2.tar.xz ++++++
/work/SRC/openSUSE:Factory/libreoffice/libreoffice-translations-5.0.4.2.tar.xz /work/SRC/openSUSE:Factory/.libreoffice.new/libreoffice-translations-5.1.0.2.tar.xz differ: char 26, line 1
++++++ libvisio-0.1.1.tar.bz2 -> libvisio-0.1.3.tar.bz2 ++++++
++++ 9114 lines of diff (skipped)
++++++ libwps-0.4.0.tar.bz2 -> libwps-0.4.2.tar.bz2 ++++++
++++ 33778 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package liborcus for openSUSE:Factory checked in at 2016-01-23 01:14:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/liborcus (Old)
and /work/SRC/openSUSE:Factory/.liborcus.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "liborcus"
Changes:
--------
--- /work/SRC/openSUSE:Factory/liborcus/liborcus.changes 2015-03-27 09:39:14.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.liborcus.new/liborcus.changes 2016-01-23 01:14:47.000000000 +0100
@@ -1,0 +2,6 @@
+Mon Dec 21 09:49:32 UTC 2015 - tchvatal(a)suse.com
+
+- Version update to 0.9.2:
+ * Various bugfixes and update for libreoffice 5.1
+
+-------------------------------------------------------------------
Old:
----
liborcus-0.7.1.tar.xz
New:
----
liborcus-0.9.2.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ liborcus.spec ++++++
--- /var/tmp/diff_new_pack.c3n8mw/_old 2016-01-23 01:14:48.000000000 +0100
+++ /var/tmp/diff_new_pack.c3n8mw/_new 2016-01-23 01:14:48.000000000 +0100
@@ -16,14 +16,14 @@
#
-%define libname liborcus-0_8-0
+%define libname liborcus-0_10-0
Name: liborcus
-Version: 0.7.1
+Version: 0.9.2
Release: 0
Summary: Spreadsheet file processing library
License: MIT
Group: Productivity/Publishing/Word
-Url: http://gitorious.org/orcus
+Url: https://gitlab.com/orcus/orcus/
Source: http://kohei.us/files/orcus/src/%{name}-%{version}.tar.xz
BuildRequires: boost-devel
BuildRequires: coreutils
++++++ liborcus-0.7.1.tar.xz -> liborcus-0.9.2.tar.xz ++++++
++++ 27756 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package poppler for openSUSE:Factory checked in at 2016-01-23 01:14:41
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/poppler (Old)
and /work/SRC/openSUSE:Factory/.poppler.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "poppler"
Changes:
--------
--- /work/SRC/openSUSE:Factory/poppler/poppler-qt.changes 2015-12-20 10:51:16.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.poppler.new/poppler-qt.changes 2016-01-23 01:14:42.000000000 +0100
@@ -1,0 +2,20 @@
+Fri Jan 15 11:39:40 UTC 2016 - zaitor(a)opensuse.org
+
+- Update to version 0.40.0:
+ + core:
+ - CairoOutputDev: Use shape mask with soft mask (fdo#91931).
+ - TextOutputDev:
+ . Handle right-to-left text in search
+ . Fix finding Arabic Presentation Forms ligatures.
+ - Fix crash in invalid file (fdo#93476).
+ - Regression test improvements.
+ + utils:
+ - pdftocairo:
+ . Fix writing to stdout out with image output.
+ . Document that -singlefile appends file type (fdo#86254).
+ . Ensure surface flushed before accessing image data.
+ . Check for invalid use of options (fdo#92195).
+ - pdfunite: Fix typo in manual.
+ + build system: Improve cmake build system.
+
+-------------------------------------------------------------------
poppler-qt5.changes: same change
poppler.changes: same change
Old:
----
poppler-0.39.0.tar.xz
New:
----
poppler-0.40.0.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ poppler-qt.spec ++++++
--- /var/tmp/diff_new_pack.kqFdIN/_old 2016-01-23 01:14:43.000000000 +0100
+++ /var/tmp/diff_new_pack.kqFdIN/_new 2016-01-23 01:14:43.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package poppler-qt
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -21,7 +21,7 @@
Name: poppler-qt
%define _name poppler
-Version: 0.39.0
+Version: 0.40.0
Release: 0
# Actual version of poppler-data:
%define poppler_data_version 0.4.6
poppler-qt5.spec: same change
++++++ poppler.spec ++++++
--- /var/tmp/diff_new_pack.kqFdIN/_old 2016-01-23 01:14:43.000000000 +0100
+++ /var/tmp/diff_new_pack.kqFdIN/_new 2016-01-23 01:14:43.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package poppler
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -21,7 +21,7 @@
Name: poppler
%define _name poppler
-Version: 0.39.0
+Version: 0.40.0
Release: 0
# Actual version of poppler-data:
%define poppler_data_version 0.4.6
++++++ poppler-0.39.0.tar.xz -> poppler-0.40.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poppler-0.39.0/CMakeLists.txt new/poppler-0.40.0/CMakeLists.txt
--- old/poppler-0.39.0/CMakeLists.txt 2015-12-17 00:07:49.000000000 +0100
+++ new/poppler-0.40.0/CMakeLists.txt 2016-01-13 23:18:14.000000000 +0100
@@ -22,7 +22,7 @@
endif()
set(POPPLER_MAJOR_VERSION "0")
-set(POPPLER_MINOR_VERSION "39")
+set(POPPLER_MINOR_VERSION "40")
set(POPPLER_MICRO_VERSION "0")
set(POPPLER_VERSION "${POPPLER_MAJOR_VERSION}.${POPPLER_MINOR_VERSION}.${POPPLER_MICRO_VERSION}")
@@ -442,7 +442,6 @@
poppler/JPEG2000Stream.cc
)
add_definitions(-DUSE_OPENJPEG2)
-MESSAGE(${LIBOPENJPEG2_LIBRARIES})
set(poppler_LIBS ${poppler_LIBS} ${LIBOPENJPEG2_LIBRARIES})
else ()
set(poppler_SRCS ${poppler_SRCS}
@@ -479,8 +478,7 @@
add_library(poppler SHARED ${poppler_SRCS})
endif(MSVC)
set_target_properties(poppler PROPERTIES VERSION 58.0.0 SOVERSION 58)
-target_link_libraries(poppler ${poppler_LIBS})
-target_link_libraries(poppler LINK_INTERFACE_LIBRARIES "")
+target_link_libraries(poppler LINK_PRIVATE ${poppler_LIBS})
install(TARGETS poppler RUNTIME DESTINATION bin LIBRARY DESTINATION lib${LIB_SUFFIX} ARCHIVE DESTINATION lib${LIB_SUFFIX})
if(ENABLE_XPDF_HEADERS)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poppler-0.39.0/ChangeLog new/poppler-0.40.0/ChangeLog
--- old/poppler-0.39.0/ChangeLog 2015-12-17 00:19:26.000000000 +0100
+++ new/poppler-0.40.0/ChangeLog 2016-01-13 23:33:57.000000000 +0100
@@ -1,3 +1,248 @@
+commit 449d45fab8e61393d858549460e61599e4dbd7eb
+Author: Albert Astals Cid <aacid(a)kde.org>
+Date: Wed Jan 13 23:19:12 2016 +0100
+
+ 0.40.0 + NEWS
+
+ CMakeLists.txt | 2 +-
+ NEWS | 18 ++++++++++++++++++
+ configure.ac | 2 +-
+ cpp/Doxyfile | 2 +-
+ qt4/src/Doxyfile | 2 +-
+ qt5/src/Doxyfile | 2 +-
+ 6 files changed, 23 insertions(+), 5 deletions(-)
+
+commit e9740b57324cf5a09f6f4312165da13c7b3a576b
+Author: Albert Astals Cid <aacid(a)kde.org>
+Date: Wed Jan 13 23:14:35 2016 +0100
+
+ Update copyrights
+
+ poppler/Function.cc | 2 +-
+ utils/pdftocairo.cc | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 3bfc45bfcca1a52447cedbb95afad1ef362ac6f0
+Author: Adrian Johnson <ajohnson(a)redneon.com>
+Date: Mon Jan 11 21:46:49 2016 +1030
+
+ pdftocairo: check for invalid use of -scale-to* and -paper[wh] options
+
+ Bug 92195
+
+ utils/pdftocairo.cc | 12 +++++++++++-
+ 1 file changed, 11 insertions(+), 1 deletion(-)
+
+commit 819bea740b1fadb24833e0ecbdf4e75ddca8eb14
+Author: Adrian Johnson <ajohnson(a)redneon.com>
+Date: Mon Jan 11 19:44:14 2016 +1030
+
+ pdftocairo: ensure surface flushed before accessing image data
+
+ utils/pdftocairo.cc | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit f7542348b37cc881d854bbc36c3af0a4fe37d839
+Author: Adrian Johnson <ajohnson(a)redneon.com>
+Date: Mon Jan 11 19:39:34 2016 +1030
+
+ pdftocairo: document that -singlefile appends file type
+
+ Bug 86254
+
+ utils/pdftocairo.1 | 9 +++++----
+ 1 file changed, 5 insertions(+), 4 deletions(-)
+
+commit 9fa58b1ef6c97e2a30bb3197c11000fac3b059f4
+Author: Adrian Johnson <ajohnson(a)redneon.com>
+Date: Mon Jan 11 19:26:02 2016 +1030
+
+ pdftocairo: fix writing to stdout out with image output
+
+ utils/pdftocairo.cc | 14 ++++++++------
+ 1 file changed, 8 insertions(+), 6 deletions(-)
+
+commit 01d4bb222d63eda7dc5ec903c0735179edf77c0e
+Author: Albert Astals Cid <aacid(a)kde.org>
+Date: Sun Jan 3 13:01:31 2016 +0100
+
+ Happy New Year
+
+ poppler/poppler-config.h.cmake | 2 +-
+ poppler/poppler-config.h.in | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+commit d8f418d2f2ec5966d77caf128a52c834fdd0efcf
+Author: Khaled Hosny <khaledhosny(a)eglug.org>
+Date: Mon Nov 23 13:52:10 2015 +0400
+
+ Fix finding Arabic Presentation Forms ligatures
+
+ PDF text containing Arabic Presentation forms ligatures is still not
+ found after the previous commit.
+
+ This because the ligatures are decomposed in logical order after
+ normalisation, while the whole string is in visual order. For example
+ the RTL text ABCD in visual order will be DCBA, and assuming B is a
+ ligature, it will be decomposed to B1B2 so the string after
+ normalization will be DCB1B2A while we are expecting it to be DCB2B1A.
+
+ This patch reverses the order of the decomposition of RTL characters
+ to
+ work around this issue.
+
+ poppler/TextOutputDev.cc | 4 +++-
+ poppler/UnicodeTypeTable.cc | 20 ++++++++++++++++----
+ poppler/UnicodeTypeTable.h | 7 ++++++-
+ 3 files changed, 25 insertions(+), 6 deletions(-)
+
+commit 67645087477beb618304ea34cbdbafd40b199276
+Author: Khaled Hosny <khaledhosny(a)eglug.org>
+Date: Wed Nov 18 14:47:28 2015 +0400
+
+ Handle right-to-left text in search
+
+ Currently right-to-left text reversal is only done during text
+ dumping,
+ but not during search. This commit applies the same reversal logic
+ during PDF search as well.
+
+ poppler/TextOutputDev.cc | 191
+ ++++++++++++++++++++++++++---------------------
+ 1 file changed, 107 insertions(+), 84 deletions(-)
+
+commit 00422d0c6baaba639fa0660e3a933cdb76b28f88
+Author: Jason Crain <jason(a)aquaticape.us>
+Date: Sun Dec 20 09:54:43 2015 -0600
+
+ cairo: use shape mask with soft mask
+
+ Clear target with the shape mask whether the soft mask is set or not.
+ Propagate the shape up to any higher level groups and destroy the
+ shape pattern when done.
+
+ Fix a memory leak by removing a call to 'cairo_reference
+ (cairo_shape)'.
+ We already keep track of the lifetime of cairo_shape using
+ knockoutCount.
+
+ bug 91931
+
+ poppler/CairoOutputDev.cc | 49
+ ++++++++++++++++++++++-------------------------
+ 1 file changed, 23 insertions(+), 26 deletions(-)
+
+commit bc4cab272e4fe28b836cb2ef1ff672f0d79d243c
+Author: Carlos Garcia Campos <carlosgc(a)gnome.org>
+Date: Sat Jan 2 09:49:27 2016 +0100
+
+ regtest: Fix the number of worker threads spawned reported in log
+ of run-tests command
+
+ regtest/TestRun.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit ea75de614e666d8235c38048585315e0d7ff5522
+Author: Adam Reichold <adam.reichold(a)t-online.de>
+Date: Sat Jan 2 09:48:03 2016 +0100
+
+ regtest: Limit the number of worker threads to the number of documents
+ to create references
+
+ The same way we do for the run-tests command.
+
+ regtest/TestReferences.py | 27 ++++++++++++++++++---------
+ 1 file changed, 18 insertions(+), 9 deletions(-)
+
+commit 25bb59a81de8a1b6dd23fec871a97ccb11fe9d64
+Author: Carlos Garcia Campos <carlosgc(a)gnome.org>
+Date: Fri Jan 1 12:45:42 2016 +0100
+
+ regtest: Allow to interrupt run-tests and create-refs commands when
+ multiple threads are used
+
+ The Queue join implementation uses a non-timed wait that blocks
+ the main
+ thread, making it impossible to interrupt it with CTRL+C or sending
+ SIGINT signal. Using any timeout value for wait would fix the problem,
+ but Queue doesn't allow to pass a timeout to the join method. The
+ Queue implementation is actually quite simple, so we can just add our
+ own implementation with only the things we really need and use
+ a timeout
+ value when calling wait() in join().
+
+ regtest/InterruptibleQueue.py | 68
+ +++++++++++++++++++++++++++++++++++++++++++
+ regtest/TestReferences.py | 4 +--
+ regtest/TestRun.py | 4 +--
+ 3 files changed, 72 insertions(+), 4 deletions(-)
+
+commit ffb3ff633b124c476ab48bbcfce04d7f418df9bc
+Author: Adam Reichold <adam.reichold(a)t-online.de>
+Date: Fri Jan 1 11:32:14 2016 +0100
+
+ regtest: Do not use the log printer with the TestReferences lock held
+
+ regtest/TestReferences.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit e3b09727ad96a03ba1250f49486948899b4df793
+Author: Adam Reichold <adam.reichold(a)t-online.de>
+Date: Fri Dec 25 14:10:03 2015 +0100
+
+ Make detection of version one of OpenJPEG prefer a pkg-config manifest
+ if it exists.
+
+ CMakeLists.txt | 1 -
+ cmake/modules/FindLIBOPENJPEG.cmake | 37
+ +++++++++++++++++++++++--------------
+ 2 files changed, 23 insertions(+), 15 deletions(-)
+
+commit 7c880daecfcddac2f8181d5f3d506dd409812dbe
+Author: Adam Reichold <adam.reichold(a)t-online.de>
+Date: Fri Dec 25 14:10:03 2015 +0100
+
+ Make use of LINK_PRIVATE flag to fix warning on CMake policy 0022.
+
+ CMakeLists.txt | 3 +--
+ cpp/CMakeLists.txt | 3 +--
+ 2 files changed, 2 insertions(+), 4 deletions(-)
+
+commit 4a413b9b95d5c6815c91adb815254cce97dd5b4b
+Author: Adam Reichold <adam.reichold(a)t-online.de>
+Date: Fri Dec 25 14:10:03 2015 +0100
+
+ Make target names for Qt4 and Qt5 builds unique so they can be built
+ at the same time using recent CMake and Ninja versions.
+
+ qt4/tests/CMakeLists.txt | 44 +++++++++++++++++++++---------------------
+ qt5/CMakeLists.txt | 2 ++
+ qt5/demos/CMakeLists.txt | 2 --
+ qt5/src/CMakeLists.txt | 2 --
+ qt5/tests/CMakeLists.txt | 50
+ +++++++++++++++++++++++-------------------------
+ 5 files changed, 48 insertions(+), 52 deletions(-)
+
+commit b3425dd3261679958cd56c0f71995c15d2124433
+Author: Albert Astals Cid <aacid(a)kde.org>
+Date: Tue Dec 22 22:50:33 2015 +0100
+
+ Do not crash on invalid files
+
+ Bug #93476
+
+ poppler/Function.cc | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+commit 5d57c34cbf9288eec6ddb149e905268405c19450
+Author: Pino Toscano <pino(a)kde.org>
+Date: Sun Dec 20 08:42:25 2015 +0100
+
+ typo fix: "occurence" -> "occurrence"
+
+ utils/pdfunite.1 | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
commit 3eee5274abb24d5b5be05262aafe794652cdac35
Author: Albert Astals Cid <aacid(a)kde.org>
Date: Thu Dec 17 00:09:37 2015 +0100
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poppler-0.39.0/NEWS new/poppler-0.40.0/NEWS
--- old/poppler-0.39.0/NEWS 2015-12-17 00:05:13.000000000 +0100
+++ new/poppler-0.40.0/NEWS 2016-01-13 23:17:55.000000000 +0100
@@ -1,3 +1,21 @@
+Release 0.40.0
+ core:
+ * CairoOutputDev: Use shape mask with soft mask. Bug #91931
+ * TextOutputDev: Handle right-to-left text in search
+ * TextOutputDev: Fix finding Arabic Presentation Forms ligatures
+ * Fix crash in invalid file. Bug #93476
+ * Regression test improvements
+
+ utils:
+ * pdftocairo: fix writing to stdout out with image output
+ * pdftocairo: document that -singlefile appends file type. Bug #86254
+ * pdftocairo: ensure surface flushed before accessing image data
+ * pdftocairo: check for invalid use of options. Bug #92195
+ * pdfunite: Fix typo in manual
+
+ build system:
+ * Improve cmake build system
+
Release 0.39.0
core:
* Ignore the alternateSpace and tintTransform. Bug #92381
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poppler-0.39.0/cmake/modules/FindLIBOPENJPEG.cmake new/poppler-0.40.0/cmake/modules/FindLIBOPENJPEG.cmake
--- old/poppler-0.39.0/cmake/modules/FindLIBOPENJPEG.cmake 2015-01-04 20:21:42.000000000 +0100
+++ new/poppler-0.40.0/cmake/modules/FindLIBOPENJPEG.cmake 2016-01-13 23:13:59.000000000 +0100
@@ -23,31 +23,40 @@
set(LIBOPENJPEG_LIBRARIES)
set(LIBOPENJPEG_INCLUDE_DIR)
- find_path (LIBOPENJPEG_INCLUDE_DIR openjpeg.h PATH_SUFFIXES openjpeg)
- find_library(LIBOPENJPEG_LIBRARIES openjpeg)
- if(LIBOPENJPEG_INCLUDE_DIR AND LIBOPENJPEG_LIBRARIES)
+ find_package(PkgConfig REQUIRED)
+ pkg_check_modules(LIBOPENJPEG libopenjpeg)
- set(CMAKE_REQUIRED_INCLUDES ${LIBOPENJPEG_INCLUDE_DIR})
- set(CMAKE_REQUIRED_LIBRARIES ${LIBOPENJPEG_LIBRARIES})
+ if(LIBOPENJPEG_FOUND)
+ add_definitions(-DUSE_OPENJPEG1)
+ set(LIBOPENJPEG_INCLUDE_DIR ${LIBOPENJPEG_INCLUDE_DIRS})
+ else(LIBOPENJPEG_FOUND)
+
+ find_path (LIBOPENJPEG_INCLUDE_DIR openjpeg.h PATH_SUFFIXES openjpeg)
+ find_library(LIBOPENJPEG_LIBRARIES openjpeg)
+ if(LIBOPENJPEG_INCLUDE_DIR AND LIBOPENJPEG_LIBRARIES)
-check_cxx_source_compiles("
+ set(CMAKE_REQUIRED_INCLUDES ${LIBOPENJPEG_INCLUDE_DIR})
+ set(CMAKE_REQUIRED_LIBRARIES ${LIBOPENJPEG_LIBRARIES})
+
+ check_cxx_source_compiles("
#include <openjpeg.h>
int main()
{
int foo = OPJ_DPARAMETERS_IGNORE_PCLR_CMAP_CDEF_FLAG;
return 0;
-}
-" WITH_OPENJPEG_IGNORE_PCLR_CMAP_CDEF_FLAG)
+}"
+ WITH_OPENJPEG_IGNORE_PCLR_CMAP_CDEF_FLAG)
- set(CMAKE_REQUIRED_INCLUDES)
- set(CMAKE_REQUIRED_LIBRARIES)
+ set(CMAKE_REQUIRED_INCLUDES)
+ set(CMAKE_REQUIRED_LIBRARIES)
- set(LIBOPENJPEG_FOUND TRUE)
- endif(LIBOPENJPEG_INCLUDE_DIR AND LIBOPENJPEG_LIBRARIES)
+ set(LIBOPENJPEG_FOUND TRUE)
+ endif(LIBOPENJPEG_INCLUDE_DIR AND LIBOPENJPEG_LIBRARIES)
- include(FindPackageHandleStandardArgs)
- find_package_handle_standard_args(LibOpenJPEG DEFAULT_MSG LIBOPENJPEG_LIBRARIES LIBOPENJPEG_INCLUDE_DIR)
+ include(FindPackageHandleStandardArgs)
+ find_package_handle_standard_args(LibOpenJPEG DEFAULT_MSG LIBOPENJPEG_LIBRARIES LIBOPENJPEG_INCLUDE_DIR)
+ endif (LIBOPENJPEG_FOUND)
endif (LIBOPENJPEG_LIBRARIES AND LIBOPENJPEG_INCLUDE_DIR)
set(LIBOPENJPEG_INCLUDE_DIRS ${LIBOPENJPEG_INCLUDE_DIR})
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poppler-0.39.0/configure new/poppler-0.40.0/configure
--- old/poppler-0.39.0/configure 2015-12-17 00:10:13.000000000 +0100
+++ new/poppler-0.40.0/configure 2016-01-13 23:20:11.000000000 +0100
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for poppler 0.39.0.
+# Generated by GNU Autoconf 2.69 for poppler 0.40.0.
#
# Report bugs to <https://bugs.freedesktop.org/enter_bug.cgi?product=poppler>.
#
@@ -591,8 +591,8 @@
# Identity of this package.
PACKAGE_NAME='poppler'
PACKAGE_TARNAME='poppler'
-PACKAGE_VERSION='0.39.0'
-PACKAGE_STRING='poppler 0.39.0'
+PACKAGE_VERSION='0.40.0'
+PACKAGE_STRING='poppler 0.40.0'
PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=poppler'
PACKAGE_URL=''
@@ -1541,7 +1541,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 poppler 0.39.0 to adapt to many kinds of systems.
+\`configure' configures poppler 0.40.0 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1616,7 +1616,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of poppler 0.39.0:";;
+ short | recursive ) echo "Configuration of poppler 0.40.0:";;
esac
cat <<\_ACEOF
@@ -1836,7 +1836,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-poppler configure 0.39.0
+poppler configure 0.40.0
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2530,7 +2530,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by poppler $as_me 0.39.0, which was
+It was created by poppler $as_me 0.40.0, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -3394,7 +3394,7 @@
# Define the identity of the package.
PACKAGE='poppler'
- VERSION='0.39.0'
+ VERSION='0.40.0'
cat >>confdefs.h <<_ACEOF
@@ -17790,7 +17790,7 @@
cat >>confdefs.h <<_ACEOF
-#define POPPLER_VERSION "0.39.0"
+#define POPPLER_VERSION "0.40.0"
_ACEOF
@@ -25022,11 +25022,11 @@
POPPLER_MAJOR_VERSION=0
-POPPLER_MINOR_VERSION=39
+POPPLER_MINOR_VERSION=40
POPPLER_MICRO_VERSION=0
-POPPLER_VERSION=0.39.0
+POPPLER_VERSION=0.40.0
ac_config_files="$ac_config_files Makefile goo/Makefile fofi/Makefile splash/Makefile poppler/Makefile utils/Makefile glib/Makefile glib/poppler-features.h glib/reference/Makefile glib/reference/version.xml glib/demo/Makefile test/Makefile qt4/Makefile qt4/src/Makefile qt4/tests/Makefile qt4/demos/Makefile qt5/Makefile qt5/src/Makefile qt5/tests/Makefile qt5/demos/Makefile cpp/Makefile cpp/poppler-version.h cpp/tests/Makefile poppler.pc poppler-uninstalled.pc poppler-cairo.pc poppler-cairo-uninstalled.pc poppler-splash.pc poppler-splash-uninstalled.pc poppler-glib.pc poppler-glib-uninstalled.pc poppler-qt4.pc poppler-qt4-uninstalled.pc poppler-qt5.pc poppler-qt5-uninstalled.pc poppler-cpp.pc poppler-cpp-uninstalled.pc"
@@ -25678,7 +25678,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by poppler $as_me 0.39.0, which was
+This file was extended by poppler $as_me 0.40.0, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -25744,7 +25744,7 @@
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-poppler config.status 0.39.0
+poppler config.status 0.40.0
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poppler-0.39.0/configure.ac new/poppler-0.40.0/configure.ac
--- old/poppler-0.39.0/configure.ac 2015-12-17 00:07:03.000000000 +0100
+++ new/poppler-0.40.0/configure.ac 2016-01-13 23:18:09.000000000 +0100
@@ -1,5 +1,5 @@
m4_define([poppler_version_major],[0])
-m4_define([poppler_version_minor],[39])
+m4_define([poppler_version_minor],[40])
m4_define([poppler_version_micro],[0])
m4_define([poppler_version],[poppler_version_major.poppler_version_minor.poppler_version_micro])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poppler-0.39.0/cpp/CMakeLists.txt new/poppler-0.40.0/cpp/CMakeLists.txt
--- old/poppler-0.39.0/cpp/CMakeLists.txt 2015-01-04 22:58:28.000000000 +0100
+++ new/poppler-0.40.0/cpp/CMakeLists.txt 2016-01-13 23:13:59.000000000 +0100
@@ -26,9 +26,8 @@
set_target_properties(poppler-cpp PROPERTIES VERSION 0.2.1 SOVERSION 0)
target_link_libraries(poppler-cpp poppler ${ICONV_LIBRARIES})
if(MSVC)
-target_link_libraries(poppler-cpp ${poppler_LIBS})
+target_link_libraries(poppler-cpp LINK_PRIVATE ${poppler_LIBS})
endif(MSVC)
-target_link_libraries(poppler-cpp LINK_INTERFACE_LIBRARIES "")
install(TARGETS poppler-cpp RUNTIME DESTINATION bin LIBRARY DESTINATION lib${LIB_SUFFIX} ARCHIVE DESTINATION lib${LIB_SUFFIX})
install(FILES
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poppler-0.39.0/cpp/poppler-version.h new/poppler-0.40.0/cpp/poppler-version.h
--- old/poppler-0.39.0/cpp/poppler-version.h 2015-12-17 00:10:19.000000000 +0100
+++ new/poppler-0.40.0/cpp/poppler-version.h 2016-01-13 23:20:17.000000000 +0100
@@ -21,9 +21,9 @@
#include "poppler-global.h"
-#define POPPLER_VERSION "0.39.0"
+#define POPPLER_VERSION "0.40.0"
#define POPPLER_VERSION_MAJOR 0
-#define POPPLER_VERSION_MINOR 39
+#define POPPLER_VERSION_MINOR 40
#define POPPLER_VERSION_MICRO 0
namespace poppler
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poppler-0.39.0/glib/reference/html/index.html new/poppler-0.40.0/glib/reference/html/index.html
--- old/poppler-0.39.0/glib/reference/html/index.html 2015-12-17 00:19:27.000000000 +0100
+++ new/poppler-0.40.0/glib/reference/html/index.html 2016-01-13 23:33:58.000000000 +0100
@@ -15,7 +15,7 @@
<div>
<div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">Poppler Reference Manual</p></th></tr></table></div>
<div><p class="releaseinfo">
- for Poppler 0.39.0
+ for Poppler 0.40.0
</p></div>
</div>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poppler-0.39.0/glib/reference/html/poppler-Version-and-Features-Information.html new/poppler-0.40.0/glib/reference/html/poppler-Version-and-Features-Information.html
--- old/poppler-0.39.0/glib/reference/html/poppler-Version-and-Features-Information.html 2015-12-17 00:19:27.000000000 +0100
+++ new/poppler-0.40.0/glib/reference/html/poppler-Version-and-Features-Information.html 2016-01-13 23:33:58.000000000 +0100
@@ -119,7 +119,7 @@
<hr>
<div class="refsect2">
<a name="POPPLER-MINOR-VERSION:CAPS"></a><h3>POPPLER_MINOR_VERSION</h3>
-<pre class="programlisting">#define POPPLER_MINOR_VERSION (39)
+<pre class="programlisting">#define POPPLER_MINOR_VERSION (40)
</pre>
<p>The major version number of the poppler header files (e.g. in poppler version
0.1.2 this is 1.)</p>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poppler-0.39.0/glib/reference/version.xml new/poppler-0.40.0/glib/reference/version.xml
--- old/poppler-0.39.0/glib/reference/version.xml 2015-12-17 00:10:19.000000000 +0100
+++ new/poppler-0.40.0/glib/reference/version.xml 2016-01-13 23:20:17.000000000 +0100
@@ -1 +1 @@
-0.39.0
+0.40.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poppler-0.39.0/poppler/CairoOutputDev.cc new/poppler-0.40.0/poppler/CairoOutputDev.cc
--- old/poppler-0.39.0/poppler/CairoOutputDev.cc 2015-12-16 23:59:30.000000000 +0100
+++ new/poppler-0.40.0/poppler/CairoOutputDev.cc 2016-01-13 23:13:59.000000000 +0100
@@ -1597,8 +1597,6 @@
cairo_get_matrix (cairo, &matrix);
//printMatrix(&matrix);
cairo_set_matrix (cairo_shape, &matrix);
- } else {
- cairo_reference (cairo_shape);
}
}
if (groupColorSpaceStack->next && groupColorSpaceStack->next->knockout) {
@@ -1638,33 +1636,22 @@
cairo_save (cairo);
cairo_set_matrix (cairo, &groupColorSpaceStack->group_matrix);
+
+ if (shape) {
+ /* OPERATOR_SOURCE w/ a mask is defined as (src IN mask) ADD (dest OUT mask)
+ * however our source has already been clipped to mask so we only need to
+ * do ADD and OUT */
+
+ /* clear the shape mask */
+ cairo_set_source (cairo, shape);
+ cairo_set_operator (cairo, CAIRO_OPERATOR_DEST_OUT);
+ cairo_paint (cairo);
+ cairo_set_operator (cairo, CAIRO_OPERATOR_ADD);
+ }
cairo_set_source (cairo, group);
if (!mask) {
- //XXX: deal with mask && shape case
- if (shape) {
- cairo_save (cairo);
-
- /* OPERATOR_SOURCE w/ a mask is defined as (src IN mask) ADD (dest OUT mask)
- * however our source has already been clipped to mask so we only need to
- * do ADD and OUT */
-
- /* clear the shape mask */
- cairo_set_source (cairo, shape);
- cairo_set_operator (cairo, CAIRO_OPERATOR_DEST_OUT);
- cairo_paint (cairo);
-
- cairo_set_operator (cairo, CAIRO_OPERATOR_ADD);
- cairo_set_source (cairo, group);
- cairo_paint (cairo);
-
- cairo_restore (cairo);
-
- cairo_pattern_destroy (shape);
- shape = NULL;
- } else {
- cairo_paint_with_alpha (cairo, fill_opacity);
- }
+ cairo_paint_with_alpha (cairo, fill_opacity);
cairo_status_t status = cairo_status(cairo);
if (status)
printf("BAD status: %s\n", cairo_status_to_string(status));
@@ -1684,6 +1671,16 @@
mask = NULL;
}
+ if (shape) {
+ if (cairo_shape) {
+ cairo_set_source (cairo_shape, shape);
+ cairo_paint (cairo_shape);
+ cairo_set_source_rgb (cairo_shape, 0, 0, 0);
+ }
+ cairo_pattern_destroy (shape);
+ shape = NULL;
+ }
+
popTransparencyGroup();
cairo_restore(cairo);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poppler-0.39.0/poppler/Function.cc new/poppler-0.40.0/poppler/Function.cc
--- old/poppler-0.39.0/poppler/Function.cc 2014-10-01 22:38:58.000000000 +0200
+++ new/poppler-0.40.0/poppler/Function.cc 2016-01-13 23:14:11.000000000 +0100
@@ -13,7 +13,7 @@
// All changes made under the Poppler project to this file are licensed
// under GPL version 2 or later
//
-// Copyright (C) 2006, 2008-2010, 2013, 2014 Albert Astals Cid <aacid(a)kde.org>
+// Copyright (C) 2006, 2008-2010, 2013-2015 Albert Astals Cid <aacid(a)kde.org>
// Copyright (C) 2006 Jeff Muizelaar <jeff(a)infidigm.net>
// Copyright (C) 2010 Christian Feuers�nger <cfeuersaenger(a)googlemail.com>
// Copyright (C) 2011 Andrea Canciani <ranma42(a)gmail.com>
@@ -577,6 +577,10 @@
goto err2;
}
n = obj1.arrayGetLength();
+ if (unlikely(n > funcMaxOutputs)) {
+ error(errSyntaxError, -1, "Function's C0 array is wrong length");
+ n = funcMaxOutputs;
+ }
for (i = 0; i < n; ++i) {
obj1.arrayGet(i, &obj2);
if (!obj2.isNum()) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poppler-0.39.0/poppler/TextOutputDev.cc new/poppler-0.40.0/poppler/TextOutputDev.cc
--- old/poppler-0.39.0/poppler/TextOutputDev.cc 2015-11-15 22:05:22.000000000 +0100
+++ new/poppler-0.40.0/poppler/TextOutputDev.cc 2016-01-13 23:13:59.000000000 +0100
@@ -35,6 +35,7 @@
// Copyright (C) 2013 José Aliste <jaliste(a)src.gnome.org>
// Copyright (C) 2013 Thomas Freitag <Thomas.Freitag(a)alfa.de>
// Copyright (C) 2013 Ed Catmur <ed(a)catmur.co.uk>
+// Copyright (C) 2016 Khaled Hosny <khaledhosny(a)eglug.org>
//
// To see a description of the changes please see the Changelog file that
// came with your tarball or type make ChangeLog if you are building from git
@@ -178,6 +179,94 @@
#define combMaxMidDelta 0.3
#define combMaxBaseDelta 0.4
+static int reorderText(Unicode *text, int len, UnicodeMap *uMap, GBool primaryLR, GooString *s, Unicode* u) {
+ char lre[8], rle[8], popdf[8], buf[8];
+ int lreLen = 0, rleLen = 0, popdfLen = 0, n;
+ int nCols, i, j, k;
+
+ nCols = 0;
+
+ if (s) {
+ lreLen = uMap->mapUnicode(0x202a, lre, sizeof(lre));
+ rleLen = uMap->mapUnicode(0x202b, rle, sizeof(rle));
+ popdfLen = uMap->mapUnicode(0x202c, popdf, sizeof(popdf));
+ }
+
+ if (primaryLR) {
+ i = 0;
+ while (i < len) {
+ // output a left-to-right section
+ for (j = i; j < len && !unicodeTypeR(text[j]); ++j) ;
+ for (k = i; k < j; ++k) {
+ if (s) {
+ n = uMap->mapUnicode(text[k], buf, sizeof(buf));
+ s->append(buf, n);
+ }
+ if (u) u[nCols] = text[k];
+ ++nCols;
+ }
+ i = j;
+ // output a right-to-left section
+ for (j = i;
+ j < len && !(unicodeTypeL(text[j]) || unicodeTypeNum(text[j]));
+ ++j) ;
+ if (j > i) {
+ if (s) s->append(rle, rleLen);
+ for (k = j - 1; k >= i; --k) {
+ if (s) {
+ n = uMap->mapUnicode(text[k], buf, sizeof(buf));
+ s->append(buf, n);
+ }
+ if (u) u[nCols] = text[k];
+ ++nCols;
+ }
+ if (s) s->append(popdf, popdfLen);
+ i = j;
+ }
+ }
+ } else {
+ // Note: This code treats numeric characters (European and
+ // Arabic/Indic) as left-to-right, which isn't strictly correct
+ // (incurs extra LRE/POPDF pairs), but does produce correct
+ // visual formatting.
+ if (s) s->append(rle, rleLen);
+ i = len - 1;
+ while (i >= 0) {
+ // output a right-to-left section
+ for (j = i;
+ j >= 0 && !(unicodeTypeL(text[j]) || unicodeTypeNum(text[j]));
+ --j) ;
+ for (k = i; k > j; --k) {
+ if (s) {
+ n = uMap->mapUnicode(text[k], buf, sizeof(buf));
+ s->append(buf, n);
+ }
+ if (u) u[nCols] = text[k];
+ ++nCols;
+ }
+ i = j;
+ // output a left-to-right section
+ for (j = i; j >= 0 && !unicodeTypeR(text[j]); --j) ;
+ if (j < i) {
+ if (s) s->append(lre, lreLen);
+ for (k = j + 1; k <= i; ++k) {
+ if (s) {
+ n = uMap->mapUnicode(text[k], buf, sizeof(buf));
+ s->append(buf, n);
+ }
+ if (u) u[nCols] = text[k];
+ ++nCols;
+ }
+ if (s) s->append(popdf, popdfLen);
+ i = j;
+ }
+ }
+ if (s) s->append(popdf, popdfLen);
+ }
+
+ return nCols;
+}
+
//------------------------------------------------------------------------
// TextUnderline
//------------------------------------------------------------------------
@@ -3720,7 +3809,7 @@
double *xMax, double *yMax) {
TextBlock *blk;
TextLine *line;
- Unicode *s2, *txt;
+ Unicode *s2, *txt, *reordered;
Unicode *p;
int txtSize, m, i, j, k;
double xStart, yStart, xStop, yStop;
@@ -3728,20 +3817,23 @@
double xMin1, yMin1, xMax1, yMax1;
GBool found;
- //~ needs to handle right-to-left text
if (rawOrder) {
return gFalse;
}
+ // handle right-to-left text
+ reordered = (Unicode*)gmallocn(len, sizeof(Unicode));
+ reorderText(s, len, NULL, primaryLR, NULL, reordered);
+
+ // normalize the search string
+ s2 = unicodeNormalizeNFKC(reordered, len, &len, NULL);
+
// convert the search string to uppercase
if (!caseSensitive) {
- s2 = unicodeNormalizeNFKC(s, len, &len, NULL);
for (i = 0; i < len; ++i) {
s2[i] = unicodeToUpper(s2[i]);
}
- } else {
- s2 = unicodeNormalizeNFKC(s, len, &len, NULL);
}
txt = NULL;
@@ -3809,7 +3901,8 @@
if (!line->normalized)
line->normalized = unicodeNormalizeNFKC(line->text, line->len,
&line->normalized_len,
- &line->normalized_idx);
+ &line->normalized_idx,
+ true);
// convert the line to uppercase
m = line->normalized_len;
if (!caseSensitive) {
@@ -3915,6 +4008,7 @@
}
gfree(s2);
+ gfree(reordered);
if (!caseSensitive) {
gfree(txt);
}
@@ -5330,91 +5424,22 @@
int TextPage::dumpFragment(Unicode *text, int len, UnicodeMap *uMap,
GooString *s) {
- char lre[8], rle[8], popdf[8], buf[8];
- int lreLen, rleLen, popdfLen, n;
- int nCols, i, j, k;
-
- nCols = 0;
-
if (uMap->isUnicode()) {
+ return reorderText(text, len, uMap, primaryLR, s, NULL);
+ } else {
+ int nCols = 0;
- lreLen = uMap->mapUnicode(0x202a, lre, sizeof(lre));
- rleLen = uMap->mapUnicode(0x202b, rle, sizeof(rle));
- popdfLen = uMap->mapUnicode(0x202c, popdf, sizeof(popdf));
-
- if (primaryLR) {
-
- i = 0;
- while (i < len) {
- // output a left-to-right section
- for (j = i; j < len && !unicodeTypeR(text[j]); ++j) ;
- for (k = i; k < j; ++k) {
- n = uMap->mapUnicode(text[k], buf, sizeof(buf));
- s->append(buf, n);
- ++nCols;
- }
- i = j;
- // output a right-to-left section
- for (j = i;
- j < len && !(unicodeTypeL(text[j]) || unicodeTypeNum(text[j]));
- ++j) ;
- if (j > i) {
- s->append(rle, rleLen);
- for (k = j - 1; k >= i; --k) {
- n = uMap->mapUnicode(text[k], buf, sizeof(buf));
- s->append(buf, n);
- ++nCols;
- }
- s->append(popdf, popdfLen);
- i = j;
- }
- }
-
- } else {
-
- // Note: This code treats numeric characters (European and
- // Arabic/Indic) as left-to-right, which isn't strictly correct
- // (incurs extra LRE/POPDF pairs), but does produce correct
- // visual formatting.
- s->append(rle, rleLen);
- i = len - 1;
- while (i >= 0) {
- // output a right-to-left section
- for (j = i;
- j >= 0 && !(unicodeTypeL(text[j]) || unicodeTypeNum(text[j]));
- --j) ;
- for (k = i; k > j; --k) {
- n = uMap->mapUnicode(text[k], buf, sizeof(buf));
- s->append(buf, n);
- ++nCols;
- }
- i = j;
- // output a left-to-right section
- for (j = i; j >= 0 && !unicodeTypeR(text[j]); --j) ;
- if (j < i) {
- s->append(lre, lreLen);
- for (k = j + 1; k <= i; ++k) {
- n = uMap->mapUnicode(text[k], buf, sizeof(buf));
- s->append(buf, n);
- ++nCols;
- }
- s->append(popdf, popdfLen);
- i = j;
- }
- }
- s->append(popdf, popdfLen);
+ char buf[8];
+ int buflen = 0;
+ for (int i = 0; i < len; ++i) {
+ buflen = uMap->mapUnicode(text[i], buf, sizeof(buf));
+ s->append(buf, buflen);
+ nCols += buflen;
}
- } else {
- for (i = 0; i < len; ++i) {
- n = uMap->mapUnicode(text[i], buf, sizeof(buf));
- s->append(buf, n);
- nCols += n;
- }
+ return nCols;
}
-
- return nCols;
}
#if TEXTOUT_WORD_LIST
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poppler-0.39.0/poppler/UnicodeTypeTable.cc new/poppler-0.40.0/poppler/UnicodeTypeTable.cc
--- old/poppler-0.39.0/poppler/UnicodeTypeTable.cc 2014-02-09 16:10:33.000000000 +0100
+++ new/poppler-0.40.0/poppler/UnicodeTypeTable.cc 2016-01-13 23:13:59.000000000 +0100
@@ -17,6 +17,7 @@
// Copyright (C) 2007 Jeff Muizelaar <jeff(a)infidigm.net>
// Copyright (C) 2008 Albert Astals Cid <aacid(a)kde.org>
// Copyright (C) 2012 Adrian Johnson <ajohnson(a)redneon.com>
+// Copyright (C) 2016 Khaled Hosny <khaledhosny(a)eglug.org>
//
// To see a description of the changes please see the Changelog file that
// came with your tarball or type make ChangeLog if you are building from git
@@ -1015,7 +1016,9 @@
// of characters written. @buf may be NULL, in which case the length of the
// decomposition is returned but nothing is written. If @u is its own
// decomposition, write @u into @buf and return 1.
-static int decomp_compat(Unicode u, Unicode *buf) {
+// If reverseRTL is true, then decompositions of RTL characters will be output
+// in reverse order.
+static int decomp_compat(Unicode u, Unicode *buf, GBool reverseRTL = false) {
// decomposition tables stored as lists {character, decomp_length, offset}
// so we do a binary search
int start = 0, end = DECOMP_TABLE_LENGTH;
@@ -1031,7 +1034,10 @@
int length = decomp_table[midpoint].length, i;
if (buf)
for (i = 0; i < length; ++i)
- buf[i] = decomp_expansion[offset + i];
+ if (unicodeTypeR(u) && reverseRTL)
+ buf[i] = decomp_expansion[offset + length - i - 1];
+ else
+ buf[i] = decomp_expansion[offset + i];
return length;
}
} else if (midpoint == start)
@@ -1125,8 +1131,14 @@
// for each character in the normalized string giving the index in @in of the
// corresponding unnormalized character. @indices is not guaranteed monotone or
// onto.
-Unicode *unicodeNormalizeNFKC(Unicode *in, int len,
+Unicode *unicodeNormalizeNFKC(Unicode *in, int len,
int *out_len, int **indices) {
+ return unicodeNormalizeNFKC(in, len, out_len, indices, false);
+}
+
+Unicode *unicodeNormalizeNFKC(Unicode *in, int len,
+ int *out_len, int **indices,
+ GBool reverseRTL) {
Unicode *out;
int i, o, *classes, *idx = NULL;
@@ -1174,7 +1186,7 @@
u = in[j];
if (j != i && COMBINING_CLASS(u) == 0)
break;
- dlen = decomp_compat(u, out + p);
+ dlen = decomp_compat(u, out + p, reverseRTL);
for (q = p; q < p + dlen; ++q) {
classes[q] = COMBINING_CLASS(out[q]);
if (indices)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poppler-0.39.0/poppler/UnicodeTypeTable.h new/poppler-0.40.0/poppler/UnicodeTypeTable.h
--- old/poppler-0.39.0/poppler/UnicodeTypeTable.h 2014-02-09 16:10:33.000000000 +0100
+++ new/poppler-0.40.0/poppler/UnicodeTypeTable.h 2016-01-13 23:13:59.000000000 +0100
@@ -15,6 +15,7 @@
//
// Copyright (C) 2006 Ed Catmur <ed(a)catmur.co.uk>
// Copyright (C) 2012 Adrian Johnson <ajohnson(a)redneon.com>
+// Copyright (C) 2016 Khaled Hosny <khaledhosny(a)eglug.org>
//
// To see a description of the changes please see the Changelog file that
// came with your tarball or type make ChangeLog if you are building from git
@@ -38,7 +39,11 @@
extern Unicode unicodeToUpper(Unicode c);
-extern Unicode *unicodeNormalizeNFKC(Unicode *in, int len,
+extern Unicode *unicodeNormalizeNFKC(Unicode *in, int len,
int *out_len, int **offsets);
+extern Unicode *unicodeNormalizeNFKC(Unicode *in, int len,
+ int *out_len, int **offsets,
+ GBool reverseRTL);
+
#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poppler-0.39.0/poppler/poppler-config.h.cmake new/poppler-0.40.0/poppler/poppler-config.h.cmake
--- old/poppler-0.39.0/poppler/poppler-config.h.cmake 2015-10-05 16:04:39.000000000 +0200
+++ new/poppler-0.40.0/poppler/poppler-config.h.cmake 2016-01-13 23:13:59.000000000 +0100
@@ -134,7 +134,7 @@
//------------------------------------------------------------------------
// copyright notice
-#define popplerCopyright "Copyright 2005-2015 The Poppler Developers - http://poppler.freedesktop.org"
+#define popplerCopyright "Copyright 2005-2016 The Poppler Developers - http://poppler.freedesktop.org"
#define xpdfCopyright "Copyright 1996-2011 Glyph & Cog, LLC"
//------------------------------------------------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poppler-0.39.0/poppler/poppler-config.h.in new/poppler-0.40.0/poppler/poppler-config.h.in
--- old/poppler-0.39.0/poppler/poppler-config.h.in 2015-01-04 23:11:09.000000000 +0100
+++ new/poppler-0.40.0/poppler/poppler-config.h.in 2016-01-13 23:13:59.000000000 +0100
@@ -134,7 +134,7 @@
//------------------------------------------------------------------------
// copyright notice
-#define popplerCopyright "Copyright 2005-2015 The Poppler Developers - http://poppler.freedesktop.org"
+#define popplerCopyright "Copyright 2005-2016 The Poppler Developers - http://poppler.freedesktop.org"
#define xpdfCopyright "Copyright 1996-2011 Glyph & Cog, LLC"
//------------------------------------------------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poppler-0.39.0/qt4/tests/CMakeLists.txt new/poppler-0.40.0/qt4/tests/CMakeLists.txt
--- old/poppler-0.39.0/qt4/tests/CMakeLists.txt 2014-03-21 23:13:45.000000000 +0100
+++ new/poppler-0.40.0/qt4/tests/CMakeLists.txt 2016-01-13 23:13:59.000000000 +0100
@@ -38,30 +38,30 @@
qt4_add_simpletest(test-poppler-qt4 test-poppler-qt4.cpp)
qt4_add_simpletest(test-password-qt4 test-password-qt4.cpp)
-qt4_add_simpletest(test-render-to-file test-render-to-file.cpp)
-qt4_add_simpletest(poppler-forms poppler-forms.cpp)
-qt4_add_simpletest(poppler-fonts poppler-fonts.cpp)
-qt4_add_simpletest(poppler_attachments poppler-attachments.cpp)
+qt4_add_simpletest(test-render-to-file-qt4 test-render-to-file.cpp)
+qt4_add_simpletest(poppler-qt4-forms poppler-forms.cpp)
+qt4_add_simpletest(poppler-qt4-fonts poppler-fonts.cpp)
+qt4_add_simpletest(poppler-qt4-attachments poppler-attachments.cpp)
qt4_add_simpletest(stress-poppler-qt4 stress-poppler-qt4.cpp)
-qt4_add_simpletest(stress-poppler-dir stress-poppler-dir.cpp)
+qt4_add_simpletest(stress-poppler-dir-qt4 stress-poppler-dir.cpp)
qt4_add_simpletest(stress-threads-qt4 stress-threads-qt4.cpp)
-qt4_add_simpletest(poppler-texts poppler-texts.cpp)
+qt4_add_simpletest(poppler-qt4-texts poppler-texts.cpp)
-qt4_add_qtest(check_attachments check_attachments.cpp)
-qt4_add_qtest(check_dateConversion check_dateConversion.cpp)
-qt4_add_qtest(check_fonts check_fonts.cpp)
-qt4_add_qtest(check_links check_links.cpp)
-qt4_add_qtest(check_metadata check_metadata.cpp)
-qt4_add_qtest(check_optcontent check_optcontent.cpp)
-qt4_add_qtest(check_pagelayout check_pagelayout.cpp)
-qt4_add_qtest(check_pagemode check_pagemode.cpp)
-qt4_add_qtest(check_password check_password.cpp)
-qt4_add_qtest(check_permissions check_permissions.cpp)
-qt4_add_qtest(check_search check_search.cpp)
-qt4_add_qtest(check_actualtext check_actualtext.cpp)
-qt4_add_qtest(check_lexer check_lexer.cpp)
-qt4_add_qtest(check_pagelabelinfo check_pagelabelinfo.cpp)
-qt4_add_qtest(check_goostring check_goostring.cpp)
+qt4_add_qtest(check_qt4_attachments check_attachments.cpp)
+qt4_add_qtest(check_qt4_dateConversion check_dateConversion.cpp)
+qt4_add_qtest(check_qt4_fonts check_fonts.cpp)
+qt4_add_qtest(check_qt4_links check_links.cpp)
+qt4_add_qtest(check_qt4_metadata check_metadata.cpp)
+qt4_add_qtest(check_qt4_optcontent check_optcontent.cpp)
+qt4_add_qtest(check_qt4_pagelayout check_pagelayout.cpp)
+qt4_add_qtest(check_qt4_pagemode check_pagemode.cpp)
+qt4_add_qtest(check_qt4_password check_password.cpp)
+qt4_add_qtest(check_qt4_permissions check_permissions.cpp)
+qt4_add_qtest(check_qt4_search check_search.cpp)
+qt4_add_qtest(check_qt4_actualtext check_actualtext.cpp)
+qt4_add_qtest(check_qt4_lexer check_lexer.cpp)
+qt4_add_qtest(check_qt4_pagelabelinfo check_pagelabelinfo.cpp)
+qt4_add_qtest(check_qt4_goostring check_goostring.cpp)
if (NOT WIN32)
- qt4_add_qtest(check_strings check_strings.cpp)
+ qt4_add_qtest(check_qt4_strings check_strings.cpp)
endif (NOT WIN32)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poppler-0.39.0/qt5/CMakeLists.txt new/poppler-0.40.0/qt5/CMakeLists.txt
--- old/poppler-0.39.0/qt5/CMakeLists.txt 2015-07-10 22:10:25.000000000 +0200
+++ new/poppler-0.40.0/qt5/CMakeLists.txt 2016-01-13 23:13:59.000000000 +0100
@@ -1,3 +1,5 @@
+set(CMAKE_AUTOMOC ON)
+
add_subdirectory(src)
add_subdirectory(tests)
add_subdirectory(demos)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poppler-0.39.0/qt5/demos/CMakeLists.txt new/poppler-0.40.0/qt5/demos/CMakeLists.txt
--- old/poppler-0.39.0/qt5/demos/CMakeLists.txt 2014-02-09 16:10:33.000000000 +0100
+++ new/poppler-0.40.0/qt5/demos/CMakeLists.txt 2016-01-13 23:13:59.000000000 +0100
@@ -1,5 +1,3 @@
-set(CMAKE_AUTOMOC ON)
-
add_definitions(${QT5_DEFINITIONS})
add_definitions(${Qt5Core_DEFINITIONS})
add_definitions(${Qt5Gui_DEFINITIONS})
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poppler-0.39.0/qt5/src/CMakeLists.txt new/poppler-0.40.0/qt5/src/CMakeLists.txt
--- old/poppler-0.39.0/qt5/src/CMakeLists.txt 2015-10-28 23:11:50.000000000 +0100
+++ new/poppler-0.40.0/qt5/src/CMakeLists.txt 2016-01-13 23:13:59.000000000 +0100
@@ -1,8 +1,6 @@
add_definitions(${QT5_DEFINITIONS})
add_definitions(${Qt5Core_DEFINITIONS})
-set(CMAKE_AUTOMOC ON)
-
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}
${Qt5Core_INCLUDE_DIRS}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poppler-0.39.0/qt5/tests/CMakeLists.txt new/poppler-0.40.0/qt5/tests/CMakeLists.txt
--- old/poppler-0.39.0/qt5/tests/CMakeLists.txt 2015-07-12 23:20:18.000000000 +0200
+++ new/poppler-0.40.0/qt5/tests/CMakeLists.txt 2016-01-13 23:13:59.000000000 +0100
@@ -1,5 +1,3 @@
-set(CMAKE_AUTOMOC ON)
-
add_definitions(${Qt5Core_DEFINITIONS})
add_definitions(-DTESTDATADIR=\"${TESTDATADIR}\")
@@ -37,9 +35,9 @@
${source}
)
poppler_add_unittest(${exe} BUILD_QT5_TESTS ${${test_name}_SOURCES})
- target_link_libraries(${exe} poppler-qt5 ${Qt5Widgets_LIBRARIES} ${Qt5Test_LIBRARIES} ${Qt5Core_LIBRARIES} ${Qt5Gui_LIBRARIES})
+ target_link_libraries(${exe} poppler-qt5 ${Qt5Widgets_LIBRARIES} ${Qt5Test_LIBRARIES} ${Qt5Core_LIBRARIES} ${Qt5Gui_LIBRARIES})
if(MSVC)
- target_link_libraries(${exe} poppler ${poppler_LIBS})
+ target_link_libraries(${exe} poppler ${poppler_LIBS})
endif(MSVC)
endif (Qt5Test_FOUND)
endmacro(QT5_ADD_QTEST)
@@ -47,30 +45,30 @@
qt5_add_simpletest(test-poppler-qt5 test-poppler-qt5.cpp)
qt5_add_simpletest(test-password-qt5 test-password-qt5.cpp)
-qt5_add_simpletest(test-render-to-file test-render-to-file.cpp)
-qt5_add_simpletest(poppler-forms poppler-forms.cpp)
-qt5_add_simpletest(poppler-fonts poppler-fonts.cpp)
-qt5_add_simpletest(poppler_attachments poppler-attachments.cpp)
+qt5_add_simpletest(test-render-to-file-qt5 test-render-to-file.cpp)
+qt5_add_simpletest(poppler-qt5-forms poppler-forms.cpp)
+qt5_add_simpletest(poppler-qt5-fonts poppler-fonts.cpp)
+qt5_add_simpletest(poppler-qt5-attachments poppler-attachments.cpp)
qt5_add_simpletest(stress-poppler-qt5 stress-poppler-qt5.cpp)
-qt5_add_simpletest(stress-poppler-dir stress-poppler-dir.cpp)
+qt5_add_simpletest(stress-poppler-dir-qt5 stress-poppler-dir.cpp)
qt5_add_simpletest(stress-threads-qt5 stress-threads-qt5.cpp)
-qt5_add_simpletest(poppler-texts poppler-texts.cpp)
+qt5_add_simpletest(poppler-qt5-texts poppler-texts.cpp)
-qt5_add_qtest(check_attachments check_attachments.cpp)
-qt5_add_qtest(check_dateConversion check_dateConversion.cpp)
-qt5_add_qtest(check_fonts check_fonts.cpp)
-qt5_add_qtest(check_links check_links.cpp)
-qt5_add_qtest(check_metadata check_metadata.cpp)
-qt5_add_qtest(check_optcontent check_optcontent.cpp)
-qt5_add_qtest(check_pagelayout check_pagelayout.cpp)
-qt5_add_qtest(check_pagemode check_pagemode.cpp)
-qt5_add_qtest(check_password check_password.cpp)
-qt5_add_qtest(check_permissions check_permissions.cpp)
-qt5_add_qtest(check_search check_search.cpp)
-qt5_add_qtest(check_actualtext check_actualtext.cpp)
-qt5_add_qtest(check_lexer check_lexer.cpp)
-qt5_add_qtest(check_pagelabelinfo check_pagelabelinfo.cpp)
-qt5_add_qtest(check_goostring check_goostring.cpp)
+qt5_add_qtest(check_qt5_attachments check_attachments.cpp)
+qt5_add_qtest(check_qt5_dateConversion check_dateConversion.cpp)
+qt5_add_qtest(check_qt5_fonts check_fonts.cpp)
+qt5_add_qtest(check_qt5_links check_links.cpp)
+qt5_add_qtest(check_qt5_metadata check_metadata.cpp)
+qt5_add_qtest(check_qt5_optcontent check_optcontent.cpp)
+qt5_add_qtest(check_qt5_pagelayout check_pagelayout.cpp)
+qt5_add_qtest(check_qt5_pagemode check_pagemode.cpp)
+qt5_add_qtest(check_qt5_password check_password.cpp)
+qt5_add_qtest(check_qt5_permissions check_permissions.cpp)
+qt5_add_qtest(check_qt5_search check_search.cpp)
+qt5_add_qtest(check_qt5_actualtext check_actualtext.cpp)
+qt5_add_qtest(check_qt5_lexer check_lexer.cpp)
+qt5_add_qtest(check_qt5_pagelabelinfo check_pagelabelinfo.cpp)
+qt5_add_qtest(check_qt5_goostring check_goostring.cpp)
if (NOT WIN32)
- qt5_add_qtest(check_strings check_strings.cpp)
+ qt5_add_qtest(check_qt5_strings check_strings.cpp)
endif (NOT WIN32)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poppler-0.39.0/utils/pdftocairo.1 new/poppler-0.40.0/utils/pdftocairo.1
--- old/poppler-0.39.0/utils/pdftocairo.1 2014-10-26 23:00:59.000000000 +0100
+++ new/poppler-0.40.0/utils/pdftocairo.1 2016-01-13 23:13:59.000000000 +0100
@@ -1,4 +1,4 @@
-.TH pdftoppm 1
+.TH pdftocairo 1
.SH NAME
pdftocairo \- Portable Document Format (PDF) to PNG/JPEG/TIFF/PDF/PS/EPS/SVG using cairo
.SH SYNOPSIS
@@ -32,9 +32,10 @@
and writes to
.IR output-file .
The image formats (PNG, JPEG, and TIFF) generate one file per page with the page number and file type appended to
-.IR output-file
-(except when \-singlefile is used).
-When the output format is a vector format (PDF, PS, EPS, and SVG) or when \-singlefile is used,
+.IR output-file .
+qWhen \-singlefile is used with the image formats, the file type is appended to
+.IR output-file .
+When the output format is a vector format (PDF, PS, EPS, and SVG),
.IR output-file
is the full filename.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poppler-0.39.0/utils/pdftocairo.cc new/poppler-0.40.0/utils/pdftocairo.cc
--- old/poppler-0.39.0/utils/pdftocairo.cc 2015-12-16 23:58:58.000000000 +0100
+++ new/poppler-0.40.0/utils/pdftocairo.cc 2016-01-13 23:14:26.000000000 +0100
@@ -19,7 +19,7 @@
// Copyright (C) 2009 Shen Liang <shenzhuxi(a)gmail.com>
// Copyright (C) 2009 Stefan Thomas <thomas(a)eload24.com>
// Copyright (C) 2009, 2010 Albert Astals Cid <aacid(a)kde.org>
-// Copyright (C) 2010, 2011-2015 Adrian Johnson <ajohnson(a)redneon.com>
+// Copyright (C) 2010, 2011-2016 Adrian Johnson <ajohnson(a)redneon.com>
// Copyright (C) 2010, 2014 Hib Eris <hib(a)hiberis.nl>
// Copyright (C) 2010 Jonathan Liu <net147(a)gmail.com>
// Copyright (C) 2010 William Bader <williambader(a)hotmail.com>
@@ -351,6 +351,7 @@
height = cairo_image_surface_get_height(surface);
width = cairo_image_surface_get_width(surface);
stride = cairo_image_surface_get_stride(surface);
+ cairo_surface_flush(surface);
data = cairo_image_surface_get_data(surface);
if (!writer->init(file, width, height, x_resolution, y_resolution)) {
@@ -725,12 +726,14 @@
snprintf(buf, sizeof(buf), "-%0*d", numDigits, page);
imageName->append(buf);
}
- if (png)
- imageName->append(".png");
- else if (jpeg)
- imageName->append(".jpg");
- else if (tiff)
- imageName->append(".tif");
+ if (outputFileName->cmp("fd://0") != 0) {
+ if (png)
+ imageName->append(".png");
+ else if (jpeg)
+ imageName->append(".jpg");
+ else if (tiff)
+ imageName->append(".tif");
+ }
return imageName;
}
@@ -832,8 +835,10 @@
int num_outputs;
// parse args
- if (!parseArgs(argDesc, &argc, argv))
+ if (!parseArgs(argDesc, &argc, argv)) {
+ printUsage("pdftocairo", 0, argDesc);
exit(99);
+ }
if ( resolution != 0.0 &&
(x_resolution == 150.0 ||
@@ -883,6 +888,9 @@
checkInvalidPrintOption(icc.getCString()[0], "-icc");
checkInvalidPrintOption(singleFile, "-singlefile");
checkInvalidPrintOption(useCropBox, "-cropbox");
+ checkInvalidPrintOption(scaleTo != 0, "-scale-to");
+ checkInvalidPrintOption(x_scaleTo != 0, "-scale-to-x");
+ checkInvalidPrintOption(y_scaleTo != 0, "-scale-to-y");
} else {
checkInvalidImageOption(level2, "-level2");
checkInvalidImageOption(level3, "-level3");
@@ -937,6 +945,11 @@
exit(99);
}
+ if ((paperWidth > 0 && paperHeight <= 0) || (paperWidth <= 0 && paperHeight > 0)) {
+ fprintf(stderr, "Error: both -paperw and -paperh must be specified.\n");
+ exit(99);
+ }
+
if (paperSize[0]) {
if (origPageSizes) {
fprintf(stderr, "Error: -origpagesizes and -paper may not be used together.\n");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poppler-0.39.0/utils/pdfunite.1 new/poppler-0.40.0/utils/pdfunite.1
--- old/poppler-0.39.0/utils/pdfunite.1 2014-08-12 17:21:24.000000000 +0200
+++ new/poppler-0.40.0/utils/pdfunite.1 2016-01-13 23:13:59.000000000 +0100
@@ -8,7 +8,7 @@
.I PDF-sourcefile1..PDF-sourcefilen PDF-destfile
.SH DESCRIPTION
.B pdfunite
-merges several PDF (Portable Document Format) files in order of their occurence on command line to one PDF result file.
+merges several PDF (Portable Document Format) files in order of their occurrence on command line to one PDF result file.
.TP
Neither of the PDF-sourcefile1 to PDF-sourcefilen should be encrypted.
.SH OPTIONS
1
0
Hello community,
here is the log from the commit of package opus for openSUSE:Factory checked in at 2016-01-23 01:14:34
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/opus (Old)
and /work/SRC/openSUSE:Factory/.opus.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "opus"
Changes:
--------
--- /work/SRC/openSUSE:Factory/opus/opus.changes 2015-12-09 19:32:47.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.opus.new/opus.changes 2016-01-23 01:14:35.000000000 +0100
@@ -1,0 +2,11 @@
+Tue Jan 19 13:24:17 UTC 2016 - idonmez(a)suse.com
+
+- Update to version 1.1.2, fixes the following bugs:
+ + Resetting the encoder or decoder state with OPUS_RESET_STATE
+ would disable some run-time selected architecture-specific
+ optimizations.
+ + In hybrid mode discontinuous transmission (DTX) operation,
+ the comfort noise above 8 kHz was incorrectly estimated
+ and could oscillate in time.
+
+-------------------------------------------------------------------
Old:
----
opus-1.1.1.tar.gz
New:
----
opus-1.1.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ opus.spec ++++++
--- /var/tmp/diff_new_pack.qMwMgp/_old 2016-01-23 01:14:36.000000000 +0100
+++ /var/tmp/diff_new_pack.qMwMgp/_new 2016-01-23 01:14:36.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package opus
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
# Copyright (c) 2012 Pascal Bleser <pascal.bleser(a)opensuse.org>
#
# All modifications and additions to the file contributed by third parties
@@ -18,7 +18,7 @@
Name: opus
-Version: 1.1.1
+Version: 1.1.2
Release: 0
%define soname 0
Summary: Opus Audio Codec Library
++++++ opus-1.1.1.tar.gz -> opus-1.1.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opus-1.1.1/Makefile.in new/opus-1.1.2/Makefile.in
--- old/opus-1.1.1/Makefile.in 2015-11-25 21:46:28.000000000 +0100
+++ new/opus-1.1.2/Makefile.in 2016-01-12 19:17:49.000000000 +0100
@@ -953,6 +953,7 @@
OPUS_LT_AGE = @OPUS_LT_AGE@
OPUS_LT_CURRENT = @OPUS_LT_CURRENT@
OPUS_LT_REVISION = @OPUS_LT_REVISION@
+OPUS_X86_AVX_CFLAGS = @OPUS_X86_AVX_CFLAGS@
OPUS_X86_SSE2_CFLAGS = @OPUS_X86_SSE2_CFLAGS@
OPUS_X86_SSE4_1_CFLAGS = @OPUS_X86_SSE4_1_CFLAGS@
OPUS_X86_SSE_CFLAGS = @OPUS_X86_SSE_CFLAGS@
@@ -973,6 +974,7 @@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
+X86_AVX_CFLAGS = @X86_AVX_CFLAGS@
X86_SSE2_CFLAGS = @X86_SSE2_CFLAGS@
X86_SSE4_1_CFLAGS = @X86_SSE4_1_CFLAGS@
X86_SSE_CFLAGS = @X86_SSE_CFLAGS@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opus-1.1.1/Makefile.mips new/opus-1.1.2/Makefile.mips
--- old/opus-1.1.1/Makefile.mips 2015-04-22 02:22:07.000000000 +0200
+++ new/opus-1.1.2/Makefile.mips 2016-01-11 21:48:46.000000000 +0100
@@ -108,11 +108,16 @@
OPUSCOMPARE_SRCS_C = src/opus_compare.c
OPUSCOMPARE_OBJS := $(patsubst %.c,%$(OBJSUFFIX),$(OPUSCOMPARE_SRCS_C))
+TESTS := test_opus_api test_opus_decode test_opus_encode test_opus_padding
+
# Rules
-all: lib opus_demo opus_compare test_opus_api test_opus_decode test_opus_encode test_opus_padding
+all: lib opus_demo opus_compare $(TESTS)
lib: $(TARGET)
+check: all
+ for test in $(TESTS); do ./$$test; done
+
$(TARGET): $(OBJS)
$(ARCHIVE.cmdline)
@@ -153,4 +158,4 @@
$(OBJS) $(OPUSDEMO_OBJS) $(OPUSCOMPARE_OBJS) $(TESTOPUSAPI_OBJS) \
$(TESTOPUSDECODE_OBJS) $(TESTOPUSENCODE_OBJS) $(TESTOPUSPADDING_OBJS)
-.PHONY: all lib clean
+.PHONY: all lib clean force check
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opus-1.1.1/Makefile.unix new/opus-1.1.2/Makefile.unix
--- old/opus-1.1.1/Makefile.unix 2015-04-22 02:22:07.000000000 +0200
+++ new/opus-1.1.2/Makefile.unix 2016-01-11 21:48:46.000000000 +0100
@@ -106,11 +106,16 @@
OPUSCOMPARE_SRCS_C = src/opus_compare.c
OPUSCOMPARE_OBJS := $(patsubst %.c,%$(OBJSUFFIX),$(OPUSCOMPARE_SRCS_C))
+TESTS := test_opus_api test_opus_decode test_opus_encode test_opus_padding
+
# Rules
-all: lib opus_demo opus_compare test_opus_api test_opus_decode test_opus_encode test_opus_padding
+all: lib opus_demo opus_compare $(TESTS)
lib: $(TARGET)
+check: all
+ for test in $(TESTS); do ./$$test; done
+
$(TARGET): $(OBJS)
$(ARCHIVE.cmdline)
@@ -151,4 +156,4 @@
$(OBJS) $(OPUSDEMO_OBJS) $(OPUSCOMPARE_OBJS) $(TESTOPUSAPI_OBJS) \
$(TESTOPUSDECODE_OBJS) $(TESTOPUSENCODE_OBJS) $(TESTOPUSPADDING_OBJS)
-.PHONY: all lib clean
+.PHONY: all lib clean force check
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opus-1.1.1/celt/celt_decoder.c new/opus-1.1.2/celt/celt_decoder.c
--- old/opus-1.1.1/celt/celt_decoder.c 2015-10-08 00:09:20.000000000 +0200
+++ new/opus-1.1.2/celt/celt_decoder.c 2015-12-30 20:16:21.000000000 +0100
@@ -457,10 +457,9 @@
VARDECL(celt_norm, X);
#endif
opus_uint32 seed;
- opus_val16 *plcLogE;
int end;
int effEnd;
-
+ opus_val16 decay;
end = st->end;
effEnd = IMAX(start, IMIN(end, mode->effEBands));
@@ -472,19 +471,13 @@
ALLOC(X, C*N, celt_norm); /**< Interleaved normalised MDCTs */
#endif
- if (loss_count >= 5)
- plcLogE = backgroundLogE;
- else {
- /* Energy decay */
- opus_val16 decay = loss_count==0 ?
- QCONST16(1.5f, DB_SHIFT) : QCONST16(.5f, DB_SHIFT);
- c=0; do
- {
- for (i=start;i<end;i++)
- oldBandE[c*nbEBands+i] -= decay;
- } while (++c<C);
- plcLogE = oldBandE;
- }
+ /* Energy decay */
+ decay = loss_count==0 ? QCONST16(1.5f, DB_SHIFT) : QCONST16(.5f, DB_SHIFT);
+ c=0; do
+ {
+ for (i=start;i<end;i++)
+ oldBandE[c*nbEBands+i] = MAX16(backgroundLogE[c*nbEBands+i], oldBandE[c*nbEBands+i] - decay);
+ } while (++c<C);
seed = st->rng;
for (c=0;c<C;c++)
{
@@ -510,7 +503,7 @@
DECODE_BUFFER_SIZE-N+(overlap>>1));
} while (++c<C);
- celt_synthesis(mode, X, out_syn, plcLogE, start, effEnd, C, C, 0, LM, st->downsample, 0, st->arch);
+ celt_synthesis(mode, X, out_syn, oldBandE, start, effEnd, C, C, 0, LM, st->downsample, 0, st->arch);
} else {
/* Pitch-based PLC */
const opus_val16 *window;
@@ -1037,10 +1030,18 @@
/* In case start or end were to change */
if (!isTransient)
{
+ opus_val16 max_background_increase;
OPUS_COPY(oldLogE2, oldLogE, 2*nbEBands);
OPUS_COPY(oldLogE, oldBandE, 2*nbEBands);
+ /* In normal circumstances, we only allow the noise floor to increase by
+ up to 2.4 dB/second, but when we're in DTX, we allow up to 6 dB
+ increase for each update.*/
+ if (st->loss_count < 10)
+ max_background_increase = M*QCONST16(0.001f,DB_SHIFT);
+ else
+ max_background_increase = QCONST16(1.f,DB_SHIFT);
for (i=0;i<2*nbEBands;i++)
- backgroundLogE[i] = MIN16(backgroundLogE[i] + M*QCONST16(0.001f,DB_SHIFT), oldBandE[i]);
+ backgroundLogE[i] = MIN16(backgroundLogE[i] + max_background_increase, oldBandE[i]);
} else {
for (i=0;i<2*nbEBands;i++)
oldLogE[i] = MIN16(oldLogE[i], oldBandE[i]);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opus-1.1.1/celt/celt_encoder.c new/opus-1.1.2/celt/celt_encoder.c
--- old/opus-1.1.1/celt/celt_encoder.c 2015-11-25 03:03:10.000000000 +0100
+++ new/opus-1.1.2/celt/celt_encoder.c 2016-01-12 18:16:54.000000000 +0100
@@ -343,9 +343,9 @@
{
int id;
#ifdef FIXED_POINT
- id = IMAX(0,IMIN(127,MULT16_32_Q15(tmp[i],norm))); /* Do not round to nearest */
+ id = MAX32(0,MIN32(127,MULT16_32_Q15(tmp[i]+EPSILON,norm))); /* Do not round to nearest */
#else
- id = IMAX(0,IMIN(127,(int)floor(64*norm*tmp[i]))); /* Do not round to nearest */
+ id = (int)MAX32(0,MIN32(127,floor(64*norm*(tmp[i]+EPSILON)))); /* Do not round to nearest */
#endif
unmask += inv_table[id];
}
@@ -375,8 +375,8 @@
/* Looks for sudden increases of energy to decide whether we need to patch
the transient decision */
-int patch_transient_decision(opus_val16 *newE, opus_val16 *oldE, int nbEBands,
- int end, int C)
+static int patch_transient_decision(opus_val16 *newE, opus_val16 *oldE, int nbEBands,
+ int start, int end, int C)
{
int i, c;
opus_val32 mean_diff=0;
@@ -385,28 +385,28 @@
avoid false detection caused by irrelevant bands */
if (C==1)
{
- spread_old[0] = oldE[0];
- for (i=1;i<end;i++)
+ spread_old[start] = oldE[start];
+ for (i=start+1;i<end;i++)
spread_old[i] = MAX16(spread_old[i-1]-QCONST16(1.0f, DB_SHIFT), oldE[i]);
} else {
- spread_old[0] = MAX16(oldE[0],oldE[nbEBands]);
- for (i=1;i<end;i++)
+ spread_old[start] = MAX16(oldE[start],oldE[start+nbEBands]);
+ for (i=start+1;i<end;i++)
spread_old[i] = MAX16(spread_old[i-1]-QCONST16(1.0f, DB_SHIFT),
MAX16(oldE[i],oldE[i+nbEBands]));
}
- for (i=end-2;i>=0;i--)
+ for (i=end-2;i>=start;i--)
spread_old[i] = MAX16(spread_old[i], spread_old[i+1]-QCONST16(1.0f, DB_SHIFT));
/* Compute mean increase */
c=0; do {
- for (i=2;i<end-1;i++)
+ for (i=IMAX(2,start);i<end-1;i++)
{
opus_val16 x1, x2;
- x1 = MAX16(0, newE[i]);
+ x1 = MAX16(0, newE[i + c*nbEBands]);
x2 = MAX16(0, spread_old[i]);
mean_diff = ADD32(mean_diff, EXTEND32(MAX16(0, SUB16(x1, x2))));
}
} while (++c<C);
- mean_diff = DIV32(mean_diff, C*(end-3));
+ mean_diff = DIV32(mean_diff, C*(end-1-IMAX(2,start)));
/*printf("%f %f %d\n", mean_diff, max_diff, count);*/
return mean_diff > QCONST16(1.f, DB_SHIFT);
}
@@ -1735,7 +1735,7 @@
time-domain analysis */
if (LM>0 && ec_tell(enc)+3<=total_bits && !isTransient && st->complexity>=5 && !st->lfe)
{
- if (patch_transient_decision(bandLogE, oldBandE, nbEBands, end, C))
+ if (patch_transient_decision(bandLogE, oldBandE, nbEBands, start, end, C))
{
isTransient = 1;
shortBlocks = M;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opus-1.1.1/celt/cpu_support.h new/opus-1.1.2/celt/cpu_support.h
--- old/opus-1.1.1/celt/cpu_support.h 2015-11-25 03:03:10.000000000 +0100
+++ new/opus-1.1.2/celt/cpu_support.h 2015-12-30 20:16:21.000000000 +0100
@@ -45,16 +45,18 @@
#elif (defined(OPUS_X86_MAY_HAVE_SSE) && !defined(OPUS_X86_PRESUME_SSE)) || \
(defined(OPUS_X86_MAY_HAVE_SSE2) && !defined(OPUS_X86_PRESUME_SSE2)) || \
- (defined(OPUS_X86_MAY_HAVE_SSE4_1) && !defined(OPUS_X86_PRESUME_SSE4_1))
+ (defined(OPUS_X86_MAY_HAVE_SSE4_1) && !defined(OPUS_X86_PRESUME_SSE4_1)) || \
+ (defined(OPUS_X86_MAY_HAVE_AVX) && !defined(OPUS_X86_PRESUME_AVX))
#include "x86/x86cpu.h"
-/* We currently support 4 x86 variants:
+/* We currently support 5 x86 variants:
* arch[0] -> non-sse
* arch[1] -> sse
* arch[2] -> sse2
* arch[3] -> sse4.1
+ * arch[4] -> avx
*/
-#define OPUS_ARCHMASK 3
+#define OPUS_ARCHMASK 7
int opus_select_arch(void);
#else
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opus-1.1.1/celt/quant_bands.c new/opus-1.1.2/celt/quant_bands.c
--- old/opus-1.1.1/celt/quant_bands.c 2015-08-03 17:17:17.000000000 +0200
+++ new/opus-1.1.2/celt/quant_bands.c 2015-12-30 20:16:21.000000000 +0100
@@ -292,7 +292,7 @@
#endif
}
if (lfe)
- max_decay=3;
+ max_decay = QCONST16(3.f,DB_SHIFT);
enc_start_state = *enc;
ALLOC(oldEBands_intra, C*m->nbEBands, opus_val16);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opus-1.1.1/celt/rate.c new/opus-1.1.2/celt/rate.c
--- old/opus-1.1.1/celt/rate.c 2015-11-25 03:03:10.000000000 +0100
+++ new/opus-1.1.2/celt/rate.c 2016-01-11 21:48:46.000000000 +0100
@@ -131,7 +131,7 @@
for (i=0;i<nbEntries;i++)
{
unsigned char *ptr = bits+entryI[i];
- opus_int16 tmp[MAX_PULSES+1];
+ opus_int16 tmp[CELT_MAX_PULSES+1];
get_required_bits(tmp, entryN[i], get_pulses(entryK[i]), BITRES);
for (j=1;j<=entryK[i];j++)
ptr[j] = tmp[get_pulses(j)]-1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opus-1.1.1/celt/rate.h new/opus-1.1.2/celt/rate.h
--- old/opus-1.1.1/celt/rate.h 2015-08-31 18:14:35.000000000 +0200
+++ new/opus-1.1.2/celt/rate.h 2016-01-11 21:48:46.000000000 +0100
@@ -32,7 +32,7 @@
#define MAX_PSEUDO 40
#define LOG_MAX_PSEUDO 6
-#define MAX_PULSES 128
+#define CELT_MAX_PULSES 128
#define MAX_FINE_BITS 8
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opus-1.1.1/celt/tests/test_unit_dft.c new/opus-1.1.2/celt/tests/test_unit_dft.c
--- old/opus-1.1.1/celt/tests/test_unit_dft.c 2015-11-13 00:45:23.000000000 +0100
+++ new/opus-1.1.2/celt/tests/test_unit_dft.c 2015-12-30 20:16:21.000000000 +0100
@@ -149,7 +149,7 @@
free(in);
free(out);
- free(cfg);
+ opus_fft_free(cfg, arch);
}
int main(int argc,char ** argv)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opus-1.1.1/celt/tests/test_unit_laplace.c new/opus-1.1.2/celt/tests/test_unit_laplace.c
--- old/opus-1.1.1/celt/tests/test_unit_laplace.c 2014-02-14 20:54:59.000000000 +0100
+++ new/opus-1.1.2/celt/tests/test_unit_laplace.c 2015-12-30 20:16:21.000000000 +0100
@@ -88,5 +88,6 @@
}
}
+ free(ptr);
return ret;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opus-1.1.1/celt/tests/test_unit_mdct.c new/opus-1.1.2/celt/tests/test_unit_mdct.c
--- old/opus-1.1.1/celt/tests/test_unit_mdct.c 2015-11-13 00:45:23.000000000 +0100
+++ new/opus-1.1.2/celt/tests/test_unit_mdct.c 2015-12-30 20:16:21.000000000 +0100
@@ -179,7 +179,9 @@
free(in);
+ free(in_copy);
free(out);
+ free(window);
clt_mdct_clear(&cfg, arch);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opus-1.1.1/celt/x86/x86_celt_map.c new/opus-1.1.2/celt/x86/x86_celt_map.c
--- old/opus-1.1.1/celt/x86/x86_celt_map.c 2015-11-25 03:03:10.000000000 +0100
+++ new/opus-1.1.2/celt/x86/x86_celt_map.c 2015-12-30 20:16:21.000000000 +0100
@@ -53,6 +53,7 @@
celt_fir_c,
celt_fir_c,
MAY_HAVE_SSE4_1(celt_fir), /* sse4.1 */
+ MAY_HAVE_SSE4_1(celt_fir) /* avx */
};
void (*const XCORR_KERNEL_IMPL[OPUS_ARCHMASK + 1])(
@@ -65,6 +66,7 @@
xcorr_kernel_c,
xcorr_kernel_c,
MAY_HAVE_SSE4_1(xcorr_kernel), /* sse4.1 */
+ MAY_HAVE_SSE4_1(xcorr_kernel) /* avx */
};
#endif
@@ -81,6 +83,7 @@
celt_inner_prod_c,
MAY_HAVE_SSE2(celt_inner_prod),
MAY_HAVE_SSE4_1(celt_inner_prod), /* sse4.1 */
+ MAY_HAVE_SSE4_1(celt_inner_prod) /* avx */
};
#endif
@@ -99,6 +102,7 @@
MAY_HAVE_SSE(xcorr_kernel),
MAY_HAVE_SSE(xcorr_kernel),
MAY_HAVE_SSE(xcorr_kernel),
+ MAY_HAVE_SSE(xcorr_kernel)
};
opus_val32 (*const CELT_INNER_PROD_IMPL[OPUS_ARCHMASK + 1])(
@@ -110,6 +114,7 @@
MAY_HAVE_SSE(celt_inner_prod),
MAY_HAVE_SSE(celt_inner_prod),
MAY_HAVE_SSE(celt_inner_prod),
+ MAY_HAVE_SSE(celt_inner_prod)
};
void (*const DUAL_INNER_PROD_IMPL[OPUS_ARCHMASK + 1])(
@@ -124,6 +129,7 @@
MAY_HAVE_SSE(dual_inner_prod),
MAY_HAVE_SSE(dual_inner_prod),
MAY_HAVE_SSE(dual_inner_prod),
+ MAY_HAVE_SSE(dual_inner_prod)
};
void (*const COMB_FILTER_CONST_IMPL[OPUS_ARCHMASK + 1])(
@@ -139,6 +145,7 @@
MAY_HAVE_SSE(comb_filter_const),
MAY_HAVE_SSE(comb_filter_const),
MAY_HAVE_SSE(comb_filter_const),
+ MAY_HAVE_SSE(comb_filter_const)
};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opus-1.1.1/celt/x86/x86cpu.c new/opus-1.1.2/celt/x86/x86cpu.c
--- old/opus-1.1.1/celt/x86/x86cpu.c 2015-11-25 03:03:10.000000000 +0100
+++ new/opus-1.1.2/celt/x86/x86cpu.c 2015-12-30 20:16:21.000000000 +0100
@@ -37,7 +37,8 @@
#if (defined(OPUS_X86_MAY_HAVE_SSE) && !defined(OPUS_X86_PRESUME_SSE)) || \
(defined(OPUS_X86_MAY_HAVE_SSE2) && !defined(OPUS_X86_PRESUME_SSE2)) || \
- (defined(OPUS_X86_MAY_HAVE_SSE4_1) && !defined(OPUS_X86_PRESUME_SSE4_1))
+ (defined(OPUS_X86_MAY_HAVE_SSE4_1) && !defined(OPUS_X86_PRESUME_SSE4_1)) || \
+ (defined(OPUS_X86_MAY_HAVE_AVX) && !defined(OPUS_X86_PRESUME_AVX))
#if defined(_MSC_VER)
@@ -91,6 +92,8 @@
int HW_SSE;
int HW_SSE2;
int HW_SSE41;
+ /* SIMD: 256-bit */
+ int HW_AVX;
} CPU_Feature;
static void opus_cpu_feature_check(CPU_Feature *cpu_feature)
@@ -106,11 +109,13 @@
cpu_feature->HW_SSE = (info[3] & (1 << 25)) != 0;
cpu_feature->HW_SSE2 = (info[3] & (1 << 26)) != 0;
cpu_feature->HW_SSE41 = (info[2] & (1 << 19)) != 0;
+ cpu_feature->HW_AVX = (info[2] & (1 << 28)) != 0;
}
else {
cpu_feature->HW_SSE = 0;
cpu_feature->HW_SSE2 = 0;
cpu_feature->HW_SSE41 = 0;
+ cpu_feature->HW_AVX = 0;
}
}
@@ -138,6 +143,12 @@
{
return arch;
}
+ arch++;
+
+ if (!cpu_feature.HW_AVX)
+ {
+ return arch;
+ }
arch++;
return arch;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opus-1.1.1/celt/x86/x86cpu.h new/opus-1.1.2/celt/x86/x86cpu.h
--- old/opus-1.1.1/celt/x86/x86cpu.h 2015-11-25 03:03:10.000000000 +0100
+++ new/opus-1.1.2/celt/x86/x86cpu.h 2015-12-30 20:16:21.000000000 +0100
@@ -46,6 +46,12 @@
# define MAY_HAVE_SSE4_1(name) name ## _c
# endif
+# if defined(OPUS_X86_MAY_HAVE_AVX)
+# define MAY_HAVE_AVX(name) name ## _avx
+# else
+# define MAY_HAVE_AVX(name) name ## _c
+# endif
+
# if defined(OPUS_HAVE_RTCD)
int opus_select_arch(void);
# endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opus-1.1.1/config.h.in new/opus-1.1.2/config.h.in
--- old/opus-1.1.1/config.h.in 2015-11-25 21:46:32.000000000 +0100
+++ new/opus-1.1.2/config.h.in 2016-01-12 19:17:55.000000000 +0100
@@ -121,6 +121,9 @@
/* Use run-time CPU capabilities detection */
#undef OPUS_HAVE_RTCD
+/* Compiler supports X86 AVX Intrinsics */
+#undef OPUS_X86_MAY_HAVE_AVX
+
/* Compiler supports X86 SSE Intrinsics */
#undef OPUS_X86_MAY_HAVE_SSE
@@ -130,6 +133,9 @@
/* Compiler supports X86 SSE4.1 Intrinsics */
#undef OPUS_X86_MAY_HAVE_SSE4_1
+/* Define if binary requires AVX intrinsics support */
+#undef OPUS_X86_PRESUME_AVX
+
/* Define if binary requires SSE intrinsics support */
#undef OPUS_X86_PRESUME_SSE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opus-1.1.1/configure new/opus-1.1.2/configure
--- old/opus-1.1.1/configure 2015-11-25 21:46:28.000000000 +0100
+++ new/opus-1.1.2/configure 2016-01-12 19:17:49.000000000 +0100
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for opus 1.1.1.
+# Generated by GNU Autoconf 2.69 for opus 1.1.2.
#
# Report bugs to <opus(a)xiph.org>.
#
@@ -590,8 +590,8 @@
# Identity of this package.
PACKAGE_NAME='opus'
PACKAGE_TARNAME='opus'
-PACKAGE_VERSION='1.1.1'
-PACKAGE_STRING='opus 1.1.1'
+PACKAGE_VERSION='1.1.2'
+PACKAGE_STRING='opus 1.1.2'
PACKAGE_BUGREPORT='opus(a)xiph.org'
PACKAGE_URL=''
@@ -649,6 +649,7 @@
OPUS_ARM_NEON_INTR_TRUE
CPU_ARM_FALSE
CPU_ARM_TRUE
+OPUS_X86_AVX_CFLAGS
OPUS_X86_SSE4_1_CFLAGS
OPUS_X86_SSE2_CFLAGS
OPUS_X86_SSE_CFLAGS
@@ -657,9 +658,12 @@
HAVE_ARM_NE10
OPUS_ARM_NEON_INTR_CFLAGS
ARM_NEON_INTR_CFLAGS
+X86_AVX_CFLAGS
X86_SSE4_1_CFLAGS
X86_SSE2_CFLAGS
X86_SSE_CFLAGS
+HAVE_AVX_FALSE
+HAVE_AVX_TRUE
HAVE_SSE4_1_FALSE
HAVE_SSE4_1_TRUE
HAVE_SSE2_FALSE
@@ -848,6 +852,7 @@
X86_SSE_CFLAGS
X86_SSE2_CFLAGS
X86_SSE4_1_CFLAGS
+X86_AVX_CFLAGS
ARM_NEON_INTR_CFLAGS'
@@ -1389,7 +1394,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 opus 1.1.1 to adapt to many kinds of systems.
+\`configure' configures opus 1.1.2 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1459,7 +1464,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of opus 1.1.1:";;
+ short | recursive ) echo "Configuration of opus 1.1.2:";;
esac
cat <<\_ACEOF
@@ -1532,6 +1537,8 @@
C compiler flags to compile SSE2 intrinsics [default=-msse2]
X86_SSE4_1_CFLAGS
C compiler flags to compile SSE4.1 intrinsics [default=-msse4.1]
+ X86_AVX_CFLAGS
+ C compiler flags to compile AVX intrinsics [default=-mavx]
ARM_NEON_INTR_CFLAGS
C compiler flags to compile ARM NEON intrinsics
[default=-mfpu=neon / -mfpu=neon -mfloat-abi=softfp]
@@ -1602,7 +1609,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-opus configure 1.1.1
+opus configure 1.1.2
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1971,7 +1978,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by opus $as_me 1.1.1, which was
+It was created by opus $as_me 1.1.2, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2365,7 +2372,7 @@
# For libtool.
OPUS_LT_CURRENT=5
-OPUS_LT_REVISION=1
+OPUS_LT_REVISION=2
OPUS_LT_AGE=5
@@ -2848,7 +2855,7 @@
# Define the identity of the package.
PACKAGE='opus'
- VERSION='1.1.1'
+ VERSION='1.1.2'
# Some tools Automake needs.
@@ -12944,6 +12951,15 @@
HAVE_SSE4_1_FALSE=
fi
+ if false; then
+ HAVE_AVX_TRUE=
+ HAVE_AVX_FALSE='#'
+else
+ HAVE_AVX_TRUE='#'
+ HAVE_AVX_FALSE=
+fi
+
+
@@ -12970,6 +12986,7 @@
+
if ${X86_SSE_CFLAGS+:} false; then :
else
@@ -12985,6 +13002,11 @@
else
X86_SSE4_1_CFLAGS="-msse4.1"
fi
+if ${X86_AVX_CFLAGS+:} false; then :
+
+else
+ X86_AVX_CFLAGS="-mavx"
+fi
if ${ARM_NEON_INTR_CFLAGS+:} false; then :
else
@@ -13468,6 +13490,83 @@
fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if compiler supports AVX intrinsics" >&5
+$as_echo_n "checking if compiler supports AVX intrinsics... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <immintrin.h>
+
+int
+main ()
+{
+
+ static __m256 mtest;
+ mtest = _mm256_setzero_ps();
+
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+ OPUS_X86_MAY_HAVE_AVX=1
+ OPUS_X86_PRESUME_AVX=1
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+else
+
+ OPUS_X86_PRESUME_AVX=0
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if compiler supports AVX intrinsics with $X86_AVX_CFLAGS" >&5
+$as_echo_n "checking if compiler supports AVX intrinsics with $X86_AVX_CFLAGS... " >&6; }
+ save_CFLAGS="$CFLAGS"; CFLAGS="$X86_AVX_CFLAGS $CFLAGS"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <immintrin.h>
+
+int
+main ()
+{
+
+ static __m256 mtest;
+ mtest = _mm256_setzero_ps();
+
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ OPUS_X86_MAY_HAVE_AVX=1
+
+else
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ OPUS_X86_MAY_HAVE_AVX=0
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$save_CFLAGS"
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+
+ if test x"$OPUS_X86_MAY_HAVE_AVX" = x"1" && test x"$OPUS_X86_PRESUME_AVX" != x"1"; then :
+
+ OPUS_X86_AVX_CFLAGS="$X86_AVX_CFLAGS"
+
+
+
+fi
if test x"$rtcd_support" = x"no"; then :
rtcd_support=""
fi
@@ -13536,6 +13635,28 @@
$as_echo "$as_me: WARNING: Compiler does not support SSE4.1 intrinsics" >&2;}
fi
+ if test x"$OPUS_X86_MAY_HAVE_AVX" = x"1"; then :
+
+
+$as_echo "#define OPUS_X86_MAY_HAVE_AVX 1" >>confdefs.h
+
+ intrinsics_support="$intrinsics_support AVX"
+
+ if test x"$OPUS_X86_PRESUME_AVX" = x"1"; then :
+
+$as_echo "#define OPUS_X86_PRESUME_AVX 1" >>confdefs.h
+
+else
+ rtcd_support="$rtcd_support AVX"
+fi
+
+else
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Compiler does not support AVX intrinsics" >&5
+$as_echo "$as_me: WARNING: Compiler does not support AVX intrinsics" >&2;}
+
+fi
+
if test x"$intrinsics_support" = x""; then :
intrinsics_support=no
else
@@ -13686,6 +13807,14 @@
HAVE_SSE4_1_FALSE=
fi
+ if test x"$OPUS_X86_MAY_HAVE_AVX" = x"1"; then
+ HAVE_AVX_TRUE=
+ HAVE_AVX_FALSE='#'
+else
+ HAVE_AVX_TRUE='#'
+ HAVE_AVX_FALSE=
+fi
+
if test x"$enable_rtcd" = x"yes"; then :
@@ -14086,6 +14215,10 @@
as_fn_error $? "conditional \"HAVE_SSE4_1\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
+if test -z "${HAVE_AVX_TRUE}" && test -z "${HAVE_AVX_FALSE}"; then
+ as_fn_error $? "conditional \"HAVE_AVX\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
if test -z "${CPU_ARM_TRUE}" && test -z "${CPU_ARM_FALSE}"; then
as_fn_error $? "conditional \"CPU_ARM\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -14110,6 +14243,10 @@
as_fn_error $? "conditional \"HAVE_SSE4_1\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
+if test -z "${HAVE_AVX_TRUE}" && test -z "${HAVE_AVX_FALSE}"; then
+ as_fn_error $? "conditional \"HAVE_AVX\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
if test -z "${HAVE_DOXYGEN_TRUE}" && test -z "${HAVE_DOXYGEN_FALSE}"; then
as_fn_error $? "conditional \"HAVE_DOXYGEN\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -14515,7 +14652,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by opus $as_me 1.1.1, which was
+This file was extended by opus $as_me 1.1.2, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -14581,7 +14718,7 @@
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-opus config.status 1.1.1
+opus config.status 1.1.2
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opus-1.1.1/configure.ac new/opus-1.1.2/configure.ac
--- old/opus-1.1.1/configure.ac 2015-11-25 21:46:26.000000000 +0100
+++ new/opus-1.1.2/configure.ac 2016-01-12 19:17:47.000000000 +0100
@@ -23,7 +23,7 @@
# For libtool.
dnl Please update these for releases.
OPUS_LT_CURRENT=5
-OPUS_LT_REVISION=1
+OPUS_LT_REVISION=2
OPUS_LT_AGE=5
AC_SUBST(OPUS_LT_CURRENT)
@@ -351,10 +351,12 @@
AM_CONDITIONAL([HAVE_SSE], [false])
AM_CONDITIONAL([HAVE_SSE2], [false])
AM_CONDITIONAL([HAVE_SSE4_1], [false])
+AM_CONDITIONAL([HAVE_AVX], [false])
m4_define([DEFAULT_X86_SSE_CFLAGS], [-msse])
m4_define([DEFAULT_X86_SSE2_CFLAGS], [-msse2])
m4_define([DEFAULT_X86_SSE4_1_CFLAGS], [-msse4.1])
+m4_define([DEFAULT_X86_AVX_CFLAGS], [-mavx])
m4_define([DEFAULT_ARM_NEON_INTR_CFLAGS], [-mfpu=neon])
# With GCC on ARM32 softfp architectures (e.g. Android, or older Ubuntu) you need to specify
# -mfloat-abi=softfp for -mfpu=neon to work. However, on ARM32 hardfp architectures (e.g. newer Ubuntu),
@@ -371,11 +373,13 @@
AC_ARG_VAR([X86_SSE_CFLAGS], [C compiler flags to compile SSE intrinsics @<:@default=]DEFAULT_X86_SSE_CFLAGS[@:>@])
AC_ARG_VAR([X86_SSE2_CFLAGS], [C compiler flags to compile SSE2 intrinsics @<:@default=]DEFAULT_X86_SSE2_CFLAGS[@:>@])
AC_ARG_VAR([X86_SSE4_1_CFLAGS], [C compiler flags to compile SSE4.1 intrinsics @<:@default=]DEFAULT_X86_SSE4_1_CFLAGS[@:>@])
+AC_ARG_VAR([X86_AVX_CFLAGS], [C compiler flags to compile AVX intrinsics @<:@default=]DEFAULT_X86_AVX_CFLAGS[@:>@])
AC_ARG_VAR([ARM_NEON_INTR_CFLAGS], [C compiler flags to compile ARM NEON intrinsics @<:@default=]DEFAULT_ARM_NEON_INTR_CFLAGS / DEFAULT_ARM_NEON_SOFTFP_INTR_CFLAGS[@:>@])
AS_VAR_SET_IF([X86_SSE_CFLAGS], [], [AS_VAR_SET([X86_SSE_CFLAGS], "DEFAULT_X86_SSE_CFLAGS")])
AS_VAR_SET_IF([X86_SSE2_CFLAGS], [], [AS_VAR_SET([X86_SSE2_CFLAGS], "DEFAULT_X86_SSE2_CFLAGS")])
AS_VAR_SET_IF([X86_SSE4_1_CFLAGS], [], [AS_VAR_SET([X86_SSE4_1_CFLAGS], "DEFAULT_X86_SSE4_1_CFLAGS")])
+AS_VAR_SET_IF([X86_AVX_CFLAGS], [], [AS_VAR_SET([X86_AVX_CFLAGS], "DEFAULT_X86_AVX_CFLAGS")])
AS_VAR_SET_IF([ARM_NEON_INTR_CFLAGS], [], [AS_VAR_SET([ARM_NEON_INTR_CFLAGS], ["$RESOLVED_DEFAULT_ARM_NEON_INTR_CFLAGS"])])
AC_DEFUN([OPUS_PATH_NE10],
@@ -566,7 +570,24 @@
AC_SUBST([OPUS_X86_SSE4_1_CFLAGS])
]
)
-
+ OPUS_CHECK_INTRINSICS(
+ [AVX],
+ [$X86_AVX_CFLAGS],
+ [OPUS_X86_MAY_HAVE_AVX],
+ [OPUS_X86_PRESUME_AVX],
+ [[#include <immintrin.h>
+ ]],
+ [[
+ static __m256 mtest;
+ mtest = _mm256_setzero_ps();
+ ]]
+ )
+ AS_IF([test x"$OPUS_X86_MAY_HAVE_AVX" = x"1" && test x"$OPUS_X86_PRESUME_AVX" != x"1"],
+ [
+ OPUS_X86_AVX_CFLAGS="$X86_AVX_CFLAGS"
+ AC_SUBST([OPUS_X86_AVX_CFLAGS])
+ ]
+ )
AS_IF([test x"$rtcd_support" = x"no"], [rtcd_support=""])
AS_IF([test x"$OPUS_X86_MAY_HAVE_SSE" = x"1"],
[
@@ -606,6 +627,19 @@
[
AC_MSG_WARN([Compiler does not support SSE4.1 intrinsics])
])
+ AS_IF([test x"$OPUS_X86_MAY_HAVE_AVX" = x"1"],
+ [
+ AC_DEFINE([OPUS_X86_MAY_HAVE_AVX], 1, [Compiler supports X86 AVX Intrinsics])
+ intrinsics_support="$intrinsics_support AVX"
+
+ AS_IF([test x"$OPUS_X86_PRESUME_AVX" = x"1"],
+ [AC_DEFINE([OPUS_X86_PRESUME_AVX], 1, [Define if binary requires AVX intrinsics support])],
+ [rtcd_support="$rtcd_support AVX"])
+ ],
+ [
+ AC_MSG_WARN([Compiler does not support AVX intrinsics])
+ ])
+
AS_IF([test x"$intrinsics_support" = x""],
[intrinsics_support=no],
[intrinsics_support="x86$intrinsics_support"]
@@ -672,6 +706,8 @@
[test x"$OPUS_X86_MAY_HAVE_SSE2" = x"1"])
AM_CONDITIONAL([HAVE_SSE4_1],
[test x"$OPUS_X86_MAY_HAVE_SSE4_1" = x"1"])
+AM_CONDITIONAL([HAVE_AVX],
+ [test x"$OPUS_X86_MAY_HAVE_AVX" = x"1"])
AS_IF([test x"$enable_rtcd" = x"yes"],[
AS_IF([test x"$rtcd_support" != x"no"],[
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opus-1.1.1/doc/Makefile.in new/opus-1.1.2/doc/Makefile.in
--- old/opus-1.1.1/doc/Makefile.in 2015-11-25 21:46:28.000000000 +0100
+++ new/opus-1.1.2/doc/Makefile.in 2016-01-12 19:17:49.000000000 +0100
@@ -189,6 +189,7 @@
OPUS_LT_AGE = @OPUS_LT_AGE@
OPUS_LT_CURRENT = @OPUS_LT_CURRENT@
OPUS_LT_REVISION = @OPUS_LT_REVISION@
+OPUS_X86_AVX_CFLAGS = @OPUS_X86_AVX_CFLAGS@
OPUS_X86_SSE2_CFLAGS = @OPUS_X86_SSE2_CFLAGS@
OPUS_X86_SSE4_1_CFLAGS = @OPUS_X86_SSE4_1_CFLAGS@
OPUS_X86_SSE_CFLAGS = @OPUS_X86_SSE_CFLAGS@
@@ -209,6 +210,7 @@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
+X86_AVX_CFLAGS = @X86_AVX_CFLAGS@
X86_SSE2_CFLAGS = @X86_SSE2_CFLAGS@
X86_SSE4_1_CFLAGS = @X86_SSE4_1_CFLAGS@
X86_SSE_CFLAGS = @X86_SSE_CFLAGS@
@@ -388,8 +390,8 @@
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
-@HAVE_DOXYGEN_FALSE@uninstall-local:
@HAVE_DOXYGEN_FALSE@clean-local:
+@HAVE_DOXYGEN_FALSE@uninstall-local:
@HAVE_DOXYGEN_FALSE@install-data-local:
clean: clean-am
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opus-1.1.1/include/opus_defines.h new/opus-1.1.2/include/opus_defines.h
--- old/opus-1.1.1/include/opus_defines.h 2015-10-23 19:17:41.000000000 +0200
+++ new/opus-1.1.2/include/opus_defines.h 2016-01-12 18:17:00.000000000 +0100
@@ -523,10 +523,19 @@
* @hideinitializer */
#define OPUS_GET_DTX(x) OPUS_GET_DTX_REQUEST, __opus_check_int_ptr(x)
/** Configures the depth of signal being encoded.
+ *
* This is a hint which helps the encoder identify silence and near-silence.
+ * It represents the number of significant bits of linear intensity below
+ * which the signal contains ignorable quantization or other noise.
+ *
+ * For example, OPUS_SET_LSB_DEPTH(14) would be an appropriate setting
+ * for G.711 u-law input. OPUS_SET_LSB_DEPTH(16) would be appropriate
+ * for 16-bit linear pcm input with opus_encode_float().
+ *
* When using opus_encode() instead of opus_encode_float(), or when libopus
* is compiled for fixed-point, the encoder uses the minimum of the value
* set here and the value 16.
+ *
* @see OPUS_GET_LSB_DEPTH
* @param[in] x <tt>opus_int32</tt>: Input precision in bits, between 8 and 24
* (default: 24).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opus-1.1.1/package_version new/opus-1.1.2/package_version
--- old/opus-1.1.1/package_version 2015-11-25 21:46:32.000000000 +0100
+++ new/opus-1.1.2/package_version 2016-01-12 19:17:56.000000000 +0100
@@ -1 +1 @@
-PACKAGE_VERSION="1.1.1"
+PACKAGE_VERSION="1.1.2"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opus-1.1.1/silk/decode_pulses.c new/opus-1.1.2/silk/decode_pulses.c
--- old/opus-1.1.1/silk/decode_pulses.c 2015-04-22 02:22:07.000000000 +0200
+++ new/opus-1.1.2/silk/decode_pulses.c 2016-01-11 21:48:46.000000000 +0100
@@ -69,9 +69,9 @@
sum_pulses[ i ] = ec_dec_icdf( psRangeDec, cdf_ptr, 8 );
/* LSB indication */
- while( sum_pulses[ i ] == MAX_PULSES + 1 ) {
+ while( sum_pulses[ i ] == SILK_MAX_PULSES + 1 ) {
nLshifts[ i ]++;
- /* When we've already got 10 LSBs, we shift the table to not allow (MAX_PULSES + 1) */
+ /* When we've already got 10 LSBs, we shift the table to not allow (SILK_MAX_PULSES + 1) */
sum_pulses[ i ] = ec_dec_icdf( psRangeDec,
silk_pulses_per_block_iCDF[ N_RATE_LEVELS - 1] + ( nLshifts[ i ] == 10 ), 8 );
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opus-1.1.1/silk/define.h new/opus-1.1.2/silk/define.h
--- old/opus-1.1.1/silk/define.h 2014-02-14 20:54:59.000000000 +0100
+++ new/opus-1.1.2/silk/define.h 2016-01-11 21:48:46.000000000 +0100
@@ -169,7 +169,7 @@
#define N_RATE_LEVELS 10
/* Maximum sum of pulses per shell coding frame */
-#define MAX_PULSES 16
+#define SILK_MAX_PULSES 16
#define MAX_MATRIX_SIZE MAX_LPC_ORDER /* Max of LPC Order and LTP order */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opus-1.1.1/silk/encode_pulses.c new/opus-1.1.2/silk/encode_pulses.c
--- old/opus-1.1.1/silk/encode_pulses.c 2014-02-14 20:54:59.000000000 +0100
+++ new/opus-1.1.2/silk/encode_pulses.c 2016-01-11 21:48:46.000000000 +0100
@@ -142,7 +142,7 @@
sumBits_Q5 = silk_rate_levels_BITS_Q5[ signalType >> 1 ][ k ];
for( i = 0; i < iter; i++ ) {
if( nRshifts[ i ] > 0 ) {
- sumBits_Q5 += nBits_ptr[ MAX_PULSES + 1 ];
+ sumBits_Q5 += nBits_ptr[ SILK_MAX_PULSES + 1 ];
} else {
sumBits_Q5 += nBits_ptr[ sum_pulses[ i ] ];
}
@@ -162,9 +162,9 @@
if( nRshifts[ i ] == 0 ) {
ec_enc_icdf( psRangeEnc, sum_pulses[ i ], cdf_ptr, 8 );
} else {
- ec_enc_icdf( psRangeEnc, MAX_PULSES + 1, cdf_ptr, 8 );
+ ec_enc_icdf( psRangeEnc, SILK_MAX_PULSES + 1, cdf_ptr, 8 );
for( k = 0; k < nRshifts[ i ] - 1; k++ ) {
- ec_enc_icdf( psRangeEnc, MAX_PULSES + 1, silk_pulses_per_block_iCDF[ N_RATE_LEVELS - 1 ], 8 );
+ ec_enc_icdf( psRangeEnc, SILK_MAX_PULSES + 1, silk_pulses_per_block_iCDF[ N_RATE_LEVELS - 1 ], 8 );
}
ec_enc_icdf( psRangeEnc, sum_pulses[ i ], silk_pulses_per_block_iCDF[ N_RATE_LEVELS - 1 ], 8 );
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opus-1.1.1/silk/tables.h new/opus-1.1.2/silk/tables.h
--- old/opus-1.1.1/silk/tables.h 2014-02-14 20:54:59.000000000 +0100
+++ new/opus-1.1.2/silk/tables.h 2016-01-11 21:48:46.000000000 +0100
@@ -47,8 +47,8 @@
extern const opus_uint8 silk_pitch_contour_10_ms_iCDF[ 12 ]; /* 12 */
extern const opus_uint8 silk_pitch_contour_10_ms_NB_iCDF[ 3 ]; /* 3 */
-extern const opus_uint8 silk_pulses_per_block_iCDF[ N_RATE_LEVELS ][ MAX_PULSES + 2 ]; /* 180 */
-extern const opus_uint8 silk_pulses_per_block_BITS_Q5[ N_RATE_LEVELS - 1 ][ MAX_PULSES + 2 ]; /* 162 */
+extern const opus_uint8 silk_pulses_per_block_iCDF[ N_RATE_LEVELS ][ SILK_MAX_PULSES + 2 ]; /* 180 */
+extern const opus_uint8 silk_pulses_per_block_BITS_Q5[ N_RATE_LEVELS - 1 ][ SILK_MAX_PULSES + 2 ]; /* 162 */
extern const opus_uint8 silk_rate_levels_iCDF[ 2 ][ N_RATE_LEVELS - 1 ]; /* 18 */
extern const opus_uint8 silk_rate_levels_BITS_Q5[ 2 ][ N_RATE_LEVELS - 1 ]; /* 18 */
@@ -59,7 +59,7 @@
extern const opus_uint8 silk_shell_code_table1[ 152 ]; /* 152 */
extern const opus_uint8 silk_shell_code_table2[ 152 ]; /* 152 */
extern const opus_uint8 silk_shell_code_table3[ 152 ]; /* 152 */
-extern const opus_uint8 silk_shell_code_table_offsets[ MAX_PULSES + 1 ]; /* 17 */
+extern const opus_uint8 silk_shell_code_table_offsets[ SILK_MAX_PULSES + 1 ]; /* 17 */
extern const opus_uint8 silk_lsb_iCDF[ 2 ]; /* 2 */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opus-1.1.1/silk/x86/x86_silk_map.c new/opus-1.1.2/silk/x86/x86_silk_map.c
--- old/opus-1.1.1/silk/x86/x86_silk_map.c 2015-11-25 03:03:10.000000000 +0100
+++ new/opus-1.1.2/silk/x86/x86_silk_map.c 2015-12-30 20:16:21.000000000 +0100
@@ -50,6 +50,7 @@
silk_inner_prod16_aligned_64_c,
silk_inner_prod16_aligned_64_c,
MAY_HAVE_SSE4_1( silk_inner_prod16_aligned_64 ), /* sse4.1 */
+ MAY_HAVE_SSE4_1( silk_inner_prod16_aligned_64 ) /* avx */
};
#endif
@@ -62,6 +63,7 @@
silk_VAD_GetSA_Q8_c,
silk_VAD_GetSA_Q8_c,
MAY_HAVE_SSE4_1( silk_VAD_GetSA_Q8 ), /* sse4.1 */
+ MAY_HAVE_SSE4_1( silk_VAD_GetSA_Q8 ) /* avx */
};
void (*const SILK_NSQ_IMPL[ OPUS_ARCHMASK + 1 ] )(
@@ -85,6 +87,7 @@
silk_NSQ_c,
silk_NSQ_c,
MAY_HAVE_SSE4_1( silk_NSQ ), /* sse4.1 */
+ MAY_HAVE_SSE4_1( silk_NSQ ) /* avx */
};
void (*const SILK_VQ_WMAT_EC_IMPL[ OPUS_ARCHMASK + 1 ] )(
@@ -104,6 +107,7 @@
silk_VQ_WMat_EC_c,
silk_VQ_WMat_EC_c,
MAY_HAVE_SSE4_1( silk_VQ_WMat_EC ), /* sse4.1 */
+ MAY_HAVE_SSE4_1( silk_VQ_WMat_EC ) /* avx */
};
void (*const SILK_NSQ_DEL_DEC_IMPL[ OPUS_ARCHMASK + 1 ] )(
@@ -127,6 +131,7 @@
silk_NSQ_del_dec_c,
silk_NSQ_del_dec_c,
MAY_HAVE_SSE4_1( silk_NSQ_del_dec ), /* sse4.1 */
+ MAY_HAVE_SSE4_1( silk_NSQ_del_dec ) /* avx */
};
#if defined(FIXED_POINT)
@@ -144,6 +149,7 @@
silk_warped_LPC_analysis_filter_FIX_c,
silk_warped_LPC_analysis_filter_FIX_c,
MAY_HAVE_SSE4_1( silk_warped_LPC_analysis_filter_FIX ), /* sse4.1 */
+ MAY_HAVE_SSE4_1( silk_warped_LPC_analysis_filter_FIX ) /* avx */
};
void (*const SILK_BURG_MODIFIED_IMPL[ OPUS_ARCHMASK + 1 ] )(
@@ -161,6 +167,7 @@
silk_burg_modified_c,
silk_burg_modified_c,
MAY_HAVE_SSE4_1( silk_burg_modified ), /* sse4.1 */
+ MAY_HAVE_SSE4_1( silk_burg_modified ) /* avx */
};
#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opus-1.1.1/src/analysis.c new/opus-1.1.2/src/analysis.c
--- old/opus-1.1.1/src/analysis.c 2015-10-08 00:09:20.000000000 +0200
+++ new/opus-1.1.2/src/analysis.c 2016-01-12 18:16:54.000000000 +0100
@@ -138,6 +138,21 @@
}
}
+void tonality_analysis_init(TonalityAnalysisState *tonal)
+{
+ /* Initialize reusable fields. */
+ tonal->arch = opus_select_arch();
+ /* Clear remaining fields. */
+ tonality_analysis_reset(tonal);
+}
+
+void tonality_analysis_reset(TonalityAnalysisState *tonal)
+{
+ /* Clear non-reusable fields. */
+ char *start = (char*)&tonal->TONALITY_ANALYSIS_RESET_START;
+ OPUS_CLEAR(start, sizeof(TonalityAnalysisState) - (start - (char*)tonal));
+}
+
void tonality_get_info(TonalityAnalysisState *tonal, AnalysisInfo *info_out, int len)
{
int pos;
@@ -187,7 +202,7 @@
info_out->music_prob = psum;
}
-static void tonality_analysis(TonalityAnalysisState *tonal, const CELTMode *celt_mode, const void *x, int len, int offset, int c1, int c2, int C, int lsb_depth, downmix_func downmix, int arch)
+static void tonality_analysis(TonalityAnalysisState *tonal, const CELTMode *celt_mode, const void *x, int len, int offset, int c1, int c2, int C, int lsb_depth, downmix_func downmix)
{
int i, b;
const kiss_fft_state *kfft;
@@ -260,7 +275,7 @@
remaining = len - (ANALYSIS_BUF_SIZE-tonal->mem_fill);
downmix(x, &tonal->inmem[240], remaining, offset+ANALYSIS_BUF_SIZE-tonal->mem_fill, c1, c2, C);
tonal->mem_fill = 240 + remaining;
- opus_fft(kfft, in, out, arch);
+ opus_fft(kfft, in, out, tonal->arch);
#ifndef FIXED_POINT
/* If there's any NaN on the input, the entire output will be NaN, so we only need to check one value. */
if (celt_isnan(out[0].r))
@@ -633,7 +648,7 @@
void run_analysis(TonalityAnalysisState *analysis, const CELTMode *celt_mode, const void *analysis_pcm,
int analysis_frame_size, int frame_size, int c1, int c2, int C, opus_int32 Fs,
- int lsb_depth, downmix_func downmix, AnalysisInfo *analysis_info, int arch)
+ int lsb_depth, downmix_func downmix, AnalysisInfo *analysis_info)
{
int offset;
int pcm_len;
@@ -646,7 +661,7 @@
pcm_len = analysis_frame_size - analysis->analysis_offset;
offset = analysis->analysis_offset;
do {
- tonality_analysis(analysis, celt_mode, analysis_pcm, IMIN(480, pcm_len), offset, c1, c2, C, lsb_depth, downmix, arch);
+ tonality_analysis(analysis, celt_mode, analysis_pcm, IMIN(480, pcm_len), offset, c1, c2, C, lsb_depth, downmix);
offset += 480;
pcm_len -= 480;
} while (pcm_len>0);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opus-1.1.1/src/analysis.h new/opus-1.1.2/src/analysis.h
--- old/opus-1.1.1/src/analysis.h 2015-10-08 00:09:20.000000000 +0200
+++ new/opus-1.1.2/src/analysis.h 2016-01-11 21:48:46.000000000 +0100
@@ -39,6 +39,8 @@
#define DETECT_SIZE 200
typedef struct {
+ int arch;
+#define TONALITY_ANALYSIS_RESET_START angle
float angle[240];
float d_angle[240];
float d2_angle[240];
@@ -78,10 +80,24 @@
AnalysisInfo info[DETECT_SIZE];
} TonalityAnalysisState;
+/** Initialize a TonalityAnalysisState struct.
+ *
+ * This performs some possibly slow initialization steps which should
+ * not be repeated every analysis step. No allocated memory is retained
+ * by the state struct, so no cleanup call is required.
+ */
+void tonality_analysis_init(TonalityAnalysisState *analysis);
+
+/** Reset a TonalityAnalysisState stuct.
+ *
+ * Call this when there's a discontinuity in the data.
+ */
+void tonality_analysis_reset(TonalityAnalysisState *analysis);
+
void tonality_get_info(TonalityAnalysisState *tonal, AnalysisInfo *info_out, int len);
void run_analysis(TonalityAnalysisState *analysis, const CELTMode *celt_mode, const void *analysis_pcm,
int analysis_frame_size, int frame_size, int c1, int c2, int C, opus_int32 Fs,
- int lsb_depth, downmix_func downmix, AnalysisInfo *analysis_info, int arch);
+ int lsb_depth, downmix_func downmix, AnalysisInfo *analysis_info);
#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opus-1.1.1/src/opus_decoder.c new/opus-1.1.2/src/opus_decoder.c
--- old/opus-1.1.1/src/opus_decoder.c 2015-08-24 00:02:52.000000000 +0200
+++ new/opus-1.1.2/src/opus_decoder.c 2016-01-11 21:48:46.000000000 +0100
@@ -59,6 +59,7 @@
opus_int32 Fs; /** Sampling rate (at the API level) */
silk_DecControlStruct DecControl;
int decode_gain;
+ int arch;
/* Everything beyond this point gets cleared on a reset */
#define OPUS_DECODER_RESET_START stream_channels
@@ -75,7 +76,6 @@
#endif
opus_uint32 rangeFinal;
- int arch;
};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opus-1.1.1/src/opus_demo.c new/opus-1.1.2/src/opus_demo.c
--- old/opus-1.1.1/src/opus_demo.c 2015-08-20 15:43:36.000000000 +0200
+++ new/opus-1.1.2/src/opus_demo.c 2016-01-12 18:16:54.000000000 +0100
@@ -866,7 +866,7 @@
1e-3*bits_max*sampling_rate/frame_size);
if (!decode_only)
fprintf (stderr, "active bitrate: %7.3f kb/s\n",
- 1e-3*bits_act*sampling_rate/(frame_size*(double)count_act));
+ 1e-3*bits_act*sampling_rate/(1e-15+frame_size*(double)count_act));
fprintf (stderr, "bitrate standard deviation: %7.3f kb/s\n",
1e-3*sqrt(bits2/count - bits*bits/(count*(double)count))*sampling_rate/frame_size);
/* Close any files to which intermediate results were stored */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opus-1.1.1/src/opus_encoder.c new/opus-1.1.2/src/opus_encoder.c
--- old/opus-1.1.1/src/opus_encoder.c 2015-11-25 03:03:10.000000000 +0100
+++ new/opus-1.1.2/src/opus_encoder.c 2016-01-12 18:16:54.000000000 +0100
@@ -81,6 +81,10 @@
int lsb_depth;
int encoder_buffer;
int lfe;
+ int arch;
+#ifndef DISABLE_FLOAT_API
+ TonalityAnalysisState analysis;
+#endif
#define OPUS_ENCODER_RESET_START stream_channels
int stream_channels;
@@ -100,12 +104,9 @@
StereoWidthState width_mem;
opus_val16 delay_buffer[MAX_ENCODER_BUFFER*2];
#ifndef DISABLE_FLOAT_API
- TonalityAnalysisState analysis;
int detected_bandwidth;
- int analysis_offset;
#endif
opus_uint32 rangeFinal;
- int arch;
};
/* Transition tables for the voice and music. First column is the
@@ -243,6 +244,10 @@
st->mode = MODE_HYBRID;
st->bandwidth = OPUS_BANDWIDTH_FULLBAND;
+#ifndef DISABLE_FLOAT_API
+ tonality_analysis_init(&st->analysis);
+#endif
+
return OPUS_OK;
}
@@ -1006,7 +1011,7 @@
analysis_read_subframe_bak = st->analysis.read_subframe;
run_analysis(&st->analysis, celt_mode, analysis_pcm, analysis_size, frame_size,
c1, c2, analysis_channels, st->Fs,
- lsb_depth, downmix, &analysis_info, st->arch);
+ lsb_depth, downmix, &analysis_info);
}
#else
(void)analysis_pcm;
@@ -2449,11 +2454,14 @@
{
void *silk_enc;
silk_EncControlStruct dummy;
+ char *start;
silk_enc = (char*)st+st->silk_enc_offset;
+#ifndef DISABLE_FLOAT_API
+ tonality_analysis_reset(&st->analysis);
+#endif
- OPUS_CLEAR((char*)&st->OPUS_ENCODER_RESET_START,
- sizeof(OpusEncoder)-
- ((char*)&st->OPUS_ENCODER_RESET_START - (char*)st));
+ start = (char*)&st->OPUS_ENCODER_RESET_START;
+ OPUS_CLEAR(start, sizeof(OpusEncoder) - (start - (char*)st));
celt_encoder_ctl(celt_enc, OPUS_RESET_STATE);
silk_InitEncoder( silk_enc, st->arch, &dummy );
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opus-1.1.1/version.mk new/opus-1.1.2/version.mk
--- old/opus-1.1.1/version.mk 2015-11-25 03:06:45.000000000 +0100
+++ new/opus-1.1.2/version.mk 2016-01-12 19:14:41.000000000 +0100
@@ -1,2 +1,2 @@
# static version string; update manually every release.
-PACKAGE_VERSION = "1.1.1"
+PACKAGE_VERSION = "1.1.2"
1
0
Hello community,
here is the log from the commit of package gnome-keyring for openSUSE:Factory checked in at 2016-01-23 01:14:29
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gnome-keyring (Old)
and /work/SRC/openSUSE:Factory/.gnome-keyring.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gnome-keyring"
Changes:
--------
--- /work/SRC/openSUSE:Factory/gnome-keyring/gnome-keyring.changes 2015-11-06 00:09:37.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.gnome-keyring.new/gnome-keyring.changes 2016-01-23 01:14:30.000000000 +0100
@@ -1,0 +2,5 @@
+Tue Jan 19 12:01:06 UTC 2016 - dimstar(a)opensuse.org
+
+- boo#962480: Add mdm as valid display manager to unlock gkr.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gnome-keyring.spec ++++++
--- /var/tmp/diff_new_pack.Ef27lI/_old 2016-01-23 01:14:31.000000000 +0100
+++ /var/tmp/diff_new_pack.Ef27lI/_new 2016-01-23 01:14:31.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package gnome-keyring
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -152,7 +152,7 @@
###
%post pam
-%{_sbindir}/pam-config -a --gnome_keyring --gnome_keyring-auto_start --gnome_keyring-only_if=gdm,gdm-password,lxdm,lightdm || true
+%{_sbindir}/pam-config -a --gnome_keyring --gnome_keyring-auto_start --gnome_keyring-only_if=gdm,gdm-password,lxdm,lightdm,mdm || true
# Remove leftover from the old way, before we used pam-config. We start
# cleaning up in 11.2, so this can be removed in 12.2.
# Note: this can safely be done after pam-config, since pam-config doesn't
1
0
Hello community,
here is the log from the commit of package libsecret for openSUSE:Factory checked in at 2016-01-23 01:14:24
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libsecret (Old)
and /work/SRC/openSUSE:Factory/.libsecret.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libsecret"
Changes:
--------
--- /work/SRC/openSUSE:Factory/libsecret/libsecret.changes 2015-08-25 07:18:34.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.libsecret.new/libsecret.changes 2016-01-23 01:14:25.000000000 +0100
@@ -1,0 +2,8 @@
+Tue Jan 19 08:56:19 UTC 2016 - zaitor(a)opensuse.org
+
+- Update to version 0.18.4:
+ + Multithreading fixes (bgo#756766).
+ + Fix memory leaks (bgo#756766).
+ + Updated translations.
+
+-------------------------------------------------------------------
Old:
----
libsecret-0.18.3.tar.xz
New:
----
libsecret-0.18.4.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libsecret.spec ++++++
--- /var/tmp/diff_new_pack.rOxHPK/_old 2016-01-23 01:14:26.000000000 +0100
+++ /var/tmp/diff_new_pack.rOxHPK/_new 2016-01-23 01:14:26.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package libsecret
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -19,12 +19,12 @@
%define have_lang 1
Name: libsecret
-Version: 0.18.3
+Version: 0.18.4
Release: 0
Summary: Library for accessing the Secret Service API
License: LGPL-2.1+
Group: System/Libraries
-Url: http://www.gnome.org/
+Url: https://wiki.gnome.org/Projects/Libsecret
Source0: http://download.gnome.org/sources/libsecret/0.18/%{name}-%{version}.tar.xz
Source99: baselibs.conf
BuildRequires: docbook-xsl-stylesheets
++++++ libsecret-0.18.3.tar.xz -> libsecret-0.18.4.tar.xz ++++++
++++ 33201 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package giflib for openSUSE:Factory checked in at 2016-01-23 01:14:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/giflib (Old)
and /work/SRC/openSUSE:Factory/.giflib.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "giflib"
Changes:
--------
--- /work/SRC/openSUSE:Factory/giflib/giflib.changes 2015-01-26 16:46:38.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.giflib.new/giflib.changes 2016-01-23 01:14:24.000000000 +0100
@@ -1,0 +2,34 @@
+Tue Jan 19 12:59:02 UTC 2016 - fstrba(a)suse.com
+
+- Update to version 5.1.2 (fixes CVE-2015-7555, bsc#960319)
+ * Code Fixes
+ + Code hardening using reallocarray() from OpenBSD.
+ + Sanity check in giffilter catches files with malformed
+ extension records. Fixes SourceForge bug #63: malformed gif
+ causes segfault in giffilter.
+ + Inexpensive sanity check in DGifSlurp() catches malformed files
+ with no image descriptor. Fixes SourceForge bug #64: malformed
+ gif causes crash in giftool.
+ + Fix SourceForge bug #66: GifDrawBoxedText8x8() modifying
+ constant input parameter.
+ + Bail out of GIF read on invalid pixel width. Addresses Savannah
+ bug #67: invalid shift in dgif_lib.c
+ + Fix SourceForge bug #69: #69 Malformed: Gif file with no
+ extension block after a GRAPHICS_EXT_FUNC_CODE extension causes
+ segfault (in giftext).
+ + Fix SourceForge bug #71: Buffer overwrite when giffixing a
+ malformed gif.
+ + Fix SourceForge bug #73: Null pointer deference in gifclrmap
+ (only reachable with malformed GIF).
+ + Fix SourceForge bug #74: Double free in gifsponge under 5.1,1,
+ for any valid gif image.
+ + Fix SourceForge bug #75: GAGetArgs overflows due to uncounted
+ use of va_arg.
+ + Sanity check in giffix catches some malformed files. Addresses
+ SourceForge bug #77: dgif_lib.c: extension processing error
+- Modified patches:
+ * giflib-automake-1_13.patch
+ * giflib-visibility.patch
+ + rediff to changed context
+
+-------------------------------------------------------------------
Old:
----
giflib-5.1.1.tar.bz2
New:
----
giflib-5.1.2.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ giflib.spec ++++++
--- /var/tmp/diff_new_pack.miJoBp/_old 2016-01-23 01:14:25.000000000 +0100
+++ /var/tmp/diff_new_pack.miJoBp/_new 2016-01-23 01:14:25.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package giflib
#
-# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
%define lname libgif7
Name: giflib
-Version: 5.1.1
+Version: 5.1.2
Release: 0
Summary: A Library for Working with GIF Images
License: MIT
++++++ giflib-5.1.1.tar.bz2 -> giflib-5.1.2.tar.bz2 ++++++
++++ 3275 lines of diff (skipped)
++++ retrying with extended exclude list
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/giflib-5.1.1/NEWS new/giflib-5.1.2/NEWS
--- old/giflib-5.1.1/NEWS 2015-01-06 22:52:52.000000000 +0100
+++ new/giflib-5.1.2/NEWS 2016-01-07 13:53:05.000000000 +0100
@@ -1,8 +1,43 @@
GIFLIB NEWS
-Short summary of recent news:
- Two fixes to prevent library misbehavior in rare failure conditions.
- Minor fixes to gifsponge and getarg.c, affacting utilities only.
+Version 5.1.2
+=============
+
+Code Fixes
+----------
+
+* Code hardening using reallocarray() from OpenBSD.
+
+* Sanity check in giffilter catches files with malformed extension records
+ Fixes SourceForge bug #63: malformed gif causes segfault in giffilter.
+
+* Inexpensive sanity check in DGifSlurp() catches malformed files with
+ no image descriptor. Fixes SourceForge bug #64: malformed gif causes
+ crash in giftool.
+
+* Fix SourceForge bug #66: GifDrawBoxedText8x8() modifying constant input
+ parameter.
+
+* Bail out of GIF read on invalid pixel width. Addresses Savannah bug
+ #67: invalid shift in dgif_lib.c
+
+* Fix SourceForge bug #69: #69 Malformed: Gif file with no extension
+ block after a GRAPHICS_EXT_FUNC_CODE extension causes segfault (in
+ giftext).
+
+* Fix SourceForge bug #71: Buffer overwrite when giffixing a malformed gif.
+
+* Fix SourceForge bug #73: Null pointer deference in gifclrmap (only
+ reachable with malformed GIF).
+
+* Fix SourceForge bug #74: Double free in gifsponge under 5.1,1,
+ for any valid gif image.
+
+* Fix SourceForge bug #75: GAGetArgs overflows due to uncounted use of va_arg.
+
+* Sanity check in giffix catches some malformed files. Addresses
+ SourceForge bug #77: dgif_lib.c: extension processing error
+
Version 5.1.1
=============
@@ -13,7 +48,7 @@
* Numerous minor fixes in getarg.c. Affects only the utilities, not the
core library.
-* Fix SourceForge bug #59 DGifOpen can segfault if DGifGetScreenDesc fails.
+* Fix SourceForge bug #59: DGifOpen can segfault if DGifGetScreenDesc fails.
* SourceForge patch #20: In gifalloc, fix usage of realloc() in case of failure.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/giflib-5.1.1/ar-lib new/giflib-5.1.2/ar-lib
--- old/giflib-5.1.1/ar-lib 1970-01-01 01:00:00.000000000 +0100
+++ new/giflib-5.1.2/ar-lib 2015-07-12 23:04:43.000000000 +0200
@@ -0,0 +1,270 @@
+#! /bin/sh
+# Wrapper for Microsoft lib.exe
+
+me=ar-lib
+scriptversion=2012-03-01.08; # UTC
+
+# Copyright (C) 2010-2014 Free Software Foundation, Inc.
+# Written by Peter Rosin <peda(a)lysator.liu.se>.
+#
+# 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
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake(a)gnu.org> or send patches to
+# <automake-patches(a)gnu.org>.
+
+
+# func_error message
+func_error ()
+{
+ echo "$me: $1" 1>&2
+ exit 1
+}
+
+file_conv=
+
+# func_file_conv build_file
+# Convert a $build file to $host form and store it in $file
+# Currently only supports Windows hosts.
+func_file_conv ()
+{
+ file=$1
+ case $file in
+ / | /[!/]*) # absolute file, and not a UNC file
+ if test -z "$file_conv"; then
+ # lazily determine how to convert abs files
+ case `uname -s` in
+ MINGW*)
+ file_conv=mingw
+ ;;
+ CYGWIN*)
+ file_conv=cygwin
+ ;;
+ *)
+ file_conv=wine
+ ;;
+ esac
+ fi
+ case $file_conv in
+ mingw)
+ file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
+ ;;
+ cygwin)
+ file=`cygpath -m "$file" || echo "$file"`
+ ;;
+ wine)
+ file=`winepath -w "$file" || echo "$file"`
+ ;;
+ esac
+ ;;
+ esac
+}
+
+# func_at_file at_file operation archive
+# Iterate over all members in AT_FILE performing OPERATION on ARCHIVE
+# for each of them.
+# When interpreting the content of the @FILE, do NOT use func_file_conv,
+# since the user would need to supply preconverted file names to
+# binutils ar, at least for MinGW.
+func_at_file ()
+{
+ operation=$2
+ archive=$3
+ at_file_contents=`cat "$1"`
+ eval set x "$at_file_contents"
+ shift
+
+ for member
+ do
+ $AR -NOLOGO $operation:"$member" "$archive" || exit $?
+ done
+}
+
+case $1 in
+ '')
+ func_error "no command. Try '$0 --help' for more information."
+ ;;
+ -h | --h*)
+ cat <<EOF
+Usage: $me [--help] [--version] PROGRAM ACTION ARCHIVE [MEMBER...]
+
+Members may be specified in a file named with @FILE.
+EOF
+ exit $?
+ ;;
+ -v | --v*)
+ echo "$me, version $scriptversion"
+ exit $?
+ ;;
+esac
+
+if test $# -lt 3; then
+ func_error "you must specify a program, an action and an archive"
+fi
+
+AR=$1
+shift
+while :
+do
+ if test $# -lt 2; then
+ func_error "you must specify a program, an action and an archive"
+ fi
+ case $1 in
+ -lib | -LIB \
+ | -ltcg | -LTCG \
+ | -machine* | -MACHINE* \
+ | -subsystem* | -SUBSYSTEM* \
+ | -verbose | -VERBOSE \
+ | -wx* | -WX* )
+ AR="$AR $1"
+ shift
+ ;;
+ *)
+ action=$1
+ shift
+ break
+ ;;
+ esac
+done
+orig_archive=$1
+shift
+func_file_conv "$orig_archive"
+archive=$file
+
+# strip leading dash in $action
+action=${action#-}
+
+delete=
+extract=
+list=
+quick=
+replace=
+index=
+create=
+
+while test -n "$action"
+do
+ case $action in
+ d*) delete=yes ;;
+ x*) extract=yes ;;
+ t*) list=yes ;;
+ q*) quick=yes ;;
+ r*) replace=yes ;;
+ s*) index=yes ;;
+ S*) ;; # the index is always updated implicitly
+ c*) create=yes ;;
+ u*) ;; # TODO: don't ignore the update modifier
+ v*) ;; # TODO: don't ignore the verbose modifier
+ *)
+ func_error "unknown action specified"
+ ;;
+ esac
+ action=${action#?}
+done
+
+case $delete$extract$list$quick$replace,$index in
+ yes,* | ,yes)
+ ;;
+ yesyes*)
+ func_error "more than one action specified"
+ ;;
+ *)
+ func_error "no action specified"
+ ;;
+esac
+
+if test -n "$delete"; then
+ if test ! -f "$orig_archive"; then
+ func_error "archive not found"
+ fi
+ for member
+ do
+ case $1 in
+ @*)
+ func_at_file "${1#@}" -REMOVE "$archive"
+ ;;
+ *)
+ func_file_conv "$1"
+ $AR -NOLOGO -REMOVE:"$file" "$archive" || exit $?
+ ;;
+ esac
+ done
+
+elif test -n "$extract"; then
+ if test ! -f "$orig_archive"; then
+ func_error "archive not found"
+ fi
+ if test $# -gt 0; then
+ for member
+ do
+ case $1 in
+ @*)
+ func_at_file "${1#@}" -EXTRACT "$archive"
+ ;;
+ *)
+ func_file_conv "$1"
+ $AR -NOLOGO -EXTRACT:"$file" "$archive" || exit $?
+ ;;
+ esac
+ done
+ else
+ $AR -NOLOGO -LIST "$archive" | sed -e 's/\\/\\\\/g' | while read member
+ do
+ $AR -NOLOGO -EXTRACT:"$member" "$archive" || exit $?
+ done
+ fi
+
+elif test -n "$quick$replace"; then
+ if test ! -f "$orig_archive"; then
+ if test -z "$create"; then
+ echo "$me: creating $orig_archive"
+ fi
+ orig_archive=
+ else
+ orig_archive=$archive
+ fi
+
+ for member
+ do
+ case $1 in
+ @*)
+ func_file_conv "${1#@}"
+ set x "$@" "@$file"
+ ;;
+ *)
+ func_file_conv "$1"
+ set x "$@" "$file"
+ ;;
+ esac
+ shift
+ shift
+ done
+
+ if test -n "$orig_archive"; then
+ $AR -NOLOGO -OUT:"$archive" "$orig_archive" "$@" || exit $?
+ else
+ $AR -NOLOGO -OUT:"$archive" "$@" || exit $?
+ fi
+
+elif test -n "$list"; then
+ if test ! -f "$orig_archive"; then
+ func_error "archive not found"
+ fi
+ $AR -NOLOGO -LIST "$archive" || exit $?
+fi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/giflib-5.1.1/build.asc new/giflib-5.1.2/build.asc
--- old/giflib-5.1.1/build.asc 2014-05-16 12:46:53.000000000 +0200
+++ new/giflib-5.1.2/build.asc 2016-01-07 04:30:00.000000000 +0100
@@ -61,19 +61,19 @@
1. Check the SourceForge tracker for bugs and patches.
-2. The version needs to be bumped in two places, configure.ac
+2. Run a Coverity scan before shipping.
+
+3. The version needs to be bumped in two places, configure.ac
and lib/gif_lib.h.
-3. Version-stamp the top entry in the NEWS file.
+4. Version-stamp the top entry in the NEWS file.
-4. The shared-library version is also set in configure.ac and must
- be bumped is object or source-API compastibility changes.
+5. The shared-library version is also set in configure.ac and must
+ be bumped if object or source-API compatibility changes.
-5. If you are changing major versions, sync the XBS-SourceForge-Folder
+6. If you are changing major versions, sync the XBS-SourceForge-Folder
attribute in the control file.
-6. Run a Coverity scan before shipping.
-
7. 'make distcheck' to verify the build and make a tarball.
8. Tag the release in the repo.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/giflib-5.1.1/compile new/giflib-5.1.2/compile
--- old/giflib-5.1.1/compile 2014-01-02 20:14:59.000000000 +0100
+++ new/giflib-5.1.2/compile 2015-07-12 23:04:43.000000000 +0200
@@ -3,7 +3,7 @@
scriptversion=2012-10-14.11; # UTC
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
# Written by Tom Tromey <tromey(a)cygnus.com>.
#
# This program is free software; you can redistribute it and/or modify
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/giflib-5.1.1/configure.ac new/giflib-5.1.2/configure.ac
--- old/giflib-5.1.1/configure.ac 2015-01-06 22:53:44.000000000 +0100
+++ new/giflib-5.1.2/configure.ac 2016-01-07 13:51:33.000000000 +0100
@@ -1,5 +1,5 @@
dnl Process this file with autoconf to produce a configure script.
-AC_INIT(giflib, [5.1.1], [esr(a)thyrsus.com], giflib)
+AC_INIT(giflib, [5.1.2], [esr(a)thyrsus.com], giflib)
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_SRCDIR([lib/dgif_lib.c])
AM_INIT_AUTOMAKE([gnu dist-bzip2 -Wall])
@@ -11,6 +11,7 @@
AM_CONFIG_HEADER(config.h)
dnl Checks for programs.
+AM_PROG_AR
AC_PROG_LIBTOOL
AC_PROG_CC
AC_PROG_CPP
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/giflib-5.1.1/control new/giflib-5.1.2/control
--- old/giflib-5.1.1/control 2014-12-09 16:15:06.000000000 +0100
+++ new/giflib-5.1.2/control 2015-04-04 18:51:55.000000000 +0200
@@ -16,4 +16,4 @@
XBS-VC-Tag-Template: %(version)s
-#XBS-Freecode-Tags: GIF, graphics
+#XBS-Project-Tags: GIF, graphics
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/giflib-5.1.1/history.asc new/giflib-5.1.2/history.asc
--- old/giflib-5.1.1/history.asc 2014-05-16 12:46:53.000000000 +0200
+++ new/giflib-5.1.2/history.asc 2015-05-28 06:33:34.000000000 +0200
@@ -21,9 +21,9 @@
(also the tools icon2gif, gifovly, and gifcompose; the last was
removed in 5.0).
-ESR's Unix port was incorporated into the NCSA/Netscape browser in
-1994, which is how GIF became (with JPEG) one of the two most popular
-image formats on the early Web.
+ESR's Unix port was incorporated into the NCSA Mosaic browser in 1994,
+which is how GIF became (with JPEG) one of the two most popular image
+formats on the early Web.
Beginning around 1993, patent claims by Unisys over the LZW
compression method used in GIF theatened adverse legal consequences
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/giflib-5.1.1/lib/Makefile.am new/giflib-5.1.2/lib/Makefile.am
--- old/giflib-5.1.1/lib/Makefile.am 2014-05-16 12:46:53.000000000 +0200
+++ new/giflib-5.1.2/lib/Makefile.am 2015-05-28 07:04:08.000000000 +0200
@@ -12,6 +12,7 @@
gif_hash.c \
gif_hash.h \
gifalloc.c \
+ openbsd-reallocarray.c \
gif_err.c \
gif_lib_private.h \
quantize.c
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/giflib-5.1.1/lib/dgif_lib.c new/giflib-5.1.2/lib/dgif_lib.c
--- old/giflib-5.1.1/lib/dgif_lib.c 2015-01-04 10:59:46.000000000 +0100
+++ new/giflib-5.1.2/lib/dgif_lib.c 2016-01-07 11:44:44.000000000 +0100
@@ -392,8 +392,8 @@
if (GifFile->SavedImages) {
SavedImage* new_saved_images =
- (SavedImage *)realloc(GifFile->SavedImages,
- sizeof(SavedImage) * (GifFile->ImageCount + 1));
+ (SavedImage *)reallocarray(GifFile->SavedImages,
+ (GifFile->ImageCount + 1), sizeof(SavedImage));
if (new_saved_images == NULL) {
GifFile->Error = D_GIF_ERR_NOT_ENOUGH_MEM;
return GIF_ERROR;
@@ -763,6 +763,12 @@
}
BitsPerPixel = CodeSize;
+ /* this can only happen on a severely malformed GIF */
+ if (BitsPerPixel > 8 || Private->RunningBits > 32) {
+ GifFile->Error = D_GIF_ERR_READ_FAILED; /* somewhat bogus error code */
+ return GIF_ERROR; /* Failed to read Code size. */
+ }
+
Private->Buf[0] = 0; /* Input Buffer empty. */
Private->BitsPerPixel = BitsPerPixel;
Private->ClearCode = (1 << BitsPerPixel);
@@ -1098,7 +1104,7 @@
if (ImageSize > (SIZE_MAX / sizeof(GifPixelType))) {
return GIF_ERROR;
}
- sp->RasterBits = (unsigned char *)malloc(ImageSize *
+ sp->RasterBits = (unsigned char *)reallocarray(NULL, ImageSize,
sizeof(GifPixelType));
if (sp->RasterBits == NULL) {
@@ -1170,6 +1176,12 @@
}
} while (RecordType != TERMINATE_RECORD_TYPE);
+ /* Sanity check for corrupted file */
+ if (GifFile->ImageCount == 0) {
+ GifFile->Error = D_GIF_ERR_NO_IMAG_DSCR;
+ return(GIF_ERROR);
+ }
+
return (GIF_OK);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/giflib-5.1.1/lib/gif_font.c new/giflib-5.1.2/lib/gif_font.c
--- old/giflib-5.1.1/lib/gif_font.c 2014-05-16 12:46:53.000000000 +0200
+++ new/giflib-5.1.2/lib/gif_font.c 2016-01-05 23:44:33.000000000 +0100
@@ -5,6 +5,7 @@
****************************************************************************/
#include <string.h>
+#include <stdlib.h>
#include "gif_lib.h"
@@ -209,8 +210,9 @@
const int border,
const int bg, const int fg)
{
- int i, j = 0, LineCount = 0, TextWidth = 0;
+ int j = 0, LineCount = 0, TextWidth = 0;
const char *cp;
+ char *dup;
/* compute size of text to box */
for (cp = legend; *cp; cp++)
@@ -225,28 +227,33 @@
if (j > TextWidth) /* last line might be longer than any previous */
TextWidth = j;
- /* fill the box */
- GifDrawRectangle(Image, x + 1, y + 1,
- border + TextWidth * GIF_FONT_WIDTH + border - 1,
- border + LineCount * GIF_FONT_HEIGHT + border - 1, bg);
-
/* draw the text */
- i = 0;
- cp = strtok((char *)legend, "\r\n");
- do {
- int leadspace = 0;
-
- if (cp[0] == '\t')
- leadspace = (TextWidth - strlen(++cp)) / 2;
-
- GifDrawText8x8(Image, x + border + (leadspace * GIF_FONT_WIDTH),
- y + border + (GIF_FONT_HEIGHT * i++), cp, fg);
- cp = strtok((char *)NULL, "\r\n");
- } while (cp);
-
- /* outline the box */
- GifDrawBox(Image, x, y, border + TextWidth * GIF_FONT_WIDTH + border,
- border + LineCount * GIF_FONT_HEIGHT + border, fg);
+ dup = malloc(strlen(legend)+1);
+ /* FIXME: should return bad status, but that would require API change */
+ if (dup != NULL) {
+ int i = 0;
+ /* fill the box */
+ GifDrawRectangle(Image, x + 1, y + 1,
+ border + TextWidth * GIF_FONT_WIDTH + border - 1,
+ border + LineCount * GIF_FONT_HEIGHT + border - 1, bg);
+ (void)strcpy(dup, (char *)legend);
+ cp = strtok((char *)dup, "\r\n");
+ do {
+ int leadspace = 0;
+
+ if (cp[0] == '\t')
+ leadspace = (TextWidth - strlen(++cp)) / 2;
+
+ GifDrawText8x8(Image, x + border + (leadspace * GIF_FONT_WIDTH),
+ y + border + (GIF_FONT_HEIGHT * i++), cp, fg);
+ cp = strtok((char *)NULL, "\r\n");
+ } while (cp);
+ (void)free((void *)dup);
+
+ /* outline the box */
+ GifDrawBox(Image, x, y, border + TextWidth * GIF_FONT_WIDTH + border,
+ border + LineCount * GIF_FONT_HEIGHT + border, fg);
+ }
}
/* end */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/giflib-5.1.1/lib/gif_lib.h new/giflib-5.1.2/lib/gif_lib.h
--- old/giflib-5.1.1/lib/gif_lib.h 2015-01-06 22:54:09.000000000 +0100
+++ new/giflib-5.1.2/lib/gif_lib.h 2016-01-07 13:51:53.000000000 +0100
@@ -13,7 +13,7 @@
#define GIFLIB_MAJOR 5
#define GIFLIB_MINOR 1
-#define GIFLIB_RELEASE 1
+#define GIFLIB_RELEASE 2
#define GIF_ERROR 0
#define GIF_OK 1
@@ -244,6 +244,9 @@
GifPixelType ColorTransIn2[]);
extern int GifBitSize(int n);
+extern void *
+reallocarray(void *optr, size_t nmemb, size_t size);
+
/******************************************************************************
Support for the in-core structures allocation (slurp mode).
******************************************************************************/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/giflib-5.1.1/lib/gifalloc.c new/giflib-5.1.2/lib/gifalloc.c
--- old/giflib-5.1.1/lib/gifalloc.c 2015-01-04 10:59:46.000000000 +0100
+++ new/giflib-5.1.2/lib/gifalloc.c 2015-07-13 06:05:46.000000000 +0200
@@ -188,8 +188,8 @@
/* perhaps we can shrink the map? */
if (RoundUpTo < ColorUnion->ColorCount) {
- GifColorType *new_map = (GifColorType *)realloc(Map,
- sizeof(GifColorType) * RoundUpTo);
+ GifColorType *new_map = (GifColorType *)reallocarray(Map,
+ RoundUpTo, sizeof(GifColorType));
if( new_map == NULL ) {
GifFreeMapObject(ColorUnion);
return ((ColorMapObject *) NULL);
@@ -232,9 +232,9 @@
if (*ExtensionBlocks == NULL)
*ExtensionBlocks=(ExtensionBlock *)malloc(sizeof(ExtensionBlock));
else {
- ExtensionBlock* ep_new = (ExtensionBlock *)realloc(*ExtensionBlocks,
- sizeof(ExtensionBlock) *
- (*ExtensionBlockCount + 1));
+ ExtensionBlock* ep_new = (ExtensionBlock *)reallocarray
+ (*ExtensionBlocks, (*ExtensionBlockCount + 1),
+ sizeof(ExtensionBlock));
if( ep_new == NULL )
return (GIF_ERROR);
*ExtensionBlocks = ep_new;
@@ -325,8 +325,8 @@
if (GifFile->SavedImages == NULL)
GifFile->SavedImages = (SavedImage *)malloc(sizeof(SavedImage));
else
- GifFile->SavedImages = (SavedImage *)realloc(GifFile->SavedImages,
- sizeof(SavedImage) * (GifFile->ImageCount + 1));
+ GifFile->SavedImages = (SavedImage *)reallocarray(GifFile->SavedImages,
+ (GifFile->ImageCount + 1), sizeof(SavedImage));
if (GifFile->SavedImages == NULL)
return ((SavedImage *)NULL);
@@ -355,9 +355,10 @@
}
/* next, the raster */
- sp->RasterBits = (unsigned char *)malloc(sizeof(GifPixelType) *
- CopyFrom->ImageDesc.Height *
- CopyFrom->ImageDesc.Width);
+ sp->RasterBits = (unsigned char *)reallocarray(NULL,
+ (CopyFrom->ImageDesc.Height *
+ CopyFrom->ImageDesc.Width),
+ sizeof(GifPixelType));
if (sp->RasterBits == NULL) {
FreeLastSavedImage(GifFile);
return (SavedImage *)(NULL);
@@ -368,9 +369,9 @@
/* finally, the extension blocks */
if (sp->ExtensionBlocks != NULL) {
- sp->ExtensionBlocks = (ExtensionBlock *)malloc(
- sizeof(ExtensionBlock) *
- CopyFrom->ExtensionBlockCount);
+ sp->ExtensionBlocks = (ExtensionBlock *)reallocarray(NULL,
+ CopyFrom->ExtensionBlockCount,
+ sizeof(ExtensionBlock));
if (sp->ExtensionBlocks == NULL) {
FreeLastSavedImage(GifFile);
return (SavedImage *)(NULL);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/giflib-5.1.1/lib/openbsd-reallocarray.c new/giflib-5.1.2/lib/openbsd-reallocarray.c
--- old/giflib-5.1.1/lib/openbsd-reallocarray.c 1970-01-01 01:00:00.000000000 +0100
+++ new/giflib-5.1.2/lib/openbsd-reallocarray.c 2015-05-28 06:56:37.000000000 +0200
@@ -0,0 +1,38 @@
+/* $OpenBSD: reallocarray.c,v 1.1 2014/05/08 21:43:49 deraadt Exp $ */
+/*
+ * Copyright (c) 2008 Otto Moerbeek <otto(a)drijf.net>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include <sys/types.h>
+#include <errno.h>
+#include <stdint.h>
+#include <stdlib.h>
+
+/*
+ * This is sqrt(SIZE_MAX+1), as s1*s2 <= SIZE_MAX
+ * if both s1 < MUL_NO_OVERFLOW and s2 < MUL_NO_OVERFLOW
+ */
+#define MUL_NO_OVERFLOW ((size_t)1 << (sizeof(size_t) * 4))
+
+void *
+reallocarray(void *optr, size_t nmemb, size_t size)
+{
+ if ((nmemb >= MUL_NO_OVERFLOW || size >= MUL_NO_OVERFLOW) &&
+ nmemb > 0 && SIZE_MAX / nmemb < size) {
+ errno = ENOMEM;
+ return NULL;
+ }
+ return realloc(optr, size * nmemb);
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/giflib-5.1.1/missing new/giflib-5.1.2/missing
--- old/giflib-5.1.1/missing 2014-01-02 20:14:59.000000000 +0100
+++ new/giflib-5.1.2/missing 2015-07-12 23:04:43.000000000 +0200
@@ -3,7 +3,7 @@
scriptversion=2013-10-28.13; # UTC
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
# Originally written by Fran,cois Pinard <pinard(a)iro.umontreal.ca>, 1996.
# This program is free software; you can redistribute it and/or modify
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/giflib-5.1.1/test-driver new/giflib-5.1.2/test-driver
--- old/giflib-5.1.1/test-driver 2014-01-02 20:14:59.000000000 +0100
+++ new/giflib-5.1.2/test-driver 2015-07-12 23:04:43.000000000 +0200
@@ -3,7 +3,7 @@
scriptversion=2013-07-13.22; # UTC
-# Copyright (C) 2011-2013 Free Software Foundation, Inc.
+# Copyright (C) 2011-2014 Free Software Foundation, Inc.
#
# 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
@@ -106,11 +106,14 @@
# Test script is run here.
"$@" >$log_file 2>&1
estatus=$?
+
if test $enable_hard_errors = no && test $estatus -eq 99; then
- estatus=1
+ tweaked_estatus=1
+else
+ tweaked_estatus=$estatus
fi
-case $estatus:$expect_failure in
+case $tweaked_estatus:$expect_failure in
0:yes) col=$red res=XPASS recheck=yes gcopy=yes;;
0:*) col=$grn res=PASS recheck=no gcopy=no;;
77:*) col=$blu res=SKIP recheck=no gcopy=yes;;
@@ -119,6 +122,12 @@
*:*) col=$red res=FAIL recheck=yes gcopy=yes;;
esac
+# Report the test outcome and exit status in the logs, so that one can
+# know whether the test passed or failed simply by looking at the '.log'
+# file, without the need of also peaking into the corresponding '.trs'
+# file (automake bug#11814).
+echo "$res $test_name (exit status: $estatus)" >>$log_file
+
# Report outcome to console.
echo "${col}${res}${std}: $test_name"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/giflib-5.1.1/util/getarg.c new/giflib-5.1.2/util/getarg.c
--- old/giflib-5.1.1/util/getarg.c 2014-10-30 02:22:53.000000000 +0100
+++ new/giflib-5.1.2/util/getarg.c 2016-01-07 13:44:03.000000000 +0100
@@ -172,8 +172,9 @@
va_list ap;
strncpy(CtrlStrCopy, CtrlStr, sizeof(CtrlStrCopy)-1);
+ GASetParamCount(CtrlStr, strlen(CtrlStr), &ParamCount);
va_start(ap, CtrlStr);
- for (i = 1; i <= MAX_PARAM; i++)
+ for (i = 1; i <= ParamCount; i++)
Parameters[i - 1] = va_arg(ap, void *);
va_end(ap);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/giflib-5.1.1/util/gifclrmp.c new/giflib-5.1.2/util/gifclrmp.c
--- old/giflib-5.1.1/util/gifclrmp.c 2014-05-16 12:46:53.000000000 +0200
+++ new/giflib-5.1.2/util/gifclrmp.c 2016-01-06 06:41:27.000000000 +0100
@@ -127,6 +127,8 @@
if (!ImageNFlag) {
/* We are supposed to modify the screen color map, so do it: */
+ if (!GifFileIn->SColorMap)
+ GIF_EXIT("No colormap to modify");
GifFileIn->SColorMap = ModifyColorMap(GifFileIn->SColorMap);
if (!HasGIFOutput) {
/* We can quit here, as we have the color map: */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/giflib-5.1.1/util/giffilter.c new/giflib-5.1.2/util/giffilter.c
--- old/giflib-5.1.1/util/giffilter.c 2014-05-16 12:46:53.000000000 +0200
+++ new/giflib-5.1.2/util/giffilter.c 2015-01-31 18:06:43.000000000 +0100
@@ -107,7 +107,7 @@
break;
case EXTENSION_RECORD_TYPE:
/* pass through extension records */
- if (DGifGetExtension(GifFileIn, &ExtCode, &Extension) == GIF_ERROR)
+ if (DGifGetExtension(GifFileIn, &ExtCode, &Extension) == GIF_ERROR || Extension == NULL)
QuitGifError(GifFileIn, GifFileOut);
if (EGifPutExtensionLeader(GifFileOut, ExtCode) == GIF_ERROR)
QuitGifError(GifFileIn, GifFileOut);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/giflib-5.1.1/util/giffix.c new/giflib-5.1.2/util/giffix.c
--- old/giflib-5.1.1/util/giffix.c 2014-05-16 12:46:53.000000000 +0200
+++ new/giflib-5.1.2/util/giffix.c 2016-01-07 12:08:12.000000000 +0100
@@ -112,6 +112,8 @@
Height = GifFileIn->Image.Height;
GifQprintf("\n%s: Image %d at (%d, %d) [%dx%d]: ",
PROGRAM_NAME, ++ImageNum, Col, Row, Width, Height);
+ if (Width > GifFileIn->SWidth)
+ GIF_EXIT("Image is wider than total");
/* Put the image descriptor to out file: */
if (EGifPutImageDesc(GifFileOut, Col, Row, Width, Height,
@@ -158,10 +160,11 @@
QuitGifError(GifFileIn, GifFileOut);
if (EGifPutExtensionLeader(GifFileOut, ExtCode) == GIF_ERROR)
QuitGifError(GifFileIn, GifFileOut);
- if (EGifPutExtensionBlock(GifFileOut,
+ if (Extension != NULL)
+ if (EGifPutExtensionBlock(GifFileOut,
Extension[0],
Extension + 1) == GIF_ERROR)
- QuitGifError(GifFileIn, GifFileOut);
+ QuitGifError(GifFileIn, GifFileOut);
while (Extension != NULL) {
if (DGifGetExtensionNext(GifFileIn, &Extension)==GIF_ERROR)
QuitGifError(GifFileIn, GifFileOut);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/giflib-5.1.1/util/gifinto.c new/giflib-5.1.2/util/gifinto.c
--- old/giflib-5.1.1/util/gifinto.c 2014-05-16 12:46:53.000000000 +0200
+++ new/giflib-5.1.2/util/gifinto.c 2016-01-06 00:07:24.000000000 +0100
@@ -70,6 +70,7 @@
******************************************************************************/
int main(int argc, char **argv)
{
+ int FD;
int NumFiles;
bool Error, MinSizeFlag = false, HelpFlag = false;
char **FileName = NULL, FoutTmpName[STRLEN], FullPath[STRLEN], *p;
@@ -126,7 +127,6 @@
/* then add a name for the tempfile */
if ( (strlen(FoutTmpName) + strlen(DEFAULT_TMP_NAME)) > STRLEN-1 ) GIF_EXIT("Filename too long.");
strcat(FoutTmpName, DEFAULT_TMP_NAME);
- int FD;
#ifdef _WIN32
char *tmpFN = _mktemp(FoutTmpName);
if (tmpFN)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/giflib-5.1.1/util/gifsponge.c new/giflib-5.1.2/util/gifsponge.c
--- old/giflib-5.1.1/util/gifsponge.c 2014-12-22 22:30:05.000000000 +0100
+++ new/giflib-5.1.2/util/gifsponge.c 2016-01-06 06:59:50.000000000 +0100
@@ -54,9 +54,13 @@
GifFileOut->SHeight = GifFileIn->SHeight;
GifFileOut->SColorResolution = GifFileIn->SColorResolution;
GifFileOut->SBackGroundColor = GifFileIn->SBackGroundColor;
- GifFileOut->SColorMap = GifMakeMapObject(
- GifFileIn->SColorMap->ColorCount,
- GifFileIn->SColorMap->Colors);
+ if (GifFileIn->SColorMap) {
+ GifFileOut->SColorMap = GifMakeMapObject(
+ GifFileIn->SColorMap->ColorCount,
+ GifFileIn->SColorMap->Colors);
+ } else {
+ GifFileOut->SColorMap = NULL;
+ }
for (i = 0; i < GifFileIn->ImageCount; i++)
(void) GifMakeSavedImage(GifFileOut, &GifFileIn->SavedImages[i]);
@@ -74,8 +78,6 @@
if (DGifCloseFile(GifFileIn, &ErrorCode) == GIF_ERROR)
PrintGifError(ErrorCode);
- if (EGifCloseFile(GifFileOut, &ErrorCode) == GIF_ERROR)
- PrintGifError(ErrorCode);
return 0;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/giflib-5.1.1/util/giftext.c new/giflib-5.1.2/util/giftext.c
--- old/giflib-5.1.1/util/giftext.c 2014-05-16 12:46:53.000000000 +0200
+++ new/giflib-5.1.2/util/giftext.c 2016-01-07 13:34:42.000000000 +0100
@@ -259,6 +259,12 @@
if (ExtCode == GRAPHICS_EXT_FUNC_CODE) {
GraphicsControlBlock gcb;
+ if (Extension == NULL) {
+ printf("Invalid extension block\n");
+ GifFile->Error = D_GIF_ERR_IMAGE_DEFECT;
+ PrintGifError(GifFile->Error);
+ exit(EXIT_FAILURE);
+ }
if (DGifExtensionToGCB(Extension[0], Extension+1, &gcb) == GIF_ERROR) {
PrintGifError(GifFile->Error);
exit(EXIT_FAILURE);
++++++ giflib-automake-1_13.patch ++++++
--- /var/tmp/diff_new_pack.miJoBp/_old 2016-01-23 01:14:25.000000000 +0100
+++ /var/tmp/diff_new_pack.miJoBp/_new 2016-01-23 01:14:25.000000000 +0100
@@ -1,10 +1,6 @@
-Index: b/configure.ac
-===================================================================
---- a/configure.ac
-+++ b/configure.ac
-@@ -5,11 +5,11 @@ AM_INIT_AUTOMAKE([gnu dist-bzip2 -Wall])
- dnl Make builds less verbose. Shuts off Makefile portability checks.
- m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
+--- giflib-5.1.2/configure.ac 2016-01-19 13:55:58.238147631 +0100
++++ giflib-5.1.2/configure.ac 2016-01-19 13:56:31.165397666 +0100
+@@ -8,7 +8,7 @@
dnl Note: config.h is not used in the current build
dnl We leave this in place only to suppress an error message at autogen time
@@ -13,5 +9,3 @@
AC_CONFIG_MACRO_DIR([m4])
dnl Checks for programs.
- AC_PROG_CC_STDC
- AC_USE_SYSTEM_EXTENSIONS
++++++ giflib-visibility.patch ++++++
--- /var/tmp/diff_new_pack.miJoBp/_old 2016-01-23 01:14:25.000000000 +0100
+++ /var/tmp/diff_new_pack.miJoBp/_new 2016-01-23 01:14:25.000000000 +0100
@@ -1,20 +1,13 @@
----
- configure.ac | 7 +++++--
- lib/gif_hash.h | 4 ++++
- lib/gif_lib_private.h | 3 +++
- 3 files changed, 12 insertions(+), 2 deletions(-)
-
-Index: giflib-5.0.4/configure.ac
-===================================================================
---- giflib-5.0.4.orig/configure.ac
-+++ giflib-5.0.4/configure.ac
-@@ -8,11 +8,14 @@ m4_ifdef([AM_SILENT_RULES], [AM_SILENT_R
+--- giflib-5.1.2/configure.ac 2016-01-07 13:51:33.000000000 +0100
++++ giflib-5.1.2/configure.ac 2016-01-19 13:54:45.119812921 +0100
+@@ -9,12 +9,15 @@
dnl Note: config.h is not used in the current build
dnl We leave this in place only to suppress an error message at autogen time
AM_CONFIG_HEADER(config.h)
+AC_CONFIG_MACRO_DIR([m4])
dnl Checks for programs.
+ AM_PROG_AR
-AC_PROG_LIBTOOL
-AC_PROG_CC
+AC_PROG_CC_STDC
@@ -25,11 +18,9 @@
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_MAKE_SET
-Index: giflib-5.0.4/lib/gif_hash.h
-===================================================================
---- giflib-5.0.4.orig/lib/gif_hash.h
-+++ giflib-5.0.4/lib/gif_hash.h
-@@ -25,6 +25,8 @@ gif_hash.h - magfic constants and declar
+--- giflib-5.1.2/lib/gif_hash.h 2014-05-16 12:46:53.000000000 +0200
++++ giflib-5.1.2/lib/gif_hash.h 2016-01-19 13:54:45.119812921 +0100
+@@ -25,6 +25,8 @@
#define HT_PUT_KEY(l) (l << 12)
#define HT_PUT_CODE(l) (l & 0x0FFF)
@@ -38,7 +29,7 @@
typedef struct GifHashTableType {
uint32_t HTable[HT_SIZE];
} GifHashTableType;
-@@ -34,6 +36,8 @@ void _ClearHashTable(GifHashTableType *H
+@@ -34,6 +36,8 @@
void _InsertHashTable(GifHashTableType *HashTable, uint32_t Key, int Code);
int _ExistsHashTable(GifHashTableType *HashTable, uint32_t Key);
@@ -47,11 +38,9 @@
#endif /* _GIF_HASH_H_ */
/* end */
-Index: giflib-5.0.4/lib/gif_lib_private.h
-===================================================================
---- giflib-5.0.4.orig/lib/gif_lib_private.h
-+++ giflib-5.0.4/lib/gif_lib_private.h
-@@ -29,6 +29,8 @@ gif_lib_private.h - internal giflib rout
+--- giflib-5.1.2/lib/gif_lib_private.h 2014-05-16 12:46:53.000000000 +0200
++++ giflib-5.1.2/lib/gif_lib_private.h 2016-01-19 13:54:45.119812921 +0100
+@@ -29,6 +29,8 @@
#define IS_READABLE(Private) (Private->FileState & FILE_STATE_READ)
#define IS_WRITEABLE(Private) (Private->FileState & FILE_STATE_WRITE)
@@ -60,7 +49,7 @@
typedef struct GifFilePrivateType {
GifWord FileState, FileHandle, /* Where all this data goes to! */
BitsPerPixel, /* Bits per pixel (Codes uses at least this + 1). */
-@@ -54,6 +56,7 @@ typedef struct GifFilePrivateType {
+@@ -54,6 +56,7 @@
bool gif89;
} GifFilePrivateType;
1
0