openSUSE Commits
Threads by month
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
June 2016
- 1 participants
- 1295 discussions
Hello community,
here is the log from the commit of package python3-Sphinx for openSUSE:Factory checked in at 2016-06-29 15:02:15
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python3-Sphinx (Old)
and /work/SRC/openSUSE:Factory/.python3-Sphinx.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python3-Sphinx"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python3-Sphinx/python3-Sphinx.changes 2016-05-23 16:37:52.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.python3-Sphinx.new/python3-Sphinx.changes 2016-06-29 15:02:16.000000000 +0200
@@ -1,0 +2,139 @@
+Sat Jun 18 18:49:52 UTC 2016 - arun(a)gmx.de
+
+- update to version 1.4.4:
+ * #2630: Latex sphinx.sty Notice Enviroment formatting problem
+ * #2632: Warning directives fail in quote environment latex build
+ * #2633: Sphinx crashes with old styled indices
+ * Fix a "\begin{\minipage}" typo in sphinx.sty from 1.4.2 (ref:
+ 68becb1)
+ * #2622: Latex produces empty pages after title and table of
+ contents
+ * #2640: 1.4.2 LaTeX crashes if code-block inside warning directive
+ * Let LaTeX use straight quotes also in inline code (ref #2627)
+ * #2351: latex crashes if enumerated lists are placed on footnotes
+ * #2646: latex crashes if math contains twice empty lines
+ * #2480: `sphinx.ext.autodoc`: memory addresses were shown
+ * latex: allow code-blocks appearing inside lists and quotes at
+ maximal nesting
+ * depth (ref #777, #2624, #2651)
+ * #2635: Latex code directives produce inconsistent frames based on
+ viewing resolution
+ * #2639: Sphinx now bundles iftex.sty
+ * Failed to build PDF with framed.sty 0.95
+ * Sphinx now bundles needspace.sty
+ * #2666: C++, properly look up nested names involving constructors.
+
+- changes from version 1.4.3:
+ * #2530: got "Counter too large" error on building PDF if large
+ numbered footnotes existed in admonitions
+ * "width" option of figure directive does not work if "align" option
+ specified at same time (ref: #2595)
+ * #2590: The "inputenc" package breaks compiling under lualatex and
+ xelatex
+ * #2540: date on latex front page use different font
+ * Suppress "document isn't included in any toctree" warning if the
+ document is included (ref: #2603)
+ * #2614: Some tables in PDF output will end up shifted if user sets
+ non zero \parindent in preamble
+ * #2602: URL redirection breaks the hyperlinks generated by
+ `sphinx.ext.intersphinx`
+ * #2613: Show warnings if merged extensions are loaded
+ * #2619: make sure amstext LaTeX package always loaded (ref:
+ d657225, 488ee52, 9d82cad and #2615)
+ * #2593: latex crashes if any figures in the table
+
+- changes from version 1.4.2:
+ * Features added
+ + Now :confval:`suppress_warnings` accepts following
+ configurations (ref: #2451, #2466):
+ o "app.add_node"
+ o "app.add_directive"
+ o "app.add_role"
+ o "app.add_generic_role"
+ o "app.add_source_parser"
+ o "image.data_uri"
+ o "image.nonlocal_uri"
+ + #2453: LaTeX writer allows page breaks in topic contents; and
+ their horizontal extent now fits in the line width (with shadow
+ in margin). Also warning-type admonitions allow page breaks and
+ their vertical spacing has been made more coherent with the one
+ for hint-type notices (ref #2446).
+ + #2459: the framing of literal code-blocks in LaTeX output (and
+ not only the code lines themselves) obey the indentation in
+ lists or quoted blocks.
+ + #2343: the long source lines in code-blocks are wrapped (without
+ modifying the line numbering) in LaTeX output (ref #1534,
+ #2304).
+ * Bugs fixed
+ + #2370: the equations are slightly misaligned in LaTeX writer
+ + #1817, #2077: suppress pep8 warnings on conf.py generated by
+ sphinx-quickstart
+ + #2407: building docs crash if document includes large data image
+ URIs
+ + #2436: Sphinx does not check version by :confval:`needs_sphinx`
+ if loading extensions failed
+ + #2397: Setup shorthandoff for turkish documents
+ + #2447: VerbatimBorderColor wrongly used also for captions of PDF
+ + #2456: C++, fix crash related to document merging (e.g.,
+ singlehtml and Latex builders).
+ + #2446: latex(pdf) sets local tables of contents (or more
+ generally topic nodes) in unbreakable boxes, causes overflow at
+ bottom
+ + #2476: Omit MathJax markers if :nowrap: is given
+ + #2465: latex builder fails in case no caption option is provided
+ to toctree directive
+ + Sphinx crashes if self referenced toctree found
+ + #2481: spelling mistake for mecab search splitter. Thanks to
+ Naoki Sato.
+ + #2309: Fix could not refer "indirect hyperlink targets" by
+ ref-role
+ + intersphinx fails if mapping URL contains any port
+ + #2088: intersphinx crashes if the mapping URL requires basic
+ auth
+ + #2304: auto line breaks in latexpdf codeblocks
+ + #1534: Word wrap long lines in Latex verbatim blocks
+ + #2460: too much white space on top of captioned literal blocks
+ in PDF output
+ + Show error reason when multiple math extensions are loaded (ref:
+ #2499)
+ + #2483: any figure number was not assigned if figure title
+ contains only non text objects
+ + #2501: Unicode subscript numbers are normalized in LaTeX
+ + #2492: Figure directive with :figwidth: generates incorrect
+ Latex-code
+ + The caption of figure is always put on center even if ":align:"
+ was specified
+ + #2526: LaTeX writer crashes if the section having only images
+ + #2522: Sphinx touches mo files under installed directory that
+ caused permission error.
+ + #2536: C++, fix crash when an immediately nested scope has the
+ same name as the current scope.
+ + #2555: Fix crash on any-references with unicode.
+ + #2517: wrong bookmark encoding in PDF if using LuaLaTeX
+ + #2521: generated Makefile causes BSD make crashed if
+ sphinx-build not found
+ + #2470: "typing" backport package causes autodoc errors with
+ python 2.7
+ + "sphinx.ext.intersphinx" crashes if non-string value is used for
+ key of `intersphinx_mapping`
+ + #2518: `intersphinx_mapping` disallows non alphanumeric keys
+ + #2558: unpack error on devhelp builder
+ + #2561: Info builder crashes when a footnote contains a link
+ + #2565: The descriptions of objects generated by
+ "sphinx.ext.autosummary" overflow lines at LaTeX writer
+ + Extend pdflatex config in sphinx.sty to subparagraphs (ref:
+ #2551)
+ + #2445: `rst_prolog` and `rst_epilog` affect to non reST sources
+ + #2576: "sphinx.ext.imgmath" crashes if subprocess raises error
+ + #2577: "sphinx.ext.imgmath": Invalid argument are passed to
+ dvisvgm
+ + #2556: Xapian search does not work with Python 3
+ + #2581: The search doesn't work if language="es" (spanish)
+ + #2382: Adjust spacing after abbreviations on figure numbers in
+ LaTeX writer
+ + #2383: The generated footnote by `latex_show_urls` overflows
+ lines
+ + #2497, #2552: The label of search button does not fit for the
+ button itself
+
+-------------------------------------------------------------------
@@ -12 +150,0 @@
-
Old:
----
Sphinx-1.4.1.tar.gz
New:
----
Sphinx-1.4.4.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python3-Sphinx.spec ++++++
--- /var/tmp/diff_new_pack.XlSElj/_old 2016-06-29 15:02:17.000000000 +0200
+++ /var/tmp/diff_new_pack.XlSElj/_new 2016-06-29 15:02:17.000000000 +0200
@@ -17,7 +17,7 @@
Name: python3-Sphinx
-Version: 1.4.1
+Version: 1.4.4
Release: 0
Url: http://sphinx.pocoo.org
Summary: Python documentation generator
++++++ Sphinx-1.4.1.tar.gz -> Sphinx-1.4.4.tar.gz ++++++
++++ 5222 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package python3-zope.interface for openSUSE:Factory checked in at 2016-06-29 15:02:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python3-zope.interface (Old)
and /work/SRC/openSUSE:Factory/.python3-zope.interface.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python3-zope.interface"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python3-zope.interface/python3-zope.interface.changes 2016-05-17 17:13:52.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.python3-zope.interface.new/python3-zope.interface.changes 2016-06-29 15:02:09.000000000 +0200
@@ -1,0 +2,7 @@
+Sun Jun 19 01:29:08 UTC 2016 - arun(a)gmx.de
+
+- update to version 4.2.0:
+ * Add support for Python 3.5
+ * Drop support for Python 2.6 and 3.2.
+
+-------------------------------------------------------------------
@@ -7 +13,0 @@
-
Old:
----
zope.interface-4.1.3.tar.gz
New:
----
zope.interface-4.2.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python3-zope.interface.spec ++++++
--- /var/tmp/diff_new_pack.nVLnu0/_old 2016-06-29 15:02:10.000000000 +0200
+++ /var/tmp/diff_new_pack.nVLnu0/_new 2016-06-29 15:02:10.000000000 +0200
@@ -17,7 +17,7 @@
Name: python3-zope.interface
-Version: 4.1.3
+Version: 4.2.0
Release: 0
Url: http://pypi.python.org/pypi/zope.interface
Summary: Interfaces for Python
++++++ zope.interface-4.1.3.tar.gz -> zope.interface-4.2.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.interface-4.1.3/.gitignore new/zope.interface-4.2.0/.gitignore
--- old/zope.interface-4.1.3/.gitignore 1970-01-01 01:00:00.000000000 +0100
+++ new/zope.interface-4.2.0/.gitignore 2015-06-01 18:09:37.000000000 +0200
@@ -0,0 +1,16 @@
+*.egg-info
+*.pyc
+*.so
+__pycache__
+.coverage
+.installed.cfg
+nosetests.xml
+coverage.xml
+.eggs/
+.tox/
+bin/
+build/
+eggs/
+develop-eggs/
+docs/_build/
+parts/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.interface-4.1.3/.travis.yml new/zope.interface-4.2.0/.travis.yml
--- old/zope.interface-4.1.3/.travis.yml 1970-01-01 01:00:00.000000000 +0100
+++ new/zope.interface-4.2.0/.travis.yml 2016-06-10 15:55:50.000000000 +0200
@@ -0,0 +1,50 @@
+language: python
+sudo: false
+matrix:
+ include:
+ - os: linux
+ python: 2.7
+ - os: linux
+ python: 3.3
+ - os: linux
+ python: 3.4
+ - os: linux
+ python: 3.5
+ - os: linux
+ python: pypy
+ - os: linux
+ python: pypy3
+ - os: osx
+ language: generic
+ env: TERRYFY_PYTHON='homebrew 2'
+ - os: osx
+ language: generic
+ env: TERRYFY_PYTHON='macpython 3.4'
+ - os: osx
+ language: generic
+ env: TERRYFY_PYTHON='homebrew 3'
+before_install:
+ - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then git clone https://github.com/MacPython/terryfy; fi
+ - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then source terryfy/travis_tools.sh; fi
+ - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then get_python_environment $TERRYFY_PYTHON venv; fi
+ - if [[ "$TERRYFY_PYTHON" == "homebrew 3" ]]; then alias pip=`which pip3` ; fi
+install:
+ - pip install -e .
+script:
+ - python setup.py test -q
+notifications:
+ email: false
+after_success:
+ - echo [distutils] > ~/.pypirc
+ - echo index-servers = pypi >> ~/.pypirc
+ - echo [pypi] >> ~/.pypirc
+ - echo repository=https://pypi.python.org/pypi >> ~/.pypirc
+ - echo username=zope.wheelbuilder >> ~/.pypirc
+ - echo password=$PYPIPASSWORD >> ~/.pypirc
+ - if [[ $TRAVIS_TAG && "$TRAVIS_OS_NAME" == "osx" ]]; then pip install twine; fi
+ - if [[ $TRAVIS_TAG && "$TRAVIS_OS_NAME" == "osx" ]]; then python setup.py bdist_wheel; fi
+ - if [[ $TRAVIS_TAG && "$TRAVIS_OS_NAME" == "osx" ]]; then twine upload dist/*; fi
+
+env:
+ global:
+ secure: "Ra1KZO3VAF+1gEZgXiAMYIH+nfJ7J7tUZ7x+FFhHO2Gw3y6wvhpdnV0Tb3U6ZtWQh6ouvcGlCFHMeygoQ2j8WvTyo4l10qSfQVnjoNg2c/z294o9tv2WyRhZzyGvs587BxolBG+eqBuO6JUSIVl4uiPAORBcV1TdrErhjgdHiLk="
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.interface-4.1.3/CHANGES.rst new/zope.interface-4.2.0/CHANGES.rst
--- old/zope.interface-4.1.3/CHANGES.rst 2015-10-05 09:35:14.000000000 +0200
+++ new/zope.interface-4.2.0/CHANGES.rst 2016-06-10 15:58:18.000000000 +0200
@@ -1,6 +1,14 @@
Changes
=======
+4.2.0 (2016-06-10)
+------------------
+
+- Add support for Python 3.5
+
+- Drop support for Python 2.6 and 3.2.
+
+
4.1.3 (2015-10-05)
------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.interface-4.1.3/PKG-INFO new/zope.interface-4.2.0/PKG-INFO
--- old/zope.interface-4.1.3/PKG-INFO 2015-10-05 09:35:16.000000000 +0200
+++ new/zope.interface-4.2.0/PKG-INFO 2016-06-10 15:59:19.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: zope.interface
-Version: 4.1.3
+Version: 4.2.0
Summary: Interfaces for Python
Home-page: https://github.com/zopefoundation/zope.interface
Author: Zope Foundation and Contributors
@@ -9,7 +9,7 @@
Description: ``zope.interface``
==================
- .. image:: https://pypip.in/version/zope.interface/badge.svg?style=flat
+ .. image:: https://img.shields.io/pypi/v/zope.interface.svg
:target: https://pypi.python.org/pypi/zope.interface/
:alt: Latest Version
@@ -17,7 +17,7 @@
:target: https://travis-ci.org/zopefoundation/zope.interface
.. image:: https://readthedocs.org/projects/zopeinterface/badge/?version=latest
- :target: http://zopeinterface.readthedocs.org/en/latest/
+ :target: https://zopeinterface.readthedocs.io/en/latest/
:alt: Documentation Status
This package is intended to be independently reusable in any Python
@@ -36,6 +36,14 @@
Changes
=======
+ 4.2.0 (2016-06-10)
+ ------------------
+
+ - Add support for Python 3.5
+
+ - Drop support for Python 2.6 and 3.2.
+
+
4.1.3 (2015-10-05)
------------------
@@ -451,12 +459,11 @@
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.2
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
+Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Framework :: Zope3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.interface-4.1.3/README.rst new/zope.interface-4.2.0/README.rst
--- old/zope.interface-4.1.3/README.rst 2015-10-05 09:35:14.000000000 +0200
+++ new/zope.interface-4.2.0/README.rst 2016-06-07 17:48:38.000000000 +0200
@@ -1,7 +1,7 @@
``zope.interface``
==================
-.. image:: https://pypip.in/version/zope.interface/badge.svg?style=flat
+.. image:: https://img.shields.io/pypi/v/zope.interface.svg
:target: https://pypi.python.org/pypi/zope.interface/
:alt: Latest Version
@@ -9,7 +9,7 @@
:target: https://travis-ci.org/zopefoundation/zope.interface
.. image:: https://readthedocs.org/projects/zopeinterface/badge/?version=latest
- :target: http://zopeinterface.readthedocs.org/en/latest/
+ :target: https://zopeinterface.readthedocs.io/en/latest/
:alt: Documentation Status
This package is intended to be independently reusable in any Python
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.interface-4.1.3/appveyor.yml new/zope.interface-4.2.0/appveyor.yml
--- old/zope.interface-4.1.3/appveyor.yml 1970-01-01 01:00:00.000000000 +0100
+++ new/zope.interface-4.2.0/appveyor.yml 2016-06-10 15:55:50.000000000 +0200
@@ -0,0 +1,39 @@
+environment:
+ password:
+ secure: RtpeKCle25vCixaUcJBu6Q==
+ matrix:
+ - python : 27
+ - python : 27-x64
+ - python : 33
+ - python : 33-x64
+ - python : 34
+ - python : 34-x64
+ - python : 35
+ - python : 35-x64
+
+install:
+ - "SET PATH=C:\\Python%PYTHON%;c:\\Python%PYTHON%\\scripts;%PATH%"
+ - echo "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x64 > "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\vcvars64.bat"
+ - pip install -e .
+
+build: false
+
+test_script:
+ - python setup.py test -q
+
+on_success:
+ - echo Build succesful!
+
+deploy_script:
+ - echo [distutils] > %USERPROFILE%\\.pypirc
+ - echo index-servers = >> %USERPROFILE%\\.pypirc
+ - echo pypi >> %USERPROFILE%\\.pypirc
+ - echo [pypi] >> %USERPROFILE%\\.pypirc
+ - echo repository=https://pypi.python.org/pypi >> %USERPROFILE%\\.pypirc
+ - echo username=zope.wheelbuilder >> %USERPROFILE%\\.pypirc
+ - echo password=%password% >> %USERPROFILE%\\.pypirc
+ - set HOME=%USERPROFILE%
+ - pip install wheel twine
+ - ps: if($env:APPVEYOR_REPO_TAG -eq $TRUE) { python -W ignore setup.py bdist_wheel; twine upload dist/* }
+
+deploy : on
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.interface-4.1.3/bootstrap.py new/zope.interface-4.2.0/bootstrap.py
--- old/zope.interface-4.1.3/bootstrap.py 2015-10-05 09:35:14.000000000 +0200
+++ new/zope.interface-4.2.0/bootstrap.py 2016-06-07 17:48:38.000000000 +0200
@@ -25,7 +25,10 @@
from optparse import OptionParser
-tmpeggs = tempfile.mkdtemp()
+__version__ = '2015-07-01'
+# See zc.buildout's changelog if this version is up to date.
+
+tmpeggs = tempfile.mkdtemp(prefix='bootstrap-')
usage = '''\
[DESIRED PYTHON FOR BUILDOUT] bootstrap.py [options]
@@ -40,8 +43,9 @@
'''
parser = OptionParser(usage=usage)
-parser.add_option("-v", "--version", help="use a specific zc.buildout version")
-
+parser.add_option("--version",
+ action="store_true", default=False,
+ help=("Return bootstrap.py version."))
parser.add_option("-t", "--accept-buildout-test-releases",
dest='accept_buildout_test_releases',
action="store_true", default=False,
@@ -59,25 +63,33 @@
parser.add_option("--allow-site-packages",
action="store_true", default=False,
help=("Let bootstrap.py use existing site packages"))
+parser.add_option("--buildout-version",
+ help="Use a specific zc.buildout version")
parser.add_option("--setuptools-version",
- help="use a specific setuptools version")
-
+ help="Use a specific setuptools version")
+parser.add_option("--setuptools-to-dir",
+ help=("Allow for re-use of existing directory of "
+ "setuptools versions"))
options, args = parser.parse_args()
+if options.version:
+ print("bootstrap.py version %s" % __version__)
+ sys.exit(0)
+
######################################################################
# load/install setuptools
try:
- if options.allow_site_packages:
- import setuptools
- import pkg_resources
from urllib.request import urlopen
except ImportError:
from urllib2 import urlopen
ez = {}
-exec(urlopen('https://bootstrap.pypa.io/ez_setup.py').read(), ez)
+if os.path.exists('ez_setup.py'):
+ exec(open('ez_setup.py').read(), ez)
+else:
+ exec(urlopen('https://bootstrap.pypa.io/ez_setup.py').read(), ez)
if not options.allow_site_packages:
# ez_setup imports site, which adds site packages
@@ -88,12 +100,19 @@
# We can't remove these reliably
if hasattr(site, 'getsitepackages'):
for sitepackage_path in site.getsitepackages():
- sys.path[:] = [x for x in sys.path if sitepackage_path not in x]
+ # Strip all site-packages directories from sys.path that
+ # are not sys.prefix; this is because on Windows
+ # sys.prefix is a site-package directory.
+ if sitepackage_path != sys.prefix:
+ sys.path[:] = [x for x in sys.path
+ if sitepackage_path not in x]
setup_args = dict(to_dir=tmpeggs, download_delay=0)
if options.setuptools_version is not None:
setup_args['version'] = options.setuptools_version
+if options.setuptools_to_dir is not None:
+ setup_args['to_dir'] = options.setuptools_to_dir
ez['use_setuptools'](**setup_args)
import setuptools
@@ -110,7 +129,12 @@
ws = pkg_resources.working_set
+setuptools_path = ws.find(
+ pkg_resources.Requirement.parse('setuptools')).location
+
+# Fix sys.path here as easy_install.pth added before PYTHONPATH
cmd = [sys.executable, '-c',
+ 'import sys; sys.path[0:0] = [%r]; ' % setuptools_path +
'from setuptools.command.easy_install import main; main()',
'-mZqNxd', tmpeggs]
@@ -123,11 +147,8 @@
if find_links:
cmd.extend(['-f', find_links])
-setuptools_path = ws.find(
- pkg_resources.Requirement.parse('setuptools')).location
-
requirement = 'zc.buildout'
-version = options.version
+version = options.buildout_version
if version is None and not options.accept_buildout_test_releases:
# Figure out the most recent final version of zc.buildout.
import setuptools.package_index
@@ -167,7 +188,7 @@
cmd.append(requirement)
import subprocess
-if subprocess.call(cmd, env=dict(os.environ, PYTHONPATH=setuptools_path)) != 0:
+if subprocess.call(cmd) != 0:
raise Exception(
"Failed to execute command:\n%s" % repr(cmd)[1:-1])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.interface-4.1.3/build.cmd new/zope.interface-4.2.0/build.cmd
--- old/zope.interface-4.1.3/build.cmd 1970-01-01 01:00:00.000000000 +0100
+++ new/zope.interface-4.2.0/build.cmd 2016-02-17 15:26:49.000000000 +0100
@@ -0,0 +1,21 @@
+@echo off
+:: To build extensions for 64 bit Python 3, we need to configure environment
+:: variables to use the MSVC 2010 C++ compilers from GRMSDKX_EN_DVD.iso of:
+:: MS Windows SDK for Windows 7 and .NET Framework 4
+::
+:: More details at:
+:: https://github.com/cython/cython/wiki/64BitCythonExtensionsOnWindows
+
+IF "%DISTUTILS_USE_SDK%"=="1" (
+ ECHO Configuring environment to build with MSVC on a 64bit architecture
+ ECHO Using Windows SDK 7.1
+ "C:\Program Files\Microsoft SDKs\Windows\v7.1\Setup\WindowsSdkVer.exe" -q -version:v7.1
+ CALL "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x64 /release
+ SET MSSdk=1
+ REM Need the following to allow tox to see the SDK compiler
+ SET TOX_TESTENV_PASSENV=DISTUTILS_USE_SDK MSSdk INCLUDE LIB
+) ELSE (
+ ECHO Using default MSVC build environment
+)
+
+CALL %*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.interface-4.1.3/docs/README.rst new/zope.interface-4.2.0/docs/README.rst
--- old/zope.interface-4.1.3/docs/README.rst 2015-10-05 09:35:14.000000000 +0200
+++ new/zope.interface-4.2.0/docs/README.rst 2016-03-24 17:04:17.000000000 +0100
@@ -21,7 +21,7 @@
Defining interfaces
===================
-Interfaces are defined using Python class statements:
+Interfaces are defined using Python ``class`` statements:
.. doctest::
@@ -34,11 +34,11 @@
... def bar(q, r=None):
... """bar blah blah"""
-In the example above, we've created an interface, `IFoo`. We
-subclassed `zope.interface.Interface`, which is an ancestor interface for
+In the example above, we've created an interface, :class:`IFoo`. We
+subclassed :class:`zope.interface.Interface`, which is an ancestor interface for
all interfaces, much as `object` is an ancestor of all new-style
classes [#create]_. The interface is not a class, it's an Interface,
-an instance of `InterfaceClass`:
+an instance of :class:`zope.interface.interface.InterfaceClass`:
.. doctest::
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.interface-4.1.3/docs/hacking.rst new/zope.interface-4.2.0/docs/hacking.rst
--- old/zope.interface-4.1.3/docs/hacking.rst 2015-10-05 09:35:14.000000000 +0200
+++ new/zope.interface-4.2.0/docs/hacking.rst 2016-03-09 20:12:15.000000000 +0100
@@ -173,7 +173,7 @@
.. code-block:: sh
- $ /path/to/python2.6 bootstrap.py
+ $ /path/to/python2.7 bootstrap.py
...
Generated script '.../bin/buildout'
$ bin/buildout
@@ -217,16 +217,16 @@
installs :mod:`zope.interface` and dependencies, and runs the tests
via ``python setup.py test -q``.
-- The ``coverage`` environment builds a ``virtualenv`` with ``python2.6``,
+- The ``coverage`` environment builds a ``virtualenv`` with ``python2.7``,
installs :mod:`zope.interface` and dependencies, installs
:mod:`nose` and :mod:`coverage`, and runs ``nosetests`` with statement
coverage.
-- The ``docs`` environment builds a virtualenv with ``python2.6``, installs
+- The ``docs`` environment builds a virtualenv with ``python2.7``, installs
:mod:`zope.interface` and dependencies, installs ``Sphinx`` and
dependencies, and then builds the docs and exercises the doctest snippets.
-This example requires that you have a working ``python2.6`` on your path,
+This example requires that you have a working ``python2.7`` on your path,
as well as installing ``tox``:
.. code-block:: sh
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.interface-4.1.3/setup.py new/zope.interface-4.2.0/setup.py
--- old/zope.interface-4.1.3/setup.py 2015-10-05 09:35:14.000000000 +0200
+++ new/zope.interface-4.2.0/setup.py 2016-06-10 15:56:35.000000000 +0200
@@ -79,11 +79,12 @@
py_impl = getattr(platform, 'python_implementation', lambda: None)
is_pypy = py_impl() == 'PyPy'
is_jython = 'java' in sys.platform
+ is_pure = 'PURE_PYTHON' in os.environ
# Jython cannot build the C optimizations, while on PyPy they are
# anti-optimizations (the C extension compatibility layer is known-slow,
# and defeats JIT opportunities).
- if is_pypy or is_jython:
+ if is_pypy or is_jython or is_pure:
features = {}
else:
features = {'codeoptimization': codeoptimization}
@@ -113,7 +114,7 @@
)
setup(name='zope.interface',
- version='4.1.3',
+ version='4.2.0',
url='https://github.com/zopefoundation/zope.interface',
license='ZPL 2.1',
description='Interfaces for Python',
@@ -127,12 +128,11 @@
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 2",
- "Programming Language :: Python :: 2.6",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3",
- "Programming Language :: Python :: 3.2",
"Programming Language :: Python :: 3.3",
"Programming Language :: Python :: 3.4",
+ "Programming Language :: Python :: 3.5",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
"Framework :: Zope3",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.interface-4.1.3/src/zope.interface.egg-info/PKG-INFO new/zope.interface-4.2.0/src/zope.interface.egg-info/PKG-INFO
--- old/zope.interface-4.1.3/src/zope.interface.egg-info/PKG-INFO 2015-10-05 09:35:15.000000000 +0200
+++ new/zope.interface-4.2.0/src/zope.interface.egg-info/PKG-INFO 2016-06-10 15:59:14.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: zope.interface
-Version: 4.1.3
+Version: 4.2.0
Summary: Interfaces for Python
Home-page: https://github.com/zopefoundation/zope.interface
Author: Zope Foundation and Contributors
@@ -9,7 +9,7 @@
Description: ``zope.interface``
==================
- .. image:: https://pypip.in/version/zope.interface/badge.svg?style=flat
+ .. image:: https://img.shields.io/pypi/v/zope.interface.svg
:target: https://pypi.python.org/pypi/zope.interface/
:alt: Latest Version
@@ -17,7 +17,7 @@
:target: https://travis-ci.org/zopefoundation/zope.interface
.. image:: https://readthedocs.org/projects/zopeinterface/badge/?version=latest
- :target: http://zopeinterface.readthedocs.org/en/latest/
+ :target: https://zopeinterface.readthedocs.io/en/latest/
:alt: Documentation Status
This package is intended to be independently reusable in any Python
@@ -36,6 +36,14 @@
Changes
=======
+ 4.2.0 (2016-06-10)
+ ------------------
+
+ - Add support for Python 3.5
+
+ - Drop support for Python 2.6 and 3.2.
+
+
4.1.3 (2015-10-05)
------------------
@@ -451,12 +459,11 @@
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.2
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
+Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Framework :: Zope3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.interface-4.1.3/src/zope.interface.egg-info/SOURCES.txt new/zope.interface-4.2.0/src/zope.interface.egg-info/SOURCES.txt
--- old/zope.interface-4.1.3/src/zope.interface.egg-info/SOURCES.txt 2015-10-05 09:35:15.000000000 +0200
+++ new/zope.interface-4.2.0/src/zope.interface.egg-info/SOURCES.txt 2016-06-10 15:59:19.000000000 +0200
@@ -1,10 +1,14 @@
.coveragerc
+.gitignore
+.travis.yml
CHANGES.rst
COPYRIGHT.txt
LICENSE.txt
MANIFEST.in
README.rst
+appveyor.yml
bootstrap.py
+build.cmd
buildout.cfg
rtd.txt
setup.cfg
@@ -31,7 +35,6 @@
src/zope.interface.egg-info/dependency_links.txt
src/zope.interface.egg-info/namespace_packages.txt
src/zope.interface.egg-info/not-zip-safe
-src/zope.interface.egg-info/pbr.json
src/zope.interface.egg-info/requires.txt
src/zope.interface.egg-info/top_level.txt
src/zope/interface/__init__.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.interface-4.1.3/src/zope.interface.egg-info/pbr.json new/zope.interface-4.2.0/src/zope.interface.egg-info/pbr.json
--- old/zope.interface-4.1.3/src/zope.interface.egg-info/pbr.json 2015-10-05 09:35:15.000000000 +0200
+++ new/zope.interface-4.2.0/src/zope.interface.egg-info/pbr.json 1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-{"is_release": true, "git_version": "d99c28a"}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.interface-4.1.3/tox.ini new/zope.interface-4.2.0/tox.ini
--- old/zope.interface-4.1.3/tox.ini 2015-10-05 09:35:14.000000000 +0200
+++ new/zope.interface-4.2.0/tox.ini 2016-04-15 07:56:58.000000000 +0200
@@ -1,6 +1,6 @@
[tox]
envlist =
- py26,py27,py32,py33,py34,pypy,pypy3,coverage,docs
+ py27,py27-pure,py33,py34,py34-pure,py35,pypy,pypy3,coverage,docs
[testenv]
commands =
@@ -8,6 +8,21 @@
deps =
zope.event
+[testenv:py27-pure]
+setenv =
+ PURE_PYTHON=1
+ PIP_CACHE_DIR = {envdir}/.cache
+
+[testenv:py34-pure]
+setenv =
+ PURE_PYTHON=1
+ PIP_CACHE_DIR = {envdir}/.cache
+
+[testenv:py]
+commands =
+ python --version
+ {[testenv]commands}
+
[testenv:coverage]
usedevelop = true
basepython =
1
0
Hello community,
here is the log from the commit of package btrfsprogs for openSUSE:Factory checked in at 2016-06-29 15:02:01
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/btrfsprogs (Old)
and /work/SRC/openSUSE:Factory/.btrfsprogs.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "btrfsprogs"
Changes:
--------
--- /work/SRC/openSUSE:Factory/btrfsprogs/btrfsprogs.changes 2016-05-17 17:08:21.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.btrfsprogs.new/btrfsprogs.changes 2016-06-29 15:02:02.000000000 +0200
@@ -1,0 +2,10 @@
+Fri Jun 17 21:16:12 UTC 2016 - mfasheh(a)suse.com
+
+- btrfsck updates for qgroup verification and repair (fate#318144)
+ * We can now check all qgroup levels
+ * btrfsck will write out corrected qgroups when run with --repair
+ - Added patch: 0001-btrfs-progs-free-qgroup-counts-in-btrfsck.patch
+ - Added patch: 0002-btrfs-progs-btrfsck-verify-qgroups-above-level-0.patch
+ - Added patch: 0003-btrfs-progs-btrfsck-write-corrected-qgroup-info-to-d.patch
+
+-------------------------------------------------------------------
New:
----
0001-btrfs-progs-free-qgroup-counts-in-btrfsck.patch
0002-btrfs-progs-btrfsck-verify-qgroups-above-level-0.patch
0003-btrfs-progs-btrfsck-write-corrected-qgroup-info-to-d.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ btrfsprogs.spec ++++++
--- /var/tmp/diff_new_pack.TOuJuA/_old 2016-06-29 15:02:03.000000000 +0200
+++ /var/tmp/diff_new_pack.TOuJuA/_new 2016-06-29 15:02:03.000000000 +0200
@@ -37,6 +37,10 @@
Source1: boot-btrfs.sh
Source4: setup-btrfs.sh
+Patch1: 0001-btrfs-progs-free-qgroup-counts-in-btrfsck.patch
+Patch2: 0002-btrfs-progs-btrfsck-verify-qgroups-above-level-0.patch
+Patch3: 0003-btrfs-progs-btrfsck-write-corrected-qgroup-info-to-d.patch
+
Patch163: 0163-btrfs-progs-fsck-fix-segfault.patch
Patch167: 0167-Btrfs-progs-make-find_and_setup_root-return-an-error.patch
Patch168: 0168-Btrfs-progs-don-t-bug-out-if-we-can-t-find-the-last-.patch
@@ -111,6 +115,9 @@
%prep
%setup -q -n btrfs-progs-v%{version}
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
%patch163 -p1
%patch167 -p1
%patch168 -p1
++++++ 0001-btrfs-progs-free-qgroup-counts-in-btrfsck.patch ++++++
>From 4995239a8e53ef58b788a6df6263318cb656cd79 Mon Sep 17 00:00:00 2001
From: Mark Fasheh <mfasheh(a)suse.de>
Date: Wed, 15 Jun 2016 13:28:28 -0700
Subject: [PATCH 1/3] btrfs-progs: free qgroup counts in btrfsck
Signed-off-by: Mark Fasheh <mfasheh(a)suse.de>
---
cmds-check.c | 1 +
qgroup-verify.c | 13 +++++++++++++
qgroup-verify.h | 2 ++
3 files changed, 16 insertions(+)
diff --git a/cmds-check.c b/cmds-check.c
index bada87e..7b65f89 100644
--- a/cmds-check.c
+++ b/cmds-check.c
@@ -9890,6 +9890,7 @@ out:
(unsigned long long)data_bytes_allocated,
(unsigned long long)data_bytes_referenced);
+ free_qgroup_counts();
free_root_recs_tree(&root_cache);
close_out:
close_ctree(root);
diff --git a/qgroup-verify.c b/qgroup-verify.c
index 1a0d38c..7b78504 100644
--- a/qgroup-verify.c
+++ b/qgroup-verify.c
@@ -1095,6 +1095,19 @@ int report_qgroups(int all)
return ret;
}
+void free_qgroup_counts(void)
+{
+ struct rb_node *node;
+ struct qgroup_count *c;
+ node = rb_first(&counts.root);
+ while (node) {
+ c = rb_entry(node, struct qgroup_count, rb_node);
+ node = rb_next(node);
+ rb_erase(&c->rb_node, &counts.root);
+ free(c);
+ }
+}
+
int qgroup_verify_all(struct btrfs_fs_info *info)
{
int ret;
diff --git a/qgroup-verify.h b/qgroup-verify.h
index 3747465..0f8ff9b 100644
--- a/qgroup-verify.h
+++ b/qgroup-verify.h
@@ -27,4 +27,6 @@ int report_qgroups(int all);
int print_extent_state(struct btrfs_fs_info *info, u64 subvol);
+void free_qgroup_counts(void);
+
#endif
--
2.1.4
++++++ 0002-btrfs-progs-btrfsck-verify-qgroups-above-level-0.patch ++++++
>From 84064263d0128536113ae7ced9ad2f0d17f7663e Mon Sep 17 00:00:00 2001
From: Mark Fasheh <mfasheh(a)suse.de>
Date: Wed, 15 Jun 2016 13:37:55 -0700
Subject: [PATCH 2/3] btrfs-progs: btrfsck: verify qgroups above level 0
At the moment we only check subvolume quota groups (level 0). With this
patch we can check groups above 0, thus verifying the entire qgroup
hierarchy on a file system. The accounting portion of this patch is modeled
after the kernel - we are essentially reimplementing the 'quota rescan' case
here. Most other sections of this code went unchanged, in particular the
root counting works independently of the accounting.
Signed-off-by: Mark Fasheh <mfasheh(a)suse.de>
---
qgroup-verify.c | 309 +++++++++++++++++++++++++++++++++++++++++++++-----------
1 file changed, 252 insertions(+), 57 deletions(-)
diff --git a/qgroup-verify.c b/qgroup-verify.c
index 7b78504..23f2961 100644
--- a/qgroup-verify.c
+++ b/qgroup-verify.c
@@ -35,7 +35,8 @@
/*#define QGROUP_VERIFY_DEBUG*/
static unsigned long tot_extents_scanned = 0;
-static void add_bytes(u64 root_objectid, u64 num_bytes, int exclusive);
+struct qgroup_count;
+static struct qgroup_count *find_count(u64 qgroupid);
struct qgroup_info {
u64 referenced;
@@ -54,6 +55,16 @@ struct qgroup_count {
struct qgroup_info info;
struct rb_node rb_node;
+
+ struct list_head groups; /* Parents when we are a child group */
+
+ /*
+ * Children when we are a parent group (not currently used but
+ * maintained to mirror kernel handling of qgroups)
+ */
+ struct list_head members;
+
+ u64 cur_refcnt;
};
static struct counts_tree {
@@ -66,6 +77,39 @@ static struct counts_tree {
static struct rb_root by_bytenr = RB_ROOT;
/*
+ * Glue structure to represent the relations between qgroups. Mirrored
+ * from kernel.
+ */
+struct btrfs_qgroup_list {
+ struct list_head next_group;
+ struct list_head next_member;
+ struct qgroup_count *group; /* Parent group */
+ struct qgroup_count *member;
+};
+
+/* Allow us to reset ref counts during accounting without zeroing each group. */
+static u64 qgroup_seq = 1ULL;
+
+static inline void update_cur_refcnt(struct qgroup_count *c)
+{
+ if (c->cur_refcnt < qgroup_seq)
+ c->cur_refcnt = qgroup_seq;
+ c->cur_refcnt++;
+}
+
+static inline u64 group_get_cur_refcnt(struct qgroup_count *c)
+{
+ if (c->cur_refcnt < qgroup_seq)
+ return 0;
+ return c->cur_refcnt - qgroup_seq;
+}
+
+static void inc_qgroup_seq(int root_count)
+{
+ qgroup_seq += root_count + 1;
+}
+
+/*
* List of interior tree blocks. We walk this list after loading the
* extent tree to resolve implied refs. For each interior node we'll
* place a shared ref in the ref tree against each child object. This
@@ -296,9 +340,10 @@ static void find_parent_roots(struct ulist *roots, u64 parent)
}
do {
- if (ref->root)
- ulist_add(roots, ref->root, 0, 0);
- else
+ if (ref->root) {
+ if (is_fstree(ref->root))
+ ulist_add(roots, ref->root, 0, 0);
+ } else
find_parent_roots(roots, ref->parent);
node = rb_next(node);
@@ -307,6 +352,114 @@ static void find_parent_roots(struct ulist *roots, u64 parent)
} while (node && ref->bytenr == parent);
}
+static int account_one_extent(struct ulist *roots, u64 bytenr, u64 num_bytes)
+{
+ int ret;
+ u64 id, nr_roots, nr_refs;
+ struct qgroup_count *count;
+ struct ulist *counts = ulist_alloc(0);
+ struct ulist *tmp = ulist_alloc(0);
+ struct ulist_iterator uiter;
+ struct ulist_iterator tmp_uiter;
+ struct ulist_node *unode;
+ struct ulist_node *tmp_unode;
+ struct btrfs_qgroup_list *glist;
+
+ if (!counts || !tmp) {
+ ulist_free(counts);
+ ulist_free(tmp);
+ return ENOMEM;
+ }
+
+ ULIST_ITER_INIT(&uiter);
+ while ((unode = ulist_next(roots, &uiter))) {
+ BUG_ON(unode->val == 0ULL);
+
+ /*
+ * For each root, find their corresponding tracking group and
+ * add it to our qgroups list.
+ */
+ count = find_count(unode->val);
+ if (!count)
+ continue;
+
+ BUG_ON(!is_fstree(unode->val));
+ ret = ulist_add(counts, count->qgroupid, ptr_to_u64(count), 0);
+ if (ret < 0)
+ goto out;
+
+ /*
+ * Now we look for parents (and parents of those...). Use a tmp
+ * ulist here to avoid re-walking (and re-incrementing) our
+ * already added items on every loop iteration.
+ */
+ ulist_reinit(tmp);
+ ret = ulist_add(tmp, count->qgroupid, ptr_to_u64(count), 0);
+ if (ret < 0)
+ goto out;
+
+ ULIST_ITER_INIT(&tmp_uiter);
+ while ((tmp_unode = ulist_next(tmp, &tmp_uiter))) {
+ /* Bump the refcount on a node every time we see it. */
+ count = u64_to_ptr(tmp_unode->aux);
+ update_cur_refcnt(count);
+
+ list_for_each_entry(glist, &count->groups, next_group) {
+ struct qgroup_count *parent;
+ parent = glist->group;
+ id = parent->qgroupid;
+
+ BUG_ON(!count);
+
+ ret = ulist_add(counts, id, ptr_to_u64(parent),
+ 0);
+ if (ret < 0)
+ goto out;
+ ret = ulist_add(tmp, id, ptr_to_u64(parent),
+ 0);
+ if (ret < 0)
+ goto out;
+ }
+ }
+ }
+
+ /*
+ * Now that we have gathered up and counted all the groups, we
+ * can add bytes for this ref.
+ */
+ nr_roots = roots->nnodes;
+ ULIST_ITER_INIT(&uiter);
+ while ((unode = ulist_next(counts, &uiter))) {
+ count = u64_to_ptr(unode->aux);
+
+ nr_refs = group_get_cur_refcnt(count);
+ if (nr_refs) {
+ count->info.referenced += num_bytes;
+ count->info.referenced_compressed += num_bytes;
+
+ if (nr_refs == nr_roots) {
+ count->info.exclusive += num_bytes;
+ count->info.exclusive_compressed += num_bytes;
+ }
+ }
+#ifdef QGROUP_VERIFY_DEBUG
+ printf("account (%llu, %llu), qgroup %llu/%llu, rfer %llu,"
+ " excl %llu, refs %llu, roots %llu\n", bytenr, num_bytes,
+ btrfs_qgroup_level(count->qgroupid),
+ btrfs_qgroup_subvid(count->qgroupid),
+ count->info.referenced, count->info.exclusive, nr_refs,
+ nr_roots);
+#endif
+ }
+
+ inc_qgroup_seq(roots->nnodes);
+ ret = 0;
+out:
+ ulist_free(counts);
+ ulist_free(tmp);
+ return ret;
+}
+
static void print_subvol_info(u64 subvolid, u64 bytenr, u64 num_bytes,
struct ulist *roots);
/*
@@ -318,18 +471,15 @@ static void print_subvol_info(u64 subvolid, u64 bytenr, u64 num_bytes,
* - resolve all possible roots for shared refs, insert each
* of those into ref_roots ulist (this is a recursive process)
*
- * - Walk ref_roots ulist, adding extent bytes to each qgroup count that
- * cooresponds to a found root.
+ * - With all roots resolved we can account the ref - this is done in
+ * account_one_extent().
*/
-static void account_all_refs(int do_qgroups, u64 search_subvol)
+static int account_all_refs(int do_qgroups, u64 search_subvol)
{
- int exclusive;
struct ref *ref;
struct rb_node *node;
u64 bytenr, num_bytes;
struct ulist *roots = ulist_alloc(0);
- struct ulist_iterator uiter;
- struct ulist_node *unode;
node = rb_first(&by_bytenr);
while (node) {
@@ -347,10 +497,14 @@ static void account_all_refs(int do_qgroups, u64 search_subvol)
do {
BUG_ON(ref->bytenr != bytenr);
BUG_ON(ref->num_bytes != num_bytes);
- if (ref->root)
- ulist_add(roots, ref->root, 0, 0);
- else
+ if (ref->root) {
+ if (is_fstree(ref->root)) {
+ if (ulist_add(roots, ref->root, 0, 0) < 0)
+ goto enomem;
+ }
+ } else {
find_parent_roots(roots, ref->parent);
+ }
/*
* When we leave this inner loop, node is set
@@ -362,29 +516,22 @@ static void account_all_refs(int do_qgroups, u64 search_subvol)
ref = rb_entry(node, struct ref, bytenr_node);
} while (node && ref->bytenr == bytenr);
- /*
- * Now that we have all roots, we can properly account
- * this extent against the corresponding qgroups.
- */
- if (roots->nnodes == 1)
- exclusive = 1;
- else
- exclusive = 0;
-
if (search_subvol)
print_subvol_info(search_subvol, bytenr, num_bytes,
roots);
- ULIST_ITER_INIT(&uiter);
- while ((unode = ulist_next(roots, &uiter))) {
- BUG_ON(unode->val == 0ULL);
- /* We only want to account fs trees */
- if (is_fstree(unode->val) && do_qgroups)
- add_bytes(unode->val, num_bytes, exclusive);
- }
+ if (!do_qgroups)
+ continue;
+
+ if (account_one_extent(roots, bytenr, num_bytes))
+ goto enomem;
}
ulist_free(roots);
+ return 0;
+enomem:
+ error("Out of memory while accounting refs for qgroups!\n");
+ return -ENOMEM;
}
static u64 resolve_one_root(u64 bytenr)
@@ -668,6 +815,8 @@ static struct qgroup_count *alloc_count(struct btrfs_disk_key *key,
item->exclusive = btrfs_qgroup_info_exclusive(leaf, disk);
item->exclusive_compressed =
btrfs_qgroup_info_exclusive_compressed(leaf, disk);
+ INIT_LIST_HEAD(&c->groups);
+ INIT_LIST_HEAD(&c->members);
if (insert_count(c)) {
free(c);
@@ -677,29 +826,30 @@ static struct qgroup_count *alloc_count(struct btrfs_disk_key *key,
return c;
}
-static void add_bytes(u64 root_objectid, u64 num_bytes, int exclusive)
+static int add_qgroup_relation(u64 memberid, u64 parentid)
{
- struct qgroup_count *count = find_count(root_objectid);
- struct qgroup_info *qg;
+ struct qgroup_count *member;
+ struct qgroup_count *parent;
+ struct btrfs_qgroup_list *list;
- BUG_ON(num_bytes < 4096); /* Random sanity check. */
+ if (memberid > parentid)
+ return 0;
- if (!count)
- return;
+ member = find_count(memberid);
+ parent = find_count(parentid);
+ if (!member || !parent)
+ return -ENOENT;
- qg = &count->info;
+ list = calloc(1, sizeof(*list));
+ if (!list)
+ return -ENOMEM;
- qg->referenced += num_bytes;
- /*
- * count of compressed bytes is unimplemented, so we do the
- * same as kernel.
- */
- qg->referenced_compressed += num_bytes;
+ list->group = parent;
+ list->member = member;
+ list_add_tail(&list->next_group, &member->groups);
+ list_add_tail(&list->next_member, &parent->members);
- if (exclusive) {
- qg->exclusive += num_bytes;
- qg->exclusive_compressed += num_bytes;
- }
+ return 0;
}
static void read_qgroup_status(struct btrfs_path *path,
@@ -728,11 +878,18 @@ static int load_quota_info(struct btrfs_fs_info *info)
struct btrfs_qgroup_info_item *item;
struct qgroup_count *count;
int i, nr;
+ int search_relations = 0;
+loop:
+ /*
+ * Do 2 passes, the first allocates group counts and reads status
+ * items. The 2nd pass picks up relation items and glues them
+ * to their respective count structures.
+ */
btrfs_init_path(&path);
key.offset = 0;
- key.objectid = 0;
+ key.objectid = search_relations ? 0 : BTRFS_QGROUP_RELATION_KEY;
key.type = 0;
ret = btrfs_search_slot(NULL, root, &key, &path, 0, 0);
@@ -749,17 +906,26 @@ static int load_quota_info(struct btrfs_fs_info *info)
btrfs_item_key(leaf, &disk_key, i);
btrfs_disk_key_to_cpu(&key, &disk_key);
+ if (search_relations) {
+ if (key.type == BTRFS_QGROUP_RELATION_KEY) {
+ ret = add_qgroup_relation(key.objectid,
+ key.offset);
+ if (ret) {
+ error("out of memory\n");
+ goto out;
+ }
+ }
+ continue;
+ }
+
if (key.type == BTRFS_QGROUP_STATUS_KEY) {
read_qgroup_status(&path, &counts);
continue;
}
- if (key.type == BTRFS_QGROUP_RELATION_KEY)
- printf("Ignoring qgroup relation key %llu\n",
- key.objectid);
/*
- * Ignore: BTRFS_QGROUP_LIMIT_KEY,
- * BTRFS_QGROUP_RELATION_KEY
+ * At this point, we can ignore anything that
+ * isn't a qgroup info.
*/
if (key.type != BTRFS_QGROUP_INFO_KEY)
continue;
@@ -791,6 +957,12 @@ static int load_quota_info(struct btrfs_fs_info *info)
ret = 0;
btrfs_release_path(&path);
+
+ if (!search_relations) {
+ search_relations = 1;
+ goto loop;
+ }
+
out:
return ret;
}
@@ -1035,6 +1207,11 @@ static void print_fields_signed(long long bytes,
prefix, type, bytes, type, bytes_compressed);
}
+static inline int qgroup_printable(struct qgroup_count *c)
+{
+ return !!(c->subvol_exists || btrfs_qgroup_level(c->qgroupid));
+}
+
static int report_qgroup_difference(struct qgroup_count *count, int verbose)
{
int is_different;
@@ -1045,9 +1222,10 @@ static int report_qgroup_difference(struct qgroup_count *count, int verbose)
is_different = excl_diff || ref_diff;
- if (verbose || (is_different && count->subvol_exists)) {
- printf("Counts for qgroup id: %llu %s\n",
- (unsigned long long)count->qgroupid,
+ if (verbose || (is_different && qgroup_printable(count))) {
+ printf("Counts for qgroup id: %llu/%llu %s\n",
+ btrfs_qgroup_level(count->qgroupid),
+ btrfs_qgroup_subvid(count->qgroupid),
is_different ? "are different" : "");
print_fields(info->referenced, info->referenced_compressed,
@@ -1099,10 +1277,27 @@ void free_qgroup_counts(void)
{
struct rb_node *node;
struct qgroup_count *c;
+ struct btrfs_qgroup_list *glist, *tmpglist;
+
node = rb_first(&counts.root);
while (node) {
c = rb_entry(node, struct qgroup_count, rb_node);
+
+ list_for_each_entry_safe(glist, tmpglist, &c->groups,
+ next_group) {
+ list_del(&glist->next_group);
+ list_del(&glist->next_member);
+ free(glist);
+ }
+ list_for_each_entry_safe(glist, tmpglist, &c->members,
+ next_group) {
+ list_del(&glist->next_group);
+ list_del(&glist->next_member);
+ free(glist);
+ }
+
node = rb_next(node);
+
rb_erase(&c->rb_node, &counts.root);
free(c);
}
@@ -1143,7 +1338,7 @@ int qgroup_verify_all(struct btrfs_fs_info *info)
goto out;
}
- account_all_refs(1, 0);
+ ret = account_all_refs(1, 0);
out:
/*
@@ -1215,7 +1410,7 @@ int print_extent_state(struct btrfs_fs_info *info, u64 subvol)
}
printf("Offset\t\tLen\tRoot Refs\tRoots\n");
- account_all_refs(0, subvol);
+ ret = account_all_refs(0, subvol);
out:
free_tree_blocks();
--
2.1.4
++++++ 0003-btrfs-progs-btrfsck-write-corrected-qgroup-info-to-d.patch ++++++
>From 822afe3408638be63e0fcebf98ac9780af5afc8d Mon Sep 17 00:00:00 2001
From: Mark Fasheh <mfasheh(a)suse.de>
Date: Thu, 16 Jun 2016 16:06:28 -0700
Subject: [PATCH 3/3] btrfs-progs: btrfsck: write corrected qgroup info to disk
Now that we can verify all qgroups, we can write the corrected qgroups out
to disk when '--repair' is specified. The qgroup status item is also updated
to clear any out-of-date state. The repair_ functions were modeled after the
inode repair code in cmds-check.c.
I also renamed the 'scan' member of qgroup_status_item to 'rescan' in order
to keep consistency with the kernel.
Testing this was easy, I just reproduced qgroup inconsistencies via the
usual routes and had btrfsck fix them.
Signed-off-by: Mark Fasheh <mfasheh(a)suse.de>
---
cmds-check.c | 15 +++--
ctree.h | 10 ++--
print-tree.c | 2 +-
qgroup-verify.c | 178 ++++++++++++++++++++++++++++++++++++++++++++++++++++----
qgroup-verify.h | 3 +-
repair.c | 2 +
repair.h | 2 +
7 files changed, 189 insertions(+), 23 deletions(-)
diff --git a/cmds-check.c b/cmds-check.c
index 7b65f89..b7f4bd5 100644
--- a/cmds-check.c
+++ b/cmds-check.c
@@ -67,7 +67,6 @@ static u64 data_bytes_referenced = 0;
static int found_old_backref = 0;
static LIST_HEAD(duplicate_extents);
static LIST_HEAD(delete_items);
-static int repair = 0;
static int no_holes = 0;
static int init_extent_tree = 0;
static int check_data_csum = 0;
@@ -9543,6 +9542,7 @@ int cmd_check(int argc, char **argv)
int init_csum_tree = 0;
int readonly = 0;
int qgroup_report = 0;
+ int qgroups_repaired = 0;
enum btrfs_open_ctree_flags ctree_flags = OPEN_CTREE_EXCLUSIVE;
while(1) {
@@ -9698,7 +9698,7 @@ int cmd_check(int argc, char **argv)
uuidbuf);
ret = qgroup_verify_all(info);
if (ret == 0)
- ret = report_qgroups(1);
+ report_qgroups(1);
goto close_out;
}
if (subvolid) {
@@ -9852,6 +9852,10 @@ int cmd_check(int argc, char **argv)
err = qgroup_verify_all(info);
if (err)
goto out;
+ report_qgroups(0);
+ err = repair_qgroups(info, &qgroups_repaired);
+ if (err)
+ goto out;
}
if (!list_empty(&root->fs_info->recow_ebs)) {
@@ -9860,10 +9864,9 @@ int cmd_check(int argc, char **argv)
}
out:
/* Don't override original ret */
- if (ret)
- report_qgroups(0);
- else
- ret = report_qgroups(0);
+ if (!ret && qgroups_repaired)
+ ret = qgroups_repaired;
+
if (found_old_backref) { /*
* there was a disk format change when mixed
* backref was in testing tree. The old format
diff --git a/ctree.h b/ctree.h
index 86227f8..34c6b73 100644
--- a/ctree.h
+++ b/ctree.h
@@ -897,7 +897,7 @@ struct btrfs_qgroup_status_item {
__le64 version;
__le64 generation;
__le64 flags;
- __le64 scan; /* progress during scanning */
+ __le64 rescan; /* progress during scanning */
} __attribute__ ((__packed__));
struct btrfs_block_group_item {
@@ -2130,8 +2130,8 @@ BTRFS_SETGET_FUNCS(qgroup_status_generation, struct btrfs_qgroup_status_item,
generation, 64);
BTRFS_SETGET_FUNCS(qgroup_status_flags, struct btrfs_qgroup_status_item,
flags, 64);
-BTRFS_SETGET_FUNCS(qgroup_status_scan, struct btrfs_qgroup_status_item,
- scan, 64);
+BTRFS_SETGET_FUNCS(qgroup_status_rescan, struct btrfs_qgroup_status_item,
+ rescan, 64);
BTRFS_SETGET_STACK_FUNCS(stack_qgroup_status_version,
struct btrfs_qgroup_status_item, version, 64);
@@ -2139,8 +2139,8 @@ BTRFS_SETGET_STACK_FUNCS(stack_qgroup_status_generation,
struct btrfs_qgroup_status_item, generation, 64);
BTRFS_SETGET_STACK_FUNCS(stack_qgroup_status_flags,
struct btrfs_qgroup_status_item, flags, 64);
-BTRFS_SETGET_STACK_FUNCS(stack_qgroup_status_scan,
- struct btrfs_qgroup_status_item, scan, 64);
+BTRFS_SETGET_STACK_FUNCS(stack_qgroup_status_rescan,
+ struct btrfs_qgroup_status_item, rescan, 64);
/* btrfs_qgroup_info_item */
BTRFS_SETGET_FUNCS(qgroup_info_generation, struct btrfs_qgroup_info_item,
diff --git a/print-tree.c b/print-tree.c
index 746f25b..9f9e11e 100644
--- a/print-tree.c
+++ b/print-tree.c
@@ -1037,7 +1037,7 @@ void btrfs_print_leaf(struct btrfs_root *root, struct extent_buffer *l)
btrfs_qgroup_status_generation(l, qg_status),
flags_str,
(unsigned long long)
- btrfs_qgroup_status_scan(l, qg_status));
+ btrfs_qgroup_status_rescan(l, qg_status));
break;
case BTRFS_QGROUP_RELATION_KEY:
break;
diff --git a/qgroup-verify.c b/qgroup-verify.c
index 23f2961..12921ad 100644
--- a/qgroup-verify.c
+++ b/qgroup-verify.c
@@ -29,6 +29,8 @@
#include "utils.h"
#include "ulist.h"
#include "rbtree-utils.h"
+#include "repair.h"
+#include "transaction.h"
#include "qgroup-verify.h"
@@ -65,6 +67,8 @@ struct qgroup_count {
struct list_head members;
u64 cur_refcnt;
+
+ struct list_head bad_list;
};
static struct counts_tree {
@@ -74,6 +78,8 @@ static struct counts_tree {
unsigned int qgroup_inconsist:1;
} counts = { .root = RB_ROOT };
+static LIST_HEAD(bad_qgroups);
+
static struct rb_root by_bytenr = RB_ROOT;
/*
@@ -817,6 +823,7 @@ static struct qgroup_count *alloc_count(struct btrfs_disk_key *key,
btrfs_qgroup_info_exclusive_compressed(leaf, disk);
INIT_LIST_HEAD(&c->groups);
INIT_LIST_HEAD(&c->members);
+ INIT_LIST_HEAD(&c->bad_list);
if (insert_count(c)) {
free(c);
@@ -1243,34 +1250,36 @@ static int report_qgroup_difference(struct qgroup_count *count, int verbose)
print_fields_signed(excl_diff, excl_diff,
"diff:", "exclusive");
}
- return (is_different && count->subvol_exists);
+
+ return is_different;
}
-int report_qgroups(int all)
+void report_qgroups(int all)
{
struct rb_node *node;
struct qgroup_count *c;
- int ret = 0;
- if (counts.rescan_running) {
+ if (!repair && counts.rescan_running) {
if (all) {
printf(
- "Qgroup rescan is running, qgroup counts difference is expected\n");
+ "Qgroup rescan is running, a difference in qgroup counts is expected\n");
} else {
printf(
- "Qgroup rescan is running, ignore qgroup check\n");
- return ret;
+ "Qgroup rescan is running, qgroups will not be printed.\n");
+ return;
}
}
if (counts.qgroup_inconsist && !counts.rescan_running)
- fprintf(stderr, "Qgroup is already inconsistent before checking\n");
+ fprintf(stderr, "Qgroup are marked as inconsistent.\n");
node = rb_first(&counts.root);
while (node) {
c = rb_entry(node, struct qgroup_count, rb_node);
- ret |= report_qgroup_difference(c, all);
+
+ if (report_qgroup_difference(c, all))
+ list_add_tail(&c->bad_list, &bad_qgroups);
+
node = rb_next(node);
}
- return ret;
}
void free_qgroup_counts(void)
@@ -1283,6 +1292,8 @@ void free_qgroup_counts(void)
while (node) {
c = rb_entry(node, struct qgroup_count, rb_node);
+ list_del(&c->bad_list);
+
list_for_each_entry_safe(glist, tmpglist, &c->groups,
next_group) {
list_del(&glist->next_group);
@@ -1418,3 +1429,150 @@ out:
return ret;
}
+static int repair_qgroup_info(struct btrfs_fs_info *info,
+ struct qgroup_count *count)
+{
+ int ret;
+ struct btrfs_root *root = info->quota_root;
+ struct btrfs_trans_handle *trans;
+ struct btrfs_path *path;
+ struct btrfs_qgroup_info_item *info_item;
+ struct btrfs_key key;
+
+ printf("Repair qgroup %llu/%llu\n", btrfs_qgroup_level(count->qgroupid),
+ btrfs_qgroup_subvid(count->qgroupid));
+
+ path = btrfs_alloc_path();
+ if (!path)
+ return -ENOMEM;
+
+ trans = btrfs_start_transaction(root, 1);
+ if (IS_ERR(trans)) {
+ btrfs_free_path(path);
+ return PTR_ERR(trans);
+ }
+
+ key.objectid = 0;
+ key.type = BTRFS_QGROUP_INFO_KEY;
+ key.offset = count->qgroupid;
+ ret = btrfs_search_slot(trans, root, &key, path, 0, 1);
+ if (ret) {
+ error("Could not find disk item for qgroup %llu/%llu.\n",
+ btrfs_qgroup_level(count->qgroupid),
+ btrfs_qgroup_subvid(count->qgroupid));
+ if (ret > 0)
+ ret = -ENOENT;
+ goto out;
+ }
+
+ info_item = btrfs_item_ptr(path->nodes[0], path->slots[0],
+ struct btrfs_qgroup_info_item);
+
+ btrfs_set_qgroup_info_generation(path->nodes[0], info_item,
+ trans->transid);
+
+ btrfs_set_qgroup_info_referenced(path->nodes[0], info_item,
+ count->info.referenced);
+ btrfs_set_qgroup_info_referenced_compressed(path->nodes[0], info_item,
+ count->info.referenced_compressed);
+
+ btrfs_set_qgroup_info_exclusive(path->nodes[0], info_item,
+ count->info.exclusive);
+ btrfs_set_qgroup_info_exclusive_compressed(path->nodes[0], info_item,
+ count->info.exclusive_compressed);
+
+ btrfs_mark_buffer_dirty(path->nodes[0]);
+
+out:
+ btrfs_commit_transaction(trans, root);
+ btrfs_free_path(path);
+
+ return ret;
+}
+
+static int repair_qgroup_status(struct btrfs_fs_info *info)
+{
+ int ret;
+ struct btrfs_root *root = info->quota_root;
+ struct btrfs_trans_handle *trans;
+ struct btrfs_path *path;
+ struct btrfs_key key;
+ struct btrfs_qgroup_status_item *status_item;
+
+ printf("Repair qgroup status item\n");
+
+ path = btrfs_alloc_path();
+ if (!path)
+ return -ENOMEM;
+
+ trans = btrfs_start_transaction(root, 1);
+ if (IS_ERR(trans)) {
+ btrfs_free_path(path);
+ return PTR_ERR(trans);
+ }
+
+ key.objectid = 0;
+ key.type = BTRFS_QGROUP_STATUS_KEY;
+ key.offset = 0;
+ ret = btrfs_search_slot(trans, root, &key, path, 0, 1);
+ if (ret) {
+ error("Could not find qgroup status item\n");
+ if (ret > 0)
+ ret = -ENOENT;
+ goto out;
+ }
+
+ status_item = btrfs_item_ptr(path->nodes[0], path->slots[0],
+ struct btrfs_qgroup_status_item);
+ btrfs_set_qgroup_status_flags(path->nodes[0], status_item,
+ BTRFS_QGROUP_STATUS_FLAG_ON);
+ btrfs_set_qgroup_status_rescan(path->nodes[0], status_item, 0);
+ btrfs_set_qgroup_status_generation(path->nodes[0], status_item,
+ trans->transid);
+
+ btrfs_mark_buffer_dirty(path->nodes[0]);
+
+out:
+ btrfs_commit_transaction(trans, root);
+ btrfs_free_path(path);
+
+ return ret;
+}
+
+int repair_qgroups(struct btrfs_fs_info *info, int *repaired)
+{
+ int ret;
+ struct qgroup_count *count, *tmpcount;
+
+ *repaired = 0;
+
+ if (!repair)
+ return 0;
+
+ list_for_each_entry_safe(count, tmpcount, &bad_qgroups, bad_list) {
+ ret = repair_qgroup_info(info, count);
+ if (ret) {
+ goto out;
+ }
+
+ (*repaired)++;
+
+ list_del_init(&count->bad_list);
+ }
+
+ /*
+ * Do this step last as we want the latest transaction id on
+ * our qgroup status to avoid a (useless) warning after
+ * mount.
+ */
+ if (*repaired || counts.qgroup_inconsist || counts.rescan_running) {
+ ret = repair_qgroup_status(info);
+ if (ret)
+ goto out;
+
+ (*repaired)++;
+ }
+
+out:
+ return ret;
+}
diff --git a/qgroup-verify.h b/qgroup-verify.h
index 0f8ff9b..d7d83a4 100644
--- a/qgroup-verify.h
+++ b/qgroup-verify.h
@@ -23,7 +23,8 @@
#include "ctree.h"
int qgroup_verify_all(struct btrfs_fs_info *info);
-int report_qgroups(int all);
+void report_qgroups(int all);
+int repair_qgroups(struct btrfs_fs_info *info, int *repaired);
int print_extent_state(struct btrfs_fs_info *info, u64 subvol);
diff --git a/repair.c b/repair.c
index 4f74742..07a1232 100644
--- a/repair.c
+++ b/repair.c
@@ -21,6 +21,8 @@
#include "utils.h"
#include "repair.h"
+int repair = 0;
+
int btrfs_add_corrupt_extent_record(struct btrfs_fs_info *info,
struct btrfs_key *first_key,
u64 start, u64 len, int level)
diff --git a/repair.h b/repair.h
index 3fc0e8b..355bbf2 100644
--- a/repair.h
+++ b/repair.h
@@ -21,6 +21,8 @@
#include "ctree.h"
+extern int repair; /* repair mode */
+
struct btrfs_corrupt_block {
struct cache_extent cache;
struct btrfs_key key;
--
2.1.4
1
0
Hello community,
here is the log from the commit of package curl for openSUSE:Factory checked in at 2016-06-29 15:01:54
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/curl (Old)
and /work/SRC/openSUSE:Factory/.curl.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "curl"
Changes:
--------
--- /work/SRC/openSUSE:Factory/curl/curl.changes 2016-06-12 18:52:20.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.curl.new/curl.changes 2016-06-29 15:01:56.000000000 +0200
@@ -1,0 +2,23 @@
+Tue Jun 14 11:47:27 UTC 2016 - astieger(a)suse.com
+
+- curl 7.49.1:
+ * http2: use HTTP/2 in the HTTP/1.1-alike response
+ * ssh: fix build for libssh2 before 1.2.6
+ * a number of bug and build fixes
+- curl 7.49.0:
+ * schannel: Add ALPN support
+ * SSH: support CURLINFO_FILETIME
+ * SSH: new CURLOPT_QUOTE command "statvfs"
+ * wolfssl: Add ALPN support
+ * http2: added --http2-prior-knowledge
+ * http2: added CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE
+ * libcurl: added CURLOPT_CONNECT_TO
+ * curl: added --connect-to
+ * libcurl: added CURLOPT_TCP_FASTOPEN
+ * curl: added --tcp-fastopen
+ * curl: remove support for --ftpport, -http-request and --socks
+ * a number of bug and build fixes
+- update upstream signing key and download URLs
+- 0001-Fix-invalid-Network-is-unreachable-errors.patch is upstream
+
+-------------------------------------------------------------------
Old:
----
0001-Fix-invalid-Network-is-unreachable-errors.patch
curl-7.48.0.tar.lzma
curl-7.48.0.tar.lzma.asc
New:
----
curl-7.49.1.tar.lzma
curl-7.49.1.tar.lzma.asc
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ curl.spec ++++++
--- /var/tmp/diff_new_pack.uipCnS/_old 2016-06-29 15:01:57.000000000 +0200
+++ /var/tmp/diff_new_pack.uipCnS/_new 2016-06-29 15:01:57.000000000 +0200
@@ -20,32 +20,30 @@
%bcond_with mozilla_nss
%bcond_without testsuite
Name: curl
-Version: 7.48.0
+Version: 7.49.1
Release: 0
Summary: A Tool for Transferring Data from URLs
License: BSD-3-Clause and MIT
Group: Productivity/Networking/Web/Utilities
-Url: http://curl.haxx.se/
-Source: http://curl.haxx.se/download/%{name}-%{version}.tar.lzma
-Source2: http://curl.haxx.se/download/%{name}-%{version}.tar.lzma.asc
+Url: https://curl.haxx.se/
+Source: https://curl.haxx.se/download/%{name}-%{version}.tar.lzma
+Source2: https://curl.haxx.se/download/%{name}-%{version}.tar.lzma.asc
Source3: baselibs.conf
-Source4: %{name}.keyring
+Source4: https://daniel.haxx.se/mykey.asc#/%{name}.keyring
Patch0: libcurl-ocloexec.patch
Patch1: dont-mess-with-rpmoptflags.diff
Patch3: curl-secure-getenv.patch
-# PATCH-FIX-UPSTREAM 0001-Fix-invalid-Network-is-unreachable-errors.patch -- Fixes "network is unreachable" errors in valid situations when ipv6 is not working but ipv4 is
-Patch4: 0001-Fix-invalid-Network-is-unreachable-errors.patch
BuildRequires: groff
BuildRequires: krb5-mini-devel
BuildRequires: libtool
BuildRequires: lzma
BuildRequires: openldap2-devel
-BuildRequires: pkg-config
+BuildRequires: pkgconfig
BuildRequires: pkgconfig(libidn)
BuildRequires: pkgconfig(libmetalink)
BuildRequires: pkgconfig(libnghttp2)
BuildRequires: pkgconfig(libpsl)
-BuildRequires: pkgconfig(libssh2) >= 1.6.0
+BuildRequires: pkgconfig(libssh2)
BuildRequires: pkgconfig(zlib)
Requires: libcurl4 = %{version}
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@@ -99,7 +97,6 @@
%patch0
%patch1
%patch3
-%patch4 -p1
%build
# curl complains if macro definition is contained in CFLAGS
@@ -163,9 +160,11 @@
%make_install
rm -f %{buildroot}%{_libdir}/libcurl.la
install -Dm 0644 docs/libcurl/libcurl.m4 %{buildroot}%{_datadir}/aclocal/libcurl.m4
+pushd scripts
+make %{?_smp_mflags} DESTDIR=%{buildroot} install
+popd
%post -n libcurl4 -p /sbin/ldconfig
-
%postun -n libcurl4 -p /sbin/ldconfig
%files
++++++ curl.keyring ++++++
--- /var/tmp/diff_new_pack.uipCnS/_old 2016-06-29 15:01:57.000000000 +0200
+++ /var/tmp/diff_new_pack.uipCnS/_new 2016-06-29 15:01:57.000000000 +0200
@@ -1,9 +1,5 @@
-pub 1024D/279D5C91 2003-04-28
-uid Daniel Stenberg (Haxx) <daniel(a)haxx.se>
-sub 1024g/B70B3510 2003-04-28
-
-----BEGIN PGP PUBLIC KEY BLOCK-----
-Version: GnuPG v2.0.19 (GNU/Linux)
+Version: GnuPG v2
mQGiBD6tnnoRBACRPnFBVoapBrTpPrCNZ2rq3DcmW6n/soQJW47+zP+vcrcxQ1WJ
QiWSzLGO+QOIUZSYfnliR22r8HkFX9EUSW3IAcRMJMsaO3wMJ0a+78a9QqWLp6RV
@@ -14,15 +10,68 @@
gHNJA/9m1pfzjpvdxtmJNKRU3C4cRCjXhxNdM7laSEj0/wOGaR2QWWEge51orWwo
SLQUIe4BDPvtRStQHC+tI7qr7d12rMMEBXviJC5EkGBOzlgWr9virjM/u/pkGMc2
m5r3pVuWH/JSsHsV952y2kWP64uP4zdLXOpVzX/xs0sYJ9nOPLQnRGFuaWVsIFN0
-ZW5iZXJnIChIYXh4KSA8ZGFuaWVsQGhheHguc2U+iFkEExECABkFAj6tnnoECwcD
-AgMVAgMDFgIBAh4BAheAAAoJEHjhHGsnnVyRjngAn1gK6Q0qUTHwYJBAhIDmrRi0
-ebfDAJ4qDSHd6UU2MEkkFCgGfYgEBXKbb7kBDQQ+rZ59EAQAmYsA8gPjJ75gOIPb
+ZW5iZXJnIChIYXh4KSA8ZGFuaWVsQGhheHguc2U+iF4EExECAB4CHgECF4AFAlQU
+ki4FCwkIBwMFFQoJCAsFFgIDAQAACgkQeOEcayedXJEOOwCggCsNHdAQPAlPte3w
+i2IZEekkM0YAoOXXPFAWjUwIHjZY41l7WgzACbANiFkEExECABkFAj6tnnoECwcD
+AgMVAgMDFgIBAh4BAheAAAoJEHjhHGsnnVyRjngAoO1y3LoSOEgD8vR062cdYDmv
+jLvVAJ0dmp1UiuQp+oMyq2VbWyw8LXN1XLkBDQQ+rZ59EAQAmYsA8gPjJ75gOIPb
XNg9Z31QzIz65qS9XdNsFNAdKxnY4b72nhc0oaS9/7Dcdf2Q+1mDa2p72DWk+9iz
7knmBL++csBP2z9eMe5h8oV53prqNOHDHyL3WLOa25ga9381gZnzWoQME74iSBBM
wDw8vbLEgIZ34JaQ7Oe+9N3+6n8AAwcD/Av+Ms+3gCc5pLp4nx36qqi36fodaG9+
dwIcMbr9bivEtjmDHeuPsD6X1J9+Y/ikUBIDpMPv33lJxLoubOtpLhEuN2XN/ojT
rueVPDKA1f+GyfHnyfpf/78IgX1hGVqu/3RBWKPpXFwSZA4q8vFR+FaPC5WbU68t
FLJpYuC9ZO/LiEYEGBECAAYFAj6tnn0ACgkQeOEcayedXJGtPQCgxrbd59afemZ9
-OIadZD8kUGC29dUAoJ94aGUkWCwoEiPyEZRGXv9XRlfx
-=yTQx
+OIadZD8kUGC29dUAoJ94aGUkWCwoEiPyEZRGXv9XRlfxmQENBFcGhyIBCAC79AIx
+5hHixKmNtqbryuZTDwlt9XXkEn/QSrQD3pzgbsbBiWyqOV4hfscvtmoqA7koOw4h
+zZ/b8pJPA36eNzqMFIbkWpIit/BwA5bTKRkKXeD2kBFkjIN+iDuXawwhv7eNKH9O
+poAUe0K/esK/kvbMO721q24IgkOjB1Vtr/Y4Xkg7+VWVP0LFh7C/2Nwq6n2bktsA
+Ey9uCDD1hl8BdckN/XxpuUqSfxbF85GvYzzON67zOxxo6jqRXXcJ2PdPq0o9Ak0d
+6Fe7g9ZxOAeuYEbFTCZHBBccx84K0Bhn5tpqoq8Mq3f3mZfGBoe4J6wr17cxEDC8
+tTHUpDqk0CoLERUxABEBAAG0IERhbmllbCBTdGVuYmVyZyA8ZGFuaWVsQGhheHgu
+c2U+iQE3BBMBCgAhBQJXBociAhsDBQsJCAcDBRUKCQgLBRYCAwEAAh4BAheAAAoJ
+EPn+r/nTShvbHoAIAJDwb7dcAX4VGPa2oSuQqVnHsjDE7g8ATmcZq2IAzAG6bZg1
+svuhNyPQnL7kNrsz6Ew+yE4vH8mOjDUbc3feY4MzmtEMaB6VS0Xlna6cdtWkv4Y+
+Us4TuYSdftPZuZgI3nN/sXLlxWJCZgCPJJaGM6dXgyTFatk2P1LE98Qif7+ZMqfv
++BA5L6cy2cAwJ5qbvLtuT25rTxooN54JETfwdhUD1NEIqTQxeC4E5lFvwedjAjLh
+Gswau8WMCdM/HzGbuQ9Gp3/RafYoAvMV6r6sskvUrWubCHj0u+uNgOpUHvlrwcFg
+rBirzQdElumCWqbJVCH0V5NcP/zSz1U1W8wSRqS5AQ0EVwaHIgEIALyCqpnax0cL
+y7EK3UiU2Kkryb7LPsZkia9hTcIZjNg0B8XAdqDYpHiquYtX0cz5I1sSZMBJ/xJP
+BF2ce/bmOTJtyW3GaF9a+M2zboZSzx9nlv9xx0o3bXBrBlL2vaG2TW+x2G53GA0/
+0chbj35PR+fvJx8ob/fHwCkfzGb1qCzwovhwGVUNHqI5bxK/xVwXfiycbllE3Hmf
+09BGeXKR7gQtaal8byKKlqCtayteEaPNQt6czYxZkVAOvY4ZDQKSZJUNwGFog3bG
+6rHr1J/0un6nAvX+wMuvRkUDiQxZZCel7e0Qcg3gPrYh+adlr0Tn7wyCP7/BULz8
+67fQfzc2ENkAEQEAAYkBHwQYAQoACQUCVwaHIgIbDAAKCRD5/q/500ob27KaB/9H
+a+iDip6mxFdoqy7TAefBy7KgbMQxxT926IcFqf70aJDzeVQI3lGCqN9GW03d+wPr
+LoyeQBQKNxxfQ9fEOvp1AXGWFIYYtEZIvQBpIqaSaA7W5IzqfDuO9xG89DNn8zKK
+nh/mbYJov/fywhBU6JH7bqdFSHbqoG9TY64s0BkV6shIVOubXLSG5G7LxXhw+xrb
+0zl4ie2wCeCBOLdbGHc+o2sKo1rBEz6UBK2DesPfkzxBO7lfa9HTcN03UJPHXmzb
+2mCbeFV8yPsTAoaGv4qZH1+FX+9Lv374xTSXa4CjQzSxd0dkZGG+YQjocoPftgsC
+OVsiqW0WhRVIEJ+hBAMUmQENBFcGiPEBCAC7sCnaZqWxfXNgBC7P28BSDUs9w4y/
+PEFsOv9bpgbgZagX1FnhG0eV71nm0p8v9T8Bft1eXaBd977Dq9pgk5qKO0xZo8fC
+8prFqB5db7fMUvPZCuJTTb6lGMz4OdfT6aHqUvJ+LFF1mKn8Eqt1Q4snHGSL1PI3
+/+435qDRQsU15GdYrj1waNJKk79aes9oguaI2/OTQqzIcOFK5tJjlSOD1ryOIH1e
+8vD+5MMpGvsRxv3sQHeTZkfZbkzSLFg/LKpoiQkyql1+BLNhBYq8oaE/jlvQrTEk
+bAyKpMScdyHwmkWWKjyZtXTrAtlComnki4yC2lAV9MXINHHvNJBcIXvVABEBAAG0
+IERhbmllbCBTdGVuYmVyZyA8ZGFuaWVsQGhheHguc2U+iQE3BBMBCgAhBQJXBojx
+AhsDBQsJCAcDBRUKCQgLBRYCAwEAAh4BAheAAAoJEFzJCP23HhLCOKkH/1CyoKiN
+2PCgTlWoYQspv/AAmsj+cFwZobI167KowA+o3zxQqxg0MV3ds8G+iig9OIuYurlQ
+L5Jr3CbDltaiXdWtVteRh/VKp61EwyXq77vjJbx81hvOuaXWWLSlU0KB3w7Hj6aD
+/mt16DpOcY9Aw90mKyvafRTqMF7TcT7J5HeGn2NL45dPkAhiMDEgEnw9yBTxK/x6
+UoQGPgiOWxSSN7Foj3mhUOflp8W0rnkLbJ4icpym6WuLKRMKAefDvk8GVlAWuXAb
+9gloL1P6u3uNHllq/IODR2bZUBI0QNKhvt0iSj7WKsc/kaqscl+AE9jd/6kXd6vh
+TNFWdzeco/2mGlaIRgQQEQoABgUCVwaJ/AAKCRB44RxrJ51ckWcaAKCJ6+arS/3k
+IMcO14Jz8dVf2BH3OACgwTenVSsK66qi+VfGCoALpzpiLDO5AQ0EVwaI8QEIAOxQ
+AEvF3idxcn80tbUhJg1J98fAS7Hx3WhlFG74uAikZQl1KZrprBu70RWTb7Nm1tvZ
+eXW65IlY7kk42bhfYDs1JrIPWOWKvVwKWDxoEbYgW/yvy1TOuXH276zbxLl5OEE8
+sQuOfXZsFSX2IPF9hsgNGaNzor8Ke7Y5BuCQLcGZWW5dLFbbKRKjXG8CaWmsJVoI
+c2nyXCAss2q9oCJ13X/5z+Ei392rwi1d3NxAYkSiDQan+fkWkCvZH+dHmFjQ1AND
+KielxcW1VfilK1hu9ziBBDf8TCEud/q0woIAH7rvIft4i3CqjymonByE4/OjfH8j
+4EteQ8qoknMCjjwNVqkAEQEAAYkBHwQYAQoACQUCVwaI8QIbDAAKCRBcyQj9tx4S
+wupjB/9TV4anbZK58bN7QJ5qGnU3GNjlvWFZXMw1u1xVc7abDJyqmFeJcJ4qLUkv
+BA0OsvlVnMWmeCmzsXhlQVM4Bv6IWyr7JBWgkK5q2CWVB59V7v7znf5kWnMGFhDF
+PlLsGbxDWLMoZGH+Iy84whMJFgferwCJy1dND/bHXPztfhvFXi8NNlJUFJa8Xtmu
+gm78C+nwNHcFpVC70HPr3oa8U1ODXMp7L8W/dL3eLYXmRCNd0urHgYrzDt6V/zf5
+ymvPk5w4HBocn2oRCJj/FXKhFAUptmpTE3g1yvYULmuFcNGAnPAExmAmd6NqsCmb
+j/qx4ytjt5uxt6Jm6IXV9cry8i6x
+=Phs/
-----END PGP PUBLIC KEY BLOCK-----
1
0
29 Jun '16
Hello community,
here is the log from the commit of package gstreamer-0_10-plugins-base for openSUSE:Factory checked in at 2016-06-29 15:01:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gstreamer-0_10-plugins-base (Old)
and /work/SRC/openSUSE:Factory/.gstreamer-0_10-plugins-base.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gstreamer-0_10-plugins-base"
Changes:
--------
--- /work/SRC/openSUSE:Factory/gstreamer-0_10-plugins-base/gstreamer-0_10-plugins-base.changes 2016-03-29 14:49:28.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.gstreamer-0_10-plugins-base.new/gstreamer-0_10-plugins-base.changes 2016-06-29 15:01:50.000000000 +0200
@@ -1,0 +2,6 @@
+Fri Jun 17 11:01:35 UTC 2016 - dimstar(a)opensuse.org
+
+- Add gstreamer-0_10-plugins-base-gcc6-fixes.patch: Fix header
+ files to now fail when being used with gcc 6 (boo#985251).
+
+-------------------------------------------------------------------
New:
----
gstreamer-0_10-plugins-base-gcc6-fixes.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gstreamer-0_10-plugins-base.spec ++++++
--- /var/tmp/diff_new_pack.w08tef/_old 2016-06-29 15:01:51.000000000 +0200
+++ /var/tmp/diff_new_pack.w08tef/_new 2016-06-29 15:01:51.000000000 +0200
@@ -37,6 +37,8 @@
Patch2: gstreamer-0_10-plugins-base-gcc5-fix-on-i586.patch
# PATCH-FIX-UPSTREAM gstreamer-0_10-plugins-base-gtk-1.25.patch dimstar(a)opensuse.org -- Fix build with gtk-doc 1.25. index.sgml is an internal file and must not be messed with (and with gtk-doc 1.25 it is no longer created)
Patch3: gstreamer-0_10-plugins-base-gtk-1.25.patch
+# PATCH-FIX-UPSTREAM gstreamer-0_10-plugins-base-gcc6-fixes.patch boo#985251 dimstar(a)opensuse.org -- Fix header files so they can be used with gcc 6
+Patch4: gstreamer-0_10-plugins-base-gcc6-fixes.patch
BuildRequires: alsa-devel
BuildRequires: cdparanoia-devel
BuildRequires: check-devel
@@ -242,6 +244,7 @@
%patch1 -p1
%patch2 -p1
%patch3 -p1
+%patch4 -p1
%build
export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing"
++++++ gstreamer-0_10-plugins-base-gcc6-fixes.patch ++++++
Index: gst-plugins-base-0.10.36/gst-libs/gst/video/video.h
===================================================================
--- gst-plugins-base-0.10.36.orig/gst-libs/gst/video/video.h
+++ gst-plugins-base-0.10.36/gst-libs/gst/video/video.h
@@ -342,9 +342,9 @@ typedef enum {
*/
#define GST_VIDEO_CAPS_RGB8_PALETTED \
"video/x-raw-rgb, bpp = (int)8, depth = (int)8, " \
- "width = "GST_VIDEO_SIZE_RANGE" , " \
+ "width = " GST_VIDEO_SIZE_RANGE " , " \
"height = " GST_VIDEO_SIZE_RANGE ", " \
- "framerate = "GST_VIDEO_FPS_RANGE
+ "framerate = " GST_VIDEO_FPS_RANGE
/**
* GST_VIDEO_CAPS_YUV:
1
0
Hello community,
here is the log from the commit of package libgnome-keyring for openSUSE:Factory checked in at 2016-06-29 15:01:43
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libgnome-keyring (Old)
and /work/SRC/openSUSE:Factory/.libgnome-keyring.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libgnome-keyring"
Changes:
--------
--- /work/SRC/openSUSE:Factory/libgnome-keyring/libgnome-keyring.changes 2014-05-05 21:18:06.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.libgnome-keyring.new/libgnome-keyring.changes 2016-06-29 15:01:44.000000000 +0200
@@ -1,0 +2,10 @@
+Thu Jun 16 15:53:32 UTC 2016 - dimstar(a)opensuse.org
+
+- Add baselibs.conf to source list.
+
+-------------------------------------------------------------------
+Thu May 5 20:19:26 CEST 2016 - hpj(a)suse.com
+
+- Update for GNOME 3.20 (Fate#318572).
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libgnome-keyring.spec ++++++
--- /var/tmp/diff_new_pack.gSjDc7/_old 2016-06-29 15:01:46.000000000 +0200
+++ /var/tmp/diff_new_pack.gSjDc7/_new 2016-06-29 15:01:46.000000000 +0200
@@ -1,7 +1,7 @@
#
# spec file for package libgnome-keyring
#
-# Copyright (c) 2014 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
@@ -24,6 +24,7 @@
License: GPL-2.0+ and LGPL-2.1+
Group: Development/Libraries/GNOME
Source: http://download.gnome.org/sources/libgnome-keyring/3.12/%{name}-%{version}.…
+Source99: baselibs.conf
BuildRequires: dbus-1-devel
BuildRequires: fdupes
BuildRequires: glib2-devel
1
0
Hello community,
here is the log from the commit of package unzip for openSUSE:Factory checked in at 2016-06-29 15:01:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/unzip (Old)
and /work/SRC/openSUSE:Factory/.unzip.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "unzip"
Changes:
--------
--- /work/SRC/openSUSE:Factory/unzip/unzip-rcc.changes 2015-01-30 06:03:17.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.unzip.new/unzip-rcc.changes 2016-06-29 15:01:38.000000000 +0200
@@ -1,0 +2,6 @@
+Thu Jun 16 14:58:41 UTC 2016 - tchvatal(a)suse.com
+
+- Require properly the update-alternatives to not throw out errors
+ when installing in OBS chroot
+
+-------------------------------------------------------------------
unzip.changes: same change
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ unzip-rcc.spec ++++++
--- /var/tmp/diff_new_pack.9ZqEWu/_old 2016-06-29 15:01:39.000000000 +0200
+++ /var/tmp/diff_new_pack.9ZqEWu/_new 2016-06-29 15:01:39.000000000 +0200
@@ -1,7 +1,7 @@
#
# spec file for package unzip-rcc
#
-# 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
@@ -16,21 +16,29 @@
#
+%define _name unzip
+%define fileversion 60
%bcond_without rcc
-
+%if %{with rcc}
+%define update_weight 20
+%define _suffix rcc
+BuildRequires: librcc-devel
+Suggests: librcc0
+Provides: %{_name} = %{version}
+%else
+%define update_weight 10
+%define _suffix plain
+%endif
# NOTE: unzip.spec is the major file, if you want to update unzip-rcc.spec
# call pre_checkin.sh after editing unzip.spec
-
Name: unzip-rcc
-%define _name unzip
Version: 6.00
Release: 0
-%define fileversion 60
Summary: A program to unpack compressed files
License: BSD-3-Clause
Group: Productivity/Archiving/Compression
Url: http://www.info-zip.org/
-Source: http://sourceforge.net/projects/infozip/files/UnZip%206.x%20%28latest%29/Un…
+Source: http://sourceforge.net/projects/infozip/files/UnZip%%206.x%%20%%28latest%%2…
Source1: pre_checkin.sh
Patch0: unzip.dif
Patch1: unzip-iso8859_2.patch
@@ -43,20 +51,10 @@
Patch12: unzip-dont_call_isprint.patch
Patch13: Fix-CVE-2014-8139-unzip.patch
Patch14: Fix-CVE-2014-8140-and-CVE-2014-8141.patch
-%if %{with rcc}
-BuildRequires: librcc-devel
-Suggests: librcc0
-Provides: %{_name} = %{version}
-%define update_weight 20
-%define _suffix rcc
-%else
-%define update_weight 10
-%define _suffix plain
-%endif
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
-BuildRequires: update-alternatives
-Requires: update-alternatives
+Requires(post): update-alternatives
+Requires(preun): update-alternatives
Recommends: %{_name}-doc
+BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
UnZip is an extraction utility for archives compressed in .zip format
@@ -102,7 +100,7 @@
make %{?_smp_mflags} -f unix/Makefile LF2="-ldl -pie" linux_noasm
%check
-make -f unix/Makefile check
+make %{?_smp_mflags} -f unix/Makefile check
%install
mkdir -p %{buildroot}%{_sysconfdir}/alternatives
@@ -114,7 +112,7 @@
install unix/zipgrep "%{buildroot}%{_bindir}/zipgrep-"%{_suffix}
for i in unzip funzip unzipsfx zipgrep; do
touch %{buildroot}%{_sysconfdir}/alternatives/$i
- ln -s %{_sysconfdir}/alternatives/$i %{buildroot}%_bindir/$i
+ ln -s %{_sysconfdir}/alternatives/$i %{buildroot}%{_bindir}/$i
done
# do not have the docu in both packages
@@ -126,36 +124,36 @@
%post
for bin in unzip funzip unzipsfx zipgrep; do
- /usr/sbin/update-alternatives --install %{_bindir}/$bin $bin "%{_bindir}/$bin-"%{_suffix} %{update_weight}
+ %{_sbindir}/update-alternatives --install %{_bindir}/$bin $bin "%{_bindir}/$bin-"%{_suffix} %{update_weight}
done
%preun
if [ "$1" = 0 ] ; then
for bin in unzip funzip unzipsfx zipgrep; do
- /usr/sbin/update-alternatives --remove $bin "%{_bindir}/$bin"-%{_suffix}
+ %{_sbindir}/update-alternatives --remove $bin "%{_bindir}/$bin"-%{_suffix}
done
fi
%files
%defattr(-,root,root)
-%ghost %_sysconfdir/alternatives/unzip
+%ghost %{_sysconfdir}/alternatives/unzip
%{_bindir}/unzip
%{_bindir}/unzip-%{_suffix}
-%ghost %_sysconfdir/alternatives/funzip
+%ghost %{_sysconfdir}/alternatives/funzip
%{_bindir}/funzip
%{_bindir}/funzip-%{_suffix}
-%ghost %_sysconfdir/alternatives/unzipsfx
+%ghost %{_sysconfdir}/alternatives/unzipsfx
%{_bindir}/unzipsfx
%{_bindir}/unzipsfx-%{_suffix}
%{_bindir}/zipinfo
-%ghost %_sysconfdir/alternatives/zipgrep
+%ghost %{_sysconfdir}/alternatives/zipgrep
%{_bindir}/zipgrep
%{_bindir}/zipgrep-%{_suffix}
%if %{without rcc}
%files doc
%defattr(-,root,root)
-%doc %{_mandir}/man1/*
+%{_mandir}/man1/*
%doc BUGS Contents History.* LICENSE README ToDo WHERE
%doc *.txt proginfo
++++++ unzip.spec ++++++
--- /var/tmp/diff_new_pack.9ZqEWu/_old 2016-06-29 15:01:39.000000000 +0200
+++ /var/tmp/diff_new_pack.9ZqEWu/_new 2016-06-29 15:01:39.000000000 +0200
@@ -1,7 +1,7 @@
#
# spec file for package unzip
#
-# 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
@@ -16,21 +16,29 @@
#
+%define _name unzip
+%define fileversion 60
%bcond_with rcc
-
+%if %{with rcc}
+%define update_weight 20
+%define _suffix rcc
+BuildRequires: librcc-devel
+Suggests: librcc0
+Provides: %{_name} = %{version}
+%else
+%define update_weight 10
+%define _suffix plain
+%endif
# NOTE: unzip.spec is the major file, if you want to update unzip-rcc.spec
# call pre_checkin.sh after editing unzip.spec
-
Name: unzip
-%define _name unzip
Version: 6.00
Release: 0
-%define fileversion 60
Summary: A program to unpack compressed files
License: BSD-3-Clause
Group: Productivity/Archiving/Compression
Url: http://www.info-zip.org/
-Source: http://sourceforge.net/projects/infozip/files/UnZip%206.x%20%28latest%29/Un…
+Source: http://sourceforge.net/projects/infozip/files/UnZip%%206.x%%20%%28latest%%2…
Source1: pre_checkin.sh
Patch0: unzip.dif
Patch1: unzip-iso8859_2.patch
@@ -43,20 +51,10 @@
Patch12: unzip-dont_call_isprint.patch
Patch13: Fix-CVE-2014-8139-unzip.patch
Patch14: Fix-CVE-2014-8140-and-CVE-2014-8141.patch
-%if %{with rcc}
-BuildRequires: librcc-devel
-Suggests: librcc0
-Provides: %{_name} = %{version}
-%define update_weight 20
-%define _suffix rcc
-%else
-%define update_weight 10
-%define _suffix plain
-%endif
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
-BuildRequires: update-alternatives
-Requires: update-alternatives
+Requires(post): update-alternatives
+Requires(preun): update-alternatives
Recommends: %{_name}-doc
+BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
UnZip is an extraction utility for archives compressed in .zip format
@@ -102,7 +100,7 @@
make %{?_smp_mflags} -f unix/Makefile LF2="-ldl -pie" linux_noasm
%check
-make -f unix/Makefile check
+make %{?_smp_mflags} -f unix/Makefile check
%install
mkdir -p %{buildroot}%{_sysconfdir}/alternatives
@@ -114,7 +112,7 @@
install unix/zipgrep "%{buildroot}%{_bindir}/zipgrep-"%{_suffix}
for i in unzip funzip unzipsfx zipgrep; do
touch %{buildroot}%{_sysconfdir}/alternatives/$i
- ln -s %{_sysconfdir}/alternatives/$i %{buildroot}%_bindir/$i
+ ln -s %{_sysconfdir}/alternatives/$i %{buildroot}%{_bindir}/$i
done
# do not have the docu in both packages
@@ -126,36 +124,36 @@
%post
for bin in unzip funzip unzipsfx zipgrep; do
- /usr/sbin/update-alternatives --install %{_bindir}/$bin $bin "%{_bindir}/$bin-"%{_suffix} %{update_weight}
+ %{_sbindir}/update-alternatives --install %{_bindir}/$bin $bin "%{_bindir}/$bin-"%{_suffix} %{update_weight}
done
%preun
if [ "$1" = 0 ] ; then
for bin in unzip funzip unzipsfx zipgrep; do
- /usr/sbin/update-alternatives --remove $bin "%{_bindir}/$bin"-%{_suffix}
+ %{_sbindir}/update-alternatives --remove $bin "%{_bindir}/$bin"-%{_suffix}
done
fi
%files
%defattr(-,root,root)
-%ghost %_sysconfdir/alternatives/unzip
+%ghost %{_sysconfdir}/alternatives/unzip
%{_bindir}/unzip
%{_bindir}/unzip-%{_suffix}
-%ghost %_sysconfdir/alternatives/funzip
+%ghost %{_sysconfdir}/alternatives/funzip
%{_bindir}/funzip
%{_bindir}/funzip-%{_suffix}
-%ghost %_sysconfdir/alternatives/unzipsfx
+%ghost %{_sysconfdir}/alternatives/unzipsfx
%{_bindir}/unzipsfx
%{_bindir}/unzipsfx-%{_suffix}
%{_bindir}/zipinfo
-%ghost %_sysconfdir/alternatives/zipgrep
+%ghost %{_sysconfdir}/alternatives/zipgrep
%{_bindir}/zipgrep
%{_bindir}/zipgrep-%{_suffix}
%if %{without rcc}
%files doc
%defattr(-,root,root)
-%doc %{_mandir}/man1/*
+%{_mandir}/man1/*
%doc BUGS Contents History.* LICENSE README ToDo WHERE
%doc *.txt proginfo
1
0
Hello community,
here is the log from the commit of package vncmanager for openSUSE:Factory checked in at 2016-06-29 15:01:31
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/vncmanager (Old)
and /work/SRC/openSUSE:Factory/.vncmanager.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "vncmanager"
Changes:
--------
--- /work/SRC/openSUSE:Factory/vncmanager/vncmanager.changes 2016-06-11 00:00:50.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.vncmanager.new/vncmanager.changes 2016-06-29 15:01:32.000000000 +0200
@@ -1,0 +2,10 @@
+Thu Jun 16 12:07:33 UTC 2016 - msrb(a)suse.com
+
+- Update to 1.0.1
+ * Fix build with gcc 6, fix licence link in README. (bnc#985002)
+- Add dependency on xorg-x11-Xvnc. (bnc#984461)
+- Add n_use_with_vnc_key_wrapper.patch
+ * Use with-vnc-key.sh wrapper to generate VNC key and certificate
+ on first use. (bnc#982349)
+
+-------------------------------------------------------------------
Old:
----
vncmanager-1.0.0.tar.gz
New:
----
n_use_with_vnc_key_wrapper.patch
vncmanager-1.0.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ vncmanager.spec ++++++
--- /var/tmp/diff_new_pack.20JEDg/_old 2016-06-29 15:01:33.000000000 +0200
+++ /var/tmp/diff_new_pack.20JEDg/_new 2016-06-29 15:01:33.000000000 +0200
@@ -1,7 +1,7 @@
#
# spec file for package vncmanager
#
-# 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
@@ -15,17 +15,24 @@
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
+
+%define vncgroup vnc
+%define vncuser vnc
+
Name: vncmanager
-Version: 1.0.0
+Version: 1.0.1
Release: 0
-BuildRequires: gcc-c++
+BuildRequires: boost-devel
BuildRequires: cmake
+BuildRequires: gcc-c++
BuildRequires: libgnutls-devel
-BuildRequires: boost-devel
BuildRequires: pkg-config
BuildRequires: systemd-devel
BuildRequires: systemd-rpm-macros
+Requires(post): xorg-x11-Xvnc
Requires: vncmanager-greeter
+Requires: xorg-x11-Xvnc
+Requires: xorg-x11-Xvnc:/usr/lib/vnc/with-vnc-key.sh
Recommends: vncmanager-controller
Url: https://github.com/michalsrb/vncmanager
@@ -36,6 +43,7 @@
Source: vncmanager-%{version}.tar.gz
Source1: tmpfile.conf
Patch1: n_use_port_5901.patch
+Patch2: n_use_with_vnc_key_wrapper.patch
%description
Session manager for VNC. It listens on VNC port and spawns Xvnc processes for incoming clients.
@@ -56,6 +64,7 @@
%prep
%setup
%patch1 -p1
+%patch2 -p1
%build
%cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_VERBOSE_MAKEFILE=ON
@@ -77,7 +86,7 @@
%{_bindir}/vncmanager
%{_unitdir}/vncmanager.service
%{_sbindir}/rcvncmanager
-%dir %{_sysconfdir}/vnc
+%dir %attr(0755,%{vncuser},%{vncuser}) %{_sysconfdir}/vnc
%config(noreplace) %{_sysconfdir}/vnc/vncmanager.conf
/usr/lib/tmpfiles.d/%{name}.conf
%ghost %dir /run/vncmanager
++++++ n_use_with_vnc_key_wrapper.patch ++++++
Use Xvnc's with-vnc-key wrapper to create key and certificate on first use.
Index: vncmanager-1.0.1/vncmanager.service.in
===================================================================
--- vncmanager-1.0.1.orig/vncmanager.service.in
+++ vncmanager-1.0.1/vncmanager.service.in
@@ -4,7 +4,7 @@ After=network.target
[Service]
User=vnc
-ExecStart=@CMAKE_INSTALL_FULL_BINDIR@/vncmanager
+ExecStart=/usr/lib/vnc/with-vnc-key.sh @CMAKE_INSTALL_FULL_BINDIR@/vncmanager
[Install]
WantedBy=multi-user.target
++++++ vncmanager-1.0.0.tar.gz -> vncmanager-1.0.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vncmanager-1.0.0/README.md new/vncmanager-1.0.1/README.md
--- old/vncmanager-1.0.0/README.md 2016-04-27 23:16:22.000000000 +0200
+++ new/vncmanager-1.0.1/README.md 2016-06-16 12:30:02.000000000 +0200
@@ -4,4 +4,4 @@
TODO: Add more information.
## License
-The project is open sourced under the [MIT license](http://www.tldrlegal.com/license/apache-license-2.0-%28apache-2.0%….
+The project is open sourced under the [MIT license](https://tldrlegal.com/license/mit-license).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vncmanager-1.0.0/rfb.h new/vncmanager-1.0.1/rfb.h
--- old/vncmanager-1.0.0/rfb.h 2016-04-27 23:16:22.000000000 +0200
+++ new/vncmanager-1.0.1/rfb.h 2016-06-16 12:30:02.000000000 +0200
@@ -483,9 +483,9 @@
enum class VeNCryptSubtype : uint32_t // Contains only the supported subtypes
{
- Invalid = SecurityType::Invalid,
- None = SecurityType::None,
- VncAuth = SecurityType::VncAuth,
+ Invalid = (uint32_t) SecurityType::Invalid,
+ None = (uint32_t) SecurityType::None,
+ VncAuth = (uint32_t) SecurityType::VncAuth,
Plain = 256, // (used in direction towards local Xvnc)
TLSNone = 257,
1
0
Hello community,
here is the log from the commit of package tigervnc for openSUSE:Factory checked in at 2016-06-29 15:01:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/tigervnc (Old)
and /work/SRC/openSUSE:Factory/.tigervnc.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "tigervnc"
Changes:
--------
--- /work/SRC/openSUSE:Factory/tigervnc/tigervnc.changes 2016-06-02 12:48:35.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.tigervnc.new/tigervnc.changes 2016-06-29 15:01:21.000000000 +0200
@@ -1,0 +2,12 @@
+Thu Jun 16 13:17:15 UTC 2016 - msrb(a)suse.com
+
+- Generate VNC key and certificate on first use, not during
+ installation. (bnc#982349)
+
+-------------------------------------------------------------------
+Mon Jun 13 15:21:19 UTC 2016 - msrb(a)suse.com
+
+- Add U_tigervnc_clear_up_zlibinstream_reset_behaviour.patch
+ * Fix zlib stream reset in tight encoding. (bnc#963417)
+
+-------------------------------------------------------------------
New:
----
U_tigervnc_clear_up_zlibinstream_reset_behaviour.patch
with-vnc-key.sh
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ tigervnc.spec ++++++
--- /var/tmp/diff_new_pack.9fpjyb/_old 2016-06-29 15:01:22.000000000 +0200
+++ /var/tmp/diff_new_pack.9fpjyb/_new 2016-06-29 15:01:22.000000000 +0200
@@ -108,6 +108,7 @@
Source8: vnc.reg
Source9: vncpasswd.arg
Source10: vnc.pam
+Source11: with-vnc-key.sh
Patch1: tigervnc-newfbsize.patch
Patch2: tigervnc-clean-pressed-key-on-exit.patch
Patch3: u_tigervnc-ignore-epipe-on-write.patch
@@ -120,6 +121,7 @@
Patch10: U_add_allowoverride_parameter.patch
Patch11: u_build_libXvnc_as_separate_library.patch
Patch12: u_tigervnc-show-unencrypted-warning.patch
+Patch13: U_tigervnc_clear_up_zlibinstream_reset_behaviour.patch
%description
TigerVNC is a high-performance, platform-neutral implementation of VNC (Virtual Network Computing),
@@ -129,10 +131,10 @@
TigerVNC also provides extensions for advanced authentication methods and TLS encryption.
%package -n xorg-x11-Xvnc
-# Needed to generate certificates
-Requires(post): openssl
Requires(post): /usr/sbin/useradd
Requires(post): /usr/sbin/groupadd
+# Needed to generate certificates
+Requires: openssl
# Needed to serve java applet
Requires: icewm
Requires: python
@@ -143,6 +145,7 @@
Requires: xkbcomp
Requires: xkeyboard-config
Requires: xorg-x11-fonts-core
+Provides: xorg-x11-Xvnc:/usr/lib/vnc/with-vnc-key.sh
Summary: TigerVNC implementation of Xvnc
Group: System/X11/Servers/XF86_4
@@ -180,6 +183,7 @@
%patch10 -p1
%patch11 -p1
%patch12 -p1
+%patch13 -p1
pushd unix/xserver
patch -p1 < ../xserver117.patch
@@ -255,6 +259,9 @@
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/vnc
+mkdir -p $RPM_BUILD_ROOT%{_libexecdir}/vnc
+install -D -m 755 %{SOURCE11} $RPM_BUILD_ROOT%{_libexecdir}/vnc
+
rm -rf $RPM_BUILD_ROOT/usr/share/doc/tigervnc-*
%find_lang '%{name}'
@@ -264,18 +271,6 @@
getent passwd %{vncuser} > /dev/null || useradd -r -g %{vncgroup} -d /var/lib/empty -s /sbin/nologin -c "user for VNC" %{vncuser} || :
usermod -G shadow -a %{vncuser} || :
-%post -n xorg-x11-Xvnc
-if ! test -e %{tlskey} ; then
- (umask 077 && openssl genrsa -out %{tlskey} 2048)
- chown %{vncuser}:%{vncgroup} %{tlskey}
-fi
-if ! test -e %{tlscert} ; then
- cn="Automatically generated certificate for the VNC service"
- openssl req -new -x509 -extensions usr_cert \
- -key %{tlskey} -out %{tlscert} -days 7305 -subj "/CN=$cn/"
- chown %{vncuser}:%{vncgroup} %{tlscert}
-fi
-
%post
%if 0%{?suse_version} >= 1315
%_sbindir/update-alternatives \
@@ -358,10 +353,12 @@
%doc java/com/tigervnc/vncviewer/README
%{_datadir}/vnc
-%dir %{_sysconfdir}/vnc
+%dir %attr(0755,%{vncuser},%{vncuser}) %{_sysconfdir}/vnc
%ghost %attr(0600,%{vncuser},%{vncuser}) %config(noreplace) %{tlskey}
%ghost %attr(0644,%{vncuser},%{vncuser}) %config(noreplace) %{tlscert}
+%{_libexecdir}/vnc
+
%files -n libXvnc1
%defattr(-,root,root)
%{_libdir}/libXvnc.so.1*
++++++ U_tigervnc_clear_up_zlibinstream_reset_behaviour.patch ++++++
>From 6f318e4451fcb45054408eaf568ca1c30c2d1ab6 Mon Sep 17 00:00:00 2001
From: Pierre Ossman <ossman(a)cendio.se>
Date: Wed, 11 Nov 2015 13:11:09 +0100
Subject: [PATCH] Clear up ZlibInStream::reset() behaviour
It previously only did a reset of the ZlibInStream object, not the
underlying zlib stream. It also had the side effect of flushing
the underlying stream and disassociating from it.
Clear things up by changing the naming, and introducing a proper
reset function (which is needed by the Tight decoder).
Index: tigervnc-1.5.0/common/rdr/ZlibInStream.cxx
===================================================================
--- tigervnc-1.5.0.orig/common/rdr/ZlibInStream.cxx
+++ tigervnc-1.5.0/common/rdr/ZlibInStream.cxx
@@ -16,6 +16,8 @@
* USA.
*/
+#include <assert.h>
+
#include <rdr/ZlibInStream.h>
#include <rdr/Exception.h>
#include <zlib.h>
@@ -26,26 +28,16 @@ enum { DEFAULT_BUF_SIZE = 16384 };
ZlibInStream::ZlibInStream(int bufSize_)
: underlying(0), bufSize(bufSize_ ? bufSize_ : DEFAULT_BUF_SIZE), offset(0),
- bytesIn(0)
+ zs(NULL), bytesIn(0)
{
- zs = new z_stream;
- zs->zalloc = Z_NULL;
- zs->zfree = Z_NULL;
- zs->opaque = Z_NULL;
- zs->next_in = Z_NULL;
- zs->avail_in = 0;
- if (inflateInit(zs) != Z_OK) {
- delete zs;
- throw Exception("ZlibInStream: inflateInit failed");
- }
ptr = end = start = new U8[bufSize];
+ init();
}
ZlibInStream::~ZlibInStream()
{
+ deinit();
delete [] start;
- inflateEnd(zs);
- delete zs;
}
void ZlibInStream::setUnderlying(InStream* is, int bytesIn_)
@@ -60,7 +52,7 @@ int ZlibInStream::pos()
return offset + ptr - start;
}
-void ZlibInStream::reset()
+void ZlibInStream::removeUnderlying()
{
ptr = end = start;
if (!underlying) return;
@@ -72,6 +64,38 @@ void ZlibInStream::reset()
underlying = 0;
}
+void ZlibInStream::reset()
+{
+ deinit();
+ init();
+}
+
+void ZlibInStream::init()
+{
+ assert(zs == NULL);
+
+ zs = new z_stream;
+ zs->zalloc = Z_NULL;
+ zs->zfree = Z_NULL;
+ zs->opaque = Z_NULL;
+ zs->next_in = Z_NULL;
+ zs->avail_in = 0;
+ if (inflateInit(zs) != Z_OK) {
+ delete zs;
+ zs = NULL;
+ throw Exception("ZlibInStream: inflateInit failed");
+ }
+}
+
+void ZlibInStream::deinit()
+{
+ assert(zs != NULL);
+ removeUnderlying();
+ inflateEnd(zs);
+ delete zs;
+ zs = NULL;
+}
+
int ZlibInStream::overrun(int itemSize, int nItems, bool wait)
{
if (itemSize > bufSize)
Index: tigervnc-1.5.0/common/rdr/ZlibInStream.h
===================================================================
--- tigervnc-1.5.0.orig/common/rdr/ZlibInStream.h
+++ tigervnc-1.5.0/common/rdr/ZlibInStream.h
@@ -38,11 +38,15 @@ namespace rdr {
virtual ~ZlibInStream();
void setUnderlying(InStream* is, int bytesIn);
- void reset();
+ void removeUnderlying();
int pos();
+ void reset();
private:
+ void init();
+ void deinit();
+
int overrun(int itemSize, int nItems, bool wait);
bool decompress(bool wait);
Index: tigervnc-1.5.0/common/rfb/zrleDecode.h
===================================================================
--- tigervnc-1.5.0.orig/common/rfb/zrleDecode.h
+++ tigervnc-1.5.0/common/rfb/zrleDecode.h
@@ -177,7 +177,7 @@ void ZRLE_DECODE (const Rect& r, rdr::In
}
}
- zis->reset();
+ zis->removeUnderlying();
}
#undef ZRLE_DECODE
Index: tigervnc-1.5.0/common/rfb/tightDecode.h
===================================================================
--- tigervnc-1.5.0.orig/common/rfb/tightDecode.h
+++ tigervnc-1.5.0/common/rfb/tightDecode.h
@@ -59,7 +59,7 @@ void TIGHT_DECODE (const Rect& r)
rdr::U8 comp_ctl = is->readU8();
- // Flush zlib streams if we are told by the server to do so.
+ // Reset zlib streams if we are told by the server to do so.
for (int i = 0; i < 4; i++) {
if (comp_ctl & 1) {
zis[i].reset();
@@ -231,7 +231,7 @@ void TIGHT_DECODE (const Rect& r)
delete [] netbuf;
if (streamId != -1) {
- zis[streamId].reset();
+ zis[streamId].removeUnderlying();
}
}
++++++ vnc.xinetd ++++++
--- /var/tmp/diff_new_pack.9fpjyb/_old 2016-06-29 15:01:22.000000000 +0200
+++ /var/tmp/diff_new_pack.9fpjyb/_new 2016-06-29 15:01:22.000000000 +0200
@@ -9,8 +9,8 @@
protocol = tcp
wait = no
user = vnc
- server = /usr/bin/Xvnc
- server_args = -noreset -inetd -once -query localhost -geometry 1024x768 -securitytypes X509None,None -X509Key /etc/vnc/tls.key -X509Cert /etc/vnc/tls.cert -log *:syslog:30
+ server = /usr/lib/vnc/with-vnc-key.sh
+ server_args = /usr/bin/Xvnc -noreset -inetd -once -query localhost -geometry 1024x768 -securitytypes X509None,None -X509Key /etc/vnc/tls.key -X509Cert /etc/vnc/tls.cert -log *:syslog:30
disable = yes
}
# default: off
@@ -24,8 +24,8 @@
protocol = tcp
wait = no
user = vnc
- server = /usr/bin/Xvnc
- server_args = -noreset -inetd -once -query localhost -geometry 1280x1024 -securitytypes X509None,None -X509Key /etc/vnc/tls.key -X509Cert /etc/vnc/tls.cert -log *:syslog:30
+ server = /usr/lib/vnc/with-vnc-key.sh
+ server_args = /usr/bin/Xvnc -noreset -inetd -once -query localhost -geometry 1280x1024 -securitytypes X509None,None -X509Key /etc/vnc/tls.key -X509Cert /etc/vnc/tls.cert -log *:syslog:30
disable = yes
}
# default: off
@@ -39,8 +39,8 @@
protocol = tcp
wait = no
user = vnc
- server = /usr/bin/Xvnc
- server_args = -noreset -inetd -once -query localhost -geometry 1600x1200 -securitytypes X509None,None -X509Key /etc/vnc/tls.key -X509Cert /etc/vnc/tls.cert -log *:syslog:30
+ server = /usr/lib/vnc/with-vnc-key.sh
+ server_args = /usr/bin/Xvnc -noreset -inetd -once -query localhost -geometry 1600x1200 -securitytypes X509None,None -X509Key /etc/vnc/tls.key -X509Cert /etc/vnc/tls.cert -log *:syslog:30
disable = yes
}
# default: off
@@ -54,8 +54,8 @@
protocol = tcp
wait = no
user = vnc
- server = /usr/bin/vnc_inetd_httpd
- server_args = 1024 768 5901
+ server = /usr/lib/vnc/with-vnc-key.sh
+ server_args = /usr/bin/vnc_inetd_httpd 1024 768 5901
disable = yes
}
# default: off
@@ -69,8 +69,8 @@
protocol = tcp
wait = no
user = vnc
- server = /usr/bin/vnc_inetd_httpd
- server_args = 1280 1024 5902
+ server = /usr/lib/vnc/with-vnc-key.sh
+ server_args = /usr/bin/vnc_inetd_httpd 1280 1024 5902
disable = yes
}
# default: off
@@ -84,7 +84,7 @@
protocol = tcp
wait = no
user = vnc
- server = /usr/bin/vnc_inetd_httpd
- server_args = 1600 1200 5903
+ server = /usr/lib/vnc/with-vnc-key.sh
+ server_args = /usr/bin/vnc_inetd_httpd 1600 1200 5903
disable = yes
}
++++++ with-vnc-key.sh ++++++
#!/bin/bash
# Wrapper that makes sure /etc/vnc/tls.{key,cert} exist before executing given command.
TLSKEY=/etc/vnc/tls.key
TLSCERT=/etc/vnc/tls.cert
if test -s $TLSKEY -a -s $TLSCERT; then
# Execute the command we were given.
exec "$@"
fi
(
# Wait for lock on the key file. We must not proceed while someone else is creating it.
flock 200
# If the key file doesn't exist or has zero size (because it doubles as lock), generate it.
if ! test -s $TLSKEY ; then
(umask 077 && openssl genrsa -out $TLSKEY 2048) >&200
chown vnc:vnc $TLSKEY
fi
# If the cert file doesn't exist, generate it.
if ! test -e $TLSCERT ; then
CN="Automatically generated certificate for the VNC service"
openssl req -new -x509 -extensions usr_cert -key $TLSKEY -out $TLSCERT -days 7305 -subj "/CN=$CN/"
chown vnc:vnc $TLSCERT
fi
) 200>>$TLSKEY 2>/dev/null
# Execute the command we were given.
exec "$@"
1
0
Hello community,
here is the log from the commit of package libndp for openSUSE:Factory checked in at 2016-06-29 15:01:13
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libndp (Old)
and /work/SRC/openSUSE:Factory/.libndp.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libndp"
Changes:
--------
--- /work/SRC/openSUSE:Factory/libndp/libndp.changes 2016-05-25 21:21:37.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.libndp.new/libndp.changes 2016-06-29 15:01:15.000000000 +0200
@@ -4 +4 @@
-- Update to version 1.6:
+- Update to version 1.6 (bsc#979645 CVE-2016-3698):
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
1
0