openSUSE Commits
Threads by month
- ----- 2025 -----
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
March 2020
- 1 participants
- 5800 discussions
Hello community,
here is the log from the commit of package opencv3 for openSUSE:Leap:15.2 checked in at 2020-03-01 08:51:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Leap:15.2/opencv3 (Old)
and /work/SRC/openSUSE:Leap:15.2/.opencv3.new.26092 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "opencv3"
Sun Mar 1 08:51:32 2020 rev:2 rq:780566 version:3.4.9
Changes:
--------
--- /work/SRC/openSUSE:Leap:15.2/opencv3/opencv3.changes 2020-02-20 00:08:37.888272386 +0100
+++ /work/SRC/openSUSE:Leap:15.2/.opencv3.new.26092/opencv3.changes 2020-03-01 08:51:57.453342913 +0100
@@ -1,0 +2,8 @@
+Wed Feb 19 13:48:01 UTC 2020 - Michael Vetter <mvetter(a)suse.com>
+
+- Drop Jasper (i.e jpeg2k) support (boo#1130404, boo#1144260)
+ JasPer is unmaintained, CVEs are not being addressed (some issues
+ received patches submitted to the upstream github project, but are
+ not being merged, other CVEs are considered unfixable).
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ opencv3.spec ++++++
--- /var/tmp/diff_new_pack.TvGx1F/_old 2020-03-01 08:51:58.801345594 +0100
+++ /var/tmp/diff_new_pack.TvGx1F/_new 2020-03-01 08:51:58.805345603 +0100
@@ -1,7 +1,7 @@
#
# spec file for package opencv3
#
-# Copyright (c) 2019 SUSE LLC
+# Copyright (c) 2020 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
@@ -52,7 +52,6 @@
BuildRequires: cmake
BuildRequires: fdupes
BuildRequires: libeigen3-devel
-BuildRequires: libjasper-devel
BuildRequires: libjpeg-devel
BuildRequires: pkgconfig
BuildRequires: tbb-devel
@@ -224,6 +223,7 @@
-DOPENCV_SKIP_PYTHON_LOADER=ON \
-DOPENCV_PYTHON2_INSTALL_PATH=%{python2_sitearch} \
-DOPENCV_PYTHON3_INSTALL_PATH=%{python3_sitearch} \
+ -DWITH_JASPER=OFF \
make %{?_smp_mflags} VERBOSE=1
1
0
Hello community,
here is the log from the commit of package python-twine for openSUSE:Leap:15.2 checked in at 2020-03-01 08:51:30
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Leap:15.2/python-twine (Old)
and /work/SRC/openSUSE:Leap:15.2/.python-twine.new.26092 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-twine"
Sun Mar 1 08:51:30 2020 rev:12 rq:780567 version:1.15.0
Changes:
--------
--- /work/SRC/openSUSE:Leap:15.2/python-twine/python-twine.changes 2020-02-26 13:31:15.986119805 +0100
+++ /work/SRC/openSUSE:Leap:15.2/.python-twine.new.26092/python-twine.changes 2020-03-01 08:51:56.953341919 +0100
@@ -1,0 +2,7 @@
+Tue Feb 25 11:22:38 UTC 2020 - Ondřej Súkup <mimi.vx(a)gmail.com>
+
+- update to 1.15.0
+- last with python2
+- Improved output on check command
+
+-------------------------------------------------------------------
Old:
----
twine-1.14.0.tar.gz
New:
----
twine-1.15.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-twine.spec ++++++
--- /var/tmp/diff_new_pack.oNQspA/_old 2020-03-01 08:51:57.253342515 +0100
+++ /var/tmp/diff_new_pack.oNQspA/_new 2020-03-01 08:51:57.257342523 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-twine
#
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-twine
-Version: 1.14.0
+Version: 1.15.0
Release: 0
Summary: Collection of utilities for interacting with PyPI
License: Apache-2.0
++++++ twine-1.14.0.tar.gz -> twine-1.15.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/twine-1.14.0/PKG-INFO new/twine-1.15.0/PKG-INFO
--- old/twine-1.14.0/PKG-INFO 2019-09-07 23:30:47.000000000 +0200
+++ new/twine-1.15.0/PKG-INFO 2019-09-17 17:42:02.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: twine
-Version: 1.14.0
+Version: 1.15.0
Summary: Collection of utilities for publishing packages on PyPI
Home-page: https://twine.readthedocs.io/
Author: Donald Stufft and individual contributors
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/twine-1.14.0/docs/changelog.rst new/twine-1.15.0/docs/changelog.rst
--- old/twine-1.14.0/docs/changelog.rst 2019-09-07 23:21:42.000000000 +0200
+++ new/twine-1.15.0/docs/changelog.rst 2019-09-17 17:36:48.000000000 +0200
@@ -3,6 +3,11 @@
=========
Changelog
=========
+* :release:`1.15.0 <2019-09-17>`
+* :feature:`488` Improved output on ``check`` command:
+ Prints a message when there are no distributions given to check.
+ Improved handling of errors in a distribution's markup, avoiding
+ messages flowing through to the next distribution's errors.
* :release:`1.14.0 <2019-09-06>`
* :feature:`456` Better error handling and gpg2 fallback if gpg not available.
* :bug:`341` Fail more gracefully when encountering bad metadata
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/twine-1.14.0/tests/test_check.py new/twine-1.15.0/tests/test_check.py
--- old/twine-1.14.0/tests/test_check.py 2019-02-09 21:57:47.000000000 +0100
+++ new/twine-1.15.0/tests/test_check.py 2019-09-17 17:36:48.000000000 +0200
@@ -18,31 +18,31 @@
from twine.commands import check
-def test_warningstream_write_match():
- stream = check._WarningStream()
- stream.output = pretend.stub(write=pretend.call_recorder(lambda a: None))
+class TestWarningStream:
- stream.write("<string>:2: (WARNING/2) Title underline too short.")
+ def setup(self):
+ self.stream = check._WarningStream()
+ self.stream.output = pretend.stub(
+ write=pretend.call_recorder(lambda a: None),
+ getvalue=lambda: "result",
+ )
+
+ def test_write_match(self):
+ self.stream.write("<string>:2: (WARNING/2) Title underline too short.")
+
+ assert self.stream.output.write.calls == [
+ pretend.call("line 2: Warning: Title underline too short.\n")
+ ]
+
+ def test_write_nomatch(self):
+ self.stream.write("this does not match")
+
+ assert self.stream.output.write.calls == [
+ pretend.call("this does not match")
+ ]
- assert stream.output.write.calls == [
- pretend.call("line 2: Warning: Title underline too short.\n")
- ]
-
-
-def test_warningstream_write_nomatch():
- stream = check._WarningStream()
- stream.output = pretend.stub(write=pretend.call_recorder(lambda a: None))
-
- stream.write("this does not match")
-
- assert stream.output.write.calls == [pretend.call("this does not match")]
-
-
-def test_warningstream_str():
- stream = check._WarningStream()
- stream.output = pretend.stub(getvalue=lambda: "result")
-
- assert str(stream) == "result"
+ def test_str_representation(self):
+ assert str(self.stream) == "result"
def test_check_no_distributions(monkeypatch):
@@ -51,7 +51,7 @@
monkeypatch.setattr(check, "_find_dists", lambda a: [])
assert not check.check("dist/*", output_stream=stream)
- assert stream.getvalue() == ""
+ assert stream.getvalue() == "No files to check.\n"
def test_check_passing_distribution(monkeypatch):
@@ -74,10 +74,7 @@
monkeypatch.setattr(check, "_WarningStream", lambda: warning_stream)
assert not check.check("dist/*", output_stream=output_stream)
- assert (
- output_stream.getvalue()
- == "Checking distribution dist/dist.tar.gz: Passed\n"
- )
+ assert output_stream.getvalue() == "Checking dist/dist.tar.gz: PASSED\n"
assert renderer.render.calls == [
pretend.call("blah", stream=warning_stream)
]
@@ -99,11 +96,10 @@
output_stream = check.StringIO()
check.check("dist/*", output_stream=output_stream)
assert output_stream.getvalue() == (
- 'Checking distribution dist/dist.tar.gz: '
- 'warning: `long_description_content_type` missing. '
+ 'Checking dist/dist.tar.gz: PASSED, with warnings\n'
+ ' warning: `long_description_content_type` missing. '
'defaulting to `text/x-rst`.\n'
- 'warning: `long_description` missing.\n'
- 'Passed\n'
+ ' warning: `long_description` missing.\n'
)
@@ -128,10 +124,10 @@
assert check.check("dist/*", output_stream=output_stream)
assert output_stream.getvalue() == (
- "Checking distribution dist/dist.tar.gz: Failed\n"
- "The project's long_description has invalid markup which will not be "
- "rendered on PyPI. The following syntax errors were detected:\n"
- "WARNING"
+ "Checking dist/dist.tar.gz: FAILED\n"
+ " `long_description` has syntax errors in markup and would not be "
+ "rendered on PyPI.\n"
+ " WARNING"
)
assert renderer.render.calls == [
pretend.call("blah", stream=warning_stream)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/twine-1.14.0/twine/__init__.py new/twine-1.15.0/twine/__init__.py
--- old/twine-1.14.0/twine/__init__.py 2019-09-07 23:21:42.000000000 +0200
+++ new/twine-1.15.0/twine/__init__.py 2019-09-17 17:36:48.000000000 +0200
@@ -22,7 +22,7 @@
__summary__ = "Collection of utilities for publishing packages on PyPI"
__uri__ = "https://twine.readthedocs.io/"
-__version__ = "1.14.0"
+__version__ = "1.15.0"
__author__ = "Donald Stufft and individual contributors"
__email__ = "donald(a)stufft.io"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/twine-1.14.0/twine/commands/check.py new/twine-1.15.0/twine/commands/check.py
--- old/twine-1.14.0/twine/commands/check.py 2019-09-07 20:50:56.000000000 +0200
+++ new/twine-1.15.0/twine/commands/check.py 2019-09-17 17:36:48.000000000 +0200
@@ -68,47 +68,80 @@
return self.output.getvalue()
+def _check_file(filename, render_warning_stream):
+ """Check given distribution."""
+ warnings = []
+ is_ok = True
+
+ package = PackageFile.from_filename(filename, comment=None)
+
+ metadata = package.metadata_dictionary()
+ description = metadata["description"]
+ description_content_type = metadata["description_content_type"]
+
+ if description_content_type is None:
+ warnings.append(
+ '`long_description_content_type` missing. '
+ 'defaulting to `text/x-rst`.'
+ )
+ description_content_type = 'text/x-rst'
+
+ content_type, params = cgi.parse_header(description_content_type)
+ renderer = _RENDERERS.get(content_type, _RENDERERS[None])
+
+ if description in {None, 'UNKNOWN\n\n\n'}:
+ warnings.append('`long_description` missing.')
+ elif renderer:
+ rendering_result = renderer.render(
+ description, stream=render_warning_stream, **params
+ )
+ if rendering_result is None:
+ is_ok = False
+
+ return warnings, is_ok
+
+
+# TODO: Replace with textwrap.indent when Python 2 support is dropped
+def _indented(text, prefix):
+ """Adds 'prefix' to all non-empty lines on 'text'."""
+ def prefixed_lines():
+ for line in text.splitlines(True):
+ yield (prefix + line if line.strip() else line)
+ return ''.join(prefixed_lines())
+
+
def check(dists, output_stream=sys.stdout):
uploads = [i for i in _find_dists(dists) if not i.endswith(".asc")]
- stream = _WarningStream()
+ if not uploads: # Return early, if there are no files to check.
+ output_stream.write("No files to check.\n")
+ return False
+
failure = False
for filename in uploads:
- output_stream.write("Checking distribution %s: " % filename)
- package = PackageFile.from_filename(filename, comment=None)
-
- metadata = package.metadata_dictionary()
- description = metadata["description"]
- description_content_type = metadata["description_content_type"]
-
- if description_content_type is None:
- output_stream.write(
- 'warning: `long_description_content_type` missing. '
- 'defaulting to `text/x-rst`.\n'
+ output_stream.write("Checking %s: " % filename)
+ render_warning_stream = _WarningStream()
+ warnings, is_ok = _check_file(filename, render_warning_stream)
+
+ # Print the status and/or error
+ if not is_ok:
+ failure = True
+ output_stream.write("FAILED\n")
+
+ error_text = (
+ "`long_description` has syntax errors in markup and "
+ "would not be rendered on PyPI.\n"
)
- description_content_type = 'text/x-rst'
-
- content_type, params = cgi.parse_header(description_content_type)
- renderer = _RENDERERS.get(content_type, _RENDERERS[None])
-
- if description in {None, 'UNKNOWN\n\n\n'}:
- output_stream.write('warning: `long_description` missing.\n')
- output_stream.write("Passed\n")
+ output_stream.write(_indented(error_text, " "))
+ output_stream.write(_indented(str(render_warning_stream), " "))
+ elif warnings:
+ output_stream.write("PASSED, with warnings\n")
else:
- if (
- renderer
- and renderer.render(description, stream=stream, **params)
- is None
- ):
- failure = True
- output_stream.write("Failed\n")
- output_stream.write(
- "The project's long_description has invalid markup which "
- "will not be rendered on PyPI. The following syntax "
- "errors were detected:\n%s" % stream
- )
- else:
- output_stream.write("Passed\n")
+ output_stream.write("PASSED\n")
+
+ # Print warnings after the status and/or error
+ for message in warnings:
+ output_stream.write(' warning: ' + message + '\n')
return failure
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/twine-1.14.0/twine.egg-info/PKG-INFO new/twine-1.15.0/twine.egg-info/PKG-INFO
--- old/twine-1.14.0/twine.egg-info/PKG-INFO 2019-09-07 23:30:47.000000000 +0200
+++ new/twine-1.15.0/twine.egg-info/PKG-INFO 2019-09-17 17:42:02.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: twine
-Version: 1.14.0
+Version: 1.15.0
Summary: Collection of utilities for publishing packages on PyPI
Home-page: https://twine.readthedocs.io/
Author: Donald Stufft and individual contributors
1
0
Hello community,
here is the log from the commit of package gnuhealth for openSUSE:Leap:15.2 checked in at 2020-03-01 08:51:28
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Leap:15.2/gnuhealth (Old)
and /work/SRC/openSUSE:Leap:15.2/.gnuhealth.new.26092 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gnuhealth"
Sun Mar 1 08:51:28 2020 rev:40 rq:780498 version:3.6.3
Changes:
--------
--- /work/SRC/openSUSE:Leap:15.2/gnuhealth/gnuhealth.changes 2020-01-15 15:05:35.125909016 +0100
+++ /work/SRC/openSUSE:Leap:15.2/.gnuhealth.new.26092/gnuhealth.changes 2020-03-01 08:51:56.313340646 +0100
@@ -1,0 +2,9 @@
+Fri Feb 28 11:24:46 UTC 2020 - Axel Braun <axel.braun(a)gmx.de>
+
+- version 3.6.3
+* GH HMIS server. task #15562: Include coronavirus COVID-19 in ICD10 codes
+* GH HMIS server. bug #57695: Traceback when creating a page of life associated to an empty evaluation
+* GH HMIS server. task #15561: Werkzeug 1.0 is not compatible with Trytond 5.0
+* shebang.diff to fix /usr/bin/env
+
+-------------------------------------------------------------------
Old:
----
gnuhealth-3.6.2.tar.gz
New:
----
gnuhealth-3.6.3.tar.gz
shebang.diff
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gnuhealth.spec ++++++
--- /var/tmp/diff_new_pack.yHxTA2/_old 2020-03-01 08:51:56.785341585 +0100
+++ /var/tmp/diff_new_pack.yHxTA2/_new 2020-03-01 08:51:56.785341585 +0100
@@ -1,8 +1,8 @@
#
# spec file for package gnuhealth
#
-# Copyright (c) 2019 SUSE LLC
-# Copyright (c) 2014-2019 Dr. Axel Braun
+# Copyright (c) 2020 SUSE LLC
+# Copyright (c) 2014-2020 Dr. Axel Braun
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -21,11 +21,11 @@
%define majorver 3.6
Name: gnuhealth
-Version: %{majorver}.2
+Version: %{majorver}.3
Release: 0
# List of additional build dependencies
-###ildRequires: fdupes
+BuildRequires: fdupes
BuildRequires: python3-rpm-macros
BuildRequires: python3-setuptools
@@ -41,7 +41,7 @@
Source4: gnuhealth-webdav@.service
Source5: openSUSE-gnuhealth-setup
Source6: gnuhealth
-##atch0: bug_57292.diff
+Patch0: shebang.diff
##atch1: xmlfix.diff
##atch2: demo.diff
@@ -106,7 +106,7 @@
%prep
%setup -q -n %{name}-%{version}
-##atch0 -p1
+%patch0 -p1
##atch1 -p1
##atch2 -p1
cp %{S:1} .
@@ -141,7 +141,7 @@
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/tryton
-####ython_expand %fdupes %{buildroot}%{$python_sitelib}
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
%pre
#Write environment changes to /etc/bash.bashrc.local
++++++ gnuhealth-3.6.2.tar.gz -> gnuhealth-3.6.3.tar.gz ++++++
/work/SRC/openSUSE:Leap:15.2/gnuhealth/gnuhealth-3.6.2.tar.gz /work/SRC/openSUSE:Leap:15.2/.gnuhealth.new.26092/gnuhealth-3.6.3.tar.gz differ: char 6, line 1
++++++ shebang.diff ++++++
diff -U 3 -dHrN -- a/gnuhealth-control b/gnuhealth-control
--- a/gnuhealth-control 2019-11-20 09:16:02.000000000 +0100
+++ b/gnuhealth-control 2020-01-15 08:21:34.600157124 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env bash
+#!/bin/bash
# gnuhealth-control
# The GNU Health control center
diff -U 3 -dHrN -- a/health/setup.py b/health/setup.py
--- a/health/setup.py 2019-11-20 09:16:02.000000000 +0100
+++ b/health/setup.py 2020-01-15 08:25:35.736164023 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Copyright (C) 2011-2020 Luis Falcon <falcon(a)gnuhealth.org>
# Copyright (C) 2011-2020 GNU Solidario <health(a)gnusolidario.org>
diff -U 3 -dHrN -- a/health_archives/setup.py b/health_archives/setup.py
--- a/health_archives/setup.py 2019-11-20 09:16:02.000000000 +0100
+++ b/health_archives/setup.py 2020-01-15 08:26:14.464165130 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Copyright (C) 2008-2020 Luis Falcon <lfalcon(a)gnusolidario.org>
# Copyright (C) 2011-2020 GNU Solidario <health(a)gnusolidario.org>
diff -U 3 -dHrN -- a/health_caldav/setup.py b/health_caldav/setup.py
--- a/health_caldav/setup.py 2019-11-20 09:16:02.000000000 +0100
+++ b/health_caldav/setup.py 2020-02-27 19:27:33.986769709 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
from setuptools import setup
import re
diff -U 3 -dHrN -- a/health_calendar/setup.py b/health_calendar/setup.py
--- a/health_calendar/setup.py 2019-11-20 09:16:02.000000000 +0100
+++ b/health_calendar/setup.py 2020-01-15 08:27:24.576167136 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Copyright (C) 2011-2020 Luis Falcon <falcon(a)gnuhealth.org>
# Copyright (C) 2011 Cédric Krier
diff -U 3 -dHrN -- a/health_crypto/setup.py b/health_crypto/setup.py
--- a/health_crypto/setup.py 2019-11-20 09:16:02.000000000 +0100
+++ b/health_crypto/setup.py 2020-01-15 16:58:43.120008340 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Copyright (C) 2008-2020 Luis Falcon <lfalcon(a)gnusolidario.org>
# Copyright (C) 2011-2020 GNU Solidario <health(a)gnusolidario.org>
diff -U 3 -dHrN -- a/health_crypto_lab/setup.py b/health_crypto_lab/setup.py
--- a/health_crypto_lab/setup.py 2019-11-20 09:16:02.000000000 +0100
+++ b/health_crypto_lab/setup.py 2020-02-27 19:51:59.046896500 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Copyright (C) 2011-2020 Luis Falcon <falcon(a)gnuhealth.org>
# Copyright (C) 2011 Cédric Krier
diff -U 3 -dHrN -- a/health_disability/setup.py b/health_disability/setup.py
--- a/health_disability/setup.py 2019-11-20 09:16:02.000000000 +0100
+++ b/health_disability/setup.py 2020-02-27 19:52:17.218993066 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Copyright (C) 2011-2020 Luis Falcon <falcon(a)gnuhealth.org>
# Copyright (C) 2011 Cédric Krier
diff -U 3 -dHrN -- a/health_ems/setup.py b/health_ems/setup.py
--- a/health_ems/setup.py 2019-11-20 09:16:02.000000000 +0100
+++ b/health_ems/setup.py 2020-02-27 19:52:36.187094243 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Copyright (C) 2011-2020 Luis Falcon <falcon(a)gnuhealth.org>
# Copyright (C) 2011 Cédric Krier
diff -U 3 -dHrN -- a/health_federation/setup.py b/health_federation/setup.py
--- a/health_federation/setup.py 2019-11-20 09:17:59.000000000 +0100
+++ b/health_federation/setup.py 2020-02-27 19:52:53.827188678 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Copyright (C) 2011-2020 Luis Falcon <falcon(a)gnuhealth.org>
# Copyright (C) 2011 Cédric Krier
diff -U 3 -dHrN -- a/health_genetics/setup.py b/health_genetics/setup.py
--- a/health_genetics/setup.py 2019-11-20 09:16:02.000000000 +0100
+++ b/health_genetics/setup.py 2020-02-27 19:53:22.659343707 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Copyright (C) 2011-2020 Luis Falcon <falcon(a)gnuhealth.org>
# Copyright (C) 2011-2020 GNU Solidario <health(a)gnusolidario.org>
diff -U 3 -dHrN -- a/health_genetics_uniprot/setup.py b/health_genetics_uniprot/setup.py
--- a/health_genetics_uniprot/setup.py 2019-11-20 09:16:02.000000000 +0100
+++ b/health_genetics_uniprot/setup.py 2020-02-27 19:53:36.787419962 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Copyright (C) 2011-2020 Luis Falcon <falcon(a)gnuhealth.org>
# Copyright (C) 2011-2020 GNU Solidario <health(a)gnusolidario.org>
diff -U 3 -dHrN -- a/health_gyneco/setup.py b/health_gyneco/setup.py
--- a/health_gyneco/setup.py 2019-11-20 09:16:02.000000000 +0100
+++ b/health_gyneco/setup.py 2020-02-27 19:53:52.763506413 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Copyright (C) 2011-2020 Luis Falcon <falcon(a)gnuhealth.org>
# Copyright (C) 2011-2020 GNU Solidario <health(a)gnusolidario.org>
diff -U 3 -dHrN -- a/health_history/setup.py b/health_history/setup.py
--- a/health_history/setup.py 2019-11-20 09:16:02.000000000 +0100
+++ b/health_history/setup.py 2020-02-27 19:54:17.283639527 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Copyright (C) 2011-2020 Luis Falcon <falcon(a)gnuhealth.org>
# Copyright (C) 2011 Cédric Krier
diff -U 3 -dHrN -- a/health_icd10/setup.py b/health_icd10/setup.py
--- a/health_icd10/setup.py 2019-11-20 09:16:02.000000000 +0100
+++ b/health_icd10/setup.py 2020-02-27 19:54:49.907817420 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Copyright (C) 2011-2020 Luis Falcon <falcon(a)gnuhealth.org>
# Copyright (C) 2011 Cédric Krier
diff -U 3 -dHrN -- a/health_icd10pcs/setup.py b/health_icd10pcs/setup.py
--- a/health_icd10pcs/setup.py 2019-11-20 09:16:02.000000000 +0100
+++ b/health_icd10pcs/setup.py 2020-02-27 19:55:07.219912165 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Copyright (C) 2011-2020 Luis Falcon <falcon(a)gnuhealth.org>
# Copyright (C) 2011 Cédric Krier
diff -U 3 -dHrN -- a/health_icd9procs/setup.py b/health_icd9procs/setup.py
--- a/health_icd9procs/setup.py 2019-11-20 09:16:02.000000000 +0100
+++ b/health_icd9procs/setup.py 2020-02-27 19:54:36.887746320 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Copyright (C) 2011-2020 Luis Falcon <falcon(a)gnuhealth.org>
# Copyright (C) 2011 Cédric Krier
diff -U 3 -dHrN -- a/health_icpm/setup.py b/health_icpm/setup.py
--- a/health_icpm/setup.py 2019-11-20 09:16:02.000000000 +0100
+++ b/health_icpm/setup.py 2020-02-27 19:55:24.908009203 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Copyright (C) 2011-2020 Luis Falcon <falcon(a)gnuhealth.org>
# Copyright (C) 2011 Cédric Krier
diff -U 3 -dHrN -- a/health_icu/setup.py b/health_icu/setup.py
--- a/health_icu/setup.py 2019-11-20 09:16:02.000000000 +0100
+++ b/health_icu/setup.py 2020-02-27 19:55:39.808091133 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Copyright (C) 2011-2020 Luis Falcon <falcon(a)gnuhealth.org>
# Copyright (C) 2011 Cédric Krier
diff -U 3 -dHrN -- a/health_imaging/setup.py b/health_imaging/setup.py
--- a/health_imaging/setup.py 2019-11-20 09:16:02.000000000 +0100
+++ b/health_imaging/setup.py 2020-02-27 19:55:58.520194252 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Copyright (C) 2011-2020 Luis Falcon <falcon(a)gnuhealth.org>
# Copyright (C) 2011 Cédric Krier
diff -U 3 -dHrN -- a/health_inpatient/setup.py b/health_inpatient/setup.py
--- a/health_inpatient/setup.py 2019-11-20 09:16:02.000000000 +0100
+++ b/health_inpatient/setup.py 2020-02-27 19:56:11.664266833 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Copyright (C) 2011-2020 Luis Falcon <falcon(a)gnuhealth.org>
# Copyright (C) 2011 Cédric Krier
diff -U 3 -dHrN -- a/health_inpatient_calendar/setup.py b/health_inpatient_calendar/setup.py
--- a/health_inpatient_calendar/setup.py 2019-11-20 09:16:02.000000000 +0100
+++ b/health_inpatient_calendar/setup.py 2020-02-27 19:56:25.716344558 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Copyright (C) 2011-2020 Luis Falcon <falcon(a)gnuhealth.org>
# Copyright (C) 2011 Cédric Krier
diff -U 3 -dHrN -- a/health_insurance/setup.py b/health_insurance/setup.py
--- a/health_insurance/setup.py 2019-11-20 09:16:02.000000000 +0100
+++ b/health_insurance/setup.py 2020-02-27 19:56:43.892445292 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Copyright (C) 2011-2020 Luis Falcon <falcon(a)gnuhealth.org>
# Copyright (C) 2011 Cédric Krier
diff -U 3 -dHrN -- a/health_iss/setup.py b/health_iss/setup.py
--- a/health_iss/setup.py 2019-11-20 09:16:02.000000000 +0100
+++ b/health_iss/setup.py 2020-02-27 19:56:57.320519846 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Copyright (C) 2011-2020 Luis Falcon <falcon(a)gnuhealth.org>
# Copyright (C) 2011 Cédric Krier
diff -U 3 -dHrN -- a/health_lab/setup.py b/health_lab/setup.py
--- a/health_lab/setup.py 2019-11-20 09:16:02.000000000 +0100
+++ b/health_lab/setup.py 2020-02-27 19:57:52.580827797 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Copyright (C) 2011-2020 Luis Falcon <falcon(a)gnuhealth.org>
# Copyright (C) 2011 Cédric Krier
diff -U 3 -dHrN -- a/health_lifestyle/setup.py b/health_lifestyle/setup.py
--- a/health_lifestyle/setup.py 2019-11-20 09:16:02.000000000 +0100
+++ b/health_lifestyle/setup.py 2020-02-27 19:58:09.516922524 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Copyright (C) 2011-2020 Luis Falcon <falcon(a)gnuhealth.org>
# Copyright (C) 2011 Cédric Krier
diff -U 3 -dHrN -- a/health_mdg6/setup.py b/health_mdg6/setup.py
--- a/health_mdg6/setup.py 2019-11-20 09:16:02.000000000 +0100
+++ b/health_mdg6/setup.py 2020-02-27 19:58:22.812997001 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Copyright (C) 2011-2020 Luis Falcon <falcon(a)gnuhealth.org>
# Copyright (C) 2011 Cédric Krier
diff -U 3 -dHrN -- a/health_ntd/setup.py b/health_ntd/setup.py
--- a/health_ntd/setup.py 2019-11-20 09:16:02.000000000 +0100
+++ b/health_ntd/setup.py 2020-02-27 19:58:36.285072558 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Copyright (C) 2011-2020 Luis Falcon <falcon(a)gnuhealth.org>
# Copyright (C) 2011 Cédric Krier
diff -U 3 -dHrN -- a/health_ntd_chagas/setup.py b/health_ntd_chagas/setup.py
--- a/health_ntd_chagas/setup.py 2019-11-20 09:16:02.000000000 +0100
+++ b/health_ntd_chagas/setup.py 2020-02-27 19:58:49.705147916 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Copyright (C) 2011-2020 Luis Falcon <falcon(a)gnuhealth.org>
# Copyright (C) 2011 Cédric Krier
diff -U 3 -dHrN -- a/health_ntd_dengue/setup.py b/health_ntd_dengue/setup.py
--- a/health_ntd_dengue/setup.py 2019-11-20 09:16:02.000000000 +0100
+++ b/health_ntd_dengue/setup.py 2020-02-27 19:59:01.953216769 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Copyright (C) 2011-2020 Luis Falcon <falcon(a)gnuhealth.org>
# Copyright (C) 2011 Cédric Krier
diff -U 3 -dHrN -- a/health_nursing/setup.py b/health_nursing/setup.py
--- a/health_nursing/setup.py 2019-11-20 09:16:02.000000000 +0100
+++ b/health_nursing/setup.py 2020-02-27 19:59:18.989312662 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Copyright (C) 2011-2020 Luis Falcon <falcon(a)gnuhealth.org>
# Copyright (C) 2011 Cédric Krier
diff -U 3 -dHrN -- a/health_ophthalmology/setup.py b/health_ophthalmology/setup.py
--- a/health_ophthalmology/setup.py 2019-11-20 09:16:02.000000000 +0100
+++ b/health_ophthalmology/setup.py 2020-02-27 19:59:32.617389467 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Copyright (C) 2011-2020 Luis Falcon <falcon(a)gnuhealth.org>
# Copyright (C) 2011 Cédric Krier
diff -U 3 -dHrN -- a/health_orthanc/setup.py b/health_orthanc/setup.py
--- a/health_orthanc/setup.py 2019-11-20 09:16:02.000000000 +0100
+++ b/health_orthanc/setup.py 2020-02-27 19:59:44.673457486 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Copyright (C) 2011-2020 Luis Falcon <falcon(a)gnuhealth.org>
# Copyright (C) 2011-2020 GNU Solidario <health(a)gnusolidario.org>
diff -U 3 -dHrN -- a/health_pediatrics/setup.py b/health_pediatrics/setup.py
--- a/health_pediatrics/setup.py 2019-11-20 09:16:02.000000000 +0100
+++ b/health_pediatrics/setup.py 2020-02-27 20:00:00.521546993 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Copyright (C) 2011-2020 Luis Falcon <falcon(a)gnuhealth.org>
# Copyright (C) 2011 Cédric Krier
diff -U 3 -dHrN -- a/health_pediatrics_growth_charts/setup.py b/health_pediatrics_growth_charts/setup.py
--- a/health_pediatrics_growth_charts/setup.py 2019-11-20 09:16:02.000000000 +0100
+++ b/health_pediatrics_growth_charts/setup.py 2020-02-27 20:00:17.993645808 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Copyright (C) 2011-2020 Luis Falcon <falcon(a)gnuhealth.org>
# Copyright (C) 2011 Cédric Krier
diff -U 3 -dHrN -- a/health_pediatrics_growth_charts_who/setup.py b/health_pediatrics_growth_charts_who/setup.py
--- a/health_pediatrics_growth_charts_who/setup.py 2019-11-20 09:16:02.000000000 +0100
+++ b/health_pediatrics_growth_charts_who/setup.py 2020-02-27 20:00:39.961770229 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Copyright (C) 2011-2020 Luis Falcon <falcon(a)gnuhealth.org>
# Copyright (C) 2011 Cédric Krier
diff -U 3 -dHrN -- a/health_profile/setup.py b/health_profile/setup.py
--- a/health_profile/setup.py 2019-11-20 09:16:02.000000000 +0100
+++ b/health_profile/setup.py 2020-02-27 20:00:58.613876020 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Copyright (C) 2011-2020 Luis Falcon <falcon(a)gnuhealth.org>
# Copyright (C) 2011 Cédric Krier
diff -U 3 -dHrN -- a/health_qrcodes/setup.py b/health_qrcodes/setup.py
--- a/health_qrcodes/setup.py 2019-11-20 09:16:02.000000000 +0100
+++ b/health_qrcodes/setup.py 2020-02-27 20:01:12.265953541 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Copyright (C) 2011-2020 Luis Falcon <falcon(a)gnuhealth.org>
# Copyright (C) 2011 Cédric Krier
diff -U 3 -dHrN -- a/health_reporting/setup.py b/health_reporting/setup.py
--- a/health_reporting/setup.py 2019-11-20 09:16:02.000000000 +0100
+++ b/health_reporting/setup.py 2020-02-27 20:01:27.962042755 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Copyright (C) 2011-2020 Luis Falcon <falcon(a)gnuhealth.org>
# Copyright (C) 2011 Cédric Krier
diff -U 3 -dHrN -- a/health_services/setup.py b/health_services/setup.py
--- a/health_services/setup.py 2019-11-20 09:16:02.000000000 +0100
+++ b/health_services/setup.py 2020-02-27 20:01:48.934162095 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Copyright (C) 2011-2020 Luis Falcon <falcon(a)gnuhealth.org>
# Copyright (C) 2011 Cédric Krier
diff -U 3 -dHrN -- a/health_services_lab/setup.py b/health_services_lab/setup.py
--- a/health_services_lab/setup.py 2019-11-20 09:16:02.000000000 +0100
+++ b/health_services_lab/setup.py 2020-02-27 20:02:00.346227101 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Copyright (C) 2011-2020 Luis Falcon <falcon(a)gnuhealth.org>
# Copyright (C) 2011 Cédric Krier
diff -U 3 -dHrN -- a/health_socioeconomics/setup.py b/health_socioeconomics/setup.py
--- a/health_socioeconomics/setup.py 2019-11-20 09:16:02.000000000 +0100
+++ b/health_socioeconomics/setup.py 2020-02-27 20:02:19.330335339 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Copyright (C) 2011-2020 Luis Falcon <falcon(a)gnuhealth.org>
# Copyright (C) 2011 Cédric Krier
diff -U 3 -dHrN -- a/health_stock/setup.py b/health_stock/setup.py
--- a/health_stock/setup.py 2019-11-20 09:16:02.000000000 +0100
+++ b/health_stock/setup.py 2020-02-27 20:02:32.926412935 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Copyright (C) 2011-2020 Luis Falcon <falcon(a)gnuhealth.org>
# Copyright (C) 2011 Cédric Krier
diff -U 3 -dHrN -- a/health_surgery/setup.py b/health_surgery/setup.py
--- a/health_surgery/setup.py 2019-11-20 09:16:02.000000000 +0100
+++ b/health_surgery/setup.py 2020-02-27 20:02:48.950504462 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Copyright (C) 2011-2020 Luis Falcon <falcon(a)gnuhealth.org>
# Copyright (C) 2011 Cédric Krier
diff -U 3 -dHrN -- a/health_webdav3_server/bin/gnuhealth-webdav-server b/health_webdav3_server/bin/gnuhealth-webdav-server
--- a/health_webdav3_server/bin/gnuhealth-webdav-server 2019-11-04 21:16:31.000000000 +0100
+++ b/health_webdav3_server/bin/gnuhealth-webdav-server 2020-01-15 08:22:03.868157962 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python3
+#!/usr/bin/python3
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
import sys
diff -U 3 -dHrN -- a/health_webdav3_server/setup.py b/health_webdav3_server/setup.py
--- a/health_webdav3_server/setup.py 2019-11-20 09:16:02.000000000 +0100
+++ b/health_webdav3_server/setup.py 2020-02-27 20:03:04.450593075 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Copyright (C) 2017-2020 Luis Falcon <falcon(a)gnuhealth.org>
# Copyright (C) 2017-2020 GNU Solidario <health(a)gnusolidario.org>
diff -U 3 -dHrN -- a/health_who_essential_medicines/setup.py b/health_who_essential_medicines/setup.py
--- a/health_who_essential_medicines/setup.py 2019-11-20 09:16:02.000000000 +0100
+++ b/health_who_essential_medicines/setup.py 2020-02-27 20:03:19.786680820 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Copyright (C) 2011-2020 Luis Falcon <falcon(a)gnuhealth.org>
# Copyright (C) 2011 Cédric Krier
diff -U 3 -dHrN -- a/scripts/demo/install_demo_database.sh b/scripts/demo/install_demo_database.sh
--- a/scripts/demo/install_demo_database.sh 2019-11-04 18:59:44.000000000 +0100
+++ b/scripts/demo/install_demo_database.sh 2020-01-15 08:21:48.320157517 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env bash
+#!/bin/bash
# Script to download/unpack and locally install the GNU Health demo database
URL="https://www.gnuhealth.org/downloads/postgres_dumps/gnuhealth-$1-demo.sql.gz"
1
0
Hello community,
here is the log from the commit of package kdevelop5 for openSUSE:Leap:15.2 checked in at 2020-03-01 08:51:24
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Leap:15.2/kdevelop5 (Old)
and /work/SRC/openSUSE:Leap:15.2/.kdevelop5.new.26092 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kdevelop5"
Sun Mar 1 08:51:24 2020 rev:20 rq:780489 version:5.5.0
Changes:
--------
--- /work/SRC/openSUSE:Leap:15.2/kdevelop5/kdevelop5.changes 2020-02-09 11:25:02.743286208 +0100
+++ /work/SRC/openSUSE:Leap:15.2/.kdevelop5.new.26092/kdevelop5.changes 2020-03-01 08:51:55.113338259 +0100
@@ -1,0 +2,5 @@
+Thu Feb 27 12:13:46 UTC 2020 - Michel Normand <normand(a)linux.vnet.ibm.com>
+
+- Add _constraints disk 4GB PowerPC to avoid build failure ppc64
+
+-------------------------------------------------------------------
New:
----
_constraints
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ kdevelop5.spec ++++++
--- /var/tmp/diff_new_pack.i706sc/_old 2020-03-01 08:51:55.485338999 +0100
+++ /var/tmp/diff_new_pack.i706sc/_new 2020-03-01 08:51:55.489339006 +0100
@@ -1,7 +1,7 @@
#
# spec file for package kdevelop5
#
-# Copyright (c) 2020 SUSE LLC
+# Copyright (c) 2020 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
++++++ _constraints ++++++
<constraints>
<overwrite>
<conditions>
<arch>ppc64</arch>
<arch>ppc64le</arch>
</conditions>
<hardware>
<disk>
<size unit="G">4</size>
</disk>
</hardware>
</overwrite>
</constraints>
1
0
Hello community,
here is the log from the commit of package supertuxkart for openSUSE:Leap:15.2 checked in at 2020-03-01 08:51:21
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Leap:15.2/supertuxkart (Old)
and /work/SRC/openSUSE:Leap:15.2/.supertuxkart.new.26092 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "supertuxkart"
Sun Mar 1 08:51:21 2020 rev:16 rq:770482 version:1.1
Changes:
--------
--- /work/SRC/openSUSE:Leap:15.2/supertuxkart/supertuxkart.changes 2020-01-15 16:04:42.559966448 +0100
+++ /work/SRC/openSUSE:Leap:15.2/.supertuxkart.new.26092/supertuxkart.changes 2020-03-01 08:51:48.929325957 +0100
@@ -1,0 +2,42 @@
+Thu Jan 23 08:57:39 UTC 2020 - Guillaume GARDET <guillaume.gardet(a)opensuse.org>
+
+- Enable build on non-x86 architectures
+- Add _constraints to avoid build failures
+
+-------------------------------------------------------------------
+Sun Jan 5 07:58:23 UTC 2020 - Andrey Karepin <egdfree(a)opensuse.org>
+
+- Update to version 1.1:
+ + Improved online multiplayer play
+ + Fix network lags in various scenarios when playing online
+ + Add AI support to local networking servers
+ + UI enhancements
+ + A new arena: Pumpkin Park
+ + Mobile enhancements and iOS support (The iOS version can be tested
+ through testflight : https://testflight.apple.com/join/mbK8RjHq )
+ + Complex text layout and emoji support
+ + Story mode timer for speedrunners
+ + Generic polish and minor improvements
+ See full changes in CHANGELOG.md.
+- added CMake option OpenGL_GL_PREFERENCE=GLVND
+- use system provided libmcpp
+- use system provided libraqm
+
+-------------------------------------------------------------------
+Sun Apr 28 18:20:39 UTC 2019 - Andrey Karepin <egdfree(a)opensuse.org>
+
+- Update to version 1.0:
+ + Networking support for normal race, time trial, free for all,
+ capture the flag and soccer.
+ + Spectating option for players having entered a server while a
+ race or game is underway.
+ + New game mode Capture the Flag.
+ + New game mode Free for All.
+ + Improved powerup and nitro handling in AI.
+ + Race UI improvements (new speedometer, nitro gauge, bigger
+ minimap, minimap display options, more legible text with
+ outlines and for some bigger font).
+- Add wiiuse-devel BuildReqires.
+- Drop supertuxkart-mesa-18.3.patch: merged upstream.
+
+-------------------------------------------------------------------
Old:
----
supertuxkart-0.9.3-src.tar.xz
supertuxkart-mesa-18.3.patch
New:
----
_constraints
supertuxkart-1.1-src.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ supertuxkart.spec ++++++
--- /var/tmp/diff_new_pack.rExlO5/_old 2020-03-01 08:51:54.833337702 +0100
+++ /var/tmp/diff_new_pack.rExlO5/_new 2020-03-01 08:51:54.837337709 +0100
@@ -1,7 +1,7 @@
#
# spec file for package supertuxkart
#
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -16,42 +16,54 @@
#
+#
Name: supertuxkart
-Version: 0.9.3
+Version: 1.1
Release: 0
Summary: A 3D kart racing game
License: GPL-2.0-or-later AND GPL-3.0-or-later AND CC-BY-SA-3.0
Group: Amusements/Games/3D/Race
URL: http://supertuxkart.sourceforge.net/
-Source: http://sourceforge.net/projects/supertuxkart/files/SuperTuxKart/0.9.3/%{nam…
+Source: https://downloads.sourceforge.net/project/supertuxkart/SuperTuxKart/%{versi…
# Geeko kart add-on (CC-BY 3.0)
Source1: http://stkaddons.net/dl/14e6ba25b17f0d.zip
Source9: supertuxkart.6
-# PATCH-FIX-UPSTREAM supertuxkart-mesa-18.3.patch boo#1120986 dimstar(a)opensuse.org - Fix build against Mesa 18.3
-Patch0: supertuxkart-mesa-18.3.patch
BuildRequires: cmake >= 3
BuildRequires: fdupes
BuildRequires: gcc-c++
BuildRequires: hicolor-icon-theme
BuildRequires: libjpeg-devel
BuildRequires: libpng-devel
+BuildRequires: libraqm-devel
+%if 0%{?suse_version} && 0%{?is_opensuse}
+BuildRequires: mcpp-devel
+%endif
+%ifnarch %ix86 x86_64
+BuildRequires: Mesa-libEGL-devel
+BuildRequires: Mesa-libGLESv2-devel
+BuildRequires: Mesa-libGLESv3-devel
+%endif
BuildRequires: pkgconfig
BuildRequires: unzip
BuildRequires: update-desktop-files
+BuildRequires: wiiuse-devel
BuildRequires: pkgconfig(bluez)
BuildRequires: pkgconfig(freetype2)
BuildRequires: pkgconfig(fribidi)
BuildRequires: pkgconfig(gl)
+BuildRequires: pkgconfig(glew)
BuildRequires: pkgconfig(glu)
+BuildRequires: pkgconfig(harfbuzz)
BuildRequires: pkgconfig(libcurl)
+BuildRequires: pkgconfig(libenet)
BuildRequires: pkgconfig(ogg)
BuildRequires: pkgconfig(openal)
+BuildRequires: pkgconfig(openssl)
BuildRequires: pkgconfig(vorbis)
BuildRequires: pkgconfig(xrandr)
Requires: %{name}-data = %{version}
Requires(post): hicolor-icon-theme
Requires(postun): hicolor-icon-theme
-ExclusiveArch: %{ix86} x86_64
%description
SuperTuxKart is a Free 3d kart racing game.
@@ -76,10 +88,15 @@
Data files for SuperTuxKart a Free 3d kart racing game.
%prep
-%setup -q
-%patch0 -p1
+%setup -q -n %{name}-%{version}-src
find -name '*~' -delete -print
-find -name '.git*' -delete -print
+find -name '.git*' -type f -delete -print
+rm -rfv ./.github
+
+# fix W: non-executable-script
+rm data/optimize_data.sh
+rm data/po/pull_from_transifex.sh
+rm data/po/update_po_authors.py
%build
mkdir build && cd build
@@ -90,11 +107,14 @@
-DCMAKE_CXX_FLAGS="%{optflags} -fno-strict-aliasing" \
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
-DBUILD_RECORDER=0 \
+ -DOpenGL_GL_PREFERENCE=GLVND \
+ -DUSE_SYSTEM_WIIUSE:BOOL=ON \
-DCMAKE_BUILD_TYPE=RelWithDebInfo
make V=1 %{?_smp_mflags}
%install
%cmake_install
+
mkdir -p %{buildroot}%{_datadir}/supertuxkart/data/karts/geeko/
cd %{buildroot}%{_datadir}/supertuxkart/data/karts/geeko/
unzip %{SOURCE1}
@@ -120,8 +140,8 @@
%doc README.md CHANGELOG.md
%{_bindir}/supertuxkart
%{_mandir}/man?/%{name}.?.*
-%dir %{_datadir}/appdata
-%{_datadir}/appdata/supertuxkart.appdata.xml
+%dir %{_datadir}/metainfo
+%{_datadir}/metainfo/supertuxkart.appdata.xml
%{_datadir}/applications/%{name}.desktop
%{_datadir}/pixmaps/supertuxkart.png
%{_datadir}/icons/hicolor/
++++++ _constraints ++++++
<constraints>
<hardware>
<memory>
<size unit="G">2</size>
</memory>
<disk>
<size unit="G">7</size>
</disk>
</hardware>
</constraints>
++++++ supertuxkart-0.9.3-src.tar.xz -> supertuxkart-1.1-src.tar.xz ++++++
/work/SRC/openSUSE:Leap:15.2/supertuxkart/supertuxkart-0.9.3-src.tar.xz /work/SRC/openSUSE:Leap:15.2/.supertuxkart.new.26092/supertuxkart-1.1-src.tar.xz differ: char 25, line 1
1
0
Hello community,
here is the log from the commit of package xen for openSUSE:Leap:15.2 checked in at 2020-03-01 08:51:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Leap:15.2/xen (Old)
and /work/SRC/openSUSE:Leap:15.2/.xen.new.26092 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xen"
Sun Mar 1 08:51:20 2020 rev:82 rq:779734 version:4.13.0_08
Changes:
--------
--- /work/SRC/openSUSE:Leap:15.2/xen/xen.changes 2020-02-10 16:41:56.355723879 +0100
+++ /work/SRC/openSUSE:Leap:15.2/.xen.new.26092/xen.changes 2020-03-01 08:51:36.397301028 +0100
@@ -1,0 +2,48 @@
+Thu Feb 20 08:18:37 MST 2020 - carnold(a)suse.com
+
+- bsc#1160932 - VUL-0: xen: XSA-312 v1: arm: a CPU may speculate
+ past the ERET instruction
+ 5e1dcedd-Arm-place-speculation-barrier-after-ERET.patch
+- bsc#1164425 - x86: "spec-ctrl=no-xen" should also disable branch
+ hardening
+ 5e4e614d-x86-spec-ctrl-no-xen-also-disables-branch-hardening.patch
+- Upstream bug fixes (bsc#1027519)
+ 5e21ce98-x86-time-update-TSC-stamp-after-deep-C-state.patch
+ 5e286cce-VT-d-dont-pass-bridges-to-domain_context_mapping_one.patch
+ 5e318cd4-x86-apic-fix-disabling-LVT0.patch
+ 5e344c11-x86-HVM-relinquish-resources-from-domain_destroy.patch
+ 5e3bd385-EFI-recheck-variable-name-strings.patch
+ 5e3bd3d1-EFI-dont-leak-heap-VIA-XEN_EFI_get_next_variable_name.patch
+ 5e3bd3f8-xmalloc-guard-against-overflow.patch
+ 5e46e090-x86-smp-reset-x2apic_enabled-in-smp_send_stop.patch
+ 5e4c00ef-VT-d-check-full-RMRR-for-E820-reserved.patch
+ 5e4d4f5b-sched-fix-get_cpu_idle_time-with-core-sched.patch
+
+-------------------------------------------------------------------
+Tue Feb 18 18:18:18 UTC 2020 - ohering(a)suse.de
+
+- bsc#1159755 - use fixed qemu-3.1 machine type for HVM
+ This must be done in qemu to preserve PCI layout
+ remove libxl.lock-qemu-machine-for-hvm.patch
+
+-------------------------------------------------------------------
+Fri Feb 7 12:37:35 UTC 2020 - ohering(a)suse.de
+
+- jsc#SLE-10183 - script to calculate cpuid= mask
+ add helper script from https://github.com/twizted/xen_maskcalc
+ domUs may be migrated between different cpus from the same vendor
+ if their visible cpuid value has incompatible feature bits masked.
+
+-------------------------------------------------------------------
+Wed Feb 5 15:16:06 UTC 2020 - ohering(a)suse.de
+
+- jsc#SLE-10172, bsc#1055731 - handle degraded raid for xendomains
+ add helper script and systemd service from
+ https://github.com/luizluca/xen-tools-xendomains-wait-disk
+ in new sub package xen-tools-xendomains-wait-disk
+ See included README for usage instructions
+ xendomains-wait-disks.LICENSE
+ xendomains-wait-disks.README.md
+ xendomains-wait-disks.sh
+
+-------------------------------------------------------------------
Old:
----
libxl.lock-qemu-machine-for-hvm.patch
New:
----
5e1dcedd-Arm-place-speculation-barrier-after-ERET.patch
5e21ce98-x86-time-update-TSC-stamp-after-deep-C-state.patch
5e286cce-VT-d-dont-pass-bridges-to-domain_context_mapping_one.patch
5e318cd4-x86-apic-fix-disabling-LVT0.patch
5e344c11-x86-HVM-relinquish-resources-from-domain_destroy.patch
5e3bd385-EFI-recheck-variable-name-strings.patch
5e3bd3d1-EFI-dont-leak-heap-VIA-XEN_EFI_get_next_variable_name.patch
5e3bd3f8-xmalloc-guard-against-overflow.patch
5e46e090-x86-smp-reset-x2apic_enabled-in-smp_send_stop.patch
5e4c00ef-VT-d-check-full-RMRR-for-E820-reserved.patch
5e4d4f5b-sched-fix-get_cpu_idle_time-with-core-sched.patch
5e4e614d-x86-spec-ctrl-no-xen-also-disables-branch-hardening.patch
xen_maskcalc.py
xendomains-wait-disks.LICENSE
xendomains-wait-disks.README.md
xendomains-wait-disks.sh
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ xen.spec ++++++
--- /var/tmp/diff_new_pack.HIeYzB/_old 2020-03-01 08:51:38.245304704 +0100
+++ /var/tmp/diff_new_pack.HIeYzB/_new 2020-03-01 08:51:38.253304720 +0100
@@ -127,7 +127,7 @@
BuildRequires: pesign-obs-integration
%endif
-Version: 4.13.0_06
+Version: 4.13.0_08
Release: 0
Summary: Xen Virtualization: Hypervisor (aka VMM aka Microkernel)
License: GPL-2.0-only
@@ -159,6 +159,10 @@
Source41: xencommons.service
Source42: xen-dom0-modules.service
Source57: xen-utils-0.1.tar.bz2
+Source10172: xendomains-wait-disks.sh
+Source10173: xendomains-wait-disks.LICENSE
+Source10174: xendomains-wait-disks.README.md
+Source10183: xen_maskcalc.py
# For xen-libs
Source99: baselibs.conf
# Upstream patches
@@ -167,6 +171,18 @@
Patch3: 5e15e03d-sched-fix-S3-resume-with-smt=0.patch
Patch4: 5e16fb6a-x86-clear-per-cpu-stub-page-info.patch
Patch5: 5e1da013-IRQ-u16-is-too-narrow-for-evtchn.patch
+Patch6: 5e1dcedd-Arm-place-speculation-barrier-after-ERET.patch
+Patch7: 5e21ce98-x86-time-update-TSC-stamp-after-deep-C-state.patch
+Patch8: 5e286cce-VT-d-dont-pass-bridges-to-domain_context_mapping_one.patch
+Patch9: 5e318cd4-x86-apic-fix-disabling-LVT0.patch
+Patch10: 5e344c11-x86-HVM-relinquish-resources-from-domain_destroy.patch
+Patch11: 5e3bd385-EFI-recheck-variable-name-strings.patch
+Patch12: 5e3bd3d1-EFI-dont-leak-heap-VIA-XEN_EFI_get_next_variable_name.patch
+Patch13: 5e3bd3f8-xmalloc-guard-against-overflow.patch
+Patch14: 5e46e090-x86-smp-reset-x2apic_enabled-in-smp_send_stop.patch
+Patch15: 5e4c00ef-VT-d-check-full-RMRR-for-E820-reserved.patch
+Patch16: 5e4d4f5b-sched-fix-get_cpu_idle_time-with-core-sched.patch
+Patch17: 5e4e614d-x86-spec-ctrl-no-xen-also-disables-branch-hardening.patch
# Our platform specific patches
Patch400: xen-destdir.patch
Patch401: vif-bridge-no-iptables.patch
@@ -198,7 +214,6 @@
Patch465: xen.libxl.dmmd.patch
Patch466: libxl.set-migration-constraints-from-cmdline.patch
Patch467: xenstore-run-in-studomain.patch
-Patch468: libxl.lock-qemu-machine-for-hvm.patch
Patch469: libxl.helper_done-crash.patch
Patch470: libxl.LIBXL_HOTPLUG_TIMEOUT.patch
# python3 conversion patches
@@ -231,6 +246,7 @@
%package libs
Summary: Xen Virtualization: Libraries
+License: GPL-2.0-only
Group: System/Kernel
%description libs
@@ -254,6 +270,7 @@
%package tools
Summary: Xen Virtualization: Control tools for domain 0
+License: GPL-2.0-only
Group: System/Kernel
%ifarch x86_64
%if 0%{?suse_version} >= 1315
@@ -296,10 +313,36 @@
Ian Pratt <ian.pratt(a)cl.cam.ac.uk>
+%ifarch x86_64
+%package tools-xendomains-wait-disk
+Summary: Adds a new xendomains-wait-disks.service
+License: GPL-3.0+
+Group: System/Kernel
+Requires: %{name}-tools = %{version}-%{release}
+Requires: coreutils
+Requires: sed
+Requires: vim
+BuildArch: noarch
+
+%description tools-xendomains-wait-disk
+This package adds a new service named xendomains-wait-disks.service,
+that simply calls xendomains-wait-disks. xendomains-wait-disks script
+loops checking for the presence of every disk used by domU that
+xendomains.service will try to launch. The script returns when
+all disks become available or xendomains-wait-disks.service expires.
+
+xendomains-wait-disks.service has the same dependencies as
+xendomains.service, but it adds itself as a Wanted service for xendomains.
+If xendomains-wait-disks.service fails, xendomains.service is launched anyway.
+
+https://github.com/luizluca/xen-tools-xendomains-wait-disk
+%endif
+
%endif
%package tools-domU
Summary: Xen Virtualization: Control tools for domain U
+License: GPL-2.0-only
Group: System/Kernel
Conflicts: %{name}-tools
Requires: %{name}-libs = %{version}-%{release}
@@ -320,6 +363,7 @@
%package devel
Summary: Xen Virtualization: Headers and libraries for development
+License: GPL-2.0-only
Group: System/Kernel
Requires: %{name}-libs = %{version}
Requires: libuuid-devel
@@ -342,6 +386,7 @@
%package doc-html
Summary: Xen Virtualization: HTML documentation
+License: GPL-2.0-only
Group: Documentation/HTML
%description doc-html
@@ -367,6 +412,18 @@
%patch3 -p1
%patch4 -p1
%patch5 -p1
+%patch6 -p1
+%patch7 -p1
+%patch8 -p1
+%patch9 -p1
+%patch10 -p1
+%patch11 -p1
+%patch12 -p1
+%patch13 -p1
+%patch14 -p1
+%patch15 -p1
+%patch16 -p1
+%patch17 -p1
# Our platform specific patches
%patch400 -p1
%patch401 -p1
@@ -398,7 +455,6 @@
%patch465 -p1
%patch466 -p1
%patch467 -p1
-%patch468 -p1
%patch469 -p1
%patch470 -p1
# python3 conversion patches
@@ -776,6 +832,32 @@
exec %{_bindir}/qemu-system-i386 "$@"
EOF
chmod 0755 %{buildroot}/usr/lib/xen/bin/qemu-system-i386
+#
+unit='%{_libexecdir}/%{name}/bin/xendomains-wait-disks'
+mkdir -vp '%{buildroot}%{_libexecdir}/%{name}/bin'
+cp -avL '%{SOURCE10172}' "%{buildroot}${unit}"
+mkdir xendomains-wait-disk
+cp -avL '%{SOURCE10173}' xendomains-wait-disk/LICENSE
+cp -avL '%{SOURCE10174}' xendomains-wait-disk/README.md
+tee %{buildroot}%{_unitdir}/xendomains-wait-disks.service <<'_EOS_'
+[Unit]
+Description=Xendomains - for those machines that will start, wait for their disks to apear
+Requires=proc-xen.mount xenstored.service
+After=proc-xen.mount xenstored.service xenconsoled.service xen-init-dom0.service
+After=network-online.target
+After=remote-fs.target
+Before=xendomains.service
+ConditionPathExists=/proc/xen/capabilities
+
+[Service]
+Type=oneshot
+ExecStart=${unit}
+TimeoutSec=5min
+
+[Install]
+WantedBy=xendomains.service
+_EOS_
+#
%endif
# Stubdom
@@ -796,6 +878,7 @@
# xen-utils
make -C tools/xen-utils-0.1 install DESTDIR=%{buildroot} XEN_INTREE_BUILD=yes XEN_ROOT=$PWD
install -m755 %SOURCE37 %{buildroot}/usr/sbin/xen2libvirt
+install -m755 %SOURCE10183 %{buildroot}/usr/sbin/xen_maskcalc
rm -f %{buildroot}/etc/xen/README*
# Example config
@@ -968,6 +1051,7 @@
%endif
/usr/sbin/xl
/usr/sbin/xen2libvirt
+/usr/sbin/xen_maskcalc
%ifarch %ix86 x86_64
/usr/sbin/xen-hptool
/usr/sbin/xen-hvmcrash
@@ -1000,6 +1084,9 @@
/usr/lib/supportconfig/plugins/xen
%{_libexecdir}/xen
%exclude %{_libexecdir}/%{name}-tools-domU
+%ifarch x86_64
+%exclude %{_libexecdir}/%{name}/bin/xendomains-wait-disks
+%endif
%{_fillupdir}/sysconfig.pciback
%{_fillupdir}/sysconfig.xencommons
%{_fillupdir}/sysconfig.xendomains
@@ -1024,6 +1111,7 @@
%config /etc/modprobe.d/xen_loop.conf
%config %{_unitdir}
%exclude %{_unitdir}/%{name}-vcpu-watch.service
+%exclude %{_unitdir}/xendomains-wait-disks.service
%config %{with_systemd_modules_load}
%dir /etc/modprobe.d
/etc/bash_completion.d/xl.sh
@@ -1086,6 +1174,13 @@
%{_libdir}/ocaml/xentoollog/*.cmi
%endif
+%ifarch x86_64
+%files tools-xendomains-wait-disk
+%license xendomains-wait-disk/LICENSE
+%doc xendomains-wait-disk/README.md
+%config %{_unitdir}/xendomains-wait-disks.service
+%config %attr(0755,root,root) %{_libexecdir}/%{name}/bin/xendomains-wait-disks
+%endif
# with_dom0_support
%endif
++++++ 5e1da013-IRQ-u16-is-too-narrow-for-evtchn.patch ++++++
--- /var/tmp/diff_new_pack.HIeYzB/_old 2020-03-01 08:51:38.293304799 +0100
+++ /var/tmp/diff_new_pack.HIeYzB/_new 2020-03-01 08:51:38.293304799 +0100
@@ -15,9 +15,30 @@
Signed-off-by: Jan Beulich <jbeulich(a)suse.com>
Acked-by: Andrew Cooper <andrew.cooper3(a)citrix.com>
+# Commit b4194711ffaffa5e63d986338fb8d4020fa6bad1
+# Date 2020-01-14 16:06:27 +0100
+# Author Jan Beulich <jbeulich(a)suse.com>
+# Committer Jan Beulich <jbeulich(a)suse.com>
+Arm: fix build after 892b9dcebdb7
+
+"IRQ: u16 is too narrow for an event channel number" introduced a use of
+evetchn_port_t, but its typedef apparently surfaces indirectly here only
+on x86.
+
+Signed-off-by: Jan Beulich <jbeulich(a)suse.com>
+Acked-by: Andrew Cooper <andrew.cooper3(a)citrix.com>
+
--- a/xen/include/xen/irq.h
+++ b/xen/include/xen/irq.h
-@@ -127,9 +127,10 @@ struct vcpu;
+@@ -8,6 +8,7 @@
+ #include <xen/list.h>
+ #include <asm/regs.h>
+ #include <asm/hardirq.h>
++#include <public/event_channel.h>
+
+ struct irqaction {
+ void (*handler)(int, void *, struct cpu_user_regs *);
+@@ -127,9 +128,10 @@ struct vcpu;
struct pirq {
int pirq;
++++++ 5e1dcedd-Arm-place-speculation-barrier-after-ERET.patch ++++++
# Commit c7de94fd6ec5aba53ce5b8fd6ceb6031c53bb28d
# Date 2020-01-14 14:23:25 +0000
# Author Julien Grall <julien(a)xen.org>
# Committer Julien Grall <julien(a)xen.org>
xen/arm: Place a speculation barrier sequence following an eret instruction
Some CPUs can speculate past an ERET instruction and potentially perform
speculative accesses to memory before processing the exception return.
Since the register state is often controlled by lower privilege level
at the point of an ERET, this could potentially be used as part of a
side-channel attack.
Newer CPUs may implement a new SB barrier instruction which acts
as an architected speculation barrier. For current CPUs, the sequence
DSB; ISB is known to prevent speculation.
The latter sequence is heavier than SB but it would never be executed
(this is speculation after all!).
Introduce a new macro 'sb' that could be used when a speculation barrier
is required. For now it is using dsb; isb but this could easily be
updated to cater SB in the future.
This is XSA-312.
Signed-off-by: Julien Grall <julien(a)xen.org>
--- a/xen/arch/arm/arm32/entry.S
+++ b/xen/arch/arm/arm32/entry.S
@@ -426,6 +426,7 @@ return_to_hypervisor:
add sp, #(UREGS_SP_usr - UREGS_sp); /* SP, LR, SPSR, PC */
clrex
eret
+ sb
/*
* struct vcpu *__context_switch(struct vcpu *prev, struct vcpu *next)
--- a/xen/arch/arm/arm64/entry.S
+++ b/xen/arch/arm/arm64/entry.S
@@ -354,6 +354,7 @@ guest_sync:
*/
mov x1, xzr
eret
+ sb
check_wa2:
/* ARM_SMCCC_ARCH_WORKAROUND_2 handling */
@@ -393,6 +394,7 @@ wa2_end:
#endif /* !CONFIG_ARM_SSBD */
mov x0, xzr
eret
+ sb
guest_sync_slowpath:
/*
* x0/x1 may have been scratch by the fast path above, so avoid
@@ -457,6 +459,7 @@ return_from_trap:
ldr lr, [sp], #(UREGS_SPSR_el1 - UREGS_LR) /* CPSR, PC, SP, LR */
eret
+ sb
/*
* Consume pending SError generated by the guest if any.
--- a/xen/include/asm-arm/macros.h
+++ b/xen/include/asm-arm/macros.h
@@ -20,4 +20,13 @@
.endr
.endm
+ /*
+ * Speculative barrier
+ * XXX: Add support for the 'sb' instruction
+ */
+ .macro sb
+ dsb nsh
+ isb
+ .endm
+
#endif /* __ASM_ARM_MACROS_H */
++++++ 5e21ce98-x86-time-update-TSC-stamp-after-deep-C-state.patch ++++++
# Commit bbf283f853f8c0e4d29248dd44d3b0e0abc07629
# Date 2020-01-17 16:11:20 +0100
# Author Igor Druzhinin <igor.druzhinin(a)citrix.com>
# Committer Jan Beulich <jbeulich(a)suse.com>
x86/time: update TSC stamp on restore from deep C-state
If ITSC is not available on CPU (e.g if running nested as PV shim)
then X86_FEATURE_NONSTOP_TSC is not advertised in certain cases, i.e.
all AMD and some old Intel processors. In which case TSC would need to
be restored on CPU from platform time by Xen upon exiting C-states.
As platform time might be behind the last TSC stamp recorded for the
current CPU, invariant of TSC stamp being always behind local TSC counter
is violated. This has an effect of get_s_time() going negative resulting
in eventual system hang or crash.
Fix this issue by updating local TSC stamp along with TSC counter write.
Signed-off-by: Igor Druzhinin <igor.druzhinin(a)citrix.com>
Reviewed-by: Roger Pau Monné <roger.pau(a)citrix.com>
Acked-by: Jan Beulich <jbeulich(a)suse.com>
--- a/xen/arch/x86/time.c
+++ b/xen/arch/x86/time.c
@@ -857,10 +857,16 @@ u64 stime2tsc(s_time_t stime)
void cstate_restore_tsc(void)
{
+ struct cpu_time *t = &this_cpu(cpu_time);
+
if ( boot_cpu_has(X86_FEATURE_NONSTOP_TSC) )
return;
- write_tsc(stime2tsc(read_platform_stime(NULL)));
+ t->stamp.master_stime = read_platform_stime(NULL);
+ t->stamp.local_tsc = stime2tsc(t->stamp.master_stime);
+ t->stamp.local_stime = t->stamp.master_stime;
+
+ write_tsc(t->stamp.local_tsc);
}
/***************************************************************************
++++++ 5e286cce-VT-d-dont-pass-bridges-to-domain_context_mapping_one.patch ++++++
# Commit a4d457fd59f4ebfb524aec82cb6a3030087914ca
# Date 2020-01-22 16:39:58 +0100
# Author Jan Beulich <jbeulich(a)suse.com>
# Committer Jan Beulich <jbeulich(a)suse.com>
VT-d: don't pass bridge devices to domain_context_mapping_one()
When passed a non-NULL pdev, the function does an owner check when it
finds an already existing context mapping. Bridges, however, don't get
passed through to guests, and hence their owner is always going to be
Dom0, leading to the assigment of all but one of the function of multi-
function PCI devices behind bridges to fail.
Reported-by: Marek Marczykowski-Górecki <marmarek(a)invisiblethingslab.com>
Signed-off-by: Jan Beulich <jbeulich(a)suse.com>
Reviewed-by: Roger Pau Monné <roger.pau(a)citrix.com>
Reviewed-by: Kevin Tian <kevin.tian(a)intel.com>
--- a/xen/drivers/passthrough/vtd/iommu.c
+++ b/xen/drivers/passthrough/vtd/iommu.c
@@ -1498,18 +1498,28 @@ static int domain_context_mapping(struct
if ( find_upstream_bridge(seg, &bus, &devfn, &secbus) < 1 )
break;
+ /*
+ * Mapping a bridge should, if anything, pass the struct pci_dev of
+ * that bridge. Since bridges don't normally get assigned to guests,
+ * their owner would be the wrong one. Pass NULL instead.
+ */
ret = domain_context_mapping_one(domain, drhd->iommu, bus, devfn,
- pci_get_pdev(seg, bus, devfn));
+ NULL);
/*
* Devices behind PCIe-to-PCI/PCIx bridge may generate different
* requester-id. It may originate from devfn=0 on the secondary bus
* behind the bridge. Map that id as well if we didn't already.
+ *
+ * Somewhat similar as for bridges, we don't want to pass a struct
+ * pci_dev here - there may not even exist one for this (secbus,0,0)
+ * tuple. If there is one, without properly working device groups it
+ * may again not have the correct owner.
*/
if ( !ret && pdev_type(seg, bus, devfn) == DEV_TYPE_PCIe2PCI_BRIDGE &&
(secbus != pdev->bus || pdev->devfn != 0) )
ret = domain_context_mapping_one(domain, drhd->iommu, secbus, 0,
- pci_get_pdev(seg, secbus, 0));
+ NULL);
break;
++++++ 5e318cd4-x86-apic-fix-disabling-LVT0.patch ++++++
# Commit 782b48b7f7319c07b044606d67a60875e53dd05b
# Date 2020-01-29 14:47:00 +0100
# Author Roger Pau Monné <roger.pau(a)citrix.com>
# Committer Jan Beulich <jbeulich(a)suse.com>
x86/apic: fix disabling LVT0 in disconnect_bsp_APIC
The Intel SDM states:
"When an illegal vector value (0 to 15) is written to a LVT entry and
the delivery mode is Fixed (bits 8-11 equal 0), the APIC may signal an
illegal vector error, without regard to whether the mask bit is set or
whether an interrupt is actually seen on the input."
And that's exactly what's currently done in disconnect_bsp_APIC when
virt_wire_setup is true and LVT LINT0 is being masked. By writing only
APIC_LVT_MASKED Xen is actually setting the vector to 0 and the
delivery mode to Fixed (0), and hence it triggers an APIC error even
when the LVT entry is masked.
This would usually manifest when Xen is being shut down, as that's
where disconnect_bsp_APIC is called:
(XEN) APIC error on CPU0: 40(00)
Fix this by calling clear_local_APIC prior to setting the LVT LINT
registers which already clear LVT LINT0, and hence the troublesome
write can be avoided as the register is already cleared.
Reported-by: Andrew Cooper <andrew.cooper3(a)citrix.com>
Signed-off-by: Roger Pau Monné <roger.pau(a)citrix.com>
Reviewed-by: Jan Beulich <jbeulich(a)suse.com>
--- a/xen/arch/x86/apic.c
+++ b/xen/arch/x86/apic.c
@@ -259,6 +259,8 @@ void disconnect_bsp_APIC(int virt_wire_s
/* Go back to Virtual Wire compatibility mode */
unsigned long value;
+ clear_local_APIC();
+
/* For the spurious interrupt use vector F, and enable it */
value = apic_read(APIC_SPIV);
value &= ~APIC_VECTOR_MASK;
@@ -276,10 +278,6 @@ void disconnect_bsp_APIC(int virt_wire_s
value = SET_APIC_DELIVERY_MODE(value, APIC_MODE_EXTINT);
apic_write(APIC_LVT0, value);
}
- else {
- /* Disable LVT0 */
- apic_write(APIC_LVT0, APIC_LVT_MASKED);
- }
/* For LVT1 make it edge triggered, active high, nmi and enabled */
value = apic_read(APIC_LVT1);
++++++ 5e344c11-x86-HVM-relinquish-resources-from-domain_destroy.patch ++++++
# Commit b3344bb1cae0c9ac22a57db8ecca488ad0e4a66d
# Date 2020-01-31 16:47:29 +0100
# Author Jan Beulich <jbeulich(a)suse.com>
# Committer Jan Beulich <jbeulich(a)suse.com>
x86/HVM: relinquish resources also from hvm_domain_destroy()
Domain creation failure paths don't call domain_relinquish_resources(),
yet allocations and alike done from hvm_domain_initialize() need to be
undone nevertheless. Call the function also from hvm_domain_destroy(),
after making sure all descendants are idempotent.
Note that while viridian_{domain,vcpu}_deinit() were already used in
ways suggesting they're idempotent, viridian_time_vcpu_deinit() actually
wasn't: One can't kill a timer that was never initialized.
For hvm_destroy_all_ioreq_servers()'s purposes make
relocate_portio_handler() return whether the to be relocated port range
was actually found. This seems cheaper than introducing a flag into
struct hvm_domain's ioreq_server sub-structure.
In hvm_domain_initialise() additionally
- use XFREE() also to replace adjacent xfree(),
- use hvm_domain_relinquish_resources() as being idempotent now.
There as well as in hvm_domain_destroy() the explicit call to
rtc_deinit() isn't needed anymore.
In hvm_domain_relinquish_resources() additionally drop a no longer
relevant if().
Fixes: e7a9b5e72f26 ("viridian: separately allocate domain and vcpu structures")
Fixes: 26fba3c85571 ("viridian: add implementation of synthetic timers")
Signed-off-by: Jan Beulich <jbeulich(a)suse.com>
Reviewed-by: Roger Pau Monné <roger.pau(a)citrix.com>
Acked-by: Andrew Cooper <andrew.cooper3(a)citrix.com>
Reviewed-by: Paul Durrant <pdurrant(a)amazon.com>
--- a/xen/arch/x86/hvm/hpet.c
+++ b/xen/arch/x86/hvm/hpet.c
@@ -751,7 +751,7 @@ void hpet_deinit(struct domain *d)
int i;
HPETState *h = domain_vhpet(d);
- if ( !has_vhpet(d) )
+ if ( !has_vhpet(d) || !d->arch.hvm.pl_time || !h->stime_freq )
return;
write_lock(&h->lock);
@@ -763,6 +763,8 @@ void hpet_deinit(struct domain *d)
for ( i = 0; i < HPET_TIMER_NUM; i++ )
if ( timer_enabled(h, i) )
hpet_stop_timer(h, i, guest_time);
+
+ h->hpet.config = 0;
}
write_unlock(&h->lock);
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -695,24 +695,24 @@ int hvm_domain_initialise(struct domain
return 0;
fail2:
- rtc_deinit(d);
stdvga_deinit(d);
vioapic_deinit(d);
fail1:
if ( is_hardware_domain(d) )
xfree(d->arch.hvm.io_bitmap);
- xfree(d->arch.hvm.io_handler);
- xfree(d->arch.hvm.params);
- xfree(d->arch.hvm.pl_time);
- xfree(d->arch.hvm.irq);
+ XFREE(d->arch.hvm.io_handler);
+ XFREE(d->arch.hvm.params);
+ XFREE(d->arch.hvm.pl_time);
+ XFREE(d->arch.hvm.irq);
fail0:
hvm_destroy_cacheattr_region_list(d);
destroy_perdomain_mapping(d, PERDOMAIN_VIRT_START, 0);
fail:
- viridian_domain_deinit(d);
+ hvm_domain_relinquish_resources(d);
return rc;
}
+/* This function and all its descendants need to be to be idempotent. */
void hvm_domain_relinquish_resources(struct domain *d)
{
if ( hvm_funcs.nhvm_domain_relinquish_resources )
@@ -726,11 +726,8 @@ void hvm_domain_relinquish_resources(str
/* Stop all asynchronous timer actions. */
rtc_deinit(d);
- if ( d->vcpu != NULL && d->vcpu[0] != NULL )
- {
- pmtimer_deinit(d);
- hpet_deinit(d);
- }
+ pmtimer_deinit(d);
+ hpet_deinit(d);
}
void hvm_domain_destroy(struct domain *d)
@@ -738,13 +735,19 @@ void hvm_domain_destroy(struct domain *d
struct list_head *ioport_list, *tmp;
struct g2m_ioport *ioport;
+ /*
+ * This function would not be called when domain initialization fails
+ * (late enough), so do so here. This requires the function and all its
+ * descendants to be idempotent.
+ */
+ hvm_domain_relinquish_resources(d);
+
XFREE(d->arch.hvm.io_handler);
XFREE(d->arch.hvm.params);
hvm_destroy_cacheattr_region_list(d);
hvm_funcs.domain_destroy(d);
- rtc_deinit(d);
stdvga_deinit(d);
vioapic_deinit(d);
--- a/xen/arch/x86/hvm/intercept.c
+++ b/xen/arch/x86/hvm/intercept.c
@@ -300,7 +300,7 @@ void register_portio_handler(struct doma
handler->portio.action = action;
}
-void relocate_portio_handler(struct domain *d, unsigned int old_port,
+bool relocate_portio_handler(struct domain *d, unsigned int old_port,
unsigned int new_port, unsigned int size)
{
unsigned int i;
@@ -317,9 +317,11 @@ void relocate_portio_handler(struct doma
(handler->portio.size = size) )
{
handler->portio.port = new_port;
- break;
+ return true;
}
}
+
+ return false;
}
bool_t hvm_mmio_internal(paddr_t gpa)
--- a/xen/arch/x86/hvm/ioreq.c
+++ b/xen/arch/x86/hvm/ioreq.c
@@ -1228,6 +1228,9 @@ void hvm_destroy_all_ioreq_servers(struc
struct hvm_ioreq_server *s;
unsigned int id;
+ if ( !relocate_portio_handler(d, 0xcf8, 0xcf8, 4) )
+ return;
+
spin_lock_recursive(&d->arch.hvm.ioreq_server.lock);
/* No need to domain_pause() as the domain is being torn down */
--- a/xen/arch/x86/hvm/pmtimer.c
+++ b/xen/arch/x86/hvm/pmtimer.c
@@ -373,7 +373,7 @@ void pmtimer_deinit(struct domain *d)
{
PMTState *s = &d->arch.hvm.pl_time->vpmt;
- if ( !has_vpm(d) )
+ if ( !has_vpm(d) || !d->arch.hvm.pl_time || !s->vcpu )
return;
kill_timer(&s->timer);
--- a/xen/arch/x86/hvm/rtc.c
+++ b/xen/arch/x86/hvm/rtc.c
@@ -836,7 +836,8 @@ void rtc_deinit(struct domain *d)
{
RTCState *s = domain_vrtc(d);
- if ( !has_vrtc(d) )
+ if ( !has_vrtc(d) || !d->arch.hvm.pl_time ||
+ s->update_timer.status == TIMER_STATUS_invalid )
return;
spin_barrier(&s->lock);
--- a/xen/arch/x86/hvm/viridian/time.c
+++ b/xen/arch/x86/hvm/viridian/time.c
@@ -566,6 +566,8 @@ void viridian_time_vcpu_deinit(const str
{
struct viridian_stimer *vs = &vv->stimer[i];
+ if ( !vs->v )
+ continue;
kill_timer(&vs->timer);
vs->v = NULL;
}
--- a/xen/include/asm-x86/hvm/io.h
+++ b/xen/include/asm-x86/hvm/io.h
@@ -112,7 +112,7 @@ void register_portio_handler(
struct domain *d, unsigned int port, unsigned int size,
portio_action_t action);
-void relocate_portio_handler(
+bool relocate_portio_handler(
struct domain *d, unsigned int old_port, unsigned int new_port,
unsigned int size);
++++++ 5e3bd385-EFI-recheck-variable-name-strings.patch ++++++
# Commit ad38db5852f0e30d90c93c6a62b754f2861549e0
# Date 2020-02-06 09:51:17 +0100
# Author Jan Beulich <jbeulich(a)suse.com>
# Committer Jan Beulich <jbeulich(a)suse.com>
EFI: re-check {get,set}-variable name strings after copying in
A malicious guest given permission to invoke XENPF_efi_runtime_call may
play with the strings underneath Xen sizing them and copying them in.
Guard against this by re-checking the copyied in data for consistency
with the initial sizing. At the same time also check that the actual
copy-in is in fact successful, and switch to the lighter weight non-
checking flavor of the function.
Reported-by: Ilja Van Sprundel <ivansprundel(a)ioactive.com>
Signed-off-by: Jan Beulich <jbeulich(a)suse.com>
Reviewed-by: George Dunlap <george.dunlap(a)citrix.com>
--- a/xen/common/efi/boot.c
+++ b/xen/common/efi/boot.c
@@ -280,16 +280,6 @@ static int __init wstrncmp(const CHAR16
return n ? *s1 - *s2 : 0;
}
-static const CHAR16 *__init wmemchr(const CHAR16 *s, CHAR16 c, UINTN n)
-{
- while ( n && *s != c )
- {
- --n;
- ++s;
- }
- return n ? s : NULL;
-}
-
static CHAR16 *__init s2w(union string *str)
{
const char *s = str->s;
--- a/xen/common/efi/efi.h
+++ b/xen/common/efi/efi.h
@@ -39,3 +39,5 @@ extern UINT64 efi_boot_max_var_store_siz
extern UINT64 efi_apple_properties_addr;
extern UINTN efi_apple_properties_len;
+
+const CHAR16 *wmemchr(const CHAR16 *s, CHAR16 c, UINTN n);
--- a/xen/common/efi/runtime.c
+++ b/xen/common/efi/runtime.c
@@ -194,7 +194,18 @@ void efi_reset_system(bool warm)
}
#endif /* CONFIG_ARM */
-#endif
+
+const CHAR16 *wmemchr(const CHAR16 *s, CHAR16 c, UINTN n)
+{
+ while ( n && *s != c )
+ {
+ --n;
+ ++s;
+ }
+ return n ? s : NULL;
+}
+
+#endif /* COMPAT */
#ifndef CONFIG_ARM /* TODO - disabled until implemented on ARM */
int efi_get_info(uint32_t idx, union xenpf_efi_info *info)
@@ -465,7 +476,12 @@ int efi_runtime_call(struct xenpf_efi_ru
name = xmalloc_array(CHAR16, ++len);
if ( !name )
return -ENOMEM;
- __copy_from_guest(name, op->u.get_variable.name, len);
+ if ( __copy_from_guest(name, op->u.get_variable.name, len) ||
+ wmemchr(name, 0, len) != name + len - 1 )
+ {
+ xfree(name);
+ return -EIO;
+ }
size = op->u.get_variable.size;
if ( size )
@@ -513,7 +529,12 @@ int efi_runtime_call(struct xenpf_efi_ru
name = xmalloc_array(CHAR16, ++len);
if ( !name )
return -ENOMEM;
- __copy_from_guest(name, op->u.set_variable.name, len);
+ if ( __copy_from_guest(name, op->u.set_variable.name, len) ||
+ wmemchr(name, 0, len) != name + len - 1 )
+ {
+ xfree(name);
+ return -EIO;
+ }
data = xmalloc_bytes(op->u.set_variable.size);
if ( !data )
++++++ 5e3bd3d1-EFI-dont-leak-heap-VIA-XEN_EFI_get_next_variable_name.patch ++++++
# Commit 4783ee894f6bfb0f4deec9f1fe8e7faceafaa1a2
# Date 2020-02-06 09:52:33 +0100
# Author Jan Beulich <jbeulich(a)suse.com>
# Committer Jan Beulich <jbeulich(a)suse.com>
EFI: don't leak heap contents through XEN_EFI_get_next_variable_name
Commit 1f4eb9d27d0e ("EFI: fix getting EFI variable list on some
systems") switched to using the caller provided size for the copy-out
without making sure the copied buffer is properly scrubbed.
Reported-by: Ilja Van Sprundel <ivansprundel(a)ioactive.com>
Signed-off-by: Jan Beulich <jbeulich(a)suse.com>
Reviewed-by: George Dunlap <george.dunlap(a)citrix.com>
--- a/xen/common/efi/runtime.c
+++ b/xen/common/efi/runtime.c
@@ -571,7 +571,7 @@ int efi_runtime_call(struct xenpf_efi_ru
return -EINVAL;
size = op->u.get_next_variable_name.size;
- name.raw = xmalloc_bytes(size);
+ name.raw = xzalloc_bytes(size);
if ( !name.raw )
return -ENOMEM;
if ( copy_from_guest(name.raw, op->u.get_next_variable_name.name,
++++++ 5e3bd3f8-xmalloc-guard-against-overflow.patch ++++++
# Commit cf38b4926e2b55d1d7715cff5095a7444f5ed42d
# Date 2020-02-06 09:53:12 +0100
# Author Jan Beulich <jbeulich(a)suse.com>
# Committer Jan Beulich <jbeulich(a)suse.com>
xmalloc: guard against integer overflow
There are hypercall handling paths (EFI ones are what this was found
with) needing to allocate buffers of a caller specified size. This is
generally fine, as our page allocator enforces an upper bound on all
allocations. However, certain extremely large sizes could, when adding
in allocator overhead, result in an apparently tiny allocation size,
which would typically result in either a successful allocation, but a
severe buffer overrun when using that memory block, or in a crash right
in the allocator code.
Reported-by: Ilja Van Sprundel <ivansprundel(a)ioactive.com>
Signed-off-by: Jan Beulich <jbeulich(a)suse.com>
Reviewed-by: George Dunlap <george.dunlap(a)citrix.com>
--- a/xen/common/xmalloc_tlsf.c
+++ b/xen/common/xmalloc_tlsf.c
@@ -378,7 +378,17 @@ void *xmem_pool_alloc(unsigned long size
int fl, sl;
unsigned long tmp_size;
- size = (size < MIN_BLOCK_SIZE) ? MIN_BLOCK_SIZE : ROUNDUP_SIZE(size);
+ if ( size < MIN_BLOCK_SIZE )
+ size = MIN_BLOCK_SIZE;
+ else
+ {
+ tmp_size = ROUNDUP_SIZE(size);
+ /* Guard against overflow. */
+ if ( tmp_size < size )
+ return NULL;
+ size = tmp_size;
+ }
+
/* Rounding up the requested size and calculating fl and sl */
spin_lock(&pool->lock);
@@ -594,6 +604,10 @@ void *_xmalloc(unsigned long size, unsig
align = MEM_ALIGN;
size += align - MEM_ALIGN;
+ /* Guard against overflow. */
+ if ( size < align - MEM_ALIGN )
+ return NULL;
+
if ( !xenpool )
tlsf_init();
@@ -646,6 +660,10 @@ void *_xrealloc(void *ptr, unsigned long
unsigned long tmp_size = size + align - MEM_ALIGN;
const struct bhdr *b;
+ /* Guard against overflow. */
+ if ( tmp_size < size )
+ return NULL;
+
if ( tmp_size < PAGE_SIZE )
tmp_size = (tmp_size < MIN_BLOCK_SIZE) ? MIN_BLOCK_SIZE :
ROUNDUP_SIZE(tmp_size);
++++++ 5e46e090-x86-smp-reset-x2apic_enabled-in-smp_send_stop.patch ++++++
# Commit 8b1002ab037aeacdece7723c07ab35ca16c1e22e
# Date 2020-02-14 18:01:52 +0000
# Author David Woodhouse <dwmw(a)amazon.co.uk>
# Committer Andrew Cooper <andrew.cooper3(a)citrix.com>
x86/smp: reset x2apic_enabled in smp_send_stop()
Just before smp_send_stop() re-enables interrupts when shutting down
for reboot or kexec, it calls __stop_this_cpu() which in turn calls
disable_local_APIC(), which puts the APIC back in to the mode Xen found
it in at boot.
If that means turning x2APIC off and going back into xAPIC mode, then
a timer interrupt occurring just after interrupts come back on will
lead to a GP# when apic_timer_interrupt() attempts to ack the IRQ
through the EOI register in x2APIC MSR 0x80b:
(XEN) Executing kexec image on cpu0
(XEN) ----[ Xen-4.14-unstable x86_64 debug=n Not tainted ]----
(XEN) CPU: 0
(XEN) RIP: e008:[<ffff82d08026c139>] apic_timer_interrupt+0x29/0x40
(XEN) RFLAGS: 0000000000010046 CONTEXT: hypervisor
(XEN) rax: 0000000000000000 rbx: 00000000000000fa rcx: 000000000000080b
...
(XEN) Xen code around <ffff82d08026c139> (apic_timer_interrupt+0x29/0x40):
(XEN) c0 b9 0b 08 00 00 89 c2 <0f> 30 31 ff e9 0e c9 fb ff 0f 1f 40 00 66 2e 0f
...
(XEN) Xen call trace:
(XEN) [<ffff82d08026c139>] R apic_timer_interrupt+0x29/0x40
(XEN) [<ffff82d080283825>] S do_IRQ+0x95/0x750
...
(XEN) [<ffff82d0802a0ad2>] S smp_send_stop+0x42/0xd0
We can't clear the global x2apic_enabled variable in disable_local_APIC()
itself because that runs on each CPU. Instead, correct it (by using
current_local_apic_mode()) in smp_send_stop() while interrupts are still
disabled immediately after calling __stop_this_cpu() for the boot CPU,
after all other CPUs have been stopped.
cf: d639bdd9bbe ("x86/apic: Disable the LAPIC later in smp_send_stop()")
... which didn't quite fix it completely.
Signed-off-by: David Woodhouse <dwmw(a)amazon.co.uk>
Reviewed-by: Roger Pau Monné <roger.pau(a)citrix.com>
--- a/xen/arch/x86/smp.c
+++ b/xen/arch/x86/smp.c
@@ -325,6 +325,7 @@ void smp_send_stop(void)
disable_IO_APIC();
hpet_disable();
__stop_this_cpu();
+ x2apic_enabled = (current_local_apic_mode() == APIC_MODE_X2APIC);
local_irq_enable();
}
}
++++++ 5e4c00ef-VT-d-check-full-RMRR-for-E820-reserved.patch ++++++
# Commit d6573bc6e6b7d95bb9de8471a6bfd7048ebc50f3
# Date 2020-02-18 16:21:19 +0100
# Author Jan Beulich <jbeulich(a)suse.com>
# Committer Jan Beulich <jbeulich(a)suse.com>
VT-d: check all of an RMRR for being E820-reserved
Checking just the first and last page is not sufficient (and redundant
for single-page regions). As we don't need to care about IA64 anymore,
use an x86-specific function to get this done without looping over each
individual page.
Signed-off-by: Jan Beulich <jbeulich(a)suse.com>
Reviewed-by: Roger Pau Monné <roger.pau(a)citrix.com>
Reviewed-by: Kevin Tian <kevin.tian(a)intel.com>
--- a/xen/drivers/passthrough/vtd/dmar.c
+++ b/xen/drivers/passthrough/vtd/dmar.c
@@ -28,6 +28,7 @@
#include <xen/pci.h>
#include <xen/pci_regs.h>
#include <asm/atomic.h>
+#include <asm/e820.h>
#include <asm/string.h>
#include "dmar.h"
#include "iommu.h"
@@ -631,14 +632,11 @@ acpi_parse_one_rmrr(struct acpi_dmar_hea
* not properly represented in the system memory map and
* inform the user
*/
- if ( (!page_is_ram_type(paddr_to_pfn(base_addr), RAM_TYPE_RESERVED)) ||
- (!page_is_ram_type(paddr_to_pfn(end_addr), RAM_TYPE_RESERVED)) )
- {
+ if ( !e820_all_mapped(base_addr, end_addr + 1, RAM_TYPE_RESERVED) )
printk(XENLOG_WARNING VTDPREFIX
" RMRR address range %"PRIx64"..%"PRIx64" not in reserved memory;"
" need \"iommu_inclusive_mapping=1\"?\n",
base_addr, end_addr);
- }
rmrru = xzalloc(struct acpi_rmrr_unit);
if ( !rmrru )
++++++ 5e4d4f5b-sched-fix-get_cpu_idle_time-with-core-sched.patch ++++++
# Commit 132cbe8f35632fb2fea0625ee8fdda53a19a1645
# Date 2020-02-19 16:08:11 +0100
# Author Juergen Gross <jgross(a)suse.com>
# Committer Jan Beulich <jbeulich(a)suse.com>
sched: fix get_cpu_idle_time() with core scheduling
get_cpu_idle_time() is calling vcpu_runstate_get() for an idle vcpu.
With core scheduling active this is fragile, as idle vcpus are assigned
to other scheduling units temporarily, and that assignment is changed
in some cases without holding the scheduling lock, and
vcpu_runstate_get() is using v->sched_unit as parameter for
unit_schedule_[un]lock_irq(), resulting in an ASSERT() triggering in
unlock in case v->sched_unit has changed meanwhile.
Fix that by using a local unit variable holding the correct unit.
Signed-off-by: Juergen Gross <jgross(a)suse.com>
Reviewed-by: Dario Faggioli <dfaggioli(a)suse.com>
--- a/xen/common/schedule.c
+++ b/xen/common/schedule.c
@@ -305,17 +305,26 @@ void vcpu_runstate_get(struct vcpu *v, s
{
spinlock_t *lock;
s_time_t delta;
+ struct sched_unit *unit;
rcu_read_lock(&sched_res_rculock);
- lock = likely(v == current) ? NULL : unit_schedule_lock_irq(v->sched_unit);
+ /*
+ * Be careful in case of an idle vcpu: the assignment to a unit might
+ * change even with the scheduling lock held, so be sure to use the
+ * correct unit for locking in order to avoid triggering an ASSERT() in
+ * the unlock function.
+ */
+ unit = is_idle_vcpu(v) ? get_sched_res(v->processor)->sched_unit_idle
+ : v->sched_unit;
+ lock = likely(v == current) ? NULL : unit_schedule_lock_irq(unit);
memcpy(runstate, &v->runstate, sizeof(*runstate));
delta = NOW() - runstate->state_entry_time;
if ( delta > 0 )
runstate->time[runstate->state] += delta;
if ( unlikely(lock != NULL) )
- unit_schedule_unlock_irq(lock, v->sched_unit);
+ unit_schedule_unlock_irq(lock, unit);
rcu_read_unlock(&sched_res_rculock);
}
++++++ 5e4e614d-x86-spec-ctrl-no-xen-also-disables-branch-hardening.patch ++++++
# Commit e6ca7afcf2ddeb72beade853ccd6fa3332210014
# Date 2020-02-20 11:37:01 +0100
# Author Jan Beulich <jbeulich(a)suse.com>
# Committer Jan Beulich <jbeulich(a)suse.com>
x86: "spec-ctrl=no-xen" should also disable branch hardening
This is controlling Xen behavior alone, after all.
Reported-by: Jin Nan Wang <jnwang(a)suse.com>
Signed-off-by: Jan Beulich <jbeulich(a)suse.com>
Acked-by: Andrew Cooper <andrew.cooper3(a)citrix.com>
--- a/xen/arch/x86/spec_ctrl.c
+++ b/xen/arch/x86/spec_ctrl.c
@@ -97,8 +97,6 @@ static int __init parse_spec_ctrl(const
if ( opt_pv_l1tf_domu < 0 )
opt_pv_l1tf_domu = 0;
- opt_branch_harden = false;
-
if ( opt_tsx == -1 )
opt_tsx = -3;
@@ -113,6 +111,7 @@ static int __init parse_spec_ctrl(const
opt_ibpb = false;
opt_ssbd = false;
opt_l1d_flush = 0;
+ opt_branch_harden = false;
}
else if ( val > 0 )
rc = -EINVAL;
++++++ xen.bug1026236.suse_vtsc_tolerance.patch ++++++
--- /var/tmp/diff_new_pack.HIeYzB/_old 2020-03-01 08:51:38.657305523 +0100
+++ /var/tmp/diff_new_pack.HIeYzB/_new 2020-03-01 08:51:38.657305523 +0100
@@ -20,7 +20,7 @@
unsigned long __read_mostly cpu_khz; /* CPU clock frequency in kHz. */
DEFINE_SPINLOCK(rtc_lock);
unsigned long pit0_ticks;
-@@ -2223,6 +2226,7 @@ int tsc_set_info(struct domain *d,
+@@ -2229,6 +2232,7 @@ int tsc_set_info(struct domain *d,
switch ( tsc_mode )
{
@@ -28,7 +28,7 @@
case TSC_MODE_DEFAULT:
case TSC_MODE_ALWAYS_EMULATE:
d->arch.vtsc_offset = get_s_time() - elapsed_nsec;
-@@ -2236,8 +2240,26 @@ int tsc_set_info(struct domain *d,
+@@ -2242,8 +2246,26 @@ int tsc_set_info(struct domain *d,
* When a guest is created, gtsc_khz is passed in as zero, making
* d->arch.tsc_khz == cpu_khz. Thus no need to check incarnation.
*/
++++++ xen_maskcalc.py ++++++
#!/usr/bin/python3
# Xen Mask Calculator - Calculate CPU masking information based on cpuid(1)
# Copyright (C) 2017 Armando Vega
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import argparse
import sys
import os
EAX1_MATCH = '0x00000001 0x00:'
EAX7_MATCH = '0x00000007 0x00:'
EXP_LINELN = 76
libxl_names_ecx1 = []
libxl_names_edx1 = []
libvirt_names_ecx1 = []
libvirt_names_edx1 = []
libxl_names_ebx7 = []
libxl_names_ecx7 = []
libvirt_names_ebx7 = []
libvirt_names_ecx7 = []
def fill_ecx1(bit, libxl, libvirt):
if libxl_names_ecx1[bit]:
print("ecx bit %s already set: libxl %s libvirt %s. Ignoring %s/%s\n" % (bit, libxl_names_ecx1[bit], libvirt_names_ecx1[bit], libxl, libvirt))
return
libxl_names_ecx1[bit] = libxl
libvirt_names_ecx1[bit] = libvirt
def fill_edx1(bit, libxl, libvirt):
if libxl_names_edx1[bit]:
print("edx bit %s already set: libxl %s libvirt %s. Ignoring %s/%s\n" % (bit, libxl_names_edx1[bit], libvirt_names_edx1[bit], libxl, libvirt))
return
libxl_names_edx1[bit] = libxl
libvirt_names_edx1[bit] = libvirt
def fill_ebx7(bit, libxl, libvirt):
if libxl_names_ebx7[bit]:
print("edx bit %s already set: libxl %s libvirt %s. Ignoring %s/%s\n" % (bit, libxl_names_ebx7[bit], libvirt_names_ebx7[bit], libxl, libvirt))
return
libxl_names_ebx7[bit] = libxl
libvirt_names_ebx7[bit] = libvirt
def fill_ecx7(bit, libxl, libvirt):
if libxl_names_ecx7[bit]:
print("ecx bit %s already set: libxl %s libvirt %s. Ignoring %s/%s\n" % (bit, libxl_names_ecx7[bit], libvirt_names_ecx7[bit], libxl, libvirt))
return
libxl_names_ecx7[bit] = libxl
libvirt_names_ecx7[bit] = libvirt
def fill_bit_names():
for i in range(0,32):
libxl_names_ecx1.append(None)
libxl_names_edx1.append(None)
libxl_names_ebx7.append(None)
libxl_names_ecx7.append(None)
libvirt_names_ecx1.append(None)
libvirt_names_edx1.append(None)
libvirt_names_ebx7.append(None)
libvirt_names_ecx7.append(None)
fill_ecx1(0, "sse3", "pni")
fill_ecx1(1, "pclmulqdq", "pclmuldq")
fill_ecx1(2, "dtes64", "dtes64")
fill_ecx1(3, "monitor", "monitor")
fill_ecx1(4, "dscpl", "ds_cpl")
fill_ecx1(5, "vmx", "vmx")
fill_ecx1(6, "smx", "smx")
fill_ecx1(7, "est", "est")
fill_ecx1(8, "tm2", "tm2")
fill_ecx1(9, "ssse3", "ssse3")
fill_ecx1(10, "cntxid", "cid")
fill_ecx1(12, "fma", "fma")
fill_ecx1(13, "cmpxchg16", "cx16")
fill_ecx1(14, "xtpr", "xtpr")
fill_ecx1(15, "pdcm", "pdcm")
fill_ecx1(17, "pcid", "pcid")
fill_ecx1(18, "dca", "dca")
fill_ecx1(19, "sse4_1", "sse4.1")
fill_ecx1(20, "sse4_2", "sse4.2")
fill_ecx1(21, "x2apic", "x2apic")
fill_ecx1(22, "movbe", "movbe")
fill_ecx1(23, "popcnt", "popcnt")
fill_ecx1(24, "tsc-deadline", "tsc-deadline")
fill_ecx1(25, "aes", "aes")
fill_ecx1(26, "xsave", "xsave")
fill_ecx1(27, "osxsave", "osxsave")
fill_ecx1(28, "avx", "avx")
fill_ecx1(29, "f16c", "f16c")
fill_ecx1(30, "rdrand", "rdrand")
fill_ecx1(31, "hypervisor", "hypervisor")
fill_edx1(0, "fpu", "fpu")
fill_edx1(1, "vme", "vme")
fill_edx1(2, "de", "de")
fill_edx1(3, "pse", "pse")
fill_edx1(4, "tsc", "tsc")
fill_edx1(5, "msr", "msr")
fill_edx1(6, "pae", "pae")
fill_edx1(7, "mce", "mce")
fill_edx1(8, "cmpxchg8", "cx8")
fill_edx1(9, "apic", "apic")
fill_edx1(11, "sysenter", "sep")
fill_edx1(12, "mtrr", "mtrr")
fill_edx1(13, "pge", "pge")
fill_edx1(14, "mca", "mca")
fill_edx1(15, "cmov", "cmov")
fill_edx1(16, "pat", "pat")
fill_edx1(17, "pse36", "pse36")
fill_edx1(18, "psn", "pn")
fill_edx1(19, "clfsh", "clflush")
fill_edx1(21, "ds", "ds")
fill_edx1(22, "acpi", "acpi")
fill_edx1(23, "mmx", "mmx")
fill_edx1(24, "fxsr", "fxsr")
fill_edx1(25, "sse", "sse")
fill_edx1(26, "sse2", "sse2")
fill_edx1(27, "ss", "ss")
fill_edx1(28, "htt", "ht")
fill_edx1(29, "tm", "tm")
fill_edx1(30, "ia64", "ia64")
fill_edx1(31, "pbe", "pbe")
fill_ebx7(0, "fsgsbase", "fsgsbase")
fill_ebx7(1, "tsc_adjust", "tsc_adjust")
fill_ebx7(3, "bmi1", "bmi1")
fill_ebx7(4, "hle", "hle")
fill_ebx7(5, "avx2", "avx2")
fill_ebx7(7, "smep", "smep")
fill_ebx7(8, "bmi2", "bmi2")
fill_ebx7(9, "erms", "erms")
fill_ebx7(10, "invpcid", "invpcid")
fill_ebx7(11, "rtm", "rtm")
fill_ebx7(12, "cmt", "cmt")
fill_ebx7(14, "mpx", "mpx")
fill_ebx7(16, "avx512f", "avx512f")
fill_ebx7(17, "avx512dq", "avx512dq")
fill_ebx7(18, "rdseed", "rdseed")
fill_ebx7(19, "adx", "adx")
fill_ebx7(20, "smap", "smap")
fill_ebx7(21, "avx512-ifma", "avx512-ifma")
fill_ebx7(23, "clflushopt", "clflushopt")
fill_ebx7(24, "clwb", "clwb")
fill_ebx7(26, "avx512pf", "avx512pf")
fill_ebx7(27, "avx512er", "avx512er")
fill_ebx7(28, "avx512cd", "avx512cd")
fill_ebx7(29, "sha", "sha")
fill_ebx7(30, "avx512bw", "avx512bw")
fill_ebx7(31, "avx512vl", "avx512vl")
fill_ecx7(0, "prefetchwt1", "prefetchwt1")
fill_ecx7(1, "avx512-vbmi", "avx512-vbmi")
fill_ecx7(2, "umip", "umip")
fill_ecx7(3, "pku", "pku")
fill_ecx7(4, "ospke", "ospke")
fill_ecx7(6, "avx512-vbmi2", "avx512-vbmi2")
fill_ecx7(8, "gfni", "gfni")
fill_ecx7(9, "vaes", "vaes")
fill_ecx7(10, "vpclmulqdq", "vpclmulqdq")
fill_ecx7(11, "avx512-vnni", "avx512-vnni")
fill_ecx7(12, "avx512-bitalg", "avx512-bitalg")
fill_ecx7(14, "avx512-vpopcntdq", "avx512-vpopcntdq")
fill_ecx7(22, "rdpid", "rdpid")
fill_ecx7(25, "cldemote", "cldemote")
def get_register_mask(regs):
""" Take a list of register values and return the calculated mask """
reg_n = len(regs)
mask = ''
for idx in range(32):
counter = 0
for reg in regs:
counter += 1 if (reg & (1 << idx) > 0) else 0
# if we have all 1s or all 0s we don't mask the bit
if counter == reg_n or counter == 0:
mask = mask + 'x'
else:
mask = mask + '0'
# we calculated the mask in reverse, so we reverse it again
return mask[::-1]
def print_xl_masking_config(nodes):
""" Take a dictionary of nodes containing their registers and print out CPUID masking configuration for xl """
nomasking = 'x' * 32
libxl = []
libvirt = []
eax1_ecx_regs = []
eax1_edx_regs = []
eax7_ebx_regs = []
eax7_ecx_regs = []
for node in nodes:
eax1_ecx_regs.append(nodes[node]['eax1_ecx'])
eax1_edx_regs.append(nodes[node]['eax1_edx'])
eax7_ebx_regs.append(nodes[node]['eax7_ebx'])
eax7_ecx_regs.append(nodes[node]['eax7_ecx'])
# Get masks for the EAX1 and EAX7 registers
eax1_ecx_mask = get_register_mask(eax1_ecx_regs)
eax1_edx_mask = get_register_mask(eax1_edx_regs)
eax7_ebx_mask = get_register_mask(eax7_ebx_regs)
eax7_ecx_mask = get_register_mask(eax7_ecx_regs)
# Build the xl CPUID config
cpuid_config = 'cpuid = [\n "0x00000001:ecx=' + eax1_ecx_mask
if eax1_edx_mask != nomasking:
cpuid_config += ',edx=' + eax1_edx_mask
cpuid_config += '",\n'
cpuid_config += ' "0x00000007,0x00:ebx=' + eax7_ebx_mask
if eax7_ecx_mask != nomasking:
cpuid_config += ',ecx=' + eax7_ecx_mask
cpuid_config += '"\n'
cpuid_config += ']'
print(cpuid_config)
bitnum = len(eax1_ecx_mask)
while bitnum > 0:
bitnum -= 1
bitval = eax1_ecx_mask[len(eax1_ecx_mask) - 1 - bitnum]
if bitval == "0" and libxl_names_ecx1[bitnum]:
libxl.append(libxl_names_ecx1[bitnum] + "=0")
libvirt.append(libvirt_names_ecx1[bitnum])
bitnum = len(eax1_edx_mask)
while bitnum > 0:
bitnum -= 1
bitval = eax1_edx_mask[len(eax1_edx_mask) - 1 - bitnum]
if bitval == "0" and libxl_names_edx1[bitnum]:
libxl.append(libxl_names_edx1[bitnum] + "=0")
libvirt.append(libvirt_names_edx1[bitnum])
bitnum = len(eax7_ebx_mask)
while bitnum > 0:
bitnum -= 1
bitval = eax7_ebx_mask[len(eax7_ebx_mask) - 1 - bitnum]
if bitval == "0" and libxl_names_ebx7[bitnum]:
libxl.append(libxl_names_ebx7[bitnum] + "=0")
libvirt.append(libvirt_names_ebx7[bitnum])
bitnum = len(eax7_ecx_mask)
while bitnum > 0:
bitnum -= 1
bitval = eax7_ecx_mask[len(eax7_ecx_mask) - 1 - bitnum]
if bitval == "0" and libxl_names_ecx7[bitnum]:
libxl.append(libxl_names_ecx7[bitnum] + "=0")
libvirt.append(libvirt_names_ecx7[bitnum])
if len(libxl) > 0:
output = "cpuid = [ host"
for i in libxl:
output += "," + i
output += " ]"
print(output)
print("<domain>")
print(" <cpu>")
for i in libvirt:
print(" <feature policy='optional' name='%s' />" % i)
print(" </cpu>")
print("</domain>")
def print_verbose_masking_info(nodes):
""" Take a dictionary of nodes containing their registers and print out verbose mask derivation information """
eax1_ecx_regs = []
eax1_edx_regs = []
eax7_ebx_regs = []
eax7_ecx_regs = []
for node in nodes:
eax1_ecx_regs.append(nodes[node]['eax1_ecx'])
eax1_edx_regs.append(nodes[node]['eax1_edx'])
eax7_ebx_regs.append(nodes[node]['eax7_ebx'])
eax7_ecx_regs.append(nodes[node]['eax7_ecx'])
print("")
print('== Detailed mask derivation info ==')
print("")
print('EAX1 ECX registers:')
for reg in eax1_ecx_regs:
print('{0:032b}'.format(reg))
print('================================')
print(get_register_mask(eax1_ecx_regs))
print("")
print('EAX1 EDX registers:')
for reg in eax1_edx_regs:
print('{0:032b}'.format(reg))
print('================================')
print(get_register_mask(eax1_edx_regs))
print("")
print('EAX7,0 EBX registers:')
for reg in eax7_ebx_regs:
print('{0:032b}'.format(reg))
print('================================')
print(get_register_mask(eax7_ebx_regs))
print("")
print('EAX7,0 ECX registers:')
for reg in eax7_ecx_regs:
print('{0:032b}'.format(reg))
print('================================')
print(get_register_mask(eax7_ecx_regs))
if __name__ == '__main__':
epilog = """The individual 'node_files' are generated with 'cpuid -1r':
server1~$ cpuid -1r > node1
server2~$ cpuid -1r > node2
server3~$ cpuid -1r > node3
~$ {0} node1 node2 node3
Use 'zypper install cpuid' to install the cpuid.rpm.
Note: Run 'cpuid' with NATIVE boot instead of dom0 to get the complete cpid value.
Xen hides some bits from dom0!
""".format(sys.argv[0])
parser = argparse.ArgumentParser(
formatter_class=argparse.RawDescriptionHelpFormatter,
description='A utility that calculates a XEN CPUID difference mask',
epilog=epilog
)
parser.add_argument('node_files', nargs='*', help='Filenames of XEN node CPUID outputs')
parser.add_argument('-v', '--verbose', action='store_true', help='Get detailed mask derivation information')
args = parser.parse_args()
if len(args.node_files) < 2:
print('Need at least 2 files to do the comparison!')
parser.print_help()
sys.exit(1)
fill_bit_names()
nodes = dict()
for node in args.node_files:
if os.path.isfile(node):
try:
f = open(node)
except IOError as e:
print("I/O error({0}): {1}".format(e.errno, e.strerror))
sys.exit(1)
else:
lines = [line.strip() for line in f]
eax1 = ''
eax7 = ''
# try to match the lines containing interesting registers
# EAX1 - Processor Info and Feature Bits
# EAX7 - Extended features
for line in lines:
if line.startswith(EAX1_MATCH):
eax1 = line
elif line.startswith(EAX7_MATCH):
eax7 = line
# if we get garbled data we should probably just give up
if len(eax1) < EXP_LINELN or len(eax7) < EXP_LINELN:
print('ERROR: invalid data format in file : ' + node)
sys.exit(1)
# check if we can actually parse the strings into integers
try:
eax1_ecx = int(eax1.split()[4].split('=')[1], 0)
eax1_edx = int(eax1.split()[5].split('=')[1], 0)
eax7_ebx = int(eax7.split()[3].split('=')[1], 0)
eax7_ecx = int(eax7.split()[4].split('=')[1], 0)
except ValueError:
print('ERROR: invalid data format in file: ' + node)
sys.exit(1)
nodes[node] = dict()
nodes[node]['eax1_ecx'] = eax1_ecx
nodes[node]['eax1_edx'] = eax1_edx
nodes[node]['eax7_ebx'] = eax7_ebx
nodes[node]['eax7_ecx'] = eax7_ecx
f.close()
else:
print('File not found: ' + node)
sys.exit(1)
print_xl_masking_config(nodes)
if args.verbose:
print_verbose_masking_info(nodes)
++++++ xendomains-wait-disks.LICENSE ++++++
++++ 674 lines (skipped)
++++++ xendomains-wait-disks.README.md ++++++
# xen-tools-xendomains-wait-disk
[xendomains.service](https://github.com/xen-project/xen/blob/RELEASE-4.13.0/… has problems
with disks that appear only later in boot process (or even after booting is complete). This project creates a service that
loops over all disks that domU will use and wait for them to appear.
xendomains-wait-disk.service launches a script that reads both /etc/xen/auto/ configurations and /var/lib/xen/save/ dumps.
>From those files, it extracts which disks are needed for all domU that will be started (respecting /etc/sysconfig/xendomains
settings). After that, it simply loops waiting for those disks to appear. There is a timeout (5 min) configured in
xendomains-wait-disk.service that prevents it to block booting process forever.
There are two known cases where this project is useful:
## degraded mdadm RAID
mdadm RAID are assembled by [udev rules](https://github.com/neilbrown/mdadm/blob/master/udev-md-raid-assembly….
However, it is only assembled when it is healthy. When a member is still missing, it starts a [timer](https://github.com/neilbrown/mdadm/blob/master/systemd/mdadm-last-re… that will try to assemble the RAID anyway after 30s, even if degraded. This timer does not block xendomains to be started. So, if a domU is depending on a MD RAID that is degraded (i.e. RAID 1 missing one disk), xendomains.service will be started before those 30s passed and that domU will fail.
An alternative solution would be to add extra hard dependencies to xendomains.service for each required disk (Require=xxx.device). However, this solution introduces another bigger problem. Before, if a single RAID is degraded, only the domU that depends on it will fail. With Require=xxx.device, xendomains will never start if
a RAID could not be assembled even after 30s (i.e. RAID5 with two missing disks).
With xendomains-wait-disk.service, xendomains.service will be blocked up to 5 min waiting for those MD RAID used by domUs. If it fails, xendomains.service
continues anyway.
## iSCSI disks
domU that uses iSCSI disk (mapped by host OS) also fails to start during boot. open-iscsi.service returns before it connect to the remote target and rescan
iscsi disks. As in mdadm RAID case, xendomains.service is started and domU that depends on iSCSI disks will fail.
++++++ xendomains-wait-disks.sh ++++++
#!/bin/bash
#
# Generates xendomains unit
#
read_conf_from_file() {
${sbindir}/xl create --quiet --dryrun --defconfig "$1"
}
big2littleendian_32bit(){
echo ${1:6:2}${1:4:2}${1:2:2}${1:0:2}
}
read_hex() {
local out_var=$1; shift
local input=$1; shift
local pos_var=$1; shift
local length=$1; shift
local hex=$(dd bs=1 skip=${!pos_var} count=$length status=none <$input | xxd -p -c$length -l$length)
read -r $pos_var <<<"$((${!pos_var} + $length))"
read -r $out_var <<<"$hex"
}
hex2dec() {
local hex=$1; shift
local little_endian=$1; shift
if $little_endian; then
hex=$(big2littleendian_32bit $hex)
fi
echo $((0x$hex))
}
read_conf_from_image(){
local pos=0 length=0
local magic_header byte_order mandatory_flags optional_flags optional_data_len config_len config_json
read_hex magic_header $1 pos 32
# "Xen saved domain, xl format\n \0 \r"
if [ "$magic_header" != "58656e20736176656420646f6d61696e2c20786c20666f726d61740a2000200d" ]; then
log $err "Unknown file format in $1. Wrong magic header: '0x$magic_header'"
return 1
fi
read_hex byte_order $1 pos 4
case "$byte_order" in
04030201) little_endian=true;;
01020304) little_endian=false;;
*) log $err "Unknown byte order 0x$byte_order in $1"; return 1;;
esac
#define XL_MANDATORY_FLAG_JSON (1U << 0) /* config data is in JSON format */
#define XL_MANDATORY_FLAG_STREAMv2 (1U << 1) /* stream is v2 */
read_hex mandatory_flags $1 pos 4
if [ "$(($(hex2dec $mandatory_flags $little_endian) & 0x3))" -ne 3 ]; then
log $err "Unknown config format or stream version. Mandatory flags are 0x$mandatory_flag"
return 1
fi
read_hex optional_flags $1 pos 4
read_hex optional_data_len $1 pos 4
optional_data_len=$(hex2dec $optional_data_len $little_endian)
# I'll not use but saved memory dump will begin at $((pos+optional_data_len))
read_hex config_len $1 pos 4
config_len=$(hex2dec $config_len $little_endian)
# null terminated string
read_hex config_json $1 pos $config_len
xxd -p -r <<<"$config_json"
}
log() {
local msg_loglevel=$1; shift
if [ "$msg_loglevel" -gt "$LOGLEVEL" ]; then
return 0
fi
echo "$@" >&2
}
emerg=0; alert=1; crit=2; err=3
warning=4; notice=5; info=6; debug=7
LOGLEVEL=${LOGLEVEL:-4}
if [ "$SYSTEMD_LOG_LEVEL" ]; then
LOGLEVEL=${!SYSTEMD_LOG_LEVEL}
fi
log $debug "Using loglevel $LOGLEVEL"
trap "log $err Error on \$LINENO: \$(caller)" ERR
log $debug "loading /etc/xen/scripts/hotplugpath.sh..."
. /etc/xen/scripts/hotplugpath.sh
#log $debug "testing for ${sbindir}/xl..."
#CMD=${sbindir}/xl
#if ! $CMD list &> /dev/null; then
# log $err "${sbindir}/xl list failed!"
# log $err "$($CMD list &>&1)"
# exit $?
#fi
#log $debug "${sbindir}/xl list OK!"
log $debug "loading /etc/sysconfig/xendomains..."
XENDOM_CONFIG=/etc/sysconfig/xendomains
if ! test -r $XENDOM_CONFIG; then
echo "$XENDOM_CONFIG not existing" >&2;
exit 6
fi
. $XENDOM_CONFIG
doms_conf=()
doms_restore=()
doms_source=()
log $debug "Reading saved domains..."
if [ "$XENDOMAINS_RESTORE" = "true" ] && [ -d "$XENDOMAINS_SAVE" ]; then
for dom in $XENDOMAINS_SAVE/*; do
log $debug "Trying $dom..."
if ! [ -r $dom ] ; then
log $debug "Not readable $dom..."
continue
fi
log $debug "Reading conf from $dom..."
if ! dom_conf=$(read_conf_from_image $dom); then
log $error "Cannot read conf from $dom"
continue
fi
log $debug "Adding $dom to the list"
doms_conf+=("$dom_conf")
doms_restore+=(true)
doms_source+=("$dom")
done
fi
log $debug "Reading auto domains..."
if [ -d "$XENDOMAINS_AUTO" ]; then
for dom in $XENDOMAINS_AUTO/*; do
log $debug "Trying $dom..."
if ! [ -r $dom ] ; then
log $debug "Not readable $dom..."
continue
fi
log $debug "Reading conf from $dom..."
if ! dom_conf=$(read_conf_from_file $dom); then
echo 123
log $error "Cannot read conf from $dom"
continue
fi
log $debug "Adding $dom to the list"
doms_conf+=("$dom_conf")
doms_restore+=(false)
doms_source+=("$dom")
done
fi
log $debug "We have ${#doms_conf[*]} to check"
for i in ${!doms_conf[*]}; do
log $debug "Doing dom $i..."
dom_conf="${doms_conf[i]}"
dom_restore="${doms_restore[i]}"
dom_source="${doms_source[i]}"
dom_name=$(sed -n 's/^.*(name \(.*\))$/\1/p;s/^.*"name": "\(.*\)",$/\1/p' <<<"$dom_conf")
readarray -t required_disks <<<"$(sed -n -e '/^ "disks": \[/,/ \],/{ /"pdev_path":/ { s/.*"pdev_path": "//;s/".*//p } }' <<<"$dom_conf")"
log $debug "dom $i is named $dom_name..."
for disk in "${required_disks[@]}"; do
disk_control_var=control_$(tr -d -c '[a-zA-Z0-9_]' <<<"$disk")
if [ "${!disk_control_var:-0}" -eq 1 ]; then
log $debug "$disk for $dom_name is already being checked"
continue
fi
declare $disk_control_var=1
log $debug "waiting for $disk for $dom_name"
(
j=0 found_loglevel=$debug
while true; do
if [ -e "$disk" ]; then
log $found_loglevel "disk $disk found (after $j seconds)"
exit 0
fi
if [ "$(( j++ % 5))" -eq 0 ]; then
log $warning "still waiting for $disk for $dom_name..."
found_loglevel=$warning
fi
sleep 1
done
) &
done
done
wait
log $debug "Exiting normally"
1
0
Hello community,
here is the log from the commit of package rubygem-asciidoctor for openSUSE:Leap:15.2 checked in at 2020-03-01 08:51:17
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Leap:15.2/rubygem-asciidoctor (Old)
and /work/SRC/openSUSE:Leap:15.2/.rubygem-asciidoctor.new.26092 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rubygem-asciidoctor"
Sun Mar 1 08:51:17 2020 rev:12 rq:779732 version:2.0.10
Changes:
--------
--- /work/SRC/openSUSE:Leap:15.2/rubygem-asciidoctor/rubygem-asciidoctor.changes 2020-01-15 15:58:31.611769846 +0100
+++ /work/SRC/openSUSE:Leap:15.2/.rubygem-asciidoctor.new.26092/rubygem-asciidoctor.changes 2020-03-01 08:51:35.525299293 +0100
@@ -1,0 +2,454 @@
+Fri Jul 19 08:54:48 UTC 2019 - Stephan Kulow <coolo(a)suse.com>
+
+- updated to version 2.0.10
+ see installed CHANGELOG.adoc
+
+ == 2.0.10 (2019-05-31) - @mojavelinux
+
+ Bug Fixes::
+
+ * fix Asciidoctor.convert_file to honor `header_footer: false` option when writing to file (#3316)
+ * fix placement of title on excerpt block (#3289)
+ * always pass same options to SyntaxHighlighter#docinfo, regardless of value of location argument
+ * fix signature of SyntaxHighlighter#docinfo method (#3300)
+ * when `icons` is set to `image`, enable image icons, but don't use it as the value of the `icontype` attribute (#3308)
+
+ // end::compact[]
+
+-------------------------------------------------------------------
+Sun May 5 09:17:56 UTC 2019 - Stephan Kulow <coolo(a)suse.com>
+
+- updated to version 2.0.9
+ see installed CHANGELOG.adoc
+
+ // tag::compact[]
+ == 2.0.9 (2019-04-30) - @mojavelinux
+
+ Bug Fixes::
+
+ * process multiple single-item menu macros in same line (#3279)
+ * register images in catalog correctly (#3283)
+ * rename AbstractNode#options method to AbstractNode#enabled_options so it doesn't get shadowed by Document#options (#3282)
+ * don't fail to convert document if alt attribute is not set on block or inline image (typically by an extension)
+ * fix lineno of source location on blocks that follow a detached list continuation (#3281)
+ * assume inline image type is "image" if not set (typically by an extension)
+
+ // end::compact[]
+ == 2.0.8 (2019-04-22) - @mojavelinux
+
+ Bug Fixes::
+
+ * restore background color applied to literal blocks by default stylesheet (#3258)
+ * use portability constants (CC_ALL, CC_ANY) in regular expressions defined in built-in converters (DocBook5 and ManPage)
+ * use portability constant (CC_ANY) in regular expression for custom inline macros
+ * use smarter margin collapsing for AsciiDoc table cell content; prevent passthrough content from being cut off (#3256)
+ * don't limit footnote ref to ASCII charset; allow any word character in Unicode to be used (#3269)
+
+ Improvements::
+
+ * register_for methods accept arguments as symbols (#3274)
+ * use Concurrent::Map instead of Concurrent::Hash in template converter
+ * use module_function keyword to define methods in Helpers
+ * move regular expression definitions to separate source file (internal change)
+
+ == 2.0.7 (2019-04-13) - @mojavelinux
+
+ Bug Fixes::
+
+ * fix crash when resolving ID from text and at least one candidate contains an unresolved xref (#3254)
+ * fix compatibility with Rouge 2.0
+
+ Improvements::
+
+ * improve documentation for the `-a` CLI option; explain that `@` modifier can be placed at end of name as alternative to end of value
+ * move source for main API entry points (load, load_file, convert, convert_file) to separate files (internal change)
+ * define main API entry points (load, load_file, convert, convert_file) as module functions
+
+ Also see https://github.com/asciidoctor/asciidoctor/milestone/33?closed=1[issues resolved in 2.0.x] (cumulative).
+
+ == 2.0.6 (2019-04-04) - @mojavelinux
+
+ Bug Fixes::
+
+ * assume implicit AsciiDoc extension on interdoc xref macro target with no extension (e.g., `document#`); restores 1.5.x behavior (#3231)
+ * don't fail to load application if call to Dir.home fails; use a rescue with fallback values (#3238)
+ * Helpers.rootname should only consider final path segment when dropping file extension
+
+ Improvements::
+
+ * implement Helpers.extname as a more efficient and flexible File.extname method
+ * check for AsciiDoc file extension using end_with? instead of resolving the extname and using a lookup
+
+ Also see https://github.com/asciidoctor/asciidoctor/milestone/33?closed=1[issues resolved in 2.0.x] (cumulative).
+
+ == 2.0.5 (2019-04-01) - @mojavelinux
+
+ Bug Fixes::
+
+ * fix crash when source highlighter is Rouge and source language is not set on block (#3223)
+ * update CLI and SyntaxHighlighter to allow Asciidoctor to load cleanly on Ruby 2.0 - 2.2
+ * CLI should use $stdin instead of STDIN to be consistent with the use of $stdout
+ * mark encoding of stdio objects used in CLI as UTF-8 (#3225)
+ * make Asciidoctor::SyntaxHighlighter::Config.register_for method public as documented
+
+ Also see https://github.com/asciidoctor/asciidoctor/milestone/33?closed=1[issues resolved in 2.0.x] (cumulative).
+
+ == 2.0.4 (2019-03-31) - @mojavelinux
+
+ Bug Fixes::
+
+ * allow Asciidoctor to load cleanly on Ruby 2.0 - 2.2 for distributions that provide support for these older Ruby versions
+ * make Asciidoctor::Converter::Config.register_for method public as documented
+ * remove unused Asciidoctor::Converter::BackendTraits#derive_backend_traits private method
+ * move Asciidoctor::Converter::BackendTraits.derive_backend_traits method to Asciidoctor::Converter
+ * mark render and render_file methods as deprecated in API docs
+
+ Also see https://github.com/asciidoctor/asciidoctor/milestone/33?closed=1[issues resolved in 2.0.x] (cumulative).
+
+-------------------------------------------------------------------
+Fri Mar 29 05:55:46 UTC 2019 - Stephan Kulow <coolo(a)suse.com>
+
+- updated to version 2.0.3
+ see installed CHANGELOG.adoc
+
+-------------------------------------------------------------------
+Mon Nov 12 12:43:58 UTC 2018 - Stephan Kulow <coolo(a)suse.com>
+
+- updated to version 1.5.8
+ see installed CHANGELOG.adoc
+
+ == 1.5.8 (2018-10-28) - @mojavelinux
+
+ Enhancements::
+
+ * if set, add value of part-signifier and chapter-signifier attributes to part and chapter titles (#2738)
+ * allow position (float) and alignment (align) to be set on video block (#2425)
+ * substitute attribute references in attrlist of include directive (#2761)
+ * add Document#set_header_attribute method for adding method directly to document header during parsing (#2820)
+ * add helper method to extension processor classes to create lists and list items
+ * allow ordered and unordered lists to be nested to an arbitrary / unlimited depth (#2854)
+ * add `prefer` DSL method to extension registry and document processor to flag extension as preferred (#2848)
+ * allow manname and manpurpose to be set using document attributes; don't look for NAME section in this case (#2810)
+ * substitute attribute references in target of custom block macro (honoring attribute-missing setting) (#2839)
+ * interpret `<.>` as an auto-numbered callout in verbatim blocks and callout lists (#2871)
+ * require marker for items in callout list to have circumfix brackets (e.g., `<1>` instead of `1>`) (#2871)
+ * preserve comment guard in front of callout number in verbatim block if icons is not enabled (#1360)
+ * add more conventional styles to quote block when it has the excerpt role (#2092)
+ * colspecs can be separated by semi-colon instead of comma (#2798)
+ * change AbstractBlock#find_by to respond to StopIteration exception; stop traversal after matching ID (#2900)
+ * change AbstractBlock#find_by to honor return values :skip and :skip_children from filter block to skip node and its descendants or just its descendants, respectively (#2067)
+ * add API to retrieve authors as array; use API in converters (#1042) (*@mogztter*)
+ * add support for start attribute on source block to set starting line number when converting to DocBook (#2915)
+ * track imagesdir for image on node and in catalog (#2779)
+ * allow starting line number to be set using start attribute when highighting source block with Pygments or CodeRay (#1742)
+ * upgrade highlight.js to 9.13.1
+
+ Fixes::
+
+ * don't hang on description list item that begins with /// (#2888)
+ * don't crash when using AsciiDoc table cell style on column in CSV table (#2817)
+ * show friendly error if CSV data for table contains unclosed quote (#2878) (*@zelivans*)
+ * don't crash when attribute entry continuation is used on last line of file (#2880) (*@zelivans*)
+ * treat empty/missing value of named block attribute followed by other attributes (e.g., caption=,cols=2*) as empty string
+ * AbstractNode#set_option does nothing if option is already set (PR #2778)
+ * allow revnumber to be an attribute reference in revision info line (#2785)
+ * use ::File.open instead of ::IO.binread in Reader for Asciidoctor.js compatibility
+ * add fallback for timezone when setting doctime
+ * preserve UNC path that begins with a double backslash (Windows) (#2869)
+ * fix formatting of quote block (indentation) in manpage output (#2792)
+ * catalog inline anchors in ordered list items (#2812)
+ * detect closing tag on last line with no trailing newline (#2830)
+ * process `!name@` attribute syntax property; follow-up to #642
+ * change document extension processor DSL methods to return registered extension instance instead of array of instances
+ * use fallback value for manname-title to prevent crash in manpage converter
+ * consolidate inner whitespace in prose in manpage output (#2890)
+ * only apply subs to node attribute value if enclosed in single quotes (#2905)
+ * don't hide URI scheme if target of link macro is a bare URI scheme
+ * fix crash when child section of part is out of sequence and section numbering is enabled (#2931)
+ * fix crash when restoring passthroughs if passthrough role is enclosed in single quotes (#2882, #2883)
+ * don't eagerly apply subs to inline attributes in general
+ * make sure encoding of output file is UTF-8
+ * prevent warning about invalid `:asciidoc` option when using custom templates with Slim 4 (#2928)
+ * use Pathname#relative_path_from to compute relative path to file outside of base directory (#2108)
+
+ Improvements::
+
+ * change trailing delimiter on part number to colon (:) (#2738)
+ * interpret open line range as infinite (#2914)
+ * rename number property on AbstractBlock to numeral, but keep number as deprecated alias
+ * use CSS class instead of hard-coded inline float style on tables and images (#2753)
+ * use CSS class instead of hard-coded inline text-align style on block images (#2753)
+ * allow hyphen to be used custom block macro name as long as it's not the first character (#2620)
+ * use shorthands %F and %T instead of %Y-%m-%d and %H:%M:%S to format time
+ * read file in binary mode whenever contents are being normalized
+ * use .drop(0) to duplicate arrays (roughly 1.5x as fast as .dup)
+ * only recognize a bullet glyph which is non-repeating as an unordered list marker
+ * rename SyntaxDsl module to SyntaxProcessorDsl (internal)
+ * fail if name given to block macro contains illegal characters
+ * normalize all whitespace in value of manpurpose attribute
+ * make space before callout number after custom line comment character optional
+ * parse attrlist on inline passthrough as a shorthand attribute syntax or literal role (#2910)
+ * add support for range syntax (.. delimiter) to highlight attribute on source block (#2918)
+ * add support for unbounded range to highlight attribute on source block (#2918)
+ * automatically assign title and caption on image block if title is set on custom block source (#2926)
+ * use OS independent timezone (UTC or time offset) in doctime and localtime attributes (#2770)
+ * report correct line number for inline anchor with id already in use (#2769)
+ * generate manpage even if input is non-conforming or malformed (#1639)
+ * allow authorinitials for single author to be overridden (#669)
++++ 260 more lines (skipped)
++++ between /work/SRC/openSUSE:Leap:15.2/rubygem-asciidoctor/rubygem-asciidoctor.changes
++++ and /work/SRC/openSUSE:Leap:15.2/.rubygem-asciidoctor.new.26092/rubygem-asciidoctor.changes
Old:
----
asciidoctor-1.5.6.1.gem
New:
----
asciidoctor-2.0.10.gem
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ rubygem-asciidoctor.spec ++++++
--- /var/tmp/diff_new_pack.osUEmF/_old 2020-03-01 08:51:35.869299977 +0100
+++ /var/tmp/diff_new_pack.osUEmF/_new 2020-03-01 08:51:35.877299994 +0100
@@ -1,7 +1,7 @@
#
# spec file for package rubygem-asciidoctor
#
-# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 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
@@ -12,7 +12,7 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
@@ -24,18 +24,17 @@
#
Name: rubygem-asciidoctor
-Version: 1.5.6.1
+Version: 2.0.10
Release: 0
%define mod_name asciidoctor
%define mod_full_name %{mod_name}-%{version}
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: %{rubygem gem2rpm}
-BuildRequires: %{rubygem rdoc > 3.10}
BuildRequires: %{ruby}
BuildRequires: ruby-macros >= 5
BuildRequires: update-alternatives
-Url: http://asciidoctor.org
-Source: http://rubygems.org/gems/%{mod_full_name}.gem
+Url: https://asciidoctor.org
+Source: https://rubygems.org/gems/%{mod_full_name}.gem
Source1: gem2rpm.yml
Summary: An implementation of the AsciiDoc text processor and publishing
License: MIT
@@ -43,9 +42,8 @@
PreReq: update-alternatives
%description
-A fast, open source text processor and publishing toolchain, written in Ruby,
-for converting AsciiDoc content to HTML5, DocBook 5 (or 4.5) and other
-formats.
+A fast, open source text processor and publishing toolchain for converting
+AsciiDoc content to HTML 5, DocBook 5, and other formats.
%prep
@@ -54,6 +52,7 @@
%install
%gem_install \
--symlink-binaries \
+ --doc-files="LICENSE" \
-f
%gem_packages
++++++ asciidoctor-1.5.6.1.gem -> asciidoctor-2.0.10.gem ++++++
++++ 60064 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package hyper-v for openSUSE:Leap:15.2 checked in at 2020-03-01 08:51:16
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Leap:15.2/hyper-v (Old)
and /work/SRC/openSUSE:Leap:15.2/.hyper-v.new.26092 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "hyper-v"
Sun Mar 1 08:51:16 2020 rev:24 rq:779697 version:7
Changes:
--------
--- /work/SRC/openSUSE:Leap:15.2/hyper-v/hyper-v.changes 2020-01-15 15:11:38.654114377 +0100
+++ /work/SRC/openSUSE:Leap:15.2/.hyper-v.new.26092/hyper-v.changes 2020-03-01 08:51:34.857297964 +0100
@@ -1,0 +2,6 @@
+Thu Feb 20 16:16:16 UTC 2020 - ohering(a)suse.de
+
+- Revert previous non-upstream change for async name resolution
+ Just use gethostname via hyper-v.kvp.gethostname.patch (bsc#1100758)
+
+-------------------------------------------------------------------
New:
----
hyper-v.kvp.gethostname.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ hyper-v.spec ++++++
--- /var/tmp/diff_new_pack.CjDJDd/_old 2020-03-01 08:51:35.265298776 +0100
+++ /var/tmp/diff_new_pack.CjDJDd/_new 2020-03-01 08:51:35.269298784 +0100
@@ -61,7 +61,7 @@
Source21: hyper-v.tools.hv.hv_get_dns_info.sh
Source22: hyper-v.tools.hv.hv_set_ifconfig.sh
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
+Patch0: hyper-v.kvp.gethostname.patch
%description
This package contains the Microsoft Hyper-V tools.
@@ -70,9 +70,11 @@
%setup -Tc
cp -avL %{S:5} kvptest.ps1.txt
cp -vL %{S:9} %{hv_kvp_daemon}.h
-cp -vL %{S:10} %{hv_kvp_daemon}.c
+cp -vL %{S:10} .
cp -vL %{S:12} %{hv_vss_daemon}.c
cp -vL %{S:14} %{hv_fcopy_daemon}.c
+%patch0 -p1
+mv `basename %{S:10}` %{hv_kvp_daemon}.c
%build
sed -i~ '/#include <linux.hyperv.h>/d' %{hv_kvp_daemon}.c
@@ -237,7 +239,6 @@
%endif
%files
-%defattr (-,root,root)
%doc kvptest.ps1.txt
%if %{use_systemd}
%{_unitdir}
++++++ hyper-v.kvp.gethostname.patch ++++++
--- a/hyper-v.tools.hv.hv_kvp_daemon.c
+++ b/hyper-v.tools.hv.hv_kvp_daemon.c
@@ -1335,6 +1335,7 @@ kvp_get_domain_name(char *buffer, int le
struct addrinfo hints, *info ;
int error = 0;
+ return;
gethostname(buffer, length);
memset(&hints, 0, sizeof(hints));
hints.ai_family = AF_INET; /*Get only ipv4 addrinfo. */
@@ -1572,6 +1573,12 @@ int main(int argc, char *argv[])
switch (hv_msg->body.kvp_enum_data.index) {
case FullyQualifiedDomainName:
+ /*
+ * The API is undocumented.
+ * The Host can not possibly care about DNS within the guest network
+ * The time it takes to get the hostname is much shorter than a DNS lookup.
+ */
+ gethostname(full_domain_name, sizeof(full_domain_name));
strcpy(key_value, full_domain_name);
strcpy(key_name, "FullyQualifiedDomainName");
break;
++++++ hyper-v.tools.hv.hv_kvp_daemon.c ++++++
--- /var/tmp/diff_new_pack.CjDJDd/_old 2020-03-01 08:51:35.361298967 +0100
+++ /var/tmp/diff_new_pack.CjDJDd/_new 2020-03-01 08:51:35.361298967 +0100
@@ -41,7 +41,6 @@
#include <net/if.h>
#include <limits.h>
#include <getopt.h>
-#include <pthread.h>
/*
* KVP protocol: The user mode component first registers with the
@@ -86,7 +85,7 @@
static char *os_build;
static char *os_version;
static char *lic_version = "Unknown version";
-static char *full_domain_name;
+static char full_domain_name[HV_KVP_EXCHANGE_MAX_VALUE_SIZE];
static struct utsname uts_buf;
/*
@@ -1329,76 +1328,27 @@
return error;
}
-/*
- * Async retrival of Fully Qualified Domain Name because getaddrinfo takes an
- * unpredictable amount of time to finish.
- */
-static void *kvp_getaddrinfo(void *p)
-{
- char *tmp, **str_ptr = (char **)p;
- char hostname[HOST_NAME_MAX + 1];
- struct addrinfo *info, hints = {
- .ai_family = AF_INET, /* Get only ipv4 addrinfo. */
- .ai_socktype = SOCK_STREAM,
- .ai_flags = AI_CANONNAME,
- };
- int ret;
- int prev_ret = 0, cnt = 5;
-
- do {
- if (gethostname(hostname, sizeof(hostname) - 1) < 0)
- goto out;
-
- ret = getaddrinfo(hostname, NULL, &hints, &info);
- switch (ret) {
- case 0:
- break;
- case EAI_BADFLAGS:
- case EAI_MEMORY:
- case EAI_OVERFLOW:
- case EAI_SOCKTYPE:
- case EAI_SYSTEM:
- /* Permanent failure */
- syslog(LOG_ERR, "getaddrinfo failed: %d %s",
- ret, gai_strerror(ret));
- goto out;
- default:
- /* runtime debug */
- if (cnt) {
- if (prev_ret != ret) {
- prev_ret = ret;
- syslog(LOG_ERR, "getaddrinfo warning: %d %s", ret, gai_strerror(ret));
- cnt--;
- }
- }
- /* Temporary failure, aim for success. */
- sleep(5);
- }
- } while (ret);
- ret = asprintf(&tmp, "%s", info->ai_canonname);
- freeaddrinfo(info);
- if (ret <= 0)
- goto out;
-
- if (ret > HV_KVP_EXCHANGE_MAX_VALUE_SIZE)
- tmp[HV_KVP_EXCHANGE_MAX_VALUE_SIZE - 1] = '\0';
- *str_ptr = tmp;
-
-out:
- pthread_exit(NULL);
-}
-
-static void kvp_obtain_domain_name(char **str_ptr)
+static void
+kvp_get_domain_name(char *buffer, int length)
{
- pthread_t t;
+ struct addrinfo hints, *info ;
+ int error = 0;
- if (pthread_create(&t, NULL, kvp_getaddrinfo, str_ptr)) {
- syslog(LOG_ERR, "pthread_create failed; error: %d %s",
- errno, strerror(errno));
+ gethostname(buffer, length);
+ memset(&hints, 0, sizeof(hints));
+ hints.ai_family = AF_INET; /*Get only ipv4 addrinfo. */
+ hints.ai_socktype = SOCK_STREAM;
+ hints.ai_flags = AI_CANONNAME;
+
+ error = getaddrinfo(buffer, NULL, &hints, &info);
+ if (error != 0) {
+ snprintf(buffer, length, "getaddrinfo failed: 0x%x %s",
+ error, gai_strerror(error));
return;
}
- pthread_detach(t);
+ snprintf(buffer, length, "%s", info->ai_canonname);
+ freeaddrinfo(info);
}
void print_usage(char *argv[])
@@ -1463,7 +1413,11 @@
* Retrieve OS release information.
*/
kvp_get_os_info();
- kvp_obtain_domain_name(&full_domain_name);
+ /*
+ * Cache Fully Qualified Domain Name because getaddrinfo takes an
+ * unpredictable amount of time to finish.
+ */
+ kvp_get_domain_name(full_domain_name, sizeof(full_domain_name));
if (kvp_file_init()) {
syslog(LOG_ERR, "Failed to initialize the pools");
@@ -1618,7 +1572,7 @@
switch (hv_msg->body.kvp_enum_data.index) {
case FullyQualifiedDomainName:
- strcpy(key_value, full_domain_name ? : "");
+ strcpy(key_value, full_domain_name);
strcpy(key_name, "FullyQualifiedDomainName");
break;
case IntegrationServicesVersion:
1
0
Hello community,
here is the log from the commit of package ovmf for openSUSE:Leap:15.2 checked in at 2020-03-01 08:51:14
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Leap:15.2/ovmf (Old)
and /work/SRC/openSUSE:Leap:15.2/.ovmf.new.26092 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ovmf"
Sun Mar 1 08:51:14 2020 rev:48 rq:779695 version:201911
Changes:
--------
--- /work/SRC/openSUSE:Leap:15.2/ovmf/ovmf.changes 2020-02-21 23:49:34.760593623 +0100
+++ /work/SRC/openSUSE:Leap:15.2/.ovmf.new.26092/ovmf.changes 2020-03-01 08:51:33.797295856 +0100
@@ -1,0 +2,10 @@
+Mon Feb 24 04:00:24 UTC 2020 - Gary Ching-Pang Lin <glin(a)suse.com>
+
+- Add ovmf-bsc1163969-fix-DxeImageVerificationHandler.patch to fix
+ dbx signature check (bsc#1163969, CVE-2019-14575)
+ + Also change the order of several patches to distinguish the
+ openssl patch
+- Add ovmf-bsc1163927-fix-ip4dxe-and-arpdxe.patch to fix memory
+ leakage in Ip4Dxe and ArpDxe (bsc#1163927, CVE-2019-14559)
+
+-------------------------------------------------------------------
@@ -12,0 +23,5 @@
+
+-------------------------------------------------------------------
+Fri Dec 20 09:11:37 UTC 2019 - Dirk Mueller <dmueller(a)suse.com>
+
+- only build -aarch32 Cortex-A15 EFI on armv7hl
New:
----
ovmf-bsc1163927-fix-ip4dxe-and-arpdxe.patch
ovmf-bsc1163969-fix-DxeImageVerificationHandler.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ovmf.spec ++++++
--- /var/tmp/diff_new_pack.H9XxJg/_old 2020-03-01 08:51:34.609297471 +0100
+++ /var/tmp/diff_new_pack.H9XxJg/_new 2020-03-01 08:51:34.613297479 +0100
@@ -1,7 +1,7 @@
#
# spec file for package ovmf
#
-# Copyright (c) 2019 SUSE LLC
+# Copyright (c) 2020 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -49,8 +49,10 @@
Patch3: %{name}-pie.patch
Patch4: %{name}-disable-ia32-firmware-piepic.patch
Patch5: %{name}-set-fixed-enroll-time.patch
-Patch6: openssl-fix-syntax-error.patch
-Patch7: %{name}-bsc1163959-PiDxeS3BootScriptLib-fix-numeric-truncation.patch
+Patch6: %{name}-bsc1163959-PiDxeS3BootScriptLib-fix-numeric-truncation.patch
+Patch7: %{name}-bsc1163969-fix-DxeImageVerificationHandler.patch
+Patch8: %{name}-bsc1163927-fix-ip4dxe-and-arpdxe.patch
+Patch100: openssl-fix-syntax-error.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: bc
BuildRequires: fdupes
@@ -59,7 +61,7 @@
BuildRequires: iasl
BuildRequires: libuuid-devel
BuildRequires: python3
-%ifnarch %arm
+%ifnarch armv7hl
BuildRequires: nasm
%endif
%ifarch %{secureboot_archs}
@@ -76,7 +78,7 @@
%endif
BuildRequires: unzip
%endif
-ExclusiveArch: %ix86 x86_64 aarch64 %arm
+ExclusiveArch: %ix86 x86_64 aarch64 armv7hl
%description
The Open Virtual Machine Firmware (OVMF) project aims to support
@@ -145,7 +147,7 @@
virt board.
%endif
-%ifarch %arm
+%ifarch armv7hl
%package -n qemu-uefi-aarch32
Summary: UEFI QEMU rom image (AArch32)
Group: System/Emulators/PC
@@ -173,12 +175,14 @@
%patch3 -p1
%patch4 -p1
%patch5 -p1
+%patch6 -p1
%patch7 -p1
+%patch8 -p1
# add openssl
pushd CryptoPkg/Library/OpensslLib/openssl
tar -xf %{SOURCE1} --strip 1
-%patch6 -p1
+%patch100 -p1
popd
# add berkeley-softfloat-3
@@ -233,7 +237,7 @@
BUILD_OPTIONS="$OVMF_FLAGS -a AARCH64 -p ArmVirtPkg/ArmVirtQemu.dsc -b DEBUG -t $TOOL_CHAIN_TAG"
ARCH=AARCH64 make -C BaseTools
%else
-%ifarch %arm
+%ifarch armv7hl
# Flavors for arm
FLAVORS=("aavmf-aarch32")
BUILD_ARCH="AARCH32"
@@ -326,7 +330,7 @@
cp Build/ArmVirtQemu-AARCH64/DEBUG_*/AARCH64/EnrollDefaultKeys.efi .
%else
-%ifarch %arm
+%ifarch armv7hl
# Build the UEFI image
build $BUILD_OPTIONS
@@ -550,7 +554,7 @@
install -m 0644 -D descriptors/*-aarch64*.json \
-t %{buildroot}/%{_datadir}/qemu/firmware
%else
-%ifarch %arm
+%ifarch armv7hl
install -m 0644 -D qemu-uefi-aarch32.bin -t %{buildroot}/%{_datadir}/qemu/
install -m 0644 -D aavmf-aarch32-*.bin -t %{buildroot}/%{_datadir}/qemu/
install -m 0644 -D descriptors/*-aarch32*.json \
@@ -622,7 +626,7 @@
%{_datadir}/qemu/firmware/*-aarch64*.json
%endif
-%ifarch %arm
+%ifarch armv7hl
%files -n qemu-uefi-aarch32
%defattr(-,root,root)
%license License.txt
++++++ ovmf-bsc1163927-fix-ip4dxe-and-arpdxe.patch ++++++
>From 7f9f7fccf58af2db5ac8c88801f56f4efe664fcb Mon Sep 17 00:00:00 2001
From: Jiaxin Wu <Jiaxin.wu(a)intel.com>
Date: Mon, 29 Apr 2019 09:51:53 +0800
Subject: [PATCH 1/2] NetworkPkg/Ip4Dxe: Check the received package length
(CVE-2019-14559).
v3: correct the coding style.
v2: correct the commit message & add BZ number.
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1610
This patch is to check the received package length to make sure the package
has a valid length field.
Cc: Fu Siyuan <siyuan.fu(a)intel.com>
Cc: Maciej Rabeda <maciej.rabeda(a)linux.intel.com>
Signed-off-by: Wu Jiaxin <jiaxin.wu(a)intel.com>
Reviewed-by: Siyuan Fu <siyuan.fu(a)intel.com>
(cherry picked from commit 578bcdc2605e3438b9cbdac4e68339f90f5bf8af)
---
NetworkPkg/Ip4Dxe/Ip4Input.c | 46 +++++++++++++++++++++++++++++-------
1 file changed, 37 insertions(+), 9 deletions(-)
diff --git a/NetworkPkg/Ip4Dxe/Ip4Input.c b/NetworkPkg/Ip4Dxe/Ip4Input.c
index 24c584658803..fc1a892f14eb 100644
--- a/NetworkPkg/Ip4Dxe/Ip4Input.c
+++ b/NetworkPkg/Ip4Dxe/Ip4Input.c
@@ -1,7 +1,7 @@
/** @file
IP4 input process.
-Copyright (c) 2005 - 2018, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2005 - 2020, Intel Corporation. All rights reserved.<BR>
(C) Copyright 2015 Hewlett-Packard Development Company, L.P.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
@@ -711,10 +711,6 @@ Ip4PreProcessPacket (
//
// Check if the IP4 header is correctly formatted.
//
- if ((*Packet)->TotalSize < IP4_MIN_HEADLEN) {
- return EFI_INVALID_PARAMETER;
- }
-
HeadLen = (Head->HeadLen << 2);
TotalLen = NTOHS (Head->TotalLen);
@@ -808,6 +804,30 @@ Ip4PreProcessPacket (
return EFI_SUCCESS;
}
+/**
+ This function checks the IPv4 packet length.
+
+ @param[in] Packet Pointer to the IPv4 Packet to be checked.
+
+ @retval TRUE The input IPv4 packet length is valid.
+ @retval FALSE The input IPv4 packet length is invalid.
+
+**/
+BOOLEAN
+Ip4IsValidPacketLength (
+ IN NET_BUF *Packet
+ )
+{
+ //
+ // Check the IP4 packet length.
+ //
+ if (Packet->TotalSize < IP4_MIN_HEADLEN) {
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
/**
The IP4 input routine. It is called by the IP4_INTERFACE when a
IP4 fragment is received from MNP.
@@ -844,6 +864,10 @@ Ip4AccpetFrame (
goto DROP;
}
+ if (!Ip4IsValidPacketLength (Packet)) {
+ goto RESTART;
+ }
+
Head = (IP4_HEAD *) NetbufGetByte (Packet, 0, NULL);
ASSERT (Head != NULL);
OptionLen = (Head->HeadLen << 2) - IP4_MIN_HEADLEN;
@@ -890,10 +914,14 @@ Ip4AccpetFrame (
//
ZeroMem (&ZeroHead, sizeof (IP4_HEAD));
if (0 == CompareMem (Head, &ZeroHead, sizeof (IP4_HEAD))) {
- // Packet may have been changed. Head, HeadLen, TotalLen, and
- // info must be reloaded bofore use. The ownership of the packet
- // is transfered to the packet process logic.
- //
+ // Packet may have been changed. Head, HeadLen, TotalLen, and
+ // info must be reloaded before use. The ownership of the packet
+ // is transferred to the packet process logic.
+ //
+ if (!Ip4IsValidPacketLength (Packet)) {
+ goto RESTART;
+ }
+
Head = (IP4_HEAD *) NetbufGetByte (Packet, 0, NULL);
ASSERT (Head != NULL);
Status = Ip4PreProcessPacket (
--
2.25.0
>From 03225826203c978146e4067e1d14fe66fcb75e22 Mon Sep 17 00:00:00 2001
From: Siyuan Fu <siyuan.fu(a)intel.com>
Date: Fri, 21 Feb 2020 10:14:18 +0800
Subject: [PATCH 2/2] NetworkPkg/ArpDxe: Recycle invalid ARP packets
(CVE-2019-14559)
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2031
This patch triggers the RecycleEvent for invalid ARP packets.
Prior to this, we would just ignore invalid ARP packets,
and never free them.
Cc: Jiaxin Wu <jiaxin.wu(a)intel.com>
Cc: Maciej Rabeda <maciej.rabeda(a)linux.intel.com>
Cc: Siyuan Fu <siyuan.fu(a)intel.com>
Signed-off-by: Nicholas Armour <nicholas.armour(a)intel.com>
Reviewed-by: Siyuan Fu <siyuan.fu(a)intel.com>
(cherry picked from commit 1d3215fd24f47eaa4877542a59b4bbf5afc0cfe8)
---
NetworkPkg/ArpDxe/ArpImpl.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/NetworkPkg/ArpDxe/ArpImpl.c b/NetworkPkg/ArpDxe/ArpImpl.c
index 0e9ef103eff9..c7f770db0734 100644
--- a/NetworkPkg/ArpDxe/ArpImpl.c
+++ b/NetworkPkg/ArpDxe/ArpImpl.c
@@ -1,7 +1,7 @@
/** @file
The implementation of the ARP protocol.
-Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2006 - 2020, Intel Corporation. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
@@ -113,7 +113,7 @@ ArpOnFrameRcvdDpc (
//
// Restart the receiving if packet size is not correct.
//
- goto RESTART_RECEIVE;
+ goto RECYCLE_RXDATA;
}
//
@@ -125,7 +125,7 @@ ArpOnFrameRcvdDpc (
Head->OpCode = NTOHS (Head->OpCode);
if (RxData->DataLength < (sizeof (ARP_HEAD) + 2 * Head->HwAddrLen + 2 * Head->ProtoAddrLen)) {
- goto RESTART_RECEIVE;
+ goto RECYCLE_RXDATA;
}
if ((Head->HwType != ArpService->SnpMode.IfType) ||
--
2.25.0
++++++ ovmf-bsc1163969-fix-DxeImageVerificationHandler.patch ++++++
++++ 1870 lines (skipped)
1
0
Hello community,
here is the log from the commit of package product-builder for openSUSE:Leap:15.2 checked in at 2020-03-01 08:51:12
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Leap:15.2/product-builder (Old)
and /work/SRC/openSUSE:Leap:15.2/.product-builder.new.26092 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "product-builder"
Sun Mar 1 08:51:12 2020 rev:76 rq:779657 version:1.2.8
Changes:
--------
--- /work/SRC/openSUSE:Leap:15.2/product-builder/product-builder.changes 2020-02-16 18:25:43.754636606 +0100
+++ /work/SRC/openSUSE:Leap:15.2/.product-builder.new.26092/product-builder.changes 2020-03-01 08:51:32.729293731 +0100
@@ -1,0 +2,6 @@
+Wed Feb 26 13:23:16 UTC 2020 - Adrian Schröter <adrian(a)suse.de>
+
+- 1.2.8
+ * keep kwd file in SLE Full media wrapper (bsc#1164670)
+
+-------------------------------------------------------------------
Old:
----
product-builder-1.2.7.obscpio
New:
----
product-builder-1.2.8.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ product-builder.spec ++++++
--- /var/tmp/diff_new_pack.Z1I8ZH/_old 2020-03-01 08:51:33.281294829 +0100
+++ /var/tmp/diff_new_pack.Z1I8ZH/_new 2020-03-01 08:51:33.281294829 +0100
@@ -1,7 +1,7 @@
#
# spec file for package product-builder
#
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -19,11 +19,11 @@
Summary: SUSE Product Builder
License: GPL-2.0-only
Group: System/Management
-Url: http://github.com/openSUSE/product-builder
+URL: http://github.com/openSUSE/product-builder
Name: product-builder
Conflicts: kiwi
Conflicts: kiwi-instsource
-Version: 1.2.7
+Version: 1.2.8
Release: 0
Provides: kiwi-schema = 6.2
Source: product-builder-%version.tar.xz
++++++ _service ++++++
--- /var/tmp/diff_new_pack.Z1I8ZH/_old 2020-03-01 08:51:33.309294885 +0100
+++ /var/tmp/diff_new_pack.Z1I8ZH/_new 2020-03-01 08:51:33.309294885 +0100
@@ -1,8 +1,8 @@
<services>
<service name="obs_scm" mode="disabled">
<param name="url">https://github.com/openSUSE/product-builder.git</param>
- <param name="revision">1.2.7</param>
- <param name="version">1.2.7</param>
+ <param name="revision">1.2.8</param>
+ <param name="version">1.2.8</param>
<param name="scm">git</param>
<param name="extract">rpm/product-builder.spec</param>
</service>
++++++ product-builder-1.2.7.obscpio -> product-builder-1.2.8.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/product-builder-1.2.7/SLE-wrapper.sh new/product-builder-1.2.8/SLE-wrapper.sh
--- old/product-builder-1.2.7/SLE-wrapper.sh 2020-02-05 13:05:47.000000000 +0100
+++ new/product-builder-1.2.8/SLE-wrapper.sh 2020-02-26 14:21:02.000000000 +0100
@@ -11,7 +11,7 @@
mkdir $TOPDIR/KIWIRESULTS
# remove symlink, we cat into it
- rm config.xml
+ rm -f config.xml config.kiwi
ARCH=${BUILD_FLAVOR/SLES-cd-Full-}
# the worker expands obsrepositories:// only in the target kiwi so we need to apply this change to the modules
@@ -30,8 +30,11 @@
grep -qx $MN_SHORT packages-dvd.txt || continue
# replace obsrepositories://
- perl -e '$in=0; while (<STDIN>) { $in=1 if /<instrepo /; print $_ unless $in; if (m,</instrepo,) { $in=0; system("cat expanded_instsources.include") }; }' < $kiwi > config.xml
- sed -i "s,MEDIUM_NAME\">.*,MEDIUM_NAME\">$MN-$BUILD_SUFFIX-Media</productvar><productvar name=\"BUILD_ID\">$MN-$BUILD_SUFFIX</productvar>," config.xml
+ perl -e '$in=0; while (<STDIN>) { $in=1 if /<instrepo /; print $_ unless $in; if (m,</instrepo,) { $in=0; system("cat expanded_instsources.include") }; }' < $kiwi > config.kiwi
+ sed -i "s,MEDIUM_NAME\">.*,MEDIUM_NAME\">$MN-$BUILD_SUFFIX-Media</productvar><productvar name=\"BUILD_ID\">$MN-$BUILD_SUFFIX</productvar>," config.kiwi
+
+ # rescue support flags
+ cp ${kiwi%.kiwi}.kwd config.kwd
/usr/bin/product-builder.pl --root $TOPDIR/KIWIROOT/ -v 1 --logfile terminal --create-instsource . || exit 1
mv $TOPDIR/KIWIROOT/main $TOPDIR/KIWIALL/$MN_SHORT
@@ -39,7 +42,7 @@
done # kiwiconf
# now the final ISO
- perl -e '$in=0; while (<STDIN>) { $in=0 if m,</repopackages,; print $_ unless $in; $in=1 if m,<repopackages,; }' < $BUILD_FLAVOR.kiwi > config.xml
+ perl -e '$in=0; while (<STDIN>) { $in=0 if m,</repopackages,; print $_ unless $in; $in=1 if m,<repopackages,; }' < $BUILD_FLAVOR.kiwi > config.kiwi
;;
esac
++++++ product-builder.obsinfo ++++++
--- /var/tmp/diff_new_pack.Z1I8ZH/_old 2020-03-01 08:51:33.493295251 +0100
+++ /var/tmp/diff_new_pack.Z1I8ZH/_new 2020-03-01 08:51:33.497295259 +0100
@@ -1,5 +1,5 @@
name: product-builder
-version: 1.2.7
-mtime: 1580904347
-commit: 2fa0d07906bffbde3df7cef265301ecd08d85027
+version: 1.2.8
+mtime: 1582723262
+commit: 341d31d4b6c311cbc6544d7284e9957033542247
1
0